This commit is contained in:
2020-05-08 15:01:33 +00:00
parent 79727bb885
commit 95743ade97
3 changed files with 41 additions and 31 deletions

View File

@@ -105,7 +105,7 @@ namespace AyaNova.Api.Controllers
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var o = await biz.GetAsync(id);
var o = await biz.GetEntireWorkOrderAsync(id);
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType)));
}
@@ -177,11 +177,11 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Create WorkOrderItem
/// </summary>
/// <param name="newObject">WorkOrderItem level only no descendents</param>
/// <param name="newObject">WorkOrderItem - no descendents</param>
/// <param name="apiVersion"></param>
/// <returns>WorkOrderItem object (no descendents)</returns>
/// <returns>WorkOrderItem object</returns>
[HttpPost("items")]
public async Task<IActionResult> PostWorkOrderItem([FromBody] WorkOrderItem newObject, ApiVersion apiVersion)
public async Task<IActionResult> PostWorkOrderItem([FromBody] dtWorkOrderItem newObject, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));

View File

@@ -70,7 +70,7 @@ namespace AyaNova.Biz
//
internal async Task<WorkOrder> DuplicateAsync(long id)
{
WorkOrder dbObject = await GetAsync(id, false);
WorkOrder dbObject = await GetEntireWorkOrderAsync(id, false);
if (dbObject == null)
{
AddError(ApiErrorCode.NOT_FOUND, "id");
@@ -94,7 +94,7 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
// GET
//
internal async Task<WorkOrder> GetAsync(long id, bool logTheGetEvent = true)
internal async Task<WorkOrder> GetEntireWorkOrderAsync(long id, bool logTheGetEvent = true)
{
//Note: there could be rules checking here in future, i.e. can only get own workorder or something
//if so, then need to implement AddError and in route handle Null return with Error check just like PUT route does now
@@ -121,7 +121,7 @@ namespace AyaNova.Biz
internal async Task<WorkOrder> PutAsync(long id, dtWorkOrder dtPutObject)
{
WorkOrder dbObject = await GetAsync(id, false);
WorkOrder dbObject = await ct.WorkOrder.SingleOrDefaultAsync(m => m.Id == id);
if (dbObject == null)
{
AddError(ApiErrorCode.NOT_FOUND, "id");
@@ -195,8 +195,10 @@ namespace AyaNova.Biz
//
internal async Task<bool> DeleteAsync(long workorderId)
{
WorkOrder dbObject = await GetAsync(workorderId);
//NOPE: will need to traverse the workorder object and delete bit by bit
//Unless implement cascade delete, hmmm....is there a downside to that, this is the only route to delete it so
//if they are allowed and it validates to delete then why not? (would be much faster letting db handle it and not traversing)
WorkOrder dbObject = await GetEntireWorkOrderAsync(workorderId);
ValidateCanDelete(dbObject);
if (HasErrors)
@@ -277,8 +279,10 @@ namespace AyaNova.Biz
////////////////////////////////////////////////////////////////////////////////////////////////
//CREATE
//
internal async Task<WorkOrderItem> CreateItemAsync(WorkOrderItem newObject)
internal async Task<WorkOrderItem> CreateItemAsync(dtWorkOrderItem dtNewObject)
{
WorkOrderItem newObject = new WorkOrderItem();
CopyObject.Copy(dtNewObject, newObject);
await ItemValidateAsync(newObject, null);
if (HasErrors)
return null;

View File

@@ -5,14 +5,14 @@ using Newtonsoft.Json;
namespace AyaNova.Models
{
//NOTE: Any non required field (nullable in DB) sb nullable here, i.e. decimal? not decimal,
//otherwise the server will call it an invalid record if the field isn't sent from client
public class WorkOrderItem
public class dtWorkOrderItem
{
public dtWorkOrderItem()
{
Tags = new List<string>();
}
public long Id { get; set; }
public uint ConcurrencyToken { get; set; }
public string Notes { get; set; }
public string Wiki { get; set; }
public string CustomFields { get; set; }
@@ -20,28 +20,34 @@ namespace AyaNova.Models
//Principle
[Required]
public long WorkorderId { get; set; }//fk
public long WorkorderId { get; set; }
}//eoc
[JsonIgnore]//Avoid circular reference when serializing
public class WorkOrderItem
{
public WorkOrderItem()
{
Tags = new List<string>();
//dependents
WorkorderItemLabors = new List<WorkOrderItemLabor>();
WorkorderItemParts = new List<WorkOrderItemPart>();
}
public long Id { get; set; }
public uint ConcurrencyToken { get; set; }
public string Notes { get; set; }
public string Wiki { get; set; }
public string CustomFields { get; set; }
public List<string> Tags { get; set; }
//Principle
[Required]
public long WorkorderId { get; set; }
[JsonIgnore]
public WorkOrder WorkOrder { get; set; }
//dependents
public List<WorkOrderItemLabor> WorkorderItemLabors { get; set; }
public List<WorkOrderItemPart> WorkorderItemParts { get; set; }
public WorkOrderItem()
{
Tags = new List<string>();
WorkorderItemLabors = new List<WorkOrderItemLabor>();
WorkorderItemParts = new List<WorkOrderItemPart>();
}
//Not persisted business properties
//NOTE: this could be a common class applied to everything for common biz rule stuff
// //i.e. specific rights in situations based on rules, like candelete, canedit etc
// [NotMapped]
// public bool OP { get; set; }//patch operation value
}//eoc
}//eons