From d466b4b0b87d0e1d22f559d868d56dc153b70677 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 18 Nov 2021 20:25:08 +0000 Subject: [PATCH] --- server/AyaNova/biz/UserBiz.cs | 12 +-- server/AyaNova/biz/WorkOrderBiz.cs | 101 ++++----------------- server/AyaNova/models/CustomerWorkOrder.cs | 20 ++++ 3 files changed, 44 insertions(+), 89 deletions(-) create mode 100644 server/AyaNova/models/CustomerWorkOrder.cs diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index cafc3e47..d5ec99a2 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -108,7 +108,7 @@ namespace AyaNova.Biz } //For auth and access in client, also when opening wo and also when reporting wo - internal static async Task CustomerUserEffectiveRightsAsync(long userId, long? workorderId = null) + internal static async Task CustomerUserEffectiveRightsAsync(long userId, List thisWorkOrderTags = null) { using (AyContext ct = ServiceProviderProvider.DBContext) { @@ -164,14 +164,10 @@ namespace AyaNova.Biz ThisWOEffectiveWorkOrderReportId = AyaNova.Util.ServerGlobalBizSettings.Cache.CustomerDefaultWorkOrderReportId; //If a workorder id was provided add it's tags to the wo tag checking rights items - if (workorderId != null) + if (thisWorkOrderTags != null && thisWorkOrderTags.Count > 0) { - var WoTags = await ct.WorkOrder.AsNoTracking().Where(x => x.Id == workorderId).Select(x => x.Tags).FirstOrDefaultAsync(); - if (WoTags != null) - { - CustomerWorkOrderReportByTagTags.AddRange(WoTags); - CustomerWorkOrderWikiAttachmentTags.AddRange(WoTags); - } + CustomerWorkOrderReportByTagTags.AddRange(thisWorkOrderTags); + CustomerWorkOrderWikiAttachmentTags.AddRange(thisWorkOrderTags); } //WO REPORT diff --git a/server/AyaNova/biz/WorkOrderBiz.cs b/server/AyaNova/biz/WorkOrderBiz.cs index 36ecef30..a446ec9f 100644 --- a/server/AyaNova/biz/WorkOrderBiz.cs +++ b/server/AyaNova/biz/WorkOrderBiz.cs @@ -306,88 +306,27 @@ namespace AyaNova.Biz //////////////////////////////////////////////////////////////////////////////////////////////// // GET // - internal async Task WorkOrderGetForCustomerAsync(long id, bool populateDisplayFields, bool logTheGetEvent = true, bool populateForReporting = false) + internal async Task WorkOrderGetForCustomerAsync(long id) { - throw new System.NotImplementedException(); - - // var ret = await WorkOrderGetFullAsync(id); - - // if (ret != null) - // { - // var stat = await GetCurrentWorkOrderStatusFromRelatedAsync(BizType, ret.Id); - // ret.IsLockedAtServer = stat.Locked; - - // var userIsTechRestricted = UserIsTechRestricted; - // var userIsSubContractorFull = UserIsSubContractorFull; - // var userIsSubContractorRestricted = UserIsSubContractorRestricted; - // var userIsRestricted = (userIsTechRestricted || userIsSubContractorFull || userIsSubContractorRestricted); - - - // if (userIsRestricted) - // { - // //Restricted users can only work with workorder items they are scheduled on - - // List removeItems = new List(); - // //gather list of items to remove by checking if they are scheduled on them or not - // foreach (WorkOrderItem wi in ret.Items) - // { - // var userIsSelfScheduledOnThisItem = false; - // foreach (WorkOrderItemScheduledUser su in wi.ScheduledUsers) - // { - // if (su.UserId == UserId) - // { - // userIsSelfScheduledOnThisItem = true; - // break; - // } - // } - // if (!userIsSelfScheduledOnThisItem) removeItems.Add(wi); - // } - // foreach (var removeitem in removeItems) - // { - // ret.Items.Remove(removeitem); - // ret.IsCompleteRecord = false; - // } - - // //Restricted users may have further restrictions - // foreach (WorkOrderItem wi in ret.Items) - // { - // //all restricted types - // wi.ScheduledUsers.RemoveAll(x => x.UserId != UserId); - // wi.Labors.RemoveAll(x => x.UserId != UserId); - // wi.Travels.RemoveAll(x => x.UserId != UserId); - - // if (userIsTechRestricted) - // { - // wi.Expenses.RemoveAll(x => x.UserId != UserId); - // } - - // if (userIsSubContractorFull) - // { - // wi.Expenses.RemoveAll(x => true); - // wi.OutsideServices.RemoveAll(x => true); - // } - - // if (userIsSubContractorRestricted) - // { - // wi.Units.RemoveAll(x => true); - // wi.Parts.RemoveAll(x => true); - // wi.PartRequests.RemoveAll(x => true); - // wi.Expenses.RemoveAll(x => true); - // wi.Loans.RemoveAll(x => true); - // wi.OutsideServices.RemoveAll(x => true); - // } - - // //tasks are allowed to be viewed and update the task completion types - // } - // } - - // if (populateDisplayFields) - // await WorkOrderPopulateVizFields(ret, false, populateForReporting); - - // if (logTheGetEvent && ret != null) - // await EventLogProcessor.LogEventToDatabaseAsync(new Event(UserId, id, BizType, AyaEvent.Retrieved), ct); - // } - // return ret; + var sourceWo = await ct.WorkOrder.AsNoTracking().FirstOrDefaultAsync(z => z.Id == id); + if (sourceWo == null) return null; + var customerEffectiveRights = await UserBiz.CustomerUserEffectiveRightsAsync(UserId, sourceWo.Tags); + var ret = new CustomerWorkOrder(); + ret.Id = sourceWo.Id; + ret.Serial = sourceWo.Serial; + ret.ServiceDate = sourceWo.ServiceDate; + ret.CanWiki = false; + if (customerEffectiveRights.ThisWOCanWiki) + { + ret.Wiki = sourceWo.Wiki; + ret.CanWiki = true; + } + ret.CanAttachments = customerEffectiveRights.ThisWOCanAttachments; + ret.CustomerViz = await ct.Customer.AsNoTracking().Where(x => x.Id == sourceWo.CustomerId).Select(x => x.Name).FirstOrDefaultAsync(); + ret.CustomerReferenceNumber = sourceWo.CustomerReferenceNumber; + ret.CustomerContactName = sourceWo.CustomerContactName; + ret.InvoiceNumber = sourceWo.InvoiceNumber; + return ret; } //////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/AyaNova/models/CustomerWorkOrder.cs b/server/AyaNova/models/CustomerWorkOrder.cs new file mode 100644 index 00000000..1e2e4b1a --- /dev/null +++ b/server/AyaNova/models/CustomerWorkOrder.cs @@ -0,0 +1,20 @@ +using System; + +namespace AyaNova.Models +{ + //Customer version of workorder which is the limited amount of data allowed to be viewed by Customer based on corresponding actual workorder + public class CustomerWorkOrder + { + public long Id { get; set; } + public long Serial { get; set; } + public string Wiki { get; set; } + public string CustomerViz { get; set; } + public string CustomerReferenceNumber { get; set; } + public string CustomerContactName { get; set; } + public DateTime? ServiceDate { get; set; } + public string InvoiceNumber { get; set; } + public bool CanWiki {get;set;} + public bool CanAttachments {get;set;} + }//eoc +}//eons +