From a70b28e6d6905c6373e07cd637a73cd23b3314e1 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 8 Jul 2021 20:08:04 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- server/AyaNova/Controllers/UnitController.cs | 60 ++++++++++++++------ 2 files changed, 43 insertions(+), 19 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index fcc80a75..b77f3b95 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "true", + "AYANOVA_SERVER_TEST_MODE": "false", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/Controllers/UnitController.cs b/server/AyaNova/Controllers/UnitController.cs index 597c810f..43342114 100644 --- a/server/AyaNova/Controllers/UnitController.cs +++ b/server/AyaNova/Controllers/UnitController.cs @@ -291,32 +291,56 @@ namespace AyaNova.Api.Controllers //Recent workorders //arbitrarily returning last 3 work orders to account for one of them being the current active work order and not wanting to try to filter in closed status workorders for reasons //limiting to three because there is already an all workorders option from unit itself if they are really researching the history and it's about three clicks away from this info - - 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) + + //List RecentWorkOrders = new List(); + + string q = "select distinct(aworkorder.serial), aworkorder.id, aworkorder.servicedate from aworkorder " + + "left join aworkorderitem on aworkorder.id=aworkorderitem.workorderid " + + "left join aworkorderitemunit on aworkorderitemunit.workorderitemid=aworkorderitem.id " + + $"where aworkorderitemunit.unitid={id} " + + "order by aworkorder.serial DESC " + + "limit 3"; + using (var cmd = ct.Database.GetDbConnection().CreateCommand()) { - var woid = await ct.WorkOrderItem.AsNoTracking().Where(x => x.Id == woitemid).OrderByDescending(x => x.WorkOrderId).Select(x => x.WorkOrderId).FirstOrDefaultAsync(); - ret.RecentWorkOrders.Add( - await ct.WorkOrder.AsNoTracking().Where(x => x.Id == woid).Select(x => new RecentWorkOrder(x.Serial, x.Id, x.ServiceDate)).FirstOrDefaultAsync() - ); + await ct.Database.OpenConnectionAsync(); + cmd.CommandText = q; + using (var dr = await cmd.ExecuteReaderAsync()) + { + while (dr.Read()) + { + ret.RecentWorkOrders.Add(new RecentWorkOrder(dr.GetInt64(0), dr.GetInt64(1), dr.GetDateTime(2))); + } + } } + // var lastWoItemIds = await ct.WorkOrderItemUnit.AsNoTracking().Where(z => z.UnitId == id).OrderByDescending(z => z.Id).Take(10).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(); + // ret.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(ret)); } - internal record RecentWorkOrder(long? Serial, long? Id, DateTime? ServiceDate); + public record RecentWorkOrder(long? Serial, long? Id, DateTime? ServiceDate); - internal class UnitServiceWarrantyInfo + public class UnitServiceWarrantyInfo { - internal List RecentWorkOrders { get; set; } - internal DateTime? PurchaseDate { get; set; } - internal string PurchasedFromVendor { get; set; } - internal long? PurchaseFromVendorId { get; set; } - internal string PurchaseReceiptNumber { get; set; } - internal bool LifeTimeWarranty { get; set; } - internal DateTime? WarrantyExpiryDate { get; set; } - internal string WarrantyTerms { get; set; } + public UnitServiceWarrantyInfo() + { + RecentWorkOrders = new List(); + } + public List RecentWorkOrders { get; set; } + public DateTime? PurchaseDate { get; set; } + public string PurchasedFromVendor { get; set; } + public long? PurchaseFromVendorId { get; set; } + public string PurchaseReceiptNumber { get; set; } + public bool LifeTimeWarranty { get; set; } + public DateTime? WarrantyExpiryDate { get; set; } + public string WarrantyTerms { get; set; } } }//eoc