This commit is contained in:
@@ -105,7 +105,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
return StatusCode(403, new ApiNotAuthorizedResponse());
|
return StatusCode(403, new ApiNotAuthorizedResponse());
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return BadRequest(new ApiErrorResponse(ModelState));
|
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));
|
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||||
return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType)));
|
return Ok(ApiOkResponse.Response(o, !Authorized.HasModifyRole(HttpContext.Items, biz.BizType)));
|
||||||
}
|
}
|
||||||
@@ -177,11 +177,11 @@ namespace AyaNova.Api.Controllers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create WorkOrderItem
|
/// Create WorkOrderItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="newObject">WorkOrderItem level only no descendents</param>
|
/// <param name="newObject">WorkOrderItem - no descendents</param>
|
||||||
/// <param name="apiVersion"></param>
|
/// <param name="apiVersion"></param>
|
||||||
/// <returns>WorkOrderItem object (no descendents)</returns>
|
/// <returns>WorkOrderItem object</returns>
|
||||||
[HttpPost("items")]
|
[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)
|
if (!serverState.IsOpen)
|
||||||
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<WorkOrder> DuplicateAsync(long id)
|
internal async Task<WorkOrder> DuplicateAsync(long id)
|
||||||
{
|
{
|
||||||
WorkOrder dbObject = await GetAsync(id, false);
|
WorkOrder dbObject = await GetEntireWorkOrderAsync(id, false);
|
||||||
if (dbObject == null)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
@@ -94,7 +94,7 @@ namespace AyaNova.Biz
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// GET
|
// 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
|
//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
|
//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)
|
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)
|
if (dbObject == null)
|
||||||
{
|
{
|
||||||
AddError(ApiErrorCode.NOT_FOUND, "id");
|
AddError(ApiErrorCode.NOT_FOUND, "id");
|
||||||
@@ -195,8 +195,10 @@ namespace AyaNova.Biz
|
|||||||
//
|
//
|
||||||
internal async Task<bool> DeleteAsync(long workorderId)
|
internal async Task<bool> DeleteAsync(long workorderId)
|
||||||
{
|
{
|
||||||
|
//NOPE: will need to traverse the workorder object and delete bit by bit
|
||||||
WorkOrder dbObject = await GetAsync(workorderId);
|
//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);
|
ValidateCanDelete(dbObject);
|
||||||
if (HasErrors)
|
if (HasErrors)
|
||||||
@@ -277,8 +279,10 @@ namespace AyaNova.Biz
|
|||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//CREATE
|
//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);
|
await ItemValidateAsync(newObject, null);
|
||||||
if (HasErrors)
|
if (HasErrors)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -5,14 +5,14 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace AyaNova.Models
|
namespace AyaNova.Models
|
||||||
{
|
{
|
||||||
//NOTE: Any non required field (nullable in DB) sb nullable here, i.e. decimal? not decimal,
|
public class dtWorkOrderItem
|
||||||
//otherwise the server will call it an invalid record if the field isn't sent from client
|
|
||||||
|
|
||||||
public class WorkOrderItem
|
|
||||||
{
|
{
|
||||||
|
public dtWorkOrderItem()
|
||||||
|
{
|
||||||
|
Tags = new List<string>();
|
||||||
|
}
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
public uint ConcurrencyToken { get; set; }
|
public uint ConcurrencyToken { get; set; }
|
||||||
|
|
||||||
public string Notes { get; set; }
|
public string Notes { get; set; }
|
||||||
public string Wiki { get; set; }
|
public string Wiki { get; set; }
|
||||||
public string CustomFields { get; set; }
|
public string CustomFields { get; set; }
|
||||||
@@ -20,28 +20,34 @@ namespace AyaNova.Models
|
|||||||
|
|
||||||
//Principle
|
//Principle
|
||||||
[Required]
|
[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; }
|
public WorkOrder WorkOrder { get; set; }
|
||||||
|
|
||||||
//dependents
|
//dependents
|
||||||
public List<WorkOrderItemLabor> WorkorderItemLabors { get; set; }
|
public List<WorkOrderItemLabor> WorkorderItemLabors { get; set; }
|
||||||
public List<WorkOrderItemPart> WorkorderItemParts { 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
|
}//eoc
|
||||||
|
|
||||||
}//eons
|
}//eons
|
||||||
|
|||||||
Reference in New Issue
Block a user