This commit is contained in:
2021-09-20 17:27:29 +00:00
parent e1c1abeb60
commit 14e0a06e6d
4 changed files with 52 additions and 253 deletions

View File

@@ -59,29 +59,6 @@ namespace AyaNova.Api.Controllers
return CreatedAtAction(nameof(ReminderController.GetReminder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o)); return CreatedAtAction(nameof(ReminderController.GetReminder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
} }
// /// <summary>
// /// Duplicate Reminder
// /// (Wiki and Attachments are not duplicated)
// /// </summary>
// /// <param name="id">Source object id</param>
// /// <param name="apiVersion">From route path</param>
// /// <returns>Reminder</returns>
// [HttpPost("duplicate/{id}")]
// public async Task<IActionResult> DuplicateReminder([FromRoute] long id, ApiVersion apiVersion)
// {
// if (!serverState.IsOpen)
// return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
// ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
// if (!Authorized.HasCreateRole(HttpContext.Items, biz.BizType))
// return StatusCode(403, new ApiNotAuthorizedResponse());
// if (!ModelState.IsValid)
// return BadRequest(new ApiErrorResponse(ModelState));
// Reminder o = await biz.DuplicateAsync(id);
// if (o == null)
// return BadRequest(new ApiErrorResponse(biz.Errors));
// else
// return CreatedAtAction(nameof(ReminderController.GetReminder), new { id = o.Id, version = apiVersion.ToString() }, new ApiCreatedResponse(o));
// }
/// <summary> /// <summary>
/// Get Reminder /// Get Reminder
@@ -99,7 +76,8 @@ namespace AyaNova.Api.Controllers
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.GetAsync(id);
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
return Ok(ApiOkResponse.Response(o)); return Ok(ApiOkResponse.Response(o));
} }
@@ -118,7 +96,7 @@ namespace AyaNova.Api.Controllers
ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext); ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType)) if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.PutAsync(updatedObject); var o = await biz.PutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -151,7 +129,33 @@ namespace AyaNova.Api.Controllers
/// <summary>
/// Get Reminder schedule "more" info
/// </summary>
/// <param name="id"></param>
/// <returns>Information to display in schedule when selected for more info</returns>
[HttpGet("sched-info/{id}")]
public async Task<IActionResult> GetScheduledUserScheduleInfoView([FromRoute] long id)
{
if (!serverState.IsOpen)
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
ReminderBiz biz = ReminderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
return StatusCode(403, new ApiNotAuthorizedResponse());
if (!ModelState.IsValid)
return BadRequest(new ApiErrorResponse(ModelState));
var o = await biz.GetAsync(id);
if (o == null)
return BadRequest(new ApiErrorResponse(biz.Errors));
return Ok(ApiOkResponse.Response(new
{
o.Color,
o.Name,
o.Notes,
o.StartDate,
o.StopDate
}));
}
//------------ //------------

View File

@@ -38,7 +38,7 @@ namespace AyaNova.Api.Controllers
serverState = apiServerState; serverState = apiServerState;
} }
/* /*
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗
@@ -120,7 +120,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, biz.BizType) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.WorkOrderPutAsync(updatedObject); var o = await biz.WorkOrderPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -320,7 +320,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItem) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItem) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.ItemPutAsync(updatedObject); var o = await biz.ItemPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -427,7 +427,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemExpense) || biz.UserIsSubContractorFull || biz.UserIsSubContractorRestricted) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemExpense) || biz.UserIsSubContractorFull || biz.UserIsSubContractorRestricted)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.ExpensePutAsync(updatedObject); var o = await biz.ExpensePutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -535,7 +535,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLabor)) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLabor))
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.LaborPutAsync(updatedObject); var o = await biz.LaborPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -643,7 +643,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLoan) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemLoan) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.LoanPutAsync(updatedObject); var o = await biz.LoanPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -752,7 +752,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemOutsideService) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemOutsideService) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.OutsideServicePutAsync(updatedObject); var o = await biz.OutsideServicePutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -859,7 +859,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPart) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPart) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.PartPutAsync(updatedObject); var o = await biz.PartPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -965,7 +965,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPartRequest) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemPartRequest) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.PartRequestPutAsync(updatedObject); var o = await biz.PartRequestPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1071,7 +1071,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemScheduledUser) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemScheduledUser) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.ScheduledUserPutAsync(updatedObject); var o = await biz.ScheduledUserPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1104,7 +1104,7 @@ namespace AyaNova.Api.Controllers
/// <summary> /// <summary>
/// Get WorkOrderItemScheduledUser schedule info /// Get WorkOrderItemScheduledUser schedule info
/// </summary> /// </summary>
/// <param name="WorkOrderItemScheduledUserId"></param> /// <param name="WorkOrderItemScheduledUserId"></param>
@@ -1200,7 +1200,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTask)) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTask))
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.TaskPutAsync(updatedObject); var o = await biz.TaskPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1306,7 +1306,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTravel)) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemTravel))
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.TravelPutAsync(updatedObject); var o = await biz.TravelPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))
@@ -1412,7 +1412,7 @@ namespace AyaNova.Api.Controllers
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext); WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemUnit) || biz.UserIsRestrictedType) if (!Authorized.HasModifyRole(HttpContext.Items, AyaType.WorkOrderItemUnit) || biz.UserIsRestrictedType)
return StatusCode(403, new ApiNotAuthorizedResponse()); return StatusCode(403, new ApiNotAuthorizedResponse());
var o = await biz.UnitPutAsync(updatedObject); var o = await biz.UnitPutAsync(updatedObject);
if (o == null) if (o == null)
{ {
if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT)) if (biz.Errors.Exists(z => z.Code == ApiErrorCode.CONCURRENCY_CONFLICT))

View File

@@ -67,6 +67,11 @@ namespace AyaNova.Biz
internal async Task<Reminder> GetAsync(long id, bool logTheGetEvent = true) internal async Task<Reminder> GetAsync(long id, bool logTheGetEvent = true)
{ {
var ret = await ct.Reminder.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id); var ret = await ct.Reminder.AsNoTracking().SingleOrDefaultAsync(m => m.Id == id);
if (ret.UserId != UserId)
{
AddError(ApiErrorCode.NOT_AUTHORIZED, "generalerror", "A User may only retrieve their own reminders");
return null;
}
if (logTheGetEvent && ret != null) if (logTheGetEvent && ret != null)
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct);
return ret; return ret;
@@ -113,7 +118,7 @@ namespace AyaNova.Biz
return putObject; return putObject;
} }
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////
//UPDATE schedule only //UPDATE schedule only
// //
internal async Task<bool> PutNewScheduleTimeAsync(ScheduleItemAdjustParams p) internal async Task<bool> PutNewScheduleTimeAsync(ScheduleItemAdjustParams p)
@@ -143,7 +148,7 @@ namespace AyaNova.Biz
return false; return false;
} }
await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, dbObject.AyaType, AyaEvent.Modified), ct); await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, dbObject.Id, dbObject.AyaType, AyaEvent.Modified), ct);
await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, dbObject); await HandlePotentialNotificationEvent(AyaEvent.Modified, dbObject, dbObject);
return true; return true;
} }
@@ -425,7 +430,7 @@ namespace AyaNova.Biz
public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null) public async Task HandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
{ {
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<ReminderBiz>(); ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<ReminderBiz>();
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return; if (ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]"); log.LogDebug($"HandlePotentialNotificationEvent processing: [AyaType:{this.BizType}, AyaEvent:{ayaEvent}]");
bool isNew = currentObj == null; bool isNew = currentObj == null;

View File

@@ -4933,216 +4933,9 @@ namespace AyaNova.Biz
// //
internal async Task<object> ScheduledUserGetScheduleInfoViewAsync(long id, bool logTheGetEvent = true) internal async Task<object> ScheduledUserGetScheduleInfoViewAsync(long id, bool logTheGetEvent = true)
{ {
/*
MORE INFO DISPLAY
Summary info to display for woitem when open dialog (MUST check at server if restricted tech and not send / show some if not all of this)
No controls to change the time / date for now
wosummary
wostatus
woitemsummary
woitemstatus
woitempriority
tech
estimated qty
rate
tags
*/
var w = await WorkOrderGetPartialAsync(AyaType.WorkOrderItemScheduledUser, id, false, true); var w = await WorkOrderGetPartialAsync(AyaType.WorkOrderItemScheduledUser, id, false, true);
if (UserIsRestrictedType && w.Items[0].ScheduledUsers[0].UserId != UserId)//restricted users can only see their own if (UserIsRestrictedType && w.Items[0].ScheduledUsers[0].UserId != UserId)//restricted users can only see their own
return null; return null;
/*
{
"data": {
"id": 6,
"concurrency": 14171235,
"serial": 6,
"notes": "Esse aut totam adipisci minima optio rerum sed qui.",
"wiki": null,
"customFields": null,
"tags": [
"black",
"jade",
"zebra",
"zone0",
"zone6"
],
"customerId": 11,
"customerViz": "Parker, Ryan and Denesik",
"customerTechNotesViz": null,
"projectId": null,
"projectViz": null,
"internalReferenceNumber": "irf-5922",
"customerReferenceNumber": "crf-8231",
"customerContactName": null,
"fromQuoteId": null,
"fromPMId": null,
"createdDate": "2021-09-16T13:58:46.481767Z",
"serviceDate": "2021-11-11T23:00:00Z",
"completeByDate": "2021-11-16T23:00:00Z",
"durationToCompleted": "00:00:00",
"invoiceNumber": null,
"customerSignature": null,
"customerSignatureName": null,
"customerSignatureCaptured": null,
"techSignature": null,
"techSignatureName": null,
"techSignatureCaptured": null,
"onsite": false,
"contractId": null,
"contractViz": "-",
"lastStatusId": 1,
"postAddress": "014 Roberts Garden",
"postCity": "Chesterborough",
"postRegion": "California",
"postCountry": "Nauru",
"postCode": "66467",
"address": "0844 Zieme Prairie",
"city": "Chesterborough",
"region": "California",
"country": "Nauru",
"latitude": -2.527,
"longitude": 132.4754,
"items": [
{
"id": 14,
"concurrency": 14171235,
"notes": "itemnotes - 2 ",
"wiki": null,
"customFields": null,
"tags": [],
"workOrderId": 6,
"techNotes": "technotes - 2",
"workOrderItemStatusId": 1,
"workOrderItemStatusNameViz": "Item is completed",
"workOrderItemStatusColorViz": "#c00000",
"workOrderItemPriorityId": 1,
"workOrderItemPriorityNameViz": "Immediately",
"workOrderItemPriorityColorViz": "#c00000",
"requestDate": "2021-11-11T23:02:00Z",
"warrantyService": false,
"sequence": 3,
"fromCSRId": null,
"fromCSRViz": null,
"expenses": [],
"labors": [],
"loans": [],
"parts": [],
"partRequests": [],
"scheduledUsers": [
{
"id": 33,
"concurrency": 14171866,
"userId": 10,
"userViz": "Eliza Hartmann - Tech",
"estimatedQuantity": 1,
"startDate": "2021-11-09T21:00:00Z",
"stopDate": "2021-11-09T22:00:00Z",
"serviceRateId": null,
"serviceRateViz": null,
"workOrderItemId": 14
}
],
"tasks": [],
"travels": [],
"units": [],
"outsideServices": []
}
],
"states": [
{
"id": 26,
"concurrency": 14171235,
"workOrderId": 6,
"workOrderStatusId": 2,
"created": "2021-11-11T23:05:00Z",
"userId": 25,
"userViz": "Carroll Miller",
"nameViz": "Needs to be assigned",
"colorViz": "#80ffff",
"completedViz": false,
"lockedViz": false
},
{
"id": 27,
"concurrency": 14171235,
"workOrderId": 6,
"workOrderStatusId": 3,
"created": "2021-11-12T00:00:00Z",
"userId": 10,
"userViz": "Eliza Hartmann - Tech",
"nameViz": "Scheduled",
"colorViz": "#00ff00",
"completedViz": false,
"lockedViz": false
},
{
"id": 28,
"concurrency": 14171235,
"workOrderId": 6,
"workOrderStatusId": 1,
"created": "2021-11-12T00:05:00Z",
"userId": 10,
"userViz": "Eliza Hartmann - Tech",
"nameViz": "Manager approval required",
"colorViz": "#c00000",
"completedViz": false,
"lockedViz": true
},
{
"id": 29,
"concurrency": 14171235,
"workOrderId": 6,
"workOrderStatusId": 3,
"created": "2021-11-12T01:00:00Z",
"userId": 10,
"userViz": "Eliza Hartmann - Tech",
"nameViz": "Scheduled",
"colorViz": "#00ff00",
"completedViz": false,
"lockedViz": false
},
{
"id": 30,
"concurrency": 14171235,
"workOrderId": 6,
"workOrderStatusId": 1,
"created": "2021-11-12T01:00:00Z",
"userId": 10,
"userViz": "Eliza Hartmann - Tech",
"nameViz": "Manager approval required",
"colorViz": "#c00000",
"completedViz": false,
"lockedViz": true
}
],
"isLockedAtServer": false,
"alertViz": null,
"fromQuoteViz": null,
"fromPMViz": null,
"isCompleteRecord": true,
"userIsRestrictedType": false,
"userIsTechRestricted": false,
"userIsSubContractorFull": false,
"userIsSubContractorRestricted": false,
"userCanViewPartCosts": false,
"userCanViewLaborOrTravelRateCosts": false,
"userCanViewLoanerCosts": false
}
}
wosummary
wostatus
woitemsummary
woitemstatus
woitempriority
tech
estimated qty
rate
tags
*/
string WoStatusName = string.Empty; string WoStatusName = string.Empty;
string WoStatusColor = string.Empty; string WoStatusColor = string.Empty;
bool WoStatusCompleted = false; bool WoStatusCompleted = false;
@@ -5157,7 +4950,6 @@ namespace AyaNova.Biz
WoStatusCompleted = st.CompletedViz; WoStatusCompleted = st.CompletedViz;
WoStatusLocked = st.LockedViz; WoStatusLocked = st.LockedViz;
} }
return new return new
{ {
serial = w.Serial, serial = w.Serial,
@@ -5182,8 +4974,6 @@ namespace AyaNova.Biz
wotags = w.Tags, wotags = w.Tags,
woitemtags = w.Items[0].Tags woitemtags = w.Items[0].Tags
}; };
} }
//////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////