From f6dd05b8c52657e7bdb558936c3679d2808d0917 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 14 Sep 2021 17:39:08 +0000 Subject: [PATCH] --- .vscode/launch.json | 2 +- devdocs/tools.txt | 2 +- .../DataList/PMItemScheduledUserDataList.cs | 2 +- .../QuoteItemScheduledUserDataList.cs | 2 +- .../DataList/ScheduleWorkOrderDataList.cs | 568 ++++++++++++++++++ .../WorkOrderItemScheduledUserDataList.cs | 2 +- 6 files changed, 573 insertions(+), 5 deletions(-) create mode 100644 server/AyaNova/DataList/ScheduleWorkOrderDataList.cs diff --git a/.vscode/launch.json b/.vscode/launch.json index 976f60e9..f92c39ec 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -52,7 +52,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/devdocs/tools.txt b/devdocs/tools.txt index 2a9bdb1d..c05894fe 100644 --- a/devdocs/tools.txt +++ b/devdocs/tools.txt @@ -171,7 +171,7 @@ POTENTIALLY USEFUL VUE / GENERAL COMPONENTS AND PLUGINS - parse and format currency for display: http://openexchangerates.github.io/accounting.js/ - CONTROLS (note some of these probably have a VUE component wrapper already if not the one already linked to, seek them out) - Date time picker: - - This one works but is new and a bit fucky but it's based on the built in components so it's getting there and looks correct and seems to work + - This one works but is new and a bit flakey but it's based on the built in components so it's getting there and looks correct and seems to work - https://github.com/darrenfang/vuetify-datetime-picker - note: can't use the one below because the style is not at all similar - https://madewithvuejs.com/vue-datetime diff --git a/server/AyaNova/DataList/PMItemScheduledUserDataList.cs b/server/AyaNova/DataList/PMItemScheduledUserDataList.cs index 4f4e251b..2688a0d5 100644 --- a/server/AyaNova/DataList/PMItemScheduledUserDataList.cs +++ b/server/AyaNova/DataList/PMItemScheduledUserDataList.cs @@ -57,7 +57,7 @@ namespace AyaNova.DataList #region WorkOrderItemScheduledUser fields //no natural text field for link opener so using every other field besides the linked ones instead - //also considered just using the record id itself, still might do that if this is fucky + //also considered just using the record id itself, still might do that if this is flakey FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemScheduledUserStartDate", diff --git a/server/AyaNova/DataList/QuoteItemScheduledUserDataList.cs b/server/AyaNova/DataList/QuoteItemScheduledUserDataList.cs index 8f4307c6..5ed0873a 100644 --- a/server/AyaNova/DataList/QuoteItemScheduledUserDataList.cs +++ b/server/AyaNova/DataList/QuoteItemScheduledUserDataList.cs @@ -56,7 +56,7 @@ namespace AyaNova.DataList #region WorkOrderItemScheduledUser fields //no natural text field for link opener so using every other field besides the linked ones instead - //also considered just using the record id itself, still might do that if this is fucky + //also considered just using the record id itself, still might do that if this is flakey FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemScheduledUserStartDate", diff --git a/server/AyaNova/DataList/ScheduleWorkOrderDataList.cs b/server/AyaNova/DataList/ScheduleWorkOrderDataList.cs new file mode 100644 index 00000000..eb6b8ce1 --- /dev/null +++ b/server/AyaNova/DataList/ScheduleWorkOrderDataList.cs @@ -0,0 +1,568 @@ +using System.Collections.Generic; +using System.Linq; +using AyaNova.Biz; +using AyaNova.Models; + +namespace AyaNova.DataList +{ + internal class ScheduleWorkOrderDataList : DataListProcessingBase, IDataListInternalCriteria + { + public ScheduleWorkOrderDataList() + { + DefaultListAType = AyaType.WorkOrder; + SQLFrom = "from viewworkorder " + + "left join aworkorderstatus on (viewworkorder.laststatusid = aworkorderstatus.id) " + + "left join acustomer on (viewworkorder.customerid=acustomer.id) " + + "left join aheadoffice on (acustomer.headofficeid=aheadoffice.id) " + + "left join aproject on (viewworkorder.projectid=aproject.id) " + + "left join acontract on (viewworkorder.contractid=acontract.id)" + + "left join aworkorderitem on viewworkorder.id=aworkorderitem.workorderid " + + "left join aworkorderitemstatus on (aworkorderitem.workorderitemstatusid = aworkorderitemstatus.id) " + + "left join aworkorderitempriority on (aworkorderitem.workorderitempriorityid = aworkorderitempriority.id) " + //scheduled users + + "left join aworkorderitemscheduleduser on aworkorderitem.id=aworkorderitemscheduleduser.workorderitemid " + + "left join auser on (aworkorderitemscheduleduser.userid=auser.id) " + + "left join aservicerate on (aworkorderitemscheduleduser.servicerateid=aservicerate.id) " + ; + + var RoleSet = BizRoles.GetRoleSet(DefaultListAType); + AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; + DefaultColumns = new List() { + "WorkOrderSerialNumber", + "WorkOrderItemSequence", + "WorkOrderItemSummary", + "Customer", + "WorkOrderServiceDate", + "WorkOrderItemScheduledUserUserID", + "WorkOrderItemScheduledUserStartDate", + "WorkOrderItemScheduledUserStopDate", + "WorkOrderItemScheduledUserServiceRateID", + "WorkOrderItemScheduledUserEstimatedQuantity" + }; + DefaultSortBy = new Dictionary() { { "WorkOrderSerialNumber", "-" }, { "WorkOrderItemSequence", "+" }, { "WorkOrderItemScheduledUserStartDate", "-" }, { "WorkOrderItemScheduledUserUserID", "+" } }; + FieldDefinitions = new List(); + + + /* + ███████╗ ██████╗██╗ ██╗███████╗██████╗ ██╗ ██╗██╗ ███████╗██████╗ ██╗ ██╗███████╗███████╗██████╗ ███████╗ + ██╔════╝██╔════╝██║ ██║██╔════╝██╔══██╗██║ ██║██║ ██╔════╝██╔══██╗ ██║ ██║██╔════╝██╔════╝██╔══██╗██╔════╝ + ███████╗██║ ███████║█████╗ ██║ ██║██║ ██║██║ █████╗ ██║ ██║█████╗██║ ██║███████╗█████╗ ██████╔╝███████╗ + ╚════██║██║ ██╔══██║██╔══╝ ██║ ██║██║ ██║██║ ██╔══╝ ██║ ██║╚════╝██║ ██║╚════██║██╔══╝ ██╔══██╗╚════██║ + ███████║╚██████╗██║ ██║███████╗██████╔╝╚██████╔╝███████╗███████╗██████╔╝ ╚██████╔╝███████║███████╗██║ ██║███████║ + ╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═════╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝ + */ + + #region WorkOrderItemScheduledUser fields + + //no natural text field for link opener so using every other field besides the linked ones instead + //also considered just using the record id itself, still might do that if this is flakey + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemScheduledUserStartDate", + FieldKey = "WorkOrderItemScheduledUserStartDate", + AType = (int)AyaType.WorkOrderItemScheduledUser, + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlIdColumnName = "aworkorderitemscheduleduser.id", + SqlValueColumnName = "aworkorderitemscheduleduser.startdate", + IsRowId = true + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemScheduledUserStopDate", + FieldKey = "WorkOrderItemScheduledUserStopDate", + AType = (int)AyaType.WorkOrderItemScheduledUser, + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlIdColumnName = "aworkorderitemscheduleduser.id", + SqlValueColumnName = "aworkorderitemscheduleduser.stopdate" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemScheduledUserUserID", + FieldKey = "WorkOrderItemScheduledUserUserID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.User, + SqlIdColumnName = "aworkorderitemscheduleduser.userid", + SqlValueColumnName = "auser.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemScheduledUserServiceRateID", + FieldKey = "WorkOrderItemScheduledUserServiceRateID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.ServiceRate, + SqlIdColumnName = "aworkorderitemscheduleduser.servicerateid", + SqlValueColumnName = "aservicerate.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemScheduledUserEstimatedQuantity", + FieldKey = "WorkOrderItemScheduledUserEstimatedQuantity", + AType = (int)AyaType.WorkOrderItemScheduledUser, + UiFieldDataType = (int)UiFieldDataType.Decimal, + SqlIdColumnName = "aworkorderitemscheduleduser.id", + SqlValueColumnName = "aworkorderitemscheduleduser.estimatedquantity" + }); + + + //META column + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "metawoitemscheduserid", + UiFieldDataType = (int)UiFieldDataType.InternalId, + SqlIdColumnName = "aworkorderitemscheduleduser.id", + SqlValueColumnName = "aworkorderitemscheduleduser.id", + IsMeta = true + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "metauser", + UiFieldDataType = (int)UiFieldDataType.InternalId, + SqlIdColumnName = "aworkorderitemscheduleduser.userid", + SqlValueColumnName = "aworkorderitemscheduleduser.userid", + IsMeta = true + }); + + #endregion + + + + + /* + ██╗████████╗███████╗███╗ ███╗███████╗ + ██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝ + ██║ ██║ █████╗ ██╔████╔██║███████╗ + ██║ ██║ ██╔══╝ ██║╚██╔╝██║╚════██║ + ██║ ██║ ███████╗██║ ╚═╝ ██║███████║ + ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝ + */ + #region WorkOrderItem fields + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemSummary", + FieldKey = "WorkOrderItemSummary", + AType = (int)AyaType.WorkOrderItem, + UiFieldDataType = (int)UiFieldDataType.Text, + SqlIdColumnName = "aworkorderitem.id", + SqlValueColumnName = "aworkorderitem.notes", + IsRowId = true + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "Sequence", + FieldKey = "WorkOrderItemSequence", + AType = (int)AyaType.WorkOrderItem, + UiFieldDataType = (int)UiFieldDataType.Integer, + SqlIdColumnName = "aworkorderitem.id", + SqlValueColumnName = "aworkorderitem.sequence" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemTechNotes", + FieldKey = "WorkOrderItemTechNotes", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "aworkorderitem.technotes" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemTags", + FieldKey = "WorkOrderItemTags", + UiFieldDataType = (int)UiFieldDataType.Tags, + SqlValueColumnName = "aworkorderitem.tags" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemWorkOrderStatusID", + FieldKey = "WorkOrderItemWorkOrderStatusID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.WorkOrderItemStatus, + SqlIdColumnName = "aworkorderitem.workorderitemstatusid", + SqlColorColumnName = "aworkorderitemstatus.color", + SqlValueColumnName = "aworkorderitemstatus.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemPriorityID", + FieldKey = "WorkOrderItemPriorityID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.WorkOrderItemPriority, + SqlIdColumnName = "aworkorderitem.workorderitempriorityid", + SqlColorColumnName = "aworkorderitempriority.color", + SqlValueColumnName = "aworkorderitempriority.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemRequestDate", + FieldKey = "WorkOrderItemRequestDate", + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlValueColumnName = "aworkorderitem.requestdate" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderItemWarrantyService", + FieldKey = "WorkOrderItemWarrantyService", + UiFieldDataType = (int)UiFieldDataType.Bool, + SqlValueColumnName = "aworkorderitem.warrantyservice" + }); + + + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom1", FieldKey = "workorderitemcustom1", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom2", FieldKey = "workorderitemcustom2", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom3", FieldKey = "workorderitemcustom3", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom4", FieldKey = "workorderitemcustom4", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom5", FieldKey = "workorderitemcustom5", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom6", FieldKey = "workorderitemcustom6", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom7", FieldKey = "workorderitemcustom7", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom8", FieldKey = "workorderitemcustom8", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom9", FieldKey = "workorderitemcustom9", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom10", FieldKey = "workorderitemcustom10", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom11", FieldKey = "workorderitemcustom11", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom12", FieldKey = "workorderitemcustom12", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom13", FieldKey = "workorderitemcustom13", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom14", FieldKey = "workorderitemcustom14", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom15", FieldKey = "workorderitemcustom15", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemCustom16", FieldKey = "workorderitemcustom16", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "aworkorderitem.customfields", TKeySection = "WorkOrderItem" }); + + + + + #endregion workorderitem fields + + + + /* + ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗██████╗ + ██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝ ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗ + ██║ █╗ ██║██║ ██║██████╔╝█████╔╝█████╗██║ ██║██████╔╝██║ ██║█████╗ ██████╔╝ + ██║███╗██║██║ ██║██╔══██╗██╔═██╗╚════╝██║ ██║██╔══██╗██║ ██║██╔══╝ ██╔══██╗ + ╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗ ╚██████╔╝██║ ██║██████╔╝███████╗██║ ██║ + ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚═╝ ╚═╝ + */ + #region WorkOrder Header fields + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderSerialNumber", + FieldKey = "WorkOrderSerialNumber", + AType = (int)AyaType.WorkOrder, + UiFieldDataType = (int)UiFieldDataType.Integer, + SqlIdColumnName = "viewworkorder.id", + SqlValueColumnName = "viewworkorder.serial" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "Customer", + TKey = "Customer", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.Customer, + SqlIdColumnName = "acustomer.id", + SqlValueColumnName = "acustomer.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "HeadOffice", + FieldKey = "workorderheadoffice", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.HeadOffice, + SqlIdColumnName = "aheadoffice.id", + SqlValueColumnName = "aheadoffice.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderStatus", + FieldKey = "WorkOrderStatus", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.WorkOrderStatus, + SqlIdColumnName = "viewworkorder.laststatusid", + SqlColorColumnName = "aworkorderstatus.color", + SqlValueColumnName = "aworkorderstatus.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderSummary", + FieldKey = "workordernotes", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.notes" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "Tags", + FieldKey = "workordertags", + UiFieldDataType = (int)UiFieldDataType.Tags, + SqlValueColumnName = "viewworkorder.tags" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "Project", + TKey = "Project", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.Project, + SqlIdColumnName = "aproject.id", + SqlValueColumnName = "aproject.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "Contract", + FieldKey = "Contract", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.Contract, + SqlIdColumnName = "acontract.id", + SqlValueColumnName = "acontract.name" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderInternalReferenceNumber", + FieldKey = "WorkOrderInternalReferenceNumber", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.internalreferencenumber" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderCustomerReferenceNumber", + FieldKey = "WorkOrderCustomerReferenceNumber", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.customerreferencenumber" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderCustomerContactName", + FieldKey = "WorkOrderCustomerContactName", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.customercontactname" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderServiceDate", + FieldKey = "WorkOrderServiceDate", + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlValueColumnName = "viewworkorder.servicedate" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderCloseByDate", + FieldKey = "WorkOrderCloseByDate", + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlValueColumnName = "viewworkorder.completebydate" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderInvoiceNumber", + FieldKey = "WorkOrderInvoiceNumber", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.invoicenumber" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderOnsite", + FieldKey = "WorkOrderOnsite", + UiFieldDataType = (int)UiFieldDataType.Bool, + SqlValueColumnName = "viewworkorder.onsite" + }); + + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressPostalDeliveryAddress", + FieldKey = "workorderpostaddress", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.postaddress" + }); + + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressPostalCity", + FieldKey = "workorderpostcity", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.postcity" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressPostalStateProv", + FieldKey = "workorderpostregion", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.postregion" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressPostalCountry", + FieldKey = "workorderpostcountry", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.postcountry" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressPostalPostal", + FieldKey = "workorderpostcode", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.postcode" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressDeliveryAddress", + FieldKey = "workorderaddress", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.address" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressCity", + FieldKey = "workordercity", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.city" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressStateProv", + FieldKey = "workorderregion", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.region" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressCountry", + FieldKey = "workordercountry", + UiFieldDataType = (int)UiFieldDataType.Text, + SqlValueColumnName = "viewworkorder.country" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressLatitude", + FieldKey = "workorderlatitude", + UiFieldDataType = (int)UiFieldDataType.Decimal, + SqlValueColumnName = "viewworkorder.latitude" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "AddressLongitude", + FieldKey = "workorderlongitude", + UiFieldDataType = (int)UiFieldDataType.Decimal, + SqlValueColumnName = "viewworkorder.longitude" + }); + + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderCloseByDate", + FieldKey = "WorkOrderCloseByDate", + UiFieldDataType = (int)UiFieldDataType.DateTime, + SqlValueColumnName = "viewworkorder.closebydate" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "WorkOrderAge", + FieldKey = "WorkOrderAge", + UiFieldDataType = (int)UiFieldDataType.TimeSpan, + SqlValueColumnName = "expwoage" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + TKey = "TimeToCompletion", + FieldKey = "TimeToCompletion", + UiFieldDataType = (int)UiFieldDataType.TimeSpan, + SqlValueColumnName = "durationtocompleted" + }); + + + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom1", FieldKey = "workordercustom1", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom2", FieldKey = "workordercustom2", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom3", FieldKey = "workordercustom3", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom4", FieldKey = "workordercustom4", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom5", FieldKey = "workordercustom5", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom6", FieldKey = "workordercustom6", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom7", FieldKey = "workordercustom7", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom8", FieldKey = "workordercustom8", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom9", FieldKey = "workordercustom9", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom10", FieldKey = "workordercustom10", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom11", FieldKey = "workordercustom11", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom12", FieldKey = "workordercustom12", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom13", FieldKey = "workordercustom13", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom14", FieldKey = "workordercustom14", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom15", FieldKey = "workordercustom15", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom16", FieldKey = "workordercustom16", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "viewworkorder.customfields", TKeySection = "WorkOrder" }); + + + #endregion + } + + + public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, string clientCriteria) + { + List ret = new List(); + + //This is required to filter out rows where there are no matching scheduled user otherwise we'd get all workorders and items regardless + { + DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metawoitemscheduserid" }; + FilterOption.Items.Add(new DataListColumnFilter() { value = "*NULL*", op = DataListFilterComparisonOperator.NotEqual }); + ret.Add(FilterOption); + } + + //This is an optional filter generated at client to restrict to particular item's workorders + //ClientCriteria format for this list is "OBJECTID,AYATYPE" + var crit = (clientCriteria ?? "").Split(',').Select(z => z.Trim()).ToArray(); + if (crit.Length > 1) + { + int nType = 0; + if (!int.TryParse(crit[1], out nType)) return ret; + AyaType forType = (AyaType)nType; + if (forType != AyaType.User) return ret;//could be more later + + long lId = 0; + if (!long.TryParse(crit[0], out lId)) return ret; + if (lId == 0) return ret; + + //Have valid type, have an id, so filter away + switch (forType) + { + case AyaType.User: + { + DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metauser" }; + FilterOption.Items.Add(new DataListColumnFilter() { value = crit[0], op = DataListFilterComparisonOperator.Equality }); + ret.Add(FilterOption); + } + break; + + } + } + + return ret; + } + }//eoc +}//eons \ No newline at end of file diff --git a/server/AyaNova/DataList/WorkOrderItemScheduledUserDataList.cs b/server/AyaNova/DataList/WorkOrderItemScheduledUserDataList.cs index 20aa5ef0..9cb6cc34 100644 --- a/server/AyaNova/DataList/WorkOrderItemScheduledUserDataList.cs +++ b/server/AyaNova/DataList/WorkOrderItemScheduledUserDataList.cs @@ -55,7 +55,7 @@ namespace AyaNova.DataList #region WorkOrderItemScheduledUser fields //no natural text field for link opener so using every other field besides the linked ones instead - //also considered just using the record id itself, still might do that if this is fucky + //also considered just using the record id itself, still might do that if this is flakey FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderItemScheduledUserStartDate",