mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 04:53:11 +00:00
106 lines
4 KiB
C#
106 lines
4 KiB
C#
using Data.SeaHavenIndustries;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using SeaHaven.DataServices.Interfaces;
|
|
|
|
namespace SeaHaven.DataServices.Helpers
|
|
{
|
|
public static class WorkOrderBoardProjection
|
|
{
|
|
public static async Task<IReadOnlyList<WorkOrderBoardRawRow>> ProjectRowsAsync(
|
|
IQueryable<WorkOrder> query,
|
|
bool isUnscheduled)
|
|
{
|
|
var rows = await query
|
|
.Select(w => new
|
|
{
|
|
w.Id,
|
|
w.InternalWONumber,
|
|
w.RescheduleCount,
|
|
w.CarriedOver,
|
|
w.WorkOrderType,
|
|
w.SiteCode,
|
|
LocationName = w.Locations != null ? w.Locations.Name : null,
|
|
Poc = w.WorkOrderContacts!
|
|
.OrderBy(c => c.Id)
|
|
.Select(c => new
|
|
{
|
|
Name = c.POC != null
|
|
? ((c.POC.FirstName ?? "") + " " + (c.POC.LastName ?? "")).Trim()
|
|
: null,
|
|
c.POC!.PhoneNumber,
|
|
c.Notes
|
|
})
|
|
.FirstOrDefault(),
|
|
w.LifecycleStatus,
|
|
w.LegacyStatus,
|
|
w.Status,
|
|
w.AssignTo,
|
|
w.AssignToUser!.FirstName,
|
|
w.AssignToUser!.LastName,
|
|
w.AssignToUser!.Initials,
|
|
w.AssignToUser!.Color,
|
|
w.DueDate,
|
|
w.ScheduledDate,
|
|
w.ScheduledStart,
|
|
w.ScheduledEnd,
|
|
w.TargetWeek,
|
|
w.ScheduleWeekOnly,
|
|
VendorId = w.PrimaryDispatch != null ? (int?)w.PrimaryDispatch.VendorId : null,
|
|
VendorName = w.PrimaryDispatch != null && w.PrimaryDispatch.Vendor != null
|
|
? w.PrimaryDispatch.Vendor.CompanyName
|
|
: null,
|
|
TechName = w.PrimaryDispatch != null && w.PrimaryDispatch.Vendor != null
|
|
? w.PrimaryDispatch.Vendor.ContactName
|
|
: null,
|
|
TechPhone = w.PrimaryDispatch != null && w.PrimaryDispatch.Vendor != null
|
|
? w.PrimaryDispatch.Vendor.Phone
|
|
: null,
|
|
DispatchApptDate = w.PrimaryDispatch != null ? w.PrimaryDispatch.ScheduledDate : null,
|
|
w.Trade,
|
|
w.Problem,
|
|
w.DocStatus,
|
|
w.PrimaryDispatchId,
|
|
w.RowVersion,
|
|
DispatchRowVersion = w.PrimaryDispatch != null ? w.PrimaryDispatch.RowVersion : null
|
|
})
|
|
.ToListAsync();
|
|
|
|
return rows.Select(w => new WorkOrderBoardRawRow(
|
|
w.Id,
|
|
w.InternalWONumber,
|
|
w.RescheduleCount,
|
|
w.CarriedOver,
|
|
w.WorkOrderType,
|
|
w.SiteCode,
|
|
w.LocationName,
|
|
w.Poc?.Name,
|
|
w.Poc?.PhoneNumber,
|
|
w.Poc?.Notes,
|
|
w.LifecycleStatus,
|
|
w.LegacyStatus ?? w.Status,
|
|
w.AssignTo,
|
|
w.FirstName,
|
|
w.LastName,
|
|
w.Initials,
|
|
w.Color,
|
|
w.DueDate,
|
|
w.ScheduledDate,
|
|
w.ScheduledStart,
|
|
w.ScheduledEnd,
|
|
w.TargetWeek,
|
|
w.ScheduleWeekOnly,
|
|
w.VendorId,
|
|
w.VendorName,
|
|
w.TechName,
|
|
w.TechPhone,
|
|
w.DispatchApptDate,
|
|
w.Trade ?? w.Problem,
|
|
w.Problem,
|
|
w.DocStatus,
|
|
w.PrimaryDispatchId,
|
|
w.RowVersion,
|
|
w.DispatchRowVersion,
|
|
isUnscheduled)).ToList();
|
|
}
|
|
}
|
|
}
|