This commit is contained in:
2021-03-22 18:00:55 +00:00
parent a64f99b880
commit 6ea67c0914

View File

@@ -147,26 +147,68 @@ namespace AyaNova.Api.Controllers
if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Global))
return StatusCode(403, new ApiNotAuthorizedResponse());
/*
modelBuilder.Entity<PurchaseOrder>().Property(z => z.Serial).UseIdentityByDefaultColumn();
modelBuilder.Entity<Widget>().Property(z => z.Serial).UseIdentityByDefaultColumn();
modelBuilder.Entity<WorkOrder>().Property(z => z.Serial).UseIdentityByDefaultColumn();
modelBuilder.Entity<Quote>().Property(z => z.Serial).UseIdentityByDefaultColumn();
modelBuilder.Entity<PM>().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));
}
/// <summary>
/// PUT New serial start seed
/// </summary>
/// <param name="aType"> one of PurchaseOrder, Workorder, PM, Quote serialized object types</param>
/// <param name="nextSeed">Next value to use</param>
/// <returns>OK or error response if not a valid value (seed number already in use)</returns>
[HttpPut("seeds/{ayaType}/{nextSeed")]
public async Task<IActionResult> 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