From 93dd8f5e49b45b7ecaf3d72e204aa8f32c1f9347 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 8 Mar 2023 21:23:16 +0000 Subject: [PATCH] case 4477 --- docs/8.0/ayanova/docs/changelog.md | 6 +++++ server/AyaNova/biz/CustomerBiz.cs | 35 ++++++++++++++++++++++++------ server/AyaNova/biz/UnitBiz.cs | 24 ++++++++++++++++++-- server/AyaNova/models/Customer.cs | 4 ++++ server/AyaNova/models/Unit.cs | 6 ++++- 5 files changed, 65 insertions(+), 10 deletions(-) diff --git a/docs/8.0/ayanova/docs/changelog.md b/docs/8.0/ayanova/docs/changelog.md index fdbe2df7..a46999fc 100644 --- a/docs/8.0/ayanova/docs/changelog.md +++ b/docs/8.0/ayanova/docs/changelog.md @@ -8,6 +8,12 @@ See the [upgrade instructions](ops-upgrade.md) section of this manual for detail ## 2023 + +"LastWorkOrderViz": 549, + "LastWorkOrderCompletedViz": 383, + "LastServiceDateViz": "2023-04-05T01:00:00Z", + "LastServiceDateCompletedViz": "2023-02-28T00:00:00Z", + ### AyaNova 8.0.36 (2023-03-06) #### Fixed diff --git a/server/AyaNova/biz/CustomerBiz.cs b/server/AyaNova/biz/CustomerBiz.cs index 28b30870..9de4cea6 100644 --- a/server/AyaNova/biz/CustomerBiz.cs +++ b/server/AyaNova/biz/CustomerBiz.cs @@ -402,17 +402,19 @@ namespace AyaNova.Biz } //Too slow and complex for EF Core + + using (var command = ct.Database.GetDbConnection().CreateCommand()) { await ct.Database.OpenConnectionAsync(); + + //Most recent workorder of any status command.CommandText = @$"SELECT serial AS LASTWORKORDERSERIAL, - SERVICEDATE AS LASTWORKORDERSERVICEDATE - FROM AWORKORDER - LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID - WHERE AWORKORDERSTATUS.COMPLETED = TRUE - AND AWORKORDER.CUSTOMERID = {o.Id} - ORDER BY AWORKORDER.ID DESC - LIMIT 1"; + SERVICEDATE AS LASTWORKORDERSERVICEDATE + FROM AWORKORDER + WHERE AWORKORDER.CUSTOMERID = {o.Id} + ORDER BY AWORKORDER.ID DESC + LIMIT 1"; using (var dr = await command.ExecuteReaderAsync()) if (await dr.ReadAsync()) { @@ -420,6 +422,25 @@ namespace AyaNova.Biz o.LastServiceDateViz = dr.GetDateTime(1); } + + + //Most recent workorder of Completed=true status + command.CommandText = @$"SELECT serial AS LASTWORKORDERSERIAL, + SERVICEDATE AS LASTWORKORDERSERVICEDATE + FROM AWORKORDER + LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID + WHERE AWORKORDERSTATUS.COMPLETED = TRUE + AND AWORKORDER.CUSTOMERID = {o.Id} + ORDER BY AWORKORDER.ID DESC + LIMIT 1"; + using (var dr = await command.ExecuteReaderAsync()) + if (await dr.ReadAsync()) + { + o.LastWorkOrderCompletedViz = dr.GetInt64(0); + o.LastServiceDateCompletedViz = dr.GetDateTime(1); + } + + await ct.Database.CloseConnectionAsync(); } } diff --git a/server/AyaNova/biz/UnitBiz.cs b/server/AyaNova/biz/UnitBiz.cs index b00db071..fa611b50 100644 --- a/server/AyaNova/biz/UnitBiz.cs +++ b/server/AyaNova/biz/UnitBiz.cs @@ -384,6 +384,25 @@ namespace AyaNova.Biz using (var command = ct.Database.GetDbConnection().CreateCommand()) { await ct.Database.OpenConnectionAsync(); + + //Most recent workorder of any status + command.CommandText = @$"SELECT serial AS LASTWORKORDERSERIAL, + SERVICEDATE AS LASTWORKORDERSERVICEDATE + FROM AWORKORDER + LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID + LEFT JOIN AWORKORDERITEMUNIT ON AWORKORDERITEM.ID = AWORKORDERITEMUNIT.WORKORDERITEMID + WHERE AWORKORDERITEMUNIT.UNITID = {o.Id} + ORDER BY AWORKORDER.ID DESC + LIMIT 1"; + using (var dr = await command.ExecuteReaderAsync()) + if (await dr.ReadAsync()) + { + o.LastWorkOrderViz = dr.GetInt64(0); + o.LastServiceDateViz = dr.GetDateTime(1); + } + + + //Most recent workorder of Completed=true status command.CommandText = @$"SELECT serial AS LASTWORKORDERSERIAL, SERVICEDATE AS LASTWORKORDERSERVICEDATE FROM AWORKORDER @@ -397,10 +416,11 @@ namespace AyaNova.Biz using (var dr = await command.ExecuteReaderAsync()) if (await dr.ReadAsync()) { - o.LastWorkOrderViz = dr.GetInt64(0); - o.LastServiceDateViz = dr.GetDateTime(1); + o.LastWorkOrderCompletedViz = dr.GetInt64(0); + o.LastServiceDateCompletedViz = dr.GetDateTime(1); } + await ct.Database.CloseConnectionAsync(); } diff --git a/server/AyaNova/models/Customer.cs b/server/AyaNova/models/Customer.cs index 6e222b7f..6749c607 100644 --- a/server/AyaNova/models/Customer.cs +++ b/server/AyaNova/models/Customer.cs @@ -43,7 +43,11 @@ namespace AyaNova.Models [NotMapped] public long? LastWorkOrderViz { get; set; } [NotMapped] + public long? LastWorkOrderCompletedViz { get; set; } + [NotMapped] public DateTime? LastServiceDateViz { get; set; } + [NotMapped] + public DateTime? LastServiceDateCompletedViz { get; set; } public string Phone1 { get; set; } public string Phone2 { get; set; } public string Phone3 { get; set; } diff --git a/server/AyaNova/models/Unit.cs b/server/AyaNova/models/Unit.cs index 628f2691..543bef2d 100644 --- a/server/AyaNova/models/Unit.cs +++ b/server/AyaNova/models/Unit.cs @@ -62,7 +62,11 @@ namespace AyaNova.Models [NotMapped] public long? LastWorkOrderViz { get; set; } [NotMapped] + public long? LastWorkOrderCompletedViz { get; set; } + [NotMapped] public DateTime? LastServiceDateViz { get; set; } + [NotMapped] + public DateTime? LastServiceDateCompletedViz { get; set; } [NotMapped] public string LastMeterNotesViz { get; set; } @@ -76,7 +80,7 @@ namespace AyaNova.Models public string Address { get; set; } public string City { get; set; } public string Region { get; set; } - public string Country { get; set; } + public string Country { get; set; } public string AddressPostal { get; set; } public decimal? Latitude { get; set; } public decimal? Longitude { get; set; }