using System.Collections.Generic; using System.Linq; using AyaNova.Biz; using AyaNova.Models; namespace AyaNova.DataList { internal class PMDataList : DataListProcessingBase, IDataListInternalCriteria { public PMDataList(long translationId) { DefaultListAType = AyaType.PM; SQLFrom = "from apm " + "left join acustomer on (apm.customerid = acustomer.id) " + "left join aheadoffice on (acustomer.headofficeid = aheadoffice.id) " + "left join aproject on (apm.projectid = aproject.id) " + "left join acontract on (apm.contractid = acontract.id)"; var RoleSet = BizRoles.GetRoleSet(DefaultListAType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; DefaultColumns = new List() { "PMSerialNumber", "Customer", "PMNextServiceDate", "PMNextWoGenerateDate", "pmactive", "PMStopGeneratingDate" }; DefaultSortBy = new Dictionary() { { "PMSerialNumber", "-" } }; FieldDefinitions = new List(); //---------- FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PMSerialNumber", FieldKey = "PMSerialNumber", AType = (int)AyaType.PM, UiFieldDataType = (int)UiFieldDataType.Integer, SqlIdColumnName = "apm.id", SqlValueColumnName = "apm.serial", IsRowId = true }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PMStopGeneratingDate", FieldKey = "PMStopGeneratingDate", UiFieldDataType = (int)UiFieldDataType.DateTime, SqlValueColumnName = "apm.stopgeneratingdate" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "Active", FieldKey = "pmactive", UiFieldDataType = (int)UiFieldDataType.Bool, SqlValueColumnName = "apm.active" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PMNextServiceDate", FieldKey = "PMNextServiceDate", UiFieldDataType = (int)UiFieldDataType.DateTime, SqlValueColumnName = "apm.nextservicedate" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PMNextWoGenerateDate", FieldKey = "PMNextWoGenerateDate", UiFieldDataType = (int)UiFieldDataType.DateTime, SqlValueColumnName = "apm.generatedate" }); //---------- 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 = "WorkOrderSummary", FieldKey = "workordernotes", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.notes" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "Tags", FieldKey = "workordertags", UiFieldDataType = (int)UiFieldDataType.Tags, SqlValueColumnName = "apm.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 = "apm.internalreferencenumber" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustomerReferenceNumber", FieldKey = "WorkOrderCustomerReferenceNumber", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.customerreferencenumber" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustomerContactName", FieldKey = "WorkOrderCustomerContactName", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.customercontactname" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderOnsite", FieldKey = "WorkOrderOnsite", UiFieldDataType = (int)UiFieldDataType.Bool, SqlValueColumnName = "apm.onsite" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostalDeliveryAddress", FieldKey = "workorderpostaddress", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.postaddress" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostalCity", FieldKey = "workorderpostcity", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.postcity" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostalStateProv", FieldKey = "workorderpostregion", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.postregion" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostalCountry", FieldKey = "workorderpostcountry", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.postcountry" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostalPostal", FieldKey = "workorderpostcode", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.postcode" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressDeliveryAddress", FieldKey = "workorderaddress", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.address" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressCity", FieldKey = "workordercity", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.city" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressStateProv", FieldKey = "workorderregion", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.region" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressCountry", FieldKey = "workordercountry", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.country" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressPostal", FieldKey = "workorderaddresspostal", UiFieldDataType = (int)UiFieldDataType.Text, SqlValueColumnName = "apm.addresspostal" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressLatitude", FieldKey = "workorderlatitude", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "apm.latitude" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "AddressLongitude", FieldKey = "workorderlongitude", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "apm.longitude" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom1", FieldKey = "workordercustom1", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom2", FieldKey = "workordercustom2", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom3", FieldKey = "workordercustom3", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom4", FieldKey = "workordercustom4", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom5", FieldKey = "workordercustom5", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom6", FieldKey = "workordercustom6", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom7", FieldKey = "workordercustom7", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom8", FieldKey = "workordercustom8", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom9", FieldKey = "workordercustom9", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom10", FieldKey = "workordercustom10", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom11", FieldKey = "workordercustom11", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom12", FieldKey = "workordercustom12", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom13", FieldKey = "workordercustom13", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom14", FieldKey = "workordercustom14", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom15", FieldKey = "workordercustom15", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderCustom16", FieldKey = "workordercustom16", IsCustomField = true, IsFilterable = false, IsSortable = false, SqlValueColumnName = "apm.customfields" }); //META COLUMNS FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "metacustomer", UiFieldDataType = (int)UiFieldDataType.InternalId, SqlIdColumnName = "acustomer.id", SqlValueColumnName = "acustomer.id", IsMeta = true }); FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "metaproject", UiFieldDataType = (int)UiFieldDataType.InternalId, SqlIdColumnName = "aproject.id", SqlValueColumnName = "aproject.id", IsMeta = true }); } public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, string clientCriteria) { List ret = new List(); //ClientCriteria format for this list is "OBJECTID,AYATYPE" var crit = (clientCriteria ?? "").Split(',').Select(z => z.Trim()).ToArray(); if (crit.Length > 1) { //will be filtered from different types, show all pms from Customer, Project and nothing else at this time (others but for sub lists like pmitemunits etc) int nType = 0; if (!int.TryParse(crit[1], out nType)) return ret; AyaType forType = (AyaType)nType; if (forType != AyaType.Customer && forType != AyaType.Project) return ret;//only supports customer and project for now 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.Customer: { DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metacustomer" }; FilterOption.Items.Add(new DataListColumnFilter() { value = crit[0], op = DataListFilterComparisonOperator.Equality }); ret.Add(FilterOption); } break; case AyaType.Project: { DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metaproject" }; FilterOption.Items.Add(new DataListColumnFilter() { value = crit[0], op = DataListFilterComparisonOperator.Equality }); ret.Add(FilterOption); } break; } } return ret; } }//eoc }//eons