diff --git a/server/AyaNova/Controllers/WorkOrderController.cs b/server/AyaNova/Controllers/WorkOrderController.cs
index bf5c8424..776dc79e 100644
--- a/server/AyaNova/Controllers/WorkOrderController.cs
+++ b/server/AyaNova/Controllers/WorkOrderController.cs
@@ -78,31 +78,6 @@ namespace AyaNova.Api.Controllers
}
- // ///
- // /// Duplicate WorkOrder
- // /// (Wiki and Attachments are not duplicated)
- // ///
- // /// Source object id
- // /// From route path
- // /// WorkOrder
- // [HttpPost("duplicate/{id}")]
- // public async Task DuplicateWorkOrder([FromRoute] long id, ApiVersion apiVersion)
- // {
- // if (!serverState.IsOpen)
- // return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
- // WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
- // if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
- // return StatusCode(403, new ApiNotAuthorizedResponse());
- // if (!ModelState.IsValid)
- // return BadRequest(new ApiErrorResponse(ModelState));
- // WorkOrder o = await biz.WorkOrderDuplicateAsync(id);
- // if (o == null)
- // return BadRequest(new ApiErrorResponse(biz.Errors));
- // else
- // return CreatedAtAction(nameof(WorkOrderController.GetWorkOrder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
- // }
-
-
///
/// Get WorkOrder
///
@@ -1127,6 +1102,29 @@ namespace AyaNova.Api.Controllers
return NoContent();
}
+
+
+ ///
+ /// Get WorkOrderItemScheduledUser schedule info
+ ///
+ ///
+ /// Information to display in schedule when selected for more info
+ [HttpGet("items/scheduled-users/sched-info/{WorkOrderItemScheduledUserId}")]
+ public async Task GetScheduledUserScheduleInfoView([FromRoute] long WorkOrderItemScheduledUserId)
+ {
+ if (!serverState.IsOpen)
+ return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
+ WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
+ if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.WorkOrderItemScheduledUser))
+ return StatusCode(403, new ApiNotAuthorizedResponse());
+ if (!ModelState.IsValid)
+ return BadRequest(new ApiErrorResponse(ModelState));
+ var o = await biz.ScheduledUserGetScheduleInfoViewAsync(WorkOrderItemScheduledUserId);
+ if (o == null)
+ return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
+ return Ok(ApiOkResponse.Response(o));
+ }
+
#endregion WorkOrderItemScheduledUser
diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs
index 6e748cf9..180dc10f 100644
--- a/server/AyaNova/biz/WorkOrderBiz.cs
+++ b/server/AyaNova/biz/WorkOrderBiz.cs
@@ -816,7 +816,7 @@ namespace AyaNova.Biz
return await WorkOrderGetAsync(id, true, false, populateForReporting);
var wid = await GetWorkOrderIdFromRelativeAsync(ayaType, id, ct);
//get header only
- var ret = await ct.WorkOrder.AsNoTracking().SingleOrDefaultAsync(x => x.Id == wid.ParentId);
+ var ret = await ct.WorkOrder.AsNoTracking().Include(s => s.States).SingleOrDefaultAsync(x => x.Id == wid.ParentId);
//not found don't bomb, just return null
if (ret == null) return ret;
//explicit load subitems as required...
@@ -840,10 +840,8 @@ namespace AyaNova.Biz
}
else
{
-
//get the single workorder item required
woitem = await ct.WorkOrderItem.AsNoTracking().SingleOrDefaultAsync(x => x.Id == wid.ChildItemId);
-
switch (ayaType)
{
case AyaType.WorkOrderItemExpense:
@@ -1445,6 +1443,12 @@ namespace AyaNova.Biz
private async Task StatePopulateVizFields(WorkOrderState o)
{
o.UserViz = await ct.User.AsNoTracking().Where(x => x.Id == o.UserId).Select(x => x.Name).FirstOrDefaultAsync();
+ var StateInfo = await ct.WorkOrderStatus.AsNoTracking().Where(x => x.Id == o.WorkOrderStatusId).FirstOrDefaultAsync();
+ o.NameViz = StateInfo.Name;
+ o.ColorViz = StateInfo.Color;
+ o.CompletedViz = StateInfo.Completed;
+ o.LockedViz = StateInfo.Locked;
+
}
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1776,7 +1780,7 @@ namespace AyaNova.Biz
CustomerServiceRequestBiz biz = CustomerServiceRequestBiz.GetBiz(ct);
var csr = await biz.GetAsync((long)newObject.FromCSRId, false);
csr.WorkOrderItemId = newObject.Id;
- csr.Status=CustomerServiceRequestStatus.Accepted;
+ csr.Status = CustomerServiceRequestStatus.Accepted;
await biz.PutAsync(csr);
}
@@ -1981,6 +1985,20 @@ namespace AyaNova.Biz
if (o.FromCSRId != null)
o.FromCSRViz = await ct.CustomerServiceRequest.AsNoTracking().Where(x => x.Id == o.FromCSRId).Select(x => x.Name).FirstOrDefaultAsync();
+ if (o.WorkOrderItemStatusId != null)
+ {
+ var StatusInfo = await ct.WorkOrderItemStatus.AsNoTracking().FirstOrDefaultAsync(x => x.Id == o.WorkOrderItemStatusId);
+ o.WorkOrderItemStatusNameViz = StatusInfo.Name;
+ o.WorkOrderItemStatusColorViz = StatusInfo.Color;
+ }
+
+ if (o.WorkOrderItemPriorityId != null)
+ {
+ var PriorityInfo = await ct.WorkOrderItemPriority.AsNoTracking().FirstOrDefaultAsync(x => x.Id == o.WorkOrderItemPriorityId);
+ o.WorkOrderItemPriorityNameViz = PriorityInfo.Name;
+ o.WorkOrderItemPriorityColorViz = PriorityInfo.Color;
+ }
+
foreach (var v in o.Expenses)
await ExpensePopulateVizFields(v);
foreach (var v in o.Labors)
@@ -4874,6 +4892,252 @@ namespace AyaNova.Biz
return true;
}
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ // GET Schedule view "more info" display values
+ //
+ internal async Task