diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index 124cf59b..abca5c1a 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -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
///
/// Create WorkOrderItem
///
- /// WorkOrderItem level only no descendents
+ /// WorkOrderItem - no descendents
///
- /// WorkOrderItem object (no descendents)
+ /// WorkOrderItem object
[HttpPost("items")]
- public async Task PostWorkOrderItem([FromBody] WorkOrderItem newObject, ApiVersion apiVersion)
+ public async Task PostWorkOrderItem([FromBody] dtWorkOrderItem newObject, ApiVersion apiVersion)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index bf1b8cfe..c3ff7078 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -70,7 +70,7 @@ namespace AyaNova.Biz
//
internal async Task 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 GetAsync(long id, bool logTheGetEvent = true)
+ internal async Task 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 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 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 CreateItemAsync(WorkOrderItem newObject)
+ internal async Task CreateItemAsync(dtWorkOrderItem dtNewObject)
{
+ WorkOrderItem newObject = new WorkOrderItem();
+ CopyObject.Copy(dtNewObject, newObject);
await ItemValidateAsync(newObject, null);
if (HasErrors)
return null;
diff --git a/server/AyaNova/models/WorkOrderItem.cs b/server/AyaNova/models/WorkOrderItem.cs
index 48957546..7deb287b 100644
--- a/server/AyaNova/models/WorkOrderItem.cs
+++ b/server/AyaNova/models/WorkOrderItem.cs
@@ -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();
+ }
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();
+ //dependents
+ WorkorderItemLabors = new List();
+ WorkorderItemParts = new List();
+ }
+ 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 Tags { get; set; }
+
+ //Principle
+ [Required]
+ public long WorkorderId { get; set; }
+ [JsonIgnore]
public WorkOrder WorkOrder { get; set; }
//dependents
public List WorkorderItemLabors { get; set; }
public List WorkorderItemParts { get; set; }
-
- public WorkOrderItem()
- {
- Tags = new List();
- WorkorderItemLabors = new List();
- WorkorderItemParts = new List();
- }
-
- //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