This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user