diff --git a/server/AyaNova/Controllers/GlobalBizSettingsController.cs b/server/AyaNova/Controllers/GlobalBizSettingsController.cs index f1ee4a1e..b706771a 100644 --- a/server/AyaNova/Controllers/GlobalBizSettingsController.cs +++ b/server/AyaNova/Controllers/GlobalBizSettingsController.cs @@ -147,26 +147,68 @@ namespace AyaNova.Api.Controllers if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Global)) return StatusCode(403, new ApiNotAuthorizedResponse()); - /* - modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); - modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); - modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); - modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); - modelBuilder.Entity().Property(z => z.Serial).UseIdentityByDefaultColumn(); - */ - var NextPurchaseOrder = await ct.PurchaseOrder.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync(); - - var NextPM = await ct.PM.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync(); var ret = new { //Actual global settings: - PurchaseOrderSerial = ++NextPurchaseOrder, - PMSerial = ++NextPM + PurchaseOrderNextSerial = await ct.PurchaseOrder.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync() + 1, + WorkorderNextSerial = await ct.WorkOrder.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync() + 1, + QuoteNextSerial = await ct.Quote.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync() + 1, + PMNextSerial = await ct.PM.AsNoTracking().OrderByDescending(p => p.Serial).Select(x => x.Serial).FirstOrDefaultAsync() + 1 }; return Ok(ApiOkResponse.Response(ret)); } + /// + /// PUT New serial start seed + /// + /// one of PurchaseOrder, Workorder, PM, Quote serialized object types + /// Next value to use + /// OK or error response if not a valid value (seed number already in use) + [HttpPut("seeds/{ayaType}/{nextSeed")] + public async Task SetNextSeed([FromRoute] AyaType aType, [FromRoute] long nextSeed) + { + if (serverState.IsClosed) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + + if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.Global)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + switch (aType) + { + case AyaType.PurchaseOrder: + break; + case AyaType.WorkOrder: + break; + case AyaType.Quote: + break; + case AyaType.PM: + break; + default: + return BadRequest(new ApiErrorResponse(ApiErrorCode.VALIDATION_INVALID_VALUE, "aType", "Not a serialized type")); + + } + + + //todo: set next seed here + /* + SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';" +"awidget_serial_seq" +"apurchaseorder_serial_seq" +"aworkorder_serial_seq" +"aquote_serial_seq" +"apm_serial_seq" + */ + + // var o = await biz.PutAsync(updatedObject);//In future may need to return entire object, for now just concurrency token + // if (o == null) + // return StatusCode(409, new ApiErrorResponse(biz.Errors)); + return Ok(ApiOkResponse.Response(new { Ok = 1 })); + } + + }//eoc }//ens \ No newline at end of file