From 00cba9b58b51f12eb0d6d832566c3e15787de856 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 8 Jul 2021 18:12:06 +0000 Subject: [PATCH] --- server/AyaNova/Controllers/UnitController.cs | 67 +++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/server/AyaNova/Controllers/UnitController.cs b/server/AyaNova/Controllers/UnitController.cs index a6cab803..7736f4a6 100644 --- a/server/AyaNova/Controllers/UnitController.cs +++ b/server/AyaNova/Controllers/UnitController.cs @@ -11,6 +11,7 @@ using AyaNova.Api.ControllerHelpers; using AyaNova.Biz; using System.Collections.Generic; using System.Text; +using System; namespace AyaNova.Api.Controllers { @@ -195,7 +196,7 @@ namespace AyaNova.Api.Controllers if (searchParam.tags.Count == 0) //note: this error only applies to api users so not translated return BadRequest(new ApiErrorResponse(ApiErrorCode.INVALID_OPERATION, "tags", "tags are required")); - + //build query //select id,serial,customerid from aunit where aunit.tags @> array['red','blue'::varchar(255)] AND customerid=19 /* @@ -238,5 +239,69 @@ namespace AyaNova.Api.Controllers //------------ + /// + /// Get Unit service and warranty info + /// + /// + /// Service and warranty info + [HttpGet("service-warranty-info/{id}")] + public async Task GetUnitServiceWarrantyInfo([FromRoute] long id) + { + if (!serverState.IsOpen) + return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); + if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.Unit)) + return StatusCode(403, new ApiNotAuthorizedResponse()); + if (!ModelState.IsValid) + return BadRequest(new ApiErrorResponse(ModelState)); + var u = await ct.Unit.AsNoTracking().Where(x => x.Id == id).FirstOrDefaultAsync(); + if (u == null) + return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND)); + UnitModel unitModel = null; + if (u.UnitModelId != null) + unitModel = await ct.UnitModel.AsNoTracking().Where(x => x.Id == u.UnitModelId).FirstOrDefaultAsync(); + + + if (u.OverrideModelWarranty || unitModel == null) + { + + } + else + { + + } + + //last workorders + List recentWorkOrders=new List(); + var lastWoItemIds = await ct.WorkOrderItemUnit.AsNoTracking().Where(z => z.UnitId == id).OrderByDescending(z => z.Id).Take(3).Select(z => z.WorkOrderItemId).ToListAsync(); + + foreach (long woitemid in lastWoItemIds){ + var woid=await ct.WorkOrderItem.AsNoTracking().Where(x => x.Id == woitemid).OrderByDescending(x=>x.WorkOrderId).Select(x => x.WorkOrderId).FirstOrDefaultAsync(); + recentWorkOrders.Add( + await ct.WorkOrder.AsNoTracking().Where(x=>x.Id==woid).Select(x=>new RecentWorkOrder(x.Serial,x.Id,x.ServiceDate)).FirstOrDefaultAsync(); + ); + } + + + + + return Ok(ApiOkResponse.Response(new + { + unit = new AddressRecord(u.Serial, u.Address, u.City, u.Region, u.Country, u.Latitude, u.Longitude) + })); + } + + private record RecentWorkOrder(long? Serial, long? Id, DateTime? ServiceDate); + + private record UnitServiceWarrantyInfo( + List RecentWorkOrders, + DateTime? PurchaseDate, + string PurchasedFromVendor, + long? PurchaseFromVendorId, + string PurchaseReceiptNumber, + bool LifeTimeWarranty, + DateTime? WarrantyExpiryDate, + string WarrantyTerms + ); + }//eoc }//eons \ No newline at end of file