From e1dda2601df3aa6acef9851129de0c99bee28ee0 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 14 Sep 2021 20:11:39 +0000 Subject: [PATCH] --- .../AyaNova/Controllers/ScheduleController.cs | 47 +++++++++---------- server/AyaNova/models/AyContext.cs | 1 + .../models/ViewSchedulePersonalWorkOrder.cs | 22 +++++++++ server/AyaNova/util/AySchema.cs | 8 ++-- 4 files changed, 49 insertions(+), 29 deletions(-) create mode 100644 server/AyaNova/models/ViewSchedulePersonalWorkOrder.cs diff --git a/server/AyaNova/Controllers/ScheduleController.cs b/server/AyaNova/Controllers/ScheduleController.cs index 0221de69..9dd01e38 100644 --- a/server/AyaNova/Controllers/ScheduleController.cs +++ b/server/AyaNova/Controllers/ScheduleController.cs @@ -60,31 +60,11 @@ namespace AyaNova.Api.Controllers { //trying ad-hoc join https://entityframeworkcore.com/querying-data-joining - var w=await ct.WorkOrderItemScheduledUser.Join(ct.WorkOrderItem,x=>x.WorkOrderItemId==) + var wo = await ct.ViewSchedulePersonalWorkOrder.Where(x => x.SchedUserId == UserId) + .Select(x => new PersonalScheduleListItem() { Id = x.WoItemSchedUserId, Color = ColorFromWOItem(x, p), Start = x.StartDate, End = x.StopDate, Type = AyaType.WorkOrderItemScheduledUser, }) + .ToListAsync(); + - // var w = await ct.WorkOrder.AsSplitQuery().AsNoTracking() - // .Include(s => s.States) - // .Include(w => w.Items.OrderBy(item => item.Sequence)) - // .ThenInclude(wi => wi.Expenses) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Labors) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Loans) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Parts) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.PartRequests) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.ScheduledUsers) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Tasks.OrderBy(t => t.Sequence)) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Travels) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.Units) - // .Include(w => w.Items) - // .ThenInclude(wi => wi.OutsideServices) - // .SingleOrDefaultAsync(z => z.Id == UserId); } @@ -92,6 +72,21 @@ namespace AyaNova.Api.Controllers } + private string ColorFromWOItem(ViewSchedulePersonalWorkOrder v, PersonalScheduleParams p) + { + switch (p.ColorSource) + { + case PersonalScheduleWorkOrderColorSource.WorkOrderStatus: + return v.WorkOrderStatusColor; + case PersonalScheduleWorkOrderColorSource.WorkOrderItemStatus: + return v.WorkOrderItemStatusColor; + case PersonalScheduleWorkOrderColorSource.WorkOrderItemPriority: + return v.WorkOrderItemPriorityColor; + } + + return string.Empty; + } + public enum PersonalScheduleWorkOrderColorSource : int { @@ -111,8 +106,8 @@ namespace AyaNova.Api.Controllers public class PersonalScheduleListItem { - public DateTime Start { get; set; } - public DateTime End { get; set; } + public DateTime? Start { get; set; } + public DateTime? End { get; set; } public string Name { get; set; } public string Color { get; set; } public AyaType Type { get; set; } diff --git a/server/AyaNova/models/AyContext.cs b/server/AyaNova/models/AyContext.cs index 5a4167ef..664bf026 100644 --- a/server/AyaNova/models/AyContext.cs +++ b/server/AyaNova/models/AyContext.cs @@ -124,6 +124,7 @@ namespace AyaNova.Models public virtual DbSet ViewPartInventoryList { get; set; } public virtual DbSet ViewUnfulfilledPartRequestList { get; set; } public virtual DbSet ViewPartInventoryRequestList { get; set; } + public virtual DbSet ViewSchedulePersonalWorkOrder { get; set; } diff --git a/server/AyaNova/models/ViewSchedulePersonalWorkOrder.cs b/server/AyaNova/models/ViewSchedulePersonalWorkOrder.cs new file mode 100644 index 00000000..b54366f8 --- /dev/null +++ b/server/AyaNova/models/ViewSchedulePersonalWorkOrder.cs @@ -0,0 +1,22 @@ +using System; + +namespace AyaNova.Models +{ + //Note this is how to define a View backed model with no key (id) + + [Microsoft.EntityFrameworkCore.Keyless] + public class ViewSchedulePersonalWorkOrder + { + public long WoItemSchedUserId { get; set; } + public long SchedUserId { get; set; } + public DateTime? StartDate { get; set; } + public DateTime? StopDate { get; set; } + public long Serial { get; set; } + public string CustomerName { get; set; } + public string WorkOrderStatusColor { get; set; } + public string WorkOrderItemStatusColor { get; set; } + public string WorkOrderItemPriorityColor { get; set; } + + }//eoc +}//eons + diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index a5a5d3b3..9b55e3f7 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -1195,17 +1195,19 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //SCHEDULE VIEWS //PERSONAL WORKORDERS - await ExecQueryAsync("CREATE VIEW viewschedulepersonalworkorder AS SELECT " - + "AWORKORDERITEMSCHEDULEDUSER.ID, " + await ExecQueryAsync("CREATE VIEW VIEWSCHEDULEPERSONALWORKORDER AS SELECT " + + "AWORKORDERITEMSCHEDULEDUSER.ID AS WOITEMSCHEDUSERID, " + + "AWORKORDERITEMSCHEDULEDUSER.USERID AS SCHEDUSERID, " + "AWORKORDERITEMSCHEDULEDUSER.STARTDATE, " + "AWORKORDERITEMSCHEDULEDUSER.STOPDATE, " - + "AWORKORDER.SERIAL, " + + "AWORKORDER.SERIAL, ACUSTOMER.NAME AS CUSTOMERNAME " + "AWORKORDERSTATUS.COLOR AS WORKORDERSTATUSCOLOR, " + "AWORKORDERITEMSTATUS.COLOR AS WORKORDERITEMSTATUSCOLOR, " + "AWORKORDERITEMPRIORITY.COLOR AS WORKORDERITEMPRIORITYCOLOR " + "FROM AWORKORDERITEMSCHEDULEDUSER " + "LEFT JOIN AWORKORDERITEM ON AWORKORDERITEMSCHEDULEDUSER.WORKORDERITEMID = AWORKORDERITEM.ID " + "LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " + + "LEFT JOIN ACUSTOMER ON AWORKORDER.CUSTOMERID = ACUSTOMER.ID " + "LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID " + "LEFT JOIN AWORKORDERITEMSTATUS ON AWORKORDERITEM.WORKORDERITEMSTATUSID = AWORKORDERITEMSTATUS.ID " + "LEFT JOIN AWORKORDERITEMPRIORITY ON AWORKORDERITEM.WORKORDERITEMPRIORITYID = AWORKORDERITEMPRIORITY.ID");