using Foresight.Fleet.Services.Asset; using Foresight.Fleet.Services.AssetHealth; using Foresight.Fleet.Services.JobSite; using FU = Foresight.Fleet.Services.User; using IronIntel.Contractor.Machines; using IronIntel.Contractor.Maintenance; using IronIntel.Contractor.MapView; using IronIntel.Contractor.Users; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using Foresight.Fleet.Services.Partner; using Foresight.Fleet.Services.AssetHealth.WorkOrder; using FFSDevice = Foresight.Fleet.Services.Device; using System.Web; using Foresight.Fleet.Services.Inspection; using DocumentFormat.OpenXml.Wordprocessing; using System.Security.Cryptography; namespace IronIntel.Contractor { public class ExportExcelManager { public static string SetExprotParams(string p) { string key = Guid.NewGuid().ToString(); byte[] tmp = Encoding.UTF8.GetBytes(p); tmp = Foresight.Security.SecurityHelper.Compress(tmp); CacheManager.SetCustomerCacheData(key, tmp, new TimeSpan(0, 3, 0)); return key; } public static string GetExportParams(string key) { byte[] tmp = CacheManager.GetCustomerCacheData(key); if (tmp != null) { tmp = Foresight.Security.SecurityHelper.Decompress(tmp); string p = Encoding.UTF8.GetString(tmp); CacheManager.RemoveCustomerCache(key); return p; } return null; } public static byte[] ExportRentals(string lang, string sessionid, string companyid, long machineid, DateTime from, DateTime to, string searchtext, string useriid, string sortPath, bool desc) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; AssetRentalInfo[] rentalinfos = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetRentals(companyid, searchtext, useriid); List ls = new List(); foreach (AssetRentalInfo ri in rentalinfos) { MachineRentalInfo mi = new MachineRentalInfo(); Helper.CloneProperty(mi, ri); mi.RentalRate = (decimal)ri.RentalRate; ls.Add(mi); } var rentals = ls.ToArray(); if (machineid > 0) rentals = rentals.Where(m => m.MachineID == machineid).ToArray(); rentals = rentals.Where(m => m.RentalDate >= from && m.RentalDate <= to).ToArray(); if (!string.IsNullOrEmpty(sortPath)) { if (desc) { rentals = rentals.OrderByDescending(m => { return OrderHandler(m, sortPath); }).ToArray(); } else { rentals = rentals.OrderBy(m => { return OrderHandler(m, sortPath); }).ToArray(); } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_VINSN", "VIN/SN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_OUTSIDEINTERNAL", "Outside/Internal") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALVENDOR", "Rental Vendor") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALRATE", "Rental Rate") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_TERM", "Term") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_TERMUNIT", "Term Unit") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALDATEON", "Rental Date On") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_PROJECTRETURNDATE", "Project Return Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RETURNDATE", "Return Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_PURCHASEORDERN", "Purchase Order #") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_INSUREDVALUE", "Insured Value") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_COMMENTS", "Comments") }); foreach (var r in rentals) { int index = 0; var dr = dt.NewRow(); dr[index] = r.VIN; dr[++index] = r.DisplayName; dr[++index] = r.Outside; dr[++index] = r.Vendor; dr[++index] = r.RentalRate; dr[++index] = r.Term; dr[++index] = r.TermUnit; dr[++index] = r.RentalDateStr; dr[++index] = r.ProjectReturnDateStr; dr[++index] = r.ReturnDateStr; dr[++index] = r.PONumber; dr[++index] = r.InsuredValue; dr[++index] = r.Comments; dt.Rows.Add(dr); } double[] widths = new double[] { 180d, 180d, 180d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportRentalChanges(string lang, string sessionid, string companyid, long machineid, long rentalid, DateTime from, DateTime to, string searchtext, string useriid, string sortPath, bool desc) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; AssetRentalChangeHistoryInfo[] assetrentals = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetRentalChangeHistory(companyid, Convert.ToInt64(rentalid)); List rentalHistory = new List(); foreach (AssetRentalChangeHistoryInfo ari in assetrentals) { RentalChangeHistoryInfo mri = new RentalChangeHistoryInfo(); Helper.CloneProperty(mri, ari); mri.RentalRate = (decimal)ari.RentalRate; rentalHistory.Add(mri); } if (machineid > 0) rentalHistory = rentalHistory.Where(m => m.MachineID == machineid).ToList(); if (rentalid > 0) rentalHistory = rentalHistory.Where(m => m.RentalID == rentalid).ToList(); rentalHistory = rentalHistory.Where(m => m.RentalDate >= from && m.RentalDate <= to).ToList(); if (!string.IsNullOrEmpty(sortPath)) { if (desc) { rentalHistory = rentalHistory.OrderByDescending(m => { return OrderHandler(m, sortPath); }).ToList(); } else { rentalHistory = rentalHistory.OrderBy(m => { return OrderHandler(m, sortPath); }).ToList(); } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALID", "Rental ID") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_USERNAME", "User Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_LASTUPDATEDATE", "Last Update Date") }); //dt.Columns.Add(new DataColumn() { ColumnName = "Operate Type" }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_VINSN", "VIN/SN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_OUTSIDEINTERNAL", "Outside/Internal") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALVENDOR", "Rental Vendor") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALRATE", "Rental Rate") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_TERM", "Term") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_TERMUNIT", "Term Unit") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RENTALDATEON", "Rental Date On") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_PROJECTRETURNDATE", "Project Return Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_RETURNDATE", "Return Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_PURCHASEORDERN", "Purchase Order #") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_INSUREDVALUE", "Insured Value") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MR_COMMENTS", "Comments") }); foreach (var r in rentalHistory) { int index = 0; var dr = dt.NewRow(); dr[index] = r.RentalID; dr[++index] = r.LastUpdateUserName; dr[++index] = r.LastUpdateDateStr; dr[++index] = r.VIN; dr[++index] = r.DisplayName; dr[++index] = r.Outside; dr[++index] = r.Vendor; dr[++index] = r.RentalRate; dr[++index] = r.Term; dr[++index] = r.TermUnit; dr[++index] = r.RentalDateStr; dr[++index] = r.ProjectReturnDateStr; dr[++index] = r.ReturnDateStr; dr[++index] = r.PONumber; dr[++index] = r.InsuredValue; dr[++index] = r.Comments; dt.Rows.Add(dr); } double[] widths = new double[] { 120d, 150d, 150d, 180d, 180d, 180d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportOdometerAdjustHistory(string lang, string sessionid, string companyid, long machineid, DateTime from, DateTime to, string sortPath, bool desc) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; AssetBasicInfo asset = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetBasicInfoByID(companyid, machineid); AssetOdometerAdjustInfo[] odoHistory = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetOdometerAdjustmentHistory(companyid, machineid, from, to); if (!string.IsNullOrEmpty(sortPath)) { if (desc) { odoHistory = odoHistory.OrderByDescending(m => { return OrderHandler(m, sortPath); }).ToArray(); } else { odoHistory = odoHistory.OrderBy(m => { return OrderHandler(m, sortPath); }).ToArray(); } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_VIN", "VIN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_USERNAME", "User Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ADJUSTMENTTIME", "Adjustment Time") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ODOMETERENTERED", "Odometer Entered") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ODOMETERUOM", "Odometer UOM") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ODOMETERTIME", "Odometer Time") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_NOTES", "Notes") }); foreach (var r in odoHistory) { int index = 0; var dr = dt.NewRow(); dr[index] = asset.DisplayName; dr[++index] = asset.VIN; dr[++index] = r.UserName; dr[++index] = r.AdjustmentLocalTime.ToString("M/d/yyyy h:mm tt"); dr[++index] = r.Odometer; dr[++index] = r.UOM; dr[++index] = r.OdometerLocalTime.ToString("M/d/yyyy h:mm tt"); dr[++index] = r.Notes; dt.Rows.Add(dr); } double[] widths = new double[] { 200d, 200d, 200d, 150d, 150d, 150d, 150d, 300d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportEngineHoursAdjustHistory(string lang, string sessionid, string companyid, long machineid, DateTime from, DateTime to, string sortPath, bool desc) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; AssetBasicInfo asset = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetBasicInfoByID(companyid, machineid); AssetEngineHoursAdjustInfo[] ehHistory = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetEngineHoursAdjustmentHistory(companyid, machineid, from, to); if (!string.IsNullOrEmpty(sortPath)) { if (desc) { ehHistory = ehHistory.OrderByDescending(m => { return OrderHandler(m, sortPath); }).ToArray(); } else { ehHistory = ehHistory.OrderBy(m => { return OrderHandler(m, sortPath); }).ToArray(); } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_VIN", "VIN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_USERNAME", "User Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ADJUSTMENTTIME", "Adjustment Time") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ENGINEHOURNTERED", "Engine Hours Entered") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ENGINEHOURSTIME", "Engine Hours Time") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_NOTES", "Notes") }); foreach (var r in ehHistory) { int index = 0; var dr = dt.NewRow(); dr[index] = asset.DisplayName; dr[++index] = asset.VIN; dr[++index] = r.UserName; dr[++index] = r.AdjustmentLocalTime.ToString("M/d/yyyy h:mm tt"); dr[++index] = r.EngineHours; dr[++index] = r.EngineHoursLocalTime.ToString("M/d/yyyy h:mm tt"); dr[++index] = r.Notes; dt.Rows.Add(dr); } double[] widths = new double[] { 200d, 200d, 200d, 150d, 150d, 150d, 300d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } private static readonly string[] INSPECT = new string[] { "Red-Inspect", "Yellow-Inspect", "Green-Inspect", "Info-Inspect" }; public static byte[] ExportAlertsView(string clientdata, string sessionid, string useriid, string lang) { AlertQueryParams alertparam = JsonConvert.DeserializeObject(clientdata); DateTime beginDate = Helper.DBMinDateTime; DateTime endDate = DateTime.MaxValue; if (!DateTime.TryParse(alertparam.BeginDate, out beginDate)) beginDate = Helper.DBMinDateTime; //else // beginDate = beginDate.ToUniversalTime(); if (!DateTime.TryParse(alertparam.EndDate, out endDate)) endDate = DateTime.MaxValue; int assigned = -1; int completed = -1; if (alertparam.AlertStatus != null && alertparam.AlertStatus.Length > 0) { if (alertparam.AlertStatus.Contains("Unassigned") && !alertparam.AlertStatus.Contains("Assigned")) assigned = 0; if (!alertparam.AlertStatus.Contains("Unassigned") && alertparam.AlertStatus.Contains("Assigned")) assigned = 1; if (alertparam.AlertStatus.Contains("Completed") && !alertparam.AlertStatus.Contains("Uncompleted")) completed = 1; if (!alertparam.AlertStatus.Contains("Completed") && alertparam.AlertStatus.Contains("Uncompleted")) completed = 0; } AssetAlertGridViewItem[] assetalerts = null; if (alertparam.AssetID > 0) assetalerts = FleetServiceClientHelper.CreateClient(sessionid).GetAssetAlertGridViewItemsByAsset(SystemParams.CompanyID, alertparam.AssetID, beginDate, endDate, alertparam.AlertTypes, alertparam.JobSites, assigned, completed, alertparam.SearchText, alertparam.IncludeunCompleted, alertparam.Category); else assetalerts = FleetServiceClientHelper.CreateClient(sessionid).GetAssetAlertGridViewItems(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.JobSites, assigned, completed, alertparam.SearchText, useriid, alertparam.IncludeunCompleted, alertparam.Category); List list = new List(); if (assetalerts != null && assetalerts.Length > 0) { foreach (AssetAlertGridViewItem item in assetalerts) { AlertInfo ai = ConvertAlertObj(item); ai.AlertTime_UTC = item.LastAlertLocalTime; list.Add(ai); } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERNUMBER", "Work Order Number") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_WORKORDERSTATUS", "Work Order Status") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MAKE", "Make") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MODEL", "Model") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_VIN", "SN/VIN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_CURRENTHOURS", "Current Hours") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_HOURS", "Hours") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ALERTTYPE", "Alert Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_DESCRIPTION", "Description") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ALERTCOUNT", "Alert Count") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_LATESTALERTDATETIME", "Latest Alert DateTime") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_OPENWORKORDERS", "Open Work Orders") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_COMMENT", "Comment") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.WorkOrderNumber; dr[++index] = r.WorkOrderStatus; dr[++index] = r.MachineName; dr[++index] = r.Make; dr[++index] = r.Model; dr[++index] = r.VIN; dr[++index] = r.CurrentHours; dr[++index] = r.EngineHours; dr[++index] = r.AlertType; dr[++index] = r.Description; dr[++index] = r.AlertCount; dr[++index] = r.AlertTime_UTC; dr[++index] = r.OpenWorkOrderCount; dr[++index] = r.Comment; dt.Rows.Add(dr); } double[] widths = new double[] { 120d, 140d, 180d, 120d, 120d, 180d, 120d, 120d, 120d, 240d, 80d, 150d, 130d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportAssetView(string clientdata, string sessionid, string useriid, string lang) { AlertQueryParams alertparam = JsonConvert.DeserializeObject(clientdata); DateTime beginDate = Helper.DBMinDateTime; DateTime endDate = DateTime.MaxValue; if (!DateTime.TryParse(alertparam.BeginDate, out beginDate)) beginDate = Helper.DBMinDateTime; //else // beginDate = beginDate.ToUniversalTime(); if (!DateTime.TryParse(alertparam.EndDate, out endDate)) endDate = DateTime.MaxValue; int assigned = -1; int completed = -1; if (alertparam.AlertStatus != null && alertparam.AlertStatus.Length > 0) { if (alertparam.AlertStatus.Contains("Unassigned") && !alertparam.AlertStatus.Contains("Assigned")) assigned = 0; if (!alertparam.AlertStatus.Contains("Unassigned") && alertparam.AlertStatus.Contains("Assigned")) assigned = 1; if (alertparam.AlertStatus.Contains("Completed") && !alertparam.AlertStatus.Contains("Uncompleted")) completed = 1; if (!alertparam.AlertStatus.Contains("Completed") && alertparam.AlertStatus.Contains("Uncompleted")) completed = 0; } AssetAlertGridViewItem[] assetalerts = null; if (alertparam.AssetID > 0) assetalerts = FleetServiceClientHelper.CreateClient(sessionid).GetAssetAlertGridViewItemsByAsset(SystemParams.CompanyID, alertparam.AssetID, beginDate, endDate, alertparam.AlertTypes, alertparam.JobSites, assigned, completed, alertparam.SearchText, alertparam.IncludeunCompleted, alertparam.Category); else assetalerts = FleetServiceClientHelper.CreateClient(sessionid).GetAssetAlertGridViewItems(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.JobSites, assigned, completed, alertparam.SearchText, useriid, alertparam.IncludeunCompleted, alertparam.Category); List list = new List(); if (assetalerts != null && assetalerts.Length > 0) { foreach (AssetAlertGridViewItem item in assetalerts) { AlertInfo ai = ConvertAlertObj(item); MachineInfoForAlert mi = list.FirstOrDefault((i) => i.MachineID == ai.MachineID); if (mi == null) { mi = new MachineInfoForAlert(); mi.MachineID = ai.MachineID; mi.MachineName = ai.MachineName; mi.VIN = ai.VIN; mi.Make = ai.Make; mi.Model = ai.Model; mi.EngineHours = ai.CurrentHours; mi.OpenWorkOrders = ai.OpenWorkOrderCount; list.Add(mi); } mi.Alerts.Add(ai); int count = ai.RepeatedAlerts.Count + 1; if (ai.AlertType == "Preventative Maintenance" || ai.AlertType == "PM_ALERT" || ai.AlertType == "TBM_ALERT" || ai.AlertType == "HM_ALERT" || ai.AlertType == "RDM_ALERT" || ai.AlertType == "ADM_ALERT") mi.PMAlertCount += count; else if (INSPECT.Contains(ai.AlertType, StringComparer.OrdinalIgnoreCase)) mi.InspectAlertCount += count; else mi.DTCAlertCount += count; if (ai.AlertLocalTime > mi.LatestAlertDateTime) mi.LatestAlertDateTime = ai.AlertLocalTime; } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MAKE", "Make") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MODEL", "Model") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_VIN", "VIN/SN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ENGINEHOURS", "Engine Hours") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_DTCALERTS", "DTC Alerts") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_PMALERTS", "PM Alerts") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_INSPECTALERTS", "Inspect Alerts") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_OPENWORKORDERS", "Open Work Orders") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_LATESTALERTDATETIME", "Latest Alert DateTime") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.MachineName; dr[++index] = r.Make; dr[++index] = r.Model; dr[++index] = r.VIN; dr[++index] = r.EngineHours == 0 ? "" : r.EngineHours.ToString(); dr[++index] = r.DTCAlertCount; dr[++index] = r.PMAlertCount; dr[++index] = r.InspectAlertCount; dr[++index] = r.OpenWorkOrders; dr[++index] = r.LatestAlertDateTimeStr; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 120d, 120d, 200d, 150d, 80d, 80d, 120d, 120d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportAcknowledgedAlerts(string clientdata, string sessionid, string useriid, string lang) { AlertQueryParams alertparam = JsonConvert.DeserializeObject(clientdata); DateTime beginDate = Helper.DBMinDateTime; DateTime endDate = DateTime.MaxValue; if (!DateTime.TryParse(alertparam.BeginDate, out beginDate)) beginDate = Helper.DBMinDateTime; //else // beginDate = beginDate.ToUniversalTime(); if (!DateTime.TryParse(alertparam.EndDate, out endDate)) endDate = DateTime.MaxValue; alertparam.AlertStatus = new string[0]; AcknowledgedAlertItem[] ackalerts = FleetServiceClientHelper.CreateClient(sessionid).GetAcknowledgedAlerts(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.SearchText); List list = new List(); foreach (AcknowledgedAlertItem item in ackalerts) { AlertInfo ai = ConvertAlertObj2(item); list.Add(ai); } if (alertparam.AssetID > 0) list = list.Where(m => m.MachineID == alertparam.AssetID).ToList(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ACKNOWLEDGEDBY", "Acknowledged By") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ACKNOWLEDGEDDATETIME", "Acknowledged DateTime") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MAKE", "Make") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_MODEL", "Model") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_VIN", "SN/VIN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_HOURS", "Hours") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ALERTTYPE", "Alert Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_DESCRIPTION", "Description") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ALERTCOUNT", "Alert Count") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_LATESTALERTDATETIME", "Latest Alert DateTime") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_OPENWORKORDERS", "Open Work Orders") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ACKNOWLEDGEDCOMMENT", "Acknowledged Comment") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_COMMENT", "Comment") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.AcknowledgedByName; dr[++index] = r.AcknowledgedTime_LocalStr; dr[++index] = r.MachineName; dr[++index] = r.Make; dr[++index] = r.Model; dr[++index] = r.VIN; dr[++index] = r.EngineHours; dr[++index] = r.AlertType; dr[++index] = r.Description; dr[++index] = r.AlertCount; dr[++index] = r.AlertLocalTimeStr; dr[++index] = r.OpenWorkOrderCount; dr[++index] = r.AcknowledgedComment; dr[++index] = r.Comment; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 150d, 150d, 180d, 120d, 120d, 180d, 120d, 120d, 180d, 240d, 200d, 240d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportAutoAcknowledChangeHistory(string sessionid, string useriid, string lang) { AutoAcknowledgeItem[] items = FleetServiceClientHelper.CreateClient(sessionid).GetAutoAcknowledgeAlertTypesHistory(SystemParams.CompanyID, useriid); List list = new List(); if (items != null || items.Length > 0) { foreach (AutoAcknowledgeItem item in items) { AutoAcknowledgeInfo ai = new AutoAcknowledgeInfo(); Helper.CloneProperty(ai, item); ai.LocalUpdatedOn = ai.UpdatedOnLocal; list.Add(ai); } list = list.OrderBy(m => m.LocalUpdatedOn).ToList(); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_ALERTTYPE", "Alert Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_AUTOACKNOWLEDGE1", "Auto Acknowledge") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_USERNAME", "User Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AM_UPDATEDATE", "Update Date") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.AlertType; dr[++index] = r.AutoAcknowledge > 0 ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.UpdatedByName; dr[++index] = r.LocalUpdatedOnStr; dt.Rows.Add(dr); } double[] widths = new double[] { 300d, 150d, 250d, 180d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportAlertMappings(string lang, string sessionid, string searchtxt) { var client = FleetServiceClientHelper.CreateClient(sessionid); AlertMappingInfo[] mappings = client.GetAlertMappings(SystemParams.CompanyID, searchtxt, true); List ls = new List(); if (mappings != null && mappings.Length > 0) { var ap = FleetServiceClientHelper.CreateClient(sessionid); AssetMake[] makes = ap.GetAssetMakes(""); AssetModel[] models = ap.GetAssetModels(-1, ""); foreach (AlertMappingInfo ami in mappings) { if (ami.Items.Count > 0) { foreach (AlertMappingItem amitem in ami.Items) { AlertMappingClient amc = new AlertMappingClient(); Helper.CloneProperty(amc, amitem); amc.MappingId = ami.Id; amc.Source = ami.Source; amc.SPN = ami.SPN; amc.FMI = ami.FMI; amc.Description = ami.Description; amc.EnhancedDescription = ami.EnhancedDescription; if (amc.Make == -1) amc.MakeName = "(All)"; else { AssetMake make = makes.FirstOrDefault(m => m.ID == amc.Make); if (make != null) amc.MakeName = make.Name; } if (amc.Models != null && amc.Models.Length > 0) { List lsmodelname = new List(); foreach (int modeid in amc.Models) { if (modeid == -1) lsmodelname.Add("(All)"); else { AssetModel model = models.FirstOrDefault(m => m.ID == modeid); if (model != null) lsmodelname.Add(model.Name); } } amc.ModelNames = string.Join(",", lsmodelname); } ls.Add(amc); } } else { AlertMappingClient amc = new AlertMappingClient(); amc.MappingId = ami.Id; amc.Source = ami.Source; amc.SPN = ami.SPN; amc.FMI = ami.FMI; amc.Description = ami.Description; amc.EnhancedDescription = ami.EnhancedDescription; ls.Add(amc); } } } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_SOURCE", "Source") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_SPN", "SPN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_FMI", "FMI") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_DESCRIPTION", "Description") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_ENHANCEDDESCRIPTION", "Enhanced Description") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_MAKE", "Make") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_MODELS", "Models") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_ALERTTYPE", "Alert Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_AMP_CATEGORY", "Category") }); foreach (var r in ls) { int index = 0; var dr = dt.NewRow(); dr[index] = r.Source; dr[++index] = r.SPN; dr[++index] = r.FMI; dr[++index] = r.Description; dr[++index] = r.EnhancedDescription; dr[++index] = r.MakeName; dr[++index] = r.ModelNames; dr[++index] = r.AlertType; dr[++index] = r.Category; dt.Rows.Add(dr); } double[] widths = new double[] { 200d, 200d, 200d, 200d, 200d, 180d, 200d, 200d, 200d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportUsers(string lang, string searchtext, string layout) { UserInfo[] users = UserManagement.GetUsers(null, searchtext, lang).OrderBy(u => u.ID).ToArray(); var colinfos = JsonConvert.DeserializeObject(layout); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Copy", "AssetAssignment", "AssetGroupAssignment", "AssetTypeAssignment", "JobsiteAssignment", "Delete", "ResetPassword" }.Contains(c.ColumnKey)).ToArray(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = "ID", Caption = SystemParams.GetTextByKey(lang, "P_UM_USERID", "User ID") }); dt.Columns.Add(new DataColumn() { ColumnName = "DisplayName", Caption = SystemParams.GetTextByKey(lang, "P_UM_USERNAME", "User Name") }); dt.Columns.Add(new DataColumn() { ColumnName = "UserType", Caption = SystemParams.GetTextByKey(lang, "P_UM_USERTYPE", "User Type") }); dt.Columns.Add(new DataColumn() { ColumnName = "Active", Caption = SystemParams.GetTextByKey(lang, "P_UM_ACTIVE", "Active") }); dt.Columns.Add(new DataColumn() { ColumnName = "IsUser", Caption = SystemParams.GetTextByKey(lang, "P_UM_ISUSER", "Is User") }); dt.Columns.Add(new DataColumn() { ColumnName = "AssignedWorkOrders", Caption = SystemParams.GetTextByKey(lang, "P_UM_ASSIGNEDWORKORDERS", "Assigned Work Orders") }); dt.Columns.Add(new DataColumn() { ColumnName = "TextAddress", Caption = SystemParams.GetTextByKey(lang, "P_UM_TEXTADDRESS", "Text Address") }); dt.Columns.Add(new DataColumn() { ColumnName = "Mobile", Caption = SystemParams.GetTextByKey(lang, "P_UM_MOBILE", "Mobile") }); dt.Columns.Add(new DataColumn() { ColumnName = "BusinessPhone", Caption = SystemParams.GetTextByKey(lang, "P_UM_BUSINESSPHONE", "Business Phone") }); dt.Columns.Add(new DataColumn() { ColumnName = "ContactTypeName", Caption = SystemParams.GetTextByKey(lang, "P_UM_CONTACTTYPE", "Contact Type") }); dt.Columns.Add(new DataColumn() { ColumnName = "FOB", Caption = SystemParams.GetTextByKey(lang, "P_UM_EMPLOYEEIDORFOB", "Employee ID or FOB") }); dt.Columns.Add(new DataColumn() { ColumnName = "ManagerName", Caption = SystemParams.GetTextByKey(lang, "P_UM_MANAGER", "Manager") }); dt.Columns.Add(new DataColumn() { ColumnName = "EmailOptOut", Caption = SystemParams.GetTextByKey(lang, "P_UM_OPTOUTOFFICOMMUNICATIONS", "Opt Out of FI Communications?") }); dt.Columns.Add(new DataColumn() { ColumnName = "Notes", Caption = SystemParams.GetTextByKey(lang, "P_UM_NOTES", "Notes") }); dt.Columns.Add(new DataColumn() { ColumnName = "GroupNames", Caption = SystemParams.GetTextByKey(lang, "P_UM_GROUPNAME", "Group Name") }); foreach (var r in users) { string usertype = ""; if (r.UserType == UserTypes.Admin) usertype = "Admin"; else if (r.UserType == UserTypes.Common) usertype = "Common"; else usertype = "Read Only"; int index = 0; var dr = dt.NewRow(); dr[index] = r.ID; dr[++index] = r.DisplayName; dr[++index] = usertype; dr[++index] = r.Active ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.IsUser ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.AssignedWorkOrders ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.TextAddressDisplayText; dr[++index] = r.MobilePhoneDisplayText; dr[++index] = r.BusinessPhoneDisplayText; dr[++index] = r.ContactTypeName; dr[++index] = r.FOB; dr[++index] = r.ManagerName; dr[++index] = r.EmailOptOut ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.Notes; dr[++index] = r.GroupNamesStr; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int i = dt.Columns.Count - 1; i >= 0; i--) {//删除不显示的列 bool exists = false; for (int j = 0; j < colinfos.Length; j++) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { exists = true; break; } } if (!exists) dt.Columns.RemoveAt(i); } for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } //double[] widths = new double[] { 130d, 130d, 80d, 80d, 80d, 130d, 130d, 130d, 120d, 130d, 130d, 130d, 150d, 130d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportJobSites(string lang, string sessionid, string useriid, string searchtext, string typesdata, bool active, string layout) { string[] types = JsonConvert.DeserializeObject(typesdata); var jss = FleetServiceClientHelper.CreateClient(sessionid).GetJobSiteItems(SystemParams.CompanyID, searchtext, types, active); var colinfos = JsonConvert.DeserializeObject(layout); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Delete", "ManageAssets" }.Contains(c.ColumnKey)).ToArray(); //var sortcol = colinfos.FirstOrDefault((c) => c.Sort == 1); List list = new List(); foreach (var js in jss) { JobSiteViewItem item = new JobSiteViewItem(); Helper.CloneProperty(item, js); item.BaseOnMachineID = js.BaseonMachineID; item.Types = new string[] { js.JobSiteTypes }; item.ColorString = js.Color; System.Drawing.Color color = System.Drawing.Color.Orange; try { color = System.Drawing.ColorTranslator.FromHtml(item.ColorString); } catch { } item.Color = new IIColor() { Alpha = color.A, Red = color.R, Green = color.G, Blue = color.B }; item.StartDate = js.StartDate == null ? DateTime.MinValue : js.StartDate.Value; item.ProjectedEndDate = js.ProjectedEndDate == null ? DateTime.MinValue : js.ProjectedEndDate.Value; item.EndDate = js.EndDate == null ? DateTime.MinValue : js.EndDate.Value; item.Radius_UOM = js.RadiusUOM; if (js.Polygon != null && js.Polygon.Length > 0) { List temps = new List(); foreach (var p in js.Polygon) { temps.Add(new PostionItem(p.Latitude, p.Longtitude)); } item.Polygon = temps.ToArray(); } list.Add(item); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_NAME", "Name"), ColumnName = "Name" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_REGION", "Region"), ColumnName = "Region" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_NUMBER", "Number"), ColumnName = "Number" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_CODE", "Code"), ColumnName = "Code" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_TYPES", "Types"), ColumnName = "Types" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_LATITUDE", "Latitude"), ColumnName = "Latitude" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_LONGITUDE", "Longitude"), ColumnName = "Longitude" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_COLOR", "Color"), ColumnName = "ColorString" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_RADIUS", "Radius"), ColumnName = "RadiusStr" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_BINDINGTOASSET", "Binding to Asset"), ColumnName = "BaseonAsset" }); //dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_RADIUSUOM", "Radius UOM") }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_FOREMAN", "Foreman"), ColumnName = "Foreman" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_MANAGER", "Manager"), ColumnName = "Manager" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_PHONE", "Phone"), ColumnName = "Phone" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_EMAIL", "Email"), ColumnName = "Email" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_GROUP", "Group"), ColumnName = "Group" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_DELIVERYADDRESS1", "Delivery Address 1"), ColumnName = "Address1" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_DELIVERYADDRESS2", "Delivery Address 2"), ColumnName = "Address2" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_CITY", "City"), ColumnName = "City" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_STATE", "State"), ColumnName = "State" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_ZIP", "Zip"), ColumnName = "Zip" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_COUNTY", "County"), ColumnName = "County" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_STATDATE", "Start Date"), ColumnName = "StartDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_PROJECTEDENDDATE", "Projected End Date"), ColumnName = "ProjectedEndDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_ENDDATE", "End Date"), ColumnName = "EndDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_NOTES", "Notes"), ColumnName = "Notes" }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.Name; dr[++index] = r.Region; dr[++index] = r.Number; dr[++index] = r.Code; dr[++index] = (r.Types == null || r.Types.Length == 0) ? "" : r.Types[0]; dr[++index] = r.Latitude; dr[++index] = r.Longitude; dr[++index] = r.ColorString; dr[++index] = r.RadiusStr; dr[++index] = r.BaseonMachineName; dr[++index] = r.Foreman; dr[++index] = r.Manager; dr[++index] = r.Phone; dr[++index] = r.Email; dr[++index] = r.Group; dr[++index] = r.Address1; dr[++index] = r.Address2; dr[++index] = r.City; dr[++index] = r.State; dr[++index] = r.Zip; dr[++index] = r.County; dr[++index] = r.StartDateStr; dr[++index] = r.ProjectedEndDateStr; dr[++index] = r.EndDateStr; dr[++index] = r.Notes; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int i = dt.Columns.Count - 1; i >= 0; i--) {//删除不显示的列 bool exists = false; for (int j = 0; j < colinfos.Length; j++) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { exists = true; break; } } if (!exists) dt.Columns.RemoveAt(i); } for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } //if (widths == null) // widths = new double[] { 150d, 150d, 150d, 150d, 120d, 120d, 120d, 120d, 120d, 120d, 120d, 120d, 120d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportRequirements(string lang, string sessionid, string clientdata) { JobSiteRequirementQueryItem p = JsonConvert.DeserializeObject(clientdata); DateTime latestStartDate = Helper.DBMinDateTime; if (!DateTime.TryParse(p.LatestStartDate, out latestStartDate)) latestStartDate = Helper.DBMinDateTime; List list = new List(); JobSiteRequirmentInfo[] reqs = FleetServiceClientHelper.CreateClient(SystemParams.CompanyID, sessionid).GetRequirmentItems(SystemParams.CompanyID, latestStartDate, p.JobSites, p.Regions, p.UnScheduledOnly); if (reqs != null && reqs.Length > 0) { foreach (JobSiteRequirmentInfo re in reqs) { JobSiteRequirmentItem item = new JobSiteRequirmentItem(); Helper.CloneProperty(item, re); list.Add(item); } } list = list.OrderBy(r => r.BeginDate).ToList(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_BEGINDATE", "Begin Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_ENDDATE", "End Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_ASSETTYPE", "Asset Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_QUANTITY", "Quantity") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_SCHEDULED", "Scheduled") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JOBSITE", "Jobsite") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_NUMBEROFDAYS", "Number of Days") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_NOTES", "Notes") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_POINTOFCONTACT", "Point Of Contact") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_CREATOR", "Creator") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_FULFILLEDBY", "Fulfilled By") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.BeginDateStr; dr[++index] = r.EndDateStr; dr[++index] = r.AssetTypeName; dr[++index] = r.Quantity; dr[++index] = r.ScheduledQuantity; dr[++index] = r.JobSiteName; dr[++index] = r.NumberOfDays; dr[++index] = r.Notes; dr[++index] = r.PointOfContact; dr[++index] = r.AddedByName; dr[++index] = r.FulfilledByName; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 150d, 150d, 120d, 120d, 120d, 150d, 180d, 180d, 150d, 150d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportCustomerRecords(string lang, string sessionid, string searchtext) { BusinessPartnerInfo[] items = FleetServiceClientHelper.CreateClient(sessionid).GetPartners(SystemParams.CompanyID, searchtext); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_CODE", "Code") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_COMPANYNAME", "Company Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_SALESPERSONCODE", "Salesperson Code") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_SALESPERSONNAME", "Salesperson Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_ADDRESS", "Address") }); //dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_CONTACTNAME", "Contact Name") }); //dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_CONTACTEMAIL", "Contact Email") }); //dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_CONTACTMOBILE", "Contact Mobile") }); //dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_CONTACTPREFERENCES", "Contact Preferences") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_CR_NOTES", "Notes") }); foreach (var r in items) { int index = 0; var dr = dt.NewRow(); dr[index] = r.Code; dr[++index] = r.Name; dr[++index] = r.SalespersonCode; dr[++index] = r.SalespersonName; dr[++index] = r.Address; dr[++index] = r.Notes; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 150d, 150d, 150d, 150d, 180d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportDispatchRequests(string lang, string sessionid, string filter) { JobSiteRequirementQueryItem p = JsonConvert.DeserializeObject(filter); DateTime latestStartDate = Helper.DBMinDateTime; if (!DateTime.TryParse(p.LatestStartDate, out latestStartDate)) latestStartDate = Helper.DBMinDateTime; JobSiteAssetDispatchInfo[] list = FleetServiceClientHelper.CreateClient(SystemParams.CompanyID, sessionid).GetAssetDispatchItems(SystemParams.CompanyID, latestStartDate, p.JobSites, p.Regions, p.UnScheduledOnly); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_MOVEDATE", "Move Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_ASSETTYPE", "Asset Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_MODEL", "Model") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_FROMJOBSITE", "From Jobsite") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_TOJOBSITE", "To Jobsite") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_MARKCOMPLETE", "Mark Complete") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_COMPLETEDATE", "Completed Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_NOTES", "Notes") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_ASSIGNEDTO", "Assigned To") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_JS_POINTOFCONTACT", "Point Of Contact") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = (r.BeginDate == null ? "" : r.BeginDate.Value.ToString("M/d/yyyy")); dr[++index] = r.AssetName; dr[++index] = r.AssetTypeName; dr[++index] = r.AssetModelName; dr[++index] = r.CurrentJobSiteName; dr[++index] = r.RequiredJobSiteName; dr[++index] = r.Completed; dr[++index] = (r.Completed ? (r.CompletedTime == null ? "" : r.CompletedTime.Value.ToString("M/d/yyyy")) : ""); dr[++index] = r.Notes; dr[++index] = r.AssignedToAssetName; dr[++index] = r.PointOfContact; dt.Rows.Add(dr); } double[] widths = new double[] { 100d, 200d, 180d, 180d, 120d, 120d, 100d, 120d, 200d, 200d, 200d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportFuelRecordManagement(string lang, string sessionid, string searchtext, DateTime beginDate, DateTime endDate, string type, long assetid) { FuelRecord[] fuels = FleetServiceClientHelper.CreateClient(sessionid).GetFuelRecords(SystemParams.CompanyID, Convert.ToInt64(type), beginDate, endDate, searchtext); if (assetid > 0) fuels = fuels.Where(m => m.AssetID == assetid).ToArray(); Foresight.Fleet.Services.Asset.AssetBasicInfo[] assets = FleetServiceClientHelper.CreateClient(sessionid).GetAssetBasicInfo(SystemParams.CompanyID); List list = new List(); foreach (FuelRecord fuel in fuels) { FuelRecordInfo fi = new FuelRecordInfo(); Helper.CloneProperty(fi, fuel); if (fi.FuelingAsset > 0) { Foresight.Fleet.Services.Asset.AssetBasicInfo asset = assets.FirstOrDefault(m => m.ID == fi.FuelingAsset); fi.FuelingAssetName = asset == null ? fi.FuelingAsset.ToString() : asset.DisplayName; } list.Add(fi); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_ASSETNAME", "Asset Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_MAKE", "Make") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_MODEL", "Model") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_SNVIN", "SN/VIN") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_TRANSACTIONDATE", "Transaction Date") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_DISTRIBUTEDBY", "Distributed By") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_RETAILERNAME", "Retailer Name") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_ASSET", "Asset") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_QUANTITY", "Quantity") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_UOM", "UOM") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_UOMCOST", "Unit Cost") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_FR_TOTALCOST", "Total Cost") }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.AssetName; dr[++index] = r.AssetMake; dr[++index] = r.AssetModel; dr[++index] = r.VIN; dr[++index] = r.TransactionLocalDateStr; dr[++index] = r.DistributedBy == 0 ? "Fueling Station" : "Fueling Asset"; dr[++index] = r.RetailerName; dr[++index] = r.FuelingAssetName; dr[++index] = r.Quantity.ToString("#,##0.##"); dr[++index] = r.Uom; dr[++index] = r.UnitCost.ToString("#,##0.##"); dr[++index] = r.TotalCost.ToString("#,##0.##"); dt.Rows.Add(dr); } double[] widths = new double[] { 180d, 120d, 120d, 180d, 120d, 120d, 180d, 180d, 80d, 80d, 80d, 80d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } #region ExportWorkOrders public static byte[] ExportWorkOrders(string lang, Foresight.Fleet.Services.User.UserInfo user, string sessionid, string clientdata, string layout) { clientdata = System.Web.HttpUtility.HtmlDecode(clientdata); WorkOrderQueryParams p = JsonConvert.DeserializeObject(clientdata); WorkOrderListItem[] workorders = null; if (p.AssetID > 0) workorders = FleetServiceClientHelper.CreateClient(sessionid).GetWorkOrderItemsByAsset(SystemParams.CompanyID, p.AssetID); else workorders = FleetServiceClientHelper.CreateClient(sessionid).GetWorkOrderItems(SystemParams.CompanyID, p.Contacts, p.Statuses, p.OrderTypes, p.AssetGroups, p.SearchText, p.Completed, p.Locations, p.Departments, p.Advisors); var colinfos = JsonConvert.DeserializeObject(layout); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Print", "Delete", "AssetAlert", "Surveys" }.Contains(c.ColumnKey)).ToArray(); //var sortcol = colinfos.FirstOrDefault((c) => c.Sort == 1); List list = new List(); WorkOrderListItemClient[] maintenanceworkorders = null;// if (p.ShowMaintenance) maintenanceworkorders = MaintenanceManagement.GetMaintenanceWorkOrders(sessionid, SystemParams.CompanyID, p.Contacts, p.AssetGroups, p.SearchText, user.UID); if (maintenanceworkorders != null) { //普通用户机器权限过滤 long[] availableAssetsids = null; if (user.UserType < Foresight.Fleet.Services.User.UserTypes.Admin) { availableAssetsids = FleetServiceClientHelper.CreateClient(sessionid).GetAvailableAssetsForUsers(SystemParams.CompanyID, user.UID); } foreach (WorkOrderListItemClient wi in maintenanceworkorders) { if (availableAssetsids != null && !availableAssetsids.Contains(wi.AssetId)) continue; if (p.Completed == 0)//MaintenanceRecord都认为是已完成 continue; list.Add(wi); } } foreach (WorkOrderListItem wo in workorders) { WorkOrderListItemClient wi = new WorkOrderListItemClient(); Helper.CloneProperty(wi, wo); if (wi.CreateDate != null) wi.CreateDate = wi.CreateDate.Value.Date; if (wi.LastCommunicationDate != null) wi.LastCommunicationDate = wi.LastCommunicationDate.Value.Date; if (wi.LastInternalCommunicationDate != null) wi.LastInternalCommunicationDate = wi.LastInternalCommunicationDate.Value.Date; list.Add(wi); } var ci = colinfos.FirstOrDefault(c => c.Sort != 0); if (ci != null && ci.ColumnKey == "Id" && ci.Sort == -1)//处理WorkOrder 特殊排序 { list = list.OrderByDescending((m) => { int v = 0; if (int.TryParse(m.WorkOrderNumber, out v)) return m.WorkOrderNumber.PadLeft(50, '0'); else return m.WorkOrderNumber; }).ToList(); } else { list = list.OrderBy((m) => { int v = 0; if (int.TryParse(m.WorkOrderNumber, out v)) return m.WorkOrderNumber.PadLeft(50, '0'); else return m.WorkOrderNumber; }).ToList(); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERNUMBER", "Work Order Number"), ColumnName = "Id" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERTYPE", "Work Order Type"), ColumnName = "WorkOrderType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_ASSIGNEDTO", "Assigned To"), ColumnName = "AssignedToName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_STATUS", "Status"), ColumnName = "StatusName", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_DESCRIPTION", "Description"), ColumnName = "Description" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_ASSET", "Asset"), ColumnName = "AssetName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_VIN", "VIN"), ColumnName = "VIN" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_MAKE", "Make"), ColumnName = "Make" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_MODEL", "Model"), ColumnName = "Model" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_CUSTOMERCODE", "Customer Code"), ColumnName = "CustomerCode" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_CR_COMPANYNAME", "Company Name"), ColumnName = "Customer" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTCOMMUNICATIONTEXT", "Last Communication Text"), ColumnName = "LastCommunication" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTCOMMUNICATIONBY", "Last Communication By"), ColumnName = "LastCommunicationBy" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTCOMMUNICATIONDATE", "Last Communication Date"), ColumnName = "LastCommunicationDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_DEPARTMENT", "Department"), ColumnName = "Department" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LOCATION", "Location"), ColumnName = "Location" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_ADVISOR", "Advisor"), ColumnName = "Advisor" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_SALESPERSON", "Salesperson"), ColumnName = "SalespersonName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_CURRJOBSITE", "Current Jobsite"), ColumnName = "CurrentJobsites" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_CREATEDDATE", "Created Date"), ColumnName = "CreateDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_CREATIONDATE", "Creation Date"), ColumnName = "CreationDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_DUEDATE", "Due Date"), ColumnName = "DueDate", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_NEXTFOLLOWUPDATE", "Next Follow Up Date"), ColumnName = "NextFollowUpDate", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PARTSEXPECTEDDATE", "Parts Expected Date"), ColumnName = "PartsExpectedDate", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTLABORDATE", "Last Labor Date"), ColumnName = "LastLaborDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_COMPLETEDDATE", "Completed Date"), ColumnName = "CompleteDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_INVOICENUMBER", "Invoice Number"), ColumnName = "InvoiceNumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_ALTERNATESTATUS", "Alternate Status"), ColumnName = "AlternateStatus" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_INSPECTIONS", "Inspections"), ColumnName = "InspectionCount" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_INSPECTIONREQUIRED", "Inspection Required"), ColumnName = "InspectionRequired" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_AUTOSENDCOMMUNICATIONENABLED", "Auto-send Communication Enabled"), ColumnName = "AutoText" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_NOTES", "Notes"), ColumnName = "Notes" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_CONTACTS", "Contacts"), ColumnName = "Contacts" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_ESTIMATESTATUS", "Estimate Status"), ColumnName = "EstimateStatus" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PUBLISHEDESTIMATES", "Published Estimates"), ColumnName = "PublishedEstimates" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_APPROVEDESTIMATES", "Approved Estimates"), ColumnName = "ApprovedEstimates" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_REJECTEDESTIMATES", "Rejected Estimates"), ColumnName = "RejectedEstimates" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PENDINGESTIMATES", "Pending Estimates"), ColumnName = "PendingEstimates" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_COMPONENT", "Component"), ColumnName = "Component" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_BILLABLE", "Billable"), ColumnName = "Billable" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_BILLTOJOB", "Bill to job"), ColumnName = "BillToJob" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PONUMBER", "PO Number"), ColumnName = "PONumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PARTSORDERNUMBER", "Parts Order Number"), ColumnName = "PartsOrderNumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_PARTSSTATUS", "Parts Status"), ColumnName = "PartsStatus" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTINTERNALCOMMUNICATION", "Last Internal Communication"), ColumnName = "LastInternalCommunication" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTINTERNALCOMMUNICATIONBY", "Last Internal Communication By"), ColumnName = "LastInternalCommunicationBy" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_WO_LASTINTERNALCOMMUNICATIONDATE", "Last Internal Communication Date"), ColumnName = "LastInternalCommunicationDate" }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); string wonumber = r.WorkOrderNumber ?? ""; if (string.IsNullOrEmpty(wonumber) && r.Id > 0) wonumber = r.Id.ToString(); dr[index] = wonumber; dr[++index] = r.WorkOrderType; dr[++index] = r.AssignedToName; System.Drawing.Color bgcolor = System.Drawing.Color.White; try { if (!string.IsNullOrWhiteSpace(r.StatusColor)) bgcolor = System.Drawing.ColorTranslator.FromHtml(r.StatusColor); } catch { } CExcelCellValue cStatus = new CExcelCellValue() { Value = r.StatusName, BackgroundColor = bgcolor }; dr[++index] = cStatus; dr[++index] = r.Description; dr[++index] = r.AssetName; dr[++index] = r.VIN; dr[++index] = r.Make; dr[++index] = r.Model; dr[++index] = r.CustomerCode; dr[++index] = r.CustomerName; dr[++index] = r.LastCommunication; dr[++index] = r.LastCommunicationBy; dr[++index] = r.LastCommunicationDateStr; dr[++index] = r.Department; dr[++index] = r.Location; dr[++index] = r.AdvisorName; dr[++index] = r.SalespersonName; dr[++index] = r.CurrentJobsites; dr[++index] = r.CreateDateStr; dr[++index] = r.CreationDateStr; bgcolor = System.Drawing.Color.White; if (!r.Completed && r.DueDate != null && r.DueDate.Value < DateTime.Now.Date) { bgcolor = System.Drawing.Color.Red; dr[++index] = new CExcelCellValue() { Value = r.DueDateStr, BackgroundColor = bgcolor }; } else dr[++index] = r.DueDateStr; bgcolor = System.Drawing.Color.White; if (!r.Completed && r.NextFollowUpDate != null && r.NextFollowUpDate.Value < DateTime.Now.Date) { bgcolor = System.Drawing.Color.Red; dr[++index] = new CExcelCellValue() { Value = r.NextFollowUpDateStr, BackgroundColor = bgcolor }; } else dr[++index] = r.NextFollowUpDateStr; bgcolor = System.Drawing.Color.White; if (!r.Completed && r.PartsExpectedDate != null && r.PartsExpectedDate.Value < DateTime.Now.Date) { bgcolor = System.Drawing.Color.Red; dr[++index] = new CExcelCellValue() { Value = r.PartsExpectedDateStr, BackgroundColor = bgcolor }; } else dr[++index] = r.PartsExpectedDateStr; dr[++index] = r.LastLaborDateStr; dr[++index] = r.CompleteDateStr; dr[++index] = r.InvoiceNumber; dr[++index] = r.AlternateStatus; dr[++index] = r.InspectionCount; dr[++index] = r.InspectionRequired ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.AutoText ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.Notes; dr[++index] = GetWOContacts(r.Contacts); dr[++index] = GetEstimateStatus(r.EstimateStatus, lang); dr[++index] = r.PublishedEstimates; dr[++index] = r.ApprovedEstimates; dr[++index] = r.RejectedEstimates; dr[++index] = r.PendingEstimates; dr[++index] = r.Component; dr[++index] = r.Billable ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.BillToJobName; dr[++index] = r.PONumber; dr[++index] = r.PartsOrderNumber; dr[++index] = r.PartsStatus; dr[++index] = r.LastInternalCommunication; dr[++index] = r.LastInternalCommunicationBy; dr[++index] = r.LastInternalCommunicationDateStr; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int i = dt.Columns.Count - 1; i >= 0; i--) {//删除不显示的列 bool exists = false; for (int j = 0; j < colinfos.Length; j++) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { exists = true; break; } } if (!exists) dt.Columns.RemoveAt(i); } for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0 && dt.Columns[i].Caption != "Id") { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } bool IsCustomerRecordAllow = SystemParams.HasLicense("CustomerRecord"); bool crpermission = SystemParams.CheckRight(SystemParams.CompanyID, user, FU.Feature.CUSTOMER_RECORD); if (!IsCustomerRecordAllow || !crpermission) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { var col = dt.Columns[i]; if (new string[] { "Advisor", "CustomerCode", "Contacts", "LastCommunication", "LastCommunicationDate", "LastCommunicationBy", "AlternateStatus", "EstimateStatus", "PublishedEstimates", "ApprovedEstimates", "RejectedEstimates", "PendingEstimates", "AutoText" }.Contains(col.Caption)) dt.Columns.Remove(col); } } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } private static string GetEstimateStatus(WorkOrderEstimateStatus s, string lang) { var text = ""; if (s == WorkOrderEstimateStatus.Draft) text = SystemParams.GetTextByKey(lang, "P_WO_DRAFT", "Draft"); else if (s == WorkOrderEstimateStatus.Pending) text = SystemParams.GetTextByKey(lang, "P_WO_AWAITINGCUSTOMERAPPROVAL", "Awaiting Customer Approval"); else if (s == WorkOrderEstimateStatus.Canceled) text = SystemParams.GetTextByKey(lang, "P_WO_CANCELLEDBYDEALER", "Cancelled by Dealer"); else if (s == WorkOrderEstimateStatus.Declined) text = SystemParams.GetTextByKey(lang, "P_WO_CUSTOMERREJECTED", "Customer Rejected"); else if (s == WorkOrderEstimateStatus.Approved) text = SystemParams.GetTextByKey(lang, "P_WO_CUSTOMERAPPROVED", "Customer Approved"); else if (s == WorkOrderEstimateStatus.None) text = ""; return text; } private static string GetWOContacts(List contacts) { StringBuilder text = new StringBuilder(); if (contacts != null && contacts.Count > 0) { for (int i = 0; i < contacts.Count; i++) { var contact = contacts[i]; var ptext = contact.Name; if (contact.ContactPreference == FU.ContactPreferences.Text) { ptext += " – T"; if (contact.MobilePhone != "") ptext += " – " + contact.MobilePhoneDisplayText; } else if (contact.ContactPreference == FU.ContactPreferences.Email) { if (contact.Email != "") ptext += " - " + contact.Email; } else if (contact.ContactPreference == FU.ContactPreferences.Phone) { ptext += " – P"; if (contact.MobilePhone != "") ptext += " – " + contact.MobilePhoneDisplayText; } text.AppendLine(ptext); } } return text.ToString(); } #endregion public static byte[] ExportManageAssets(string lang, string sessionid, string useriid, string clientdata, string layout, FU.UserInfo user) { string[] p = JsonConvert.DeserializeObject(clientdata); string companyid = p[0]; bool showHidden = p[1] == "1"; string searchtxt = p[2]; bool attachment = p[3] == "1"; int att = attachment ? 0 : 2; if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; if (string.IsNullOrWhiteSpace(companyid) && SystemParams.IsDealer) return null; AssetBasicInfo[] assets = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetBasicInfoByUser(companyid, searchtxt, useriid, att); List list = new List(); foreach (var a in assets) { if (!showHidden && a.Hide) continue; AssetBasicItem asset = new AssetBasicItem(); Helper.CloneProperty(asset, a); asset.EngineHours = a.EngineHours ?? 0; asset.Odometer = a.Odometer ?? 0; list.Add(asset); } list = list.OrderBy((m) => m.VIN).ToList(); var colinfos = JsonConvert.DeserializeObject(layout); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Selected", "UploadAssetIcon", "DeleteAssetIcon", "Detail", "DeleteAsset" }.Contains(c.ColumnKey)).ToArray(); if (user.UserType != FU.UserTypes.SupperAdmin) { colinfos = colinfos.Where(c => !new string[] { "Preloaded" }.Contains(c.ColumnKey)).ToArray(); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_VINSN", "SN/VIN"), ColumnName = "VIN" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME", "Asset Name"), ColumnName = "Name" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME2", "Asset Name(Custom)"), ColumnName = "Name2" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_MAKE", "Make"), ColumnName = "Make" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_MODEL", "Model"), ColumnName = "Model" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_TYPE", "Asset Type"), ColumnName = "MachineType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_YEAR", "Year"), ColumnName = "MakeYear" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ENGINEHOURS", "Engine Hours"), ColumnName = "EngineHours" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ENGINEHOURSDATE", "Engine Hours Date"), ColumnName = "EngineHoursDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ODOMETER", "Odometer"), ColumnName = "Odometer" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ODOMETERDATE", "Odometer Date"), ColumnName = "OdometerDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_DESCRIPTION", "Description"), ColumnName = "Description" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_JOBSITE", "Jobsite"), ColumnName = "Jobsite" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_PAIREDDEVICESN", "Paired Device SN"), ColumnName = "GpsDeviceSN" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ACQUISITIONTYPE", "Acquisition Type"), ColumnName = "AcquisitionType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ADDEDON", "Added On"), ColumnName = "AddedOn" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_AVAILABILITY", "Availability"), ColumnName = "CustomStatus" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_PMPLAN", "PMPlan"), ColumnName = "PMPlan" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_JS_ASSETGROUP", "Asset Group"), ColumnName = "AssetGroups" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ONROAD", "On-Road"), ColumnName = "OnRoad" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_ATTACHMENT", "Attachment"), ColumnName = "Attachment" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_HIDE", "Hide"), ColumnName = "Hide" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MA_TELEMATICSENABLED", "Telematics Enabled"), ColumnName = "TelematicsEnabled" }); if (user.UserType == FU.UserTypes.SupperAdmin) { dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_PRELOADED", "Preloaded"), Caption = "Preloaded" }); } foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.VIN; dr[++index] = r.Name; dr[++index] = r.Name2; dr[++index] = r.MakeName; dr[++index] = r.ModelName; dr[++index] = r.TypeName; dr[++index] = r.MakeYear == 0 ? "" : r.MakeYear + ""; dr[++index] = r.EngineHours; dr[++index] = r.EngineHoursDateStr; dr[++index] = r.Odometer + (r.Odometer > 0 ? " " + r.OdometerUOM : ""); dr[++index] = r.OdometerDateStr; dr[++index] = r.Description; dr[++index] = r.Jobsites; dr[++index] = r.CalampDeviceAirID; dr[++index] = r.AcquisitionType; dr[++index] = r.AddedTimeStr; if (r.CustomStatus == AssetCustomStatus.InUse) dr[++index] = SystemParams.GetTextByKey(lang, "P_MA_INUSE", "In Use"); else if (r.CustomStatus == AssetCustomStatus.Available) dr[++index] = SystemParams.GetTextByKey(lang, "P_MA_AVAILABLE", "Available"); else if (r.CustomStatus == AssetCustomStatus.Standby) dr[++index] = SystemParams.GetTextByKey(lang, "P_MA_STANDBY", "Standby"); else if (r.CustomStatus == AssetCustomStatus.Down) dr[++index] = SystemParams.GetTextByKey(lang, "P_MA_DOWN", "Down"); else dr[++index] = ""; dr[++index] = r.PMPlans; dr[++index] = r.AssetGroups; dr[++index] = r.OnRoad ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.Attachment ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.Hide ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.TelematicsEnabled ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); if (user.UserType == FU.UserTypes.SupperAdmin) { dr[++index] = r.Preloaded ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); } dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int i = dt.Columns.Count - 1; i >= 0; i--) {//删除不显示的列 bool exists = false; for (int j = 0; j < colinfos.Length; j++) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { exists = true; break; } } if (!exists) dt.Columns.RemoveAt(i); } for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportAssetGroups(string lang, string sessionid, string useriid, string searchtext) { var list = FleetServiceClientHelper.CreateClient(SystemParams.CompanyID, sessionid).GetAssetGroups(SystemParams.CompanyID, searchtext, useriid); list = list.OrderBy(g => g.Name).ToArray(); string json = "[{\"ColumnKey\":\"Name\",\"Width\":360,\"Sort\":0},{\"ColumnKey\":\"Description\",\"Width\":360,\"Sort\":0},{\"ColumnKey\":\"Code\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"Edit\",\"Width\":30,\"Sort\":0},{\"ColumnKey\":\"Delete\",\"Width\":30,\"Sort\":0}]"; var colinfos = JsonConvert.DeserializeObject(json); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Delete" }.Contains(c.ColumnKey)).ToArray(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_AG_GROUPNAME", "Group Name"), ColumnName = "Name" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_AG_DESCRIPTION", "Description"), ColumnName = "Description" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_AG_CODE", "Code"), ColumnName = "Code" }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.Name; dr[++index] = r.Description; dr[++index] = r.Code; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportManageDevices(string lang, string sessionid, string clientdata, FU.UserInfo user) { string[] p = JsonConvert.DeserializeObject(clientdata); string contractorid = p[0]; string searchtxt = p[1]; if (string.IsNullOrEmpty(contractorid)) contractorid = SystemParams.CompanyID; FFSDevice.DeviceInfo[] devs = FleetServiceClientHelper.CreateClient(contractorid, sessionid).GetDevices(contractorid, searchtxt); if (devs == null) return new byte[0]; List list = new List(); foreach (var dev in devs) { DeviceItem deviceitem = new DeviceItem(); Helper.CloneProperty(deviceitem, dev); if (dev.PairedAsset != null) { deviceitem.PairedAsset = new PairedAssetItem(); Helper.CloneProperty(deviceitem.PairedAsset, dev.PairedAsset); } list.Add(deviceitem); } string json = "[{\"ColumnKey\":\"SerialNumber\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"AlternativeSerialNumber\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"DeviceType\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"SourceName\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"Status\",\"Width\":80,\"Sort\":0},{\"ColumnKey\":\"AddDate\",\"Width\":100,\"Sort\":0},{\"ColumnKey\":\"FIInstalltion\",\"Width\":100,\"Sort\":0},{\"ColumnKey\":\"Installer\",\"Width\":100,\"Sort\":0},{\"ColumnKey\":\"Notes\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"ServiceStartDate\",\"Width\":110,\"Sort\":0},{\"ColumnKey\":\"VIN\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"Name\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"Year\",\"Width\":80,\"Sort\":0},{\"ColumnKey\":\"Make\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"Model\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"MachineType\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"EngineHours\",\"Width\":90,\"Sort\":0},{\"ColumnKey\":\"EngineHoursDate\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"InvoiceDate\",\"Width\":100,\"Sort\":0},{\"ColumnKey\":\"InvoiceNumber\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"SalesOrderNumber\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"Edit\",\"Width\":30,\"Sort\":0},{\"ColumnKey\":\"ONotes\",\"Width\":30,\"Sort\":0},{\"ColumnKey\":\"ChangeContractor\",\"Width\":30,\"Sort\":0}]"; var colinfos = JsonConvert.DeserializeObject(json); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Delete" }.Contains(c.ColumnKey)).ToArray(); if (user.UserType < FU.UserTypes.SupperAdmin) { colinfos = colinfos.Where(c => !new string[] { "FIInstalltion", "Installer", "SalesOrderNumber" }.Contains(c.ColumnKey)).ToArray(); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_SN", "Air ID or SN"), ColumnName = "SerialNumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ESN", "ESN"), ColumnName = "AlternativeSerialNumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_DEVICETYPE", "Device Type"), ColumnName = "DeviceType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_SOURCE", "Source"), ColumnName = "SourceName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_STATUS", "Status"), ColumnName = "Status" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ADDDATE", "Add Date"), ColumnName = "AddDate" }); if (user.UserType == FU.UserTypes.SupperAdmin) { dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_FIINSTALL", "FI Install"), ColumnName = "FIInstalltion" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_INSTALLER", "Installer"), ColumnName = "Installer" }); } dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_NOTES", "Notes"), ColumnName = "Notes" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_SERVICESTATDATE", "Service Start Date"), ColumnName = "ServiceStartDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ASSETVINSN", "Asset VIN/SN"), ColumnName = "VIN" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ASSETNAME", "Asset Name"), ColumnName = "Name" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_YEAR", "Year"), ColumnName = "Year" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_MAKE", "Make"), ColumnName = "Make" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_MODEL", "Model"), ColumnName = "Model" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_TYPE", "Type"), ColumnName = "MachineType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ENGINEHOURS", "Engine Hours"), ColumnName = "EngineHours" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_ENGINEHOURSDATE", "Engine Hours Date"), ColumnName = "EngineHoursDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_INVOICEDATE", "Invoice Date"), ColumnName = "InvoiceDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MD_INVOICENUMBER", "Invoice #"), ColumnName = "InvoiceNumber" }); if (user.UserType == FU.UserTypes.SupperAdmin) { dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MD_SALESORDER", "Sales Order #"), Caption = "SalesOrderNumber" }); } foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.SerialNumber; dr[++index] = r.AlternativeSerialNumber; dr[++index] = r.DeviceType; dr[++index] = r.SourceName; dr[++index] = r.Status == 1 ? SystemParams.GetTextByKey(lang, "P_MD_ACTIVE", "Active") : SystemParams.GetTextByKey(lang, "P_MD_INACTIVE", "Inactive"); dr[++index] = r.AddDateStr; if (user.UserType == FU.UserTypes.SupperAdmin) { dr[++index] = r.FIInstalltion ? SystemParams.GetTextByKey(lang, "P_UTILITY_YES", "Yes") : SystemParams.GetTextByKey(lang, "P_UTILITY_NO", "No"); dr[++index] = r.Installer; } dr[++index] = r.Notes; dr[++index] = r.ServiceStartDateStr; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.VIN; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.Name; dr[++index] = (r.PairedAsset == null || r.PairedAsset.Year == 0) ? "" : r.PairedAsset.Year + ""; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.MakeName; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.ModelName; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.TypeName; dr[++index] = (r.PairedAsset == null || r.PairedAsset.EngineHours == 0) ? "" : r.PairedAsset.EngineHours + ""; dr[++index] = r.PairedAsset == null ? "" : r.PairedAsset.EngineHoursDateStr; dr[++index] = r.InvoiceDateStr; dr[++index] = r.InvoiceNumber; if (user.UserType == FU.UserTypes.SupperAdmin) { dr[++index] = r.SalesOrderNumber; } dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportMaintenanceRecords(string lang, string sessionid, string useriid, string clientdata) { string[] p = JsonConvert.DeserializeObject(clientdata); long assetid = -1; long.TryParse(p[0], out assetid); string maintenanceType = p[1]; string mtype = p[2]; string searchtxt = p[3]; string sortype = p[4]; string sortdata = p[5]; string sdatestr = p[6]; string edatestr = p[7]; DateTime beginDate = Helper.DBMinDateTime; DateTime endDate = DateTime.MaxValue; if (!DateTime.TryParse(sdatestr, out beginDate)) beginDate = Helper.DBMinDateTime; if (!DateTime.TryParse(edatestr, out endDate)) endDate = DateTime.MaxValue; MaintenanceLogInfo[] logs = MaintenanceManagement.GetMaintenanceLog(sessionid, assetid, maintenanceType, string.IsNullOrWhiteSpace(mtype) ? -1 : Convert.ToInt32(mtype), searchtxt, beginDate, endDate, useriid); if (!string.IsNullOrWhiteSpace(sortype)) { if (string.Compare(sortype, "1", true) == 0) { if (string.Compare(sortdata, "DESC", true) == 0) { logs = logs.OrderByDescending(m => m.MaintenanceDate).ToArray(); } else { logs = logs.OrderBy(m => m.MaintenanceDate).ToArray(); } } if (string.Compare(sortype, "2", true) == 0) { if (string.Compare(sortdata, "DESC", true) == 0) { logs = logs.OrderByDescending(m => m.AlertTime).ToArray(); } else { logs = logs.OrderBy(m => m.AlertTime).ToArray(); } } } string json = "[{\"ColumnKey\":\"MachineID\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"MachinePin\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"DisplayName\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"MaintenanceDate\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"LogType\",\"Width\":130,\"Sort\":0},{\"ColumnKey\":\"MaintenanceHours\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"ODOMeter\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"ODOMemterUOM\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"Cost\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"InvoiceNumber\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"CompletedByName\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"Notes\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"MachineMake\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"MachineModel\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"MachineType\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"AlertID\",\"Width\":80,\"Sort\":0},{\"ColumnKey\":\"AlertTitle\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"AlertType\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"AlertTime\",\"Width\":120,\"Sort\":0},{\"ColumnKey\":\"Attachment\",\"Width\":30,\"Sort\":0},{\"ColumnKey\":\"Edit\",\"Width\":30,\"Sort\":0},{\"ColumnKey\":\"Delete\",\"Width\":30,\"Sort\":0}]"; var colinfos = JsonConvert.DeserializeObject(json); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Delete" }.Contains(c.ColumnKey)).ToArray(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ASSETID", "Asset ID"), ColumnName = "MachineID" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_SN", "SN"), ColumnName = "MachinePin" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_NAME", "Name"), ColumnName = "DisplayName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MAINTENANCEDATE", "Maintenance Date"), ColumnName = "MaintenanceDate" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MAINTENANCETYPE", "Maintenance Type"), ColumnName = "LogType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MAINTENANCEHOURS", "Maintenance Hours"), ColumnName = "MaintenanceHours" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MAINTENANCEDISTANCE", "Maintenance Distance"), ColumnName = "ODOMeter" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_DISTANCEUOM", "Distance UOM"), ColumnName = "ODOMemterUOM" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_COST", "Cost"), ColumnName = "Cost" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_INVOICENUMBER", "Invoice Number"), ColumnName = "InvoiceNumber" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_COMPLETEDBY", "Completed By"), ColumnName = "CompletedByName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_DESCRIPTION", "Description"), ColumnName = "Notes" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MAKE", "Make"), ColumnName = "MachineMake" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_MODEL", "Model"), ColumnName = "MachineModel" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ASSETTYPE", "Type"), ColumnName = "MachineType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ALERTID", "Alert ID"), ColumnName = "AlertID" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ALERTTITLE", "Alert Title"), ColumnName = "AlertTitle" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ALERTTYPE", "Alert Type"), ColumnName = "AlertType" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_MRM_ALERTTIME", "Alert Time"), ColumnName = "AlertTime" }); foreach (var r in logs) { string distype = r.LogType; if (r.LogType == "TimeOffRoad") distype = "Time/Off-Road"; else if (r.LogType == "TimeOverRoad") distype = "Time/Over Road"; int index = 0; var dr = dt.NewRow(); dr[index] = r.MachineID; dr[++index] = r.MachinePin; dr[++index] = r.DisplayName; dr[++index] = r.StrForMaintenanceDate; dr[++index] = distype; dr[++index] = r.MaintenanceHours; dr[++index] = r.ODOMeter; dr[++index] = r.ODOMemterUOM; dr[++index] = r.Cost; dr[++index] = r.InvoiceNumber; dr[++index] = r.CompletedByName; dr[++index] = r.Notes; dr[++index] = r.MachineMake; dr[++index] = r.MachineModel; dr[++index] = r.MachineType; dr[++index] = r.AlertID <= 0 ? "" : r.AlertID + ""; dr[++index] = r.AlertTitle; dr[++index] = r.AlertType; dr[++index] = r.StrForAlertTime; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportInspectChanges(string lang, string sessionid, string clientdata) { string[] ps = JsonConvert.DeserializeObject(clientdata); bool teamintelligence = Helper.IsTrue(ps[0]); string inspectid = HttpUtility.HtmlDecode(ps[1]); AssetInspectItem[] insplectitems = null; if (teamintelligence) { var client = FleetServiceClientHelper.CreateClient(sessionid); insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid); } else { var client = FleetServiceClientHelper.CreateClient(sessionid); insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid); } if (insplectitems == null || insplectitems.Length == 0) return new byte[0]; List list = new List(); foreach (AssetInspectItem item in insplectitems) { AssetInspectInfo inspect = new AssetInspectInfo(); Helper.CloneProperty(inspect, item); list.Add(inspect); } string json = "[{\"ColumnKey\":\"LastUpdatedByUserName\",\"Width\":250,\"Sort\":0},{\"ColumnKey\":\"LastUpdatedTimeLocal\",\"Width\":150,\"Sort\":0},{\"ColumnKey\":\"VIN\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"AssetName\",\"Width\":200,\"Sort\":0},{\"ColumnKey\":\"WorkOrderNumber\",\"Width\":200,\"Sort\":0}]"; var colinfos = JsonConvert.DeserializeObject(json); colinfos = colinfos.Where(c => c.Visible && !new string[] { "Edit", "Delete" }.Contains(c.ColumnKey)).ToArray(); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_IPT_USERNAME", "User Name"), ColumnName = "LastUpdatedByUserName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_IPT_DATETIME", "Date Time"), ColumnName = "LastUpdatedTimeLocal" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_IPT_VINSN", "VIN/SN"), ColumnName = "VIN" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_IPT_ASSETNAME", "Asset Name"), ColumnName = "AssetName" }); dt.Columns.Add(new DataColumn() { Caption = SystemParams.GetTextByKey(lang, "P_IPT_WORKORDER", "Work Order #"), ColumnName = "WorkOrderNumber" }); foreach (var r in list) { int index = 0; var dr = dt.NewRow(); dr[index] = r.LastUpdatedByUserName; dr[++index] = r.LastUpdatedTimeLocalStr; dr[++index] = r.VIN; dr[++index] = r.AssetName; dr[++index] = r.WorkOrderNumber; dt.Rows.Add(dr); } double[] widths = null; if (colinfos.Length > 0) { for (int j = 0; j < colinfos.Length; j++) { for (int i = dt.Columns.Count - 1; i >= 0; i--) { if (colinfos[j].ColumnKey == dt.Columns[i].ColumnName) { if (!string.IsNullOrWhiteSpace(colinfos[j].Caption)) dt.Columns[i].Caption = colinfos[j].Caption; if (colinfos[j].Sort != 0) { if (colinfos[j].Sort == 1) dt.DefaultView.Sort = dt.Columns[i].ColumnName; else if (colinfos[j].Sort == -1) dt.DefaultView.Sort = dt.Columns[i].ColumnName + " desc"; } dt.Columns[i].SetOrdinal(j); break; } } } dt = dt.DefaultView.ToTable(); widths = colinfos.Select(c => (double)c.Width).ToArray(); } byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } public static byte[] ExportWorkOrderHistory(string lang, string sessionid, string companyid, long woid, DateTime from, DateTime to, string filter) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; WorkOrderHistoryInfo[] items = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetWorkOrderHistorys(companyid, woid, from, to, filter); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_DATETIMESTAMP", "Date/Time Stamp") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_UPDATE", "Update") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_UPDATETYPE", "Update Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_BY", "By") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_CATEGORY", "Category") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_DETAIL", "Detail") }); foreach (var r in items) { int index = 0; string type = ""; string status = ""; string category = ""; GetWorkOrderHistoryStr(lang, r, out type, out status, out category); var dr = dt.NewRow(); dr[index] = r.DateTime.ToString(); dr[++index] = status; dr[++index] = type; dr[++index] = r.UpdateBy; dr[++index] = category; dr[++index] = r.Detail; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 80d, 120d, 200d, 200d, 400d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } private static void GetWorkOrderHistoryStr(string lang, WorkOrderHistoryInfo r, out string type, out string status, out string category) { type = ""; status = ""; category = ""; if (r.UpdateType == 0) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_MANUALLY", "Manually"); else if (r.UpdateType == 1) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_AUTOMATICALLY", "Automatically"); else if (r.UpdateType == 2) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_SYSTEM", "System"); if (r.UpdateStatus == 0) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_CREATED", "Created"); else if (r.UpdateStatus == WorkOrderUpdateStatus.Modified || r.UpdateStatus == WorkOrderUpdateStatus.Deleted || r.UpdateStatus == WorkOrderUpdateStatus.Restore) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_MODIFIED", "Modified"); else if (r.UpdateStatus == WorkOrderUpdateStatus.Closed) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_CLOSED", "Closed"); else if (r.UpdateStatus == WorkOrderUpdateStatus.ReOpened) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_REOPENED", "Re_Opened"); //else if (r.UpdateStatus == WorkOrderUpdateStatus.Restore) // status = SystemParams.GetTextByKey(lang, "P_WO_HIS_RESTORED", "Restored"); //else if (r.UpdateStatus == WorkOrderUpdateStatus.Deleted) // status = SystemParams.GetTextByKey(lang, "P_WO_HIS_DELETED", "Deleted"); switch ((int)r.Category) { case 0: category = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERSTATUS", "Work Order Status"); break; case 1: category = SystemParams.GetTextByKey(lang, "P_WO_ASSIGNEDTO", "Assigned To"); break; case 2: category = SystemParams.GetTextByKey(lang, "P_WO_ADVISOR", "Advisor"); break; case 3: category = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERTYPE", "Work Order Type"); break; case 4: category = SystemParams.GetTextByKey(lang, "P_WO_LOCATION", "Location"); break; case 5: category = SystemParams.GetTextByKey(lang, "P_WO_DEPARTMENT", "Department"); break; case 6: category = SystemParams.GetTextByKey(lang, "P_WO_ALTERNATESTATUS", "Alternate Status"); break; case 7: category = SystemParams.GetTextByKey(lang, "P_WO_DESCRIPTION", "Description"); break; case 8: category = SystemParams.GetTextByKey(lang, "P_WO_INVOICENUMBER", "Invoice Number"); break; case 9: category = SystemParams.GetTextByKey(lang, "P_WO_INTERNALID", "Internal ID"); break; case 10: category = SystemParams.GetTextByKey(lang, "P_WO_COMPLETEDATE", "Complete Date"); break; case 11: category = SystemParams.GetTextByKey(lang, "P_WO_NEXTFOLLOWUPDATE", "Next Follow Up Date"); break; case 12: category = SystemParams.GetTextByKey(lang, "P_WO_DUEDATE", "Due Date"); break; case 13: category = SystemParams.GetTextByKey(lang, "P_WO_PARTSEXPECTEDDATE", "Parts Expected Date"); break; case 14: category = SystemParams.GetTextByKey(lang, "P_WO_LASTLABORDATE", "Last Labor Date"); break; case 15: category = SystemParams.GetTextByKey(lang, "P_WO_TOTALCOST", "Total Cost"); break; case 16: category = SystemParams.GetTextByKey(lang, "P_WO_EXPECTEDCOST", "Expected Cost"); break; case 17: category = SystemParams.GetTextByKey(lang, "P_WO_PARTSCOST1", "Parts Cost"); break; case 18: category = SystemParams.GetTextByKey(lang, "P_WO_TRAVELTIMECOST1", "Travel Time Cost"); break; case 19: category = SystemParams.GetTextByKey(lang, "P_WO_LABORCOST1", "Labor Cost"); break; case 20: category = SystemParams.GetTextByKey(lang, "P_WO_OTHERCOST1", "Other Cost"); break; case 21: category = SystemParams.GetTextByKey(lang, "P_WO_ESTIMATE", "Estimate"); break; case 22: category = SystemParams.GetTextByKey(lang, "P_WO_INSPECTION", "Inspection"); break; case 23: category = SystemParams.GetTextByKey(lang, "P_WO_INVOICE", "Invoice"); break; case 24: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTUSER", "Segment User"); break; case 25: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTHOURS", "Segment Hours"); break; case 26: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTJOBSITE", "Segment Jobsite"); break; case 27: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTCOST", "Segment Cost"); break; case 28: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTCOMPONENT", "Segment Component"); break; case 29: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTCOMPLETED", "Segment Completed"); break; case 30: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTCOMPLETEDDATE", "Segment Completed Date"); break; case 31: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTDESCRIPTION", "Segment Description"); break; case 32: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTNOTES", "Segment Notes"); break; case 33: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENT", "Segment"); break; case 34: category = SystemParams.GetTextByKey(lang, "P_WO_ALERTS", "Alerts"); break; case 35: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTTYPE", "Segment Type"); break; case 36: category = SystemParams.GetTextByKey(lang, "P_WO_SEGMENTBILLABLE", "Segment Billable"); break; case 37: category = SystemParams.GetTextByKey(lang, "P_WO_COMPONENT", "Component"); break; case 38: category = SystemParams.GetTextByKey(lang, "P_WO_BILLABLE", "Billable"); break; case 39: category = SystemParams.GetTextByKey(lang, "P_WO_BILLTOJOB", "Bill to job"); break; case 40: category = SystemParams.GetTextByKey(lang, "P_WO_WORKORDERATTACHMENT", "Work Order Attachment"); break; case 41: category = SystemParams.GetTextByKey(lang, "P_WO_ESTIMATEATTACHMENT", "Estimate Attachment"); break; case 42: category = SystemParams.GetTextByKey(lang, "P_WO_INVOICEATTACHMENT", "Invoice Attachment"); break; case 43: category = SystemParams.GetTextByKey(lang, "P_WO_COMPANYNAME", "Company Name"); break; case 44: category = SystemParams.GetTextByKey(lang, "P_WO_ASSET", "Asset"); break; case 45: category = SystemParams.GetTextByKey(lang, "P_WO_PARTSORDERNUMBER", "Parts Order Number"); break; case 46: category = SystemParams.GetTextByKey(lang, "P_WO_PARTSSTATUS", "Parts Status"); break; case 47: category = SystemParams.GetTextByKey(lang, "P_WO_SALESPERSON", "Salesperson"); break; case 48: category = SystemParams.GetTextByKey(lang, "P_WO_INSPECTIONTEMPLATE", "Inspection Template"); break; case 97: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_DELETED", "Deleted"); break; case 98: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_RESTORED", "Restored"); break; case 99: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_WOLIFECYCLE", "WO Life Cycle"); break; default: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_OTHER", "Other"); break; } } public static byte[] ExportAssetHistory(string lang, string sessionid, string companyid, long assetid, DateTime from, DateTime to) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; AssetHistoryInfo[] items = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetHistorys(companyid, assetid, from, to, ""); ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_DATETIMESTAMP", "Date/Time Stamp") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_UPDATE", "Update") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_UPDATETYPE", "Update Type") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_BY", "By") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_CATEGORY", "Category") }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_WO_HIS_DETAIL", "Detail") }); foreach (var r in items) { int index = 0; string type = ""; string status = ""; string category = ""; GetAssetHistoryStr(lang, r, out type, out status, out category); var dr = dt.NewRow(); dr[index] = r.DateTime.ToString(); dr[++index] = status; dr[++index] = type; dr[++index] = r.UpdateBy; dr[++index] = category; dr[++index] = r.Detail; dt.Rows.Add(dr); } double[] widths = new double[] { 150d, 80d, 120d, 200d, 210d, 400d }; byte[] data = ete.CreateExcel(dt, null, widths, null); return data; } private static void GetAssetHistoryStr(string lang, AssetHistoryInfo r, out string type, out string status, out string category) { type = ""; status = ""; category = ""; var adddoctext = SystemParams.GetTextByKey(lang, "P_MA_ADDITIONALDOCUMENTATION", "Additional Documentation"); if (r.UpdateType == 0) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_MANUALLY", "Manually"); else if (r.UpdateType == 1) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_AUTOMATICALLY", "Automatically"); else if (r.UpdateType == 2) type = SystemParams.GetTextByKey(lang, "P_WO_HIS_SYSTEM", "System"); if (r.UpdateStatus == 0) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_CREATED", "Created"); else if (r.UpdateStatus == AssetUpdateStatus.Modified) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_MODIFIED", "Modified"); else if (r.UpdateStatus == AssetUpdateStatus.Shared) status = SystemParams.GetTextByKey(lang, "P_MA_HIS_SHARED", "Shared"); else if (r.UpdateStatus == AssetUpdateStatus.Deleted) status = SystemParams.GetTextByKey(lang, "P_WO_HIS_DELETED", "Deleted"); switch ((int)r.Category) { case 0: category = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME", "Asset Name"); break; case 1: category = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME2", "Asset Name(Custom)"); break; case 2: category = SystemParams.GetTextByKey(lang, "P_MA_VIN", "VIN/SN"); break; case 3: category = SystemParams.GetTextByKey(lang, "P_MA_MAKE", "Make"); break; case 4: category = SystemParams.GetTextByKey(lang, "P_MA_MODEL", "Model"); break; case 5: category = SystemParams.GetTextByKey(lang, "P_MA_TYPE1", "Type"); break; case 6: category = SystemParams.GetTextByKey(lang, "P_MA_HIDEHIDDEN", "Hide/Hidden"); break; case 7: category = SystemParams.GetTextByKey(lang, "P_MA_ONROAD", "On-Road"); break; case 8: category = SystemParams.GetTextByKey(lang, "P_MA_TELEMATICSENABLED", "Telematics Enabled"); break; case 9: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHMENT", "Attachment"); break; case 10: category = SystemParams.GetTextByKey(lang, "P_MA_PRELOADED", "Preloaded"); break; case 11: category = SystemParams.GetTextByKey(lang, "P_MD_YEAR", "Year"); break; case 12: category = SystemParams.GetTextByKey(lang, "P_MA_EQCLASS", "Eq.Class"); break; case 13: category = SystemParams.GetTextByKey(lang, "P_MA_DESCRIPTION", "Description"); break; case 14: category = SystemParams.GetTextByKey(lang, "P_MA_AVAILABILITY", "Availability"); break; case 15: category = SystemParams.GetTextByKey(lang, "P_MA_ACQUISITIONTYPE", "Acquisition Type"); break; case 16: category = SystemParams.GetTextByKey(lang, "P_MA_COSTCENTER", "Cost Center"); break; case 17: category = SystemParams.GetTextByKey(lang, "P_MA_ICONFILENAME", "Icon File Name"); break; case 51: category = adddoctext; break; case 52: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_NAME", "Name"); break; case 53: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_DESCRIPTION", "Description"); break; case 54: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_VISIBLEONWORKORDER1", "Visible On WorkOrder"); break; case 55: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_VISIBLEONMAP1", "Visible On Map"); break; case 56: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_VISIBLEONMOBILE1", "Visible On Mobile"); break; case 57: category = adddoctext + " " + SystemParams.GetTextByKey(lang, "P_MA_URL", "Url"); break; case 60: category = SystemParams.GetTextByKey(lang, "P_MA_ASSETGROUP", "Asset Group"); break; case 61: category = SystemParams.GetTextByKey(lang, "P_MA_PM", "PM"); break; case 62: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHMENTINFO", "Attachment Info"); break; case 63: category = SystemParams.GetTextByKey(lang, "P_MA_ASSETTYPETOATTACHTO", "Asset Type to Attach To"); break; case 64: category = SystemParams.GetTextByKey(lang, "P_MA_STYLE", "Style"); break; case 65: category = SystemParams.GetTextByKey(lang, "P_MA_CAPACITYCYD", "Capacity (CYD)"); break; case 66: category = SystemParams.GetTextByKey(lang, "P_MA_CAPACITYWEIGHT", "Capacity (Weight)"); break; case 67: category = SystemParams.GetTextByKey(lang, "P_MA_DIMENSION1INCM", "Dimension #1 (in/cm)"); break; case 68: category = SystemParams.GetTextByKey(lang, "P_MA_WIDTH", "Width"); break; case 69: category = SystemParams.GetTextByKey(lang, "P_MA_OLDNUMBER", "Old Number"); break; case 70: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHTOMAKE", "Attach to Make"); break; case 71: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHTOMODEL", "Attach to Model"); break; case 72: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHTOANASSET", "Attached to an Asset"); break; case 73: category = SystemParams.GetTextByKey(lang, "P_MA_ATTACHEDTO", "Attached to"); break; case 74: category = SystemParams.GetTextByKey(lang, "P_MA_HIS_ATTRIBUTES", "Attributes"); break; case 75: category = SystemParams.GetTextByKey(lang, "P_MA_HIS_ASSETCONTACT", "Asset Contact"); break; case 76: category = SystemParams.GetTextByKey(lang, "P_MA_HIS_ASSETJOBSITE", "Asset Jobsite"); break; case 97: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_DELETED", "Deleted"); break; case 99: category = SystemParams.GetTextByKey(lang, "P_MA_HIS_ASSETLIFECYCLE", "Asset Life Cycle"); break; default: category = SystemParams.GetTextByKey(lang, "P_WO_HIS_OTHER", "Other"); break; } } public static byte[] ExportAssetsTimeLine(string lang, string sessionid, string companyid, long[] assetids, DateTime date) { if (string.IsNullOrEmpty(companyid)) companyid = SystemParams.CompanyID; var events = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetsOnOffTimeline(companyid, assetids, date); var assets = FleetServiceClientHelper.CreateClient(companyid, sessionid).GetAssetBasicInfo(companyid, assetids, 0); List items = new List(); foreach (var e in events) { AssetsOnOffEventInfo ei = new AssetsOnOffEventInfo(); var asset = assets.FirstOrDefault(a => a.ID == e.AssetId); if (asset == null) continue; ei.DisplayName = asset.DisplayName; ei.VIN = asset.VIN; ei.MakeName = asset.MakeName; ei.ModelName = asset.ModelName; ei.AssetId = e.AssetId; ei.Events.AddRange(e.Events); items.Add(ei); } ExportToExcel ete = new ExportToExcel(); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_ASSETNAME", "Asset Name"), DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_VIN", "VIN/SN"), DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_MAKENAME", "Make Name"), DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = SystemParams.GetTextByKey(lang, "P_MA_MODELNAME", "Model Name"), DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "12AM-1AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "1AM-2AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "2AM-3AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "3AM-4AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "4AM-5AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "5AM-6AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "6AM-7AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "7AM-8AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "8AM-9AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "9AM-10AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "10AM-11AM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "11AM-12PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "12PM-1PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "1PM-2PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "2PM-3PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "3PM-4PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "4PM-5PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "5PM-6PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "6PM-7PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "7PM-8PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "8PM-9PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "9PM-10PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "10PM-11PM", DataType = typeof(object) }); dt.Columns.Add(new DataColumn() { ColumnName = "11PM-12AM", DataType = typeof(object) }); int valueIndex = 4; var now = FleetServiceClientHelper.CreateClient(sessionid).GetCustomerDateTimeNow(companyid); List total = new List(); foreach (var it in items.OrderBy(i => i.DisplayName)) { int index = 0; var dr = dt.NewRow(); dr[index] = it.DisplayName; dr[++index] = it.VIN; dr[++index] = it.MakeName; dr[++index] = it.ModelName; double[] values = new double[24]; foreach (var e in it.Events) { double startSeconds = e.On?.TimeOfDay.TotalSeconds ?? 0; double endSeconds = 0; if (e.Off != null) { endSeconds = e.Off.Value.TimeOfDay.TotalSeconds; } else { if (now.Date == date.Date && (e.On == null || now > e.On.Value)) { endSeconds = now.TimeOfDay.TotalSeconds; } else { // 23:59:59.999 endSeconds = 24 * 60 * 60 - .001; } } var start = startSeconds / 3600; var end = endSeconds / 3600; if (endSeconds > startSeconds) { int startHour = (int)Math.Floor(start); int endHour = (int)Math.Ceiling(end); for (var h = startHour; h < endHour; h++) { var hourStartSeconds = h * 3600d; var hourEndSeconds = (h + 1) * 3600d; if (startSeconds > hourStartSeconds) { hourStartSeconds = startSeconds; } if (hourEndSeconds - endSeconds >= 1) { hourEndSeconds = endSeconds; } var totalSeconds = hourEndSeconds - hourStartSeconds; values[h] += totalSeconds; } } } for (int i = 0; i < values.Length; i++) { string text = ""; if (values[i] > 0) { if (values[i] >= 3600) text = "01:00:00"; else { text = "00:" + Math.Floor(values[i] / 60).ToString().PadLeft(2, '0') + ":" + Math.Round((values[i] % 60)).ToString().PadLeft(2, '0'); } } dr[valueIndex + i] = text; } total.Add(values); dt.Rows.Add(dr); } if (total.Count > 0) { var drt = dt.NewRow(); drt[0] = new CExcelCellValue() { Value = SystemParams.GetTextByKey(lang, "P_MA_TOTALCOLON", "Total:") + total.Count, BackgroundColor = System.Drawing.Color.FromArgb(170, 170, 170) }; drt[1] = new CExcelCellValue() { Value = "", BackgroundColor = System.Drawing.Color.FromArgb(170, 170, 170) }; drt[2] = new CExcelCellValue() { Value = "", BackgroundColor = System.Drawing.Color.FromArgb(170, 170, 170) }; drt[3] = new CExcelCellValue() { Value = SystemParams.GetTextByKey(lang, "P_MA_TOTALRUNTIMECOLON", "Total Runtime:"), BackgroundColor = System.Drawing.Color.FromArgb(170, 170, 170) }; for (int i = 0; i < 24; i++) { string text = ""; double v = total.Sum(s => s[i]); if (v > 0) { text = Math.Floor(v / 3600).ToString().PadLeft(2, '0') + ":" + Math.Floor((v % 3600) / 60).ToString().PadLeft(2, '0') + ":" + Math.Round(v % 60).ToString().PadLeft(2, '0'); } CExcelCellValue ctotal = new CExcelCellValue() { Value = text, BackgroundColor = System.Drawing.Color.FromArgb(170, 170, 170) }; drt[valueIndex + i] = ctotal; } dt.Rows.Add(drt); } double[] widths = new double[] { 180d, 160d, 100d, 100d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d, 94d }; byte[] data = ete.CreateExcel(dt, date.ToShortDateString(), widths, null); return data; } private static AlertInfo ConvertAlertObj(AssetAlertGridViewItem item) { AlertInfo ai = new AlertInfo(); ai.AlertID = item.ID; ai.WorkOrderID = item.WorkOrderId; ai.WorkOrderNumber = item.WorkOrderNumber; ai.WorkOrderStatus = item.WorkOrderStatus; ai.AlertType = item.AlertType; ai.AlertTime_UTC = item.LastAlertTime; ai.AlertLocalTime = item.AlertLocalTime; ai.Completed = item.Completed; ai.MachineID = item.AssetID; //ai.ModelID = item.ModelName; ai.Model = item.ModelName; //ai.MakeID = item.MakeName; ai.Make = item.MakeName; ai.VIN = item.VIN; ai.MachineName = item.AssetName; ai.EngineHours = item.EngineHours; ai.CurrentHours = item.CurrentEngineHours; ai.Description = item.Description; ai.Description = ai.FormatDescription(ai.Description); //ai.ServiceDescription = item.ServiceDescription; ai.RepeatedAlerts = item.RepeatedAlerts; ai.AlertCount = item.RepeatedAlerts.Count + 1; ai.OpenWorkOrderCount = item.OpenWorkOrderCount; ai.Comment = item.Comment; return ai; } private static AlertInfo ConvertAlertObj2(AcknowledgedAlertItem item) { AlertInfo ai = new AlertInfo(); ai.AlertID = item.ID; ai.WorkOrderID = item.WorkOrderId; ai.AlertType = item.AlertType; ai.AlertTime_UTC = item.LastAlertTime; ai.AlertLocalTime = item.AlertLocalTime; ai.MachineID = item.AssetID; ai.Model = item.ModelName; ai.Make = item.MakeName; ai.VIN = item.VIN; ai.MachineName = item.AssetName; ai.EngineHours = item.EngineHours; ai.Description = item.Description; ai.Description = ai.FormatDescription(ai.Description); ai.RepeatedAlerts = item.RepeatedAlerts; ai.AlertCount = item.RepeatedAlerts.Count + 1; ai.OpenWorkOrderCount = item.OpenWorkOrderCount; ai.AcknowledgedByName = item.AcknowledgedBy; ai.AcknowledgedTime_UTC = item.AcknowledgedTime; ai.AcknowledgedTime_Local = item.AcknowledgedLocalTime; ai.AcknowledgedComment = item.AcknowledgedComment; ai.Comment = item.Comment; return ai; } private static object OrderHandler(object obj, string sortPath) { Type type = obj.GetType(); System.Reflection.PropertyInfo propertyInfo = type.GetProperty(sortPath); if (propertyInfo != null) return propertyInfo.GetValue(obj, null); return null; } } public class LayoutColumn { public string ColumnKey { get; set; } public int Width { get; set; } public int Sort { get; set; } public bool Visible { get; set; } = true; public string Caption { get; set; } } public class JobSiteRequirementQueryItem { public string LatestStartDate { get; set; } public long[] JobSites { get; set; } public string[] Regions { get; set; } public string SearchText { get; set; } public bool UnScheduledOnly { get; set; } } public class JobSiteRequirmentItem : JobSiteRequirmentInfo { public string BeginDateStr { get { return BeginDate == null ? "" : BeginDate.ToString("M/d/yyyy"); } } public string EndDateStr { get { return EndDate == null ? "" : EndDate.ToString("M/d/yyyy"); } } } public class WorkOrderQueryParams { public long AssetID { get; set; } public long WorkOrderID { get; set; } public string SearchText { get; set; } public string[] Contacts { get; set; } public string[] Statuses { get; set; } public string[] AssetGroups { get; set; } public bool ShowMaintenance { get; set; } public int Completed { get; set; } public string[] Locations { get; set; } public string[] Departments { get; set; } public string[] Advisors { get; set; } public string[] OrderTypes { get; set; } } public class AssetInspectInfo : AssetInspectItem { public string CommitTimeStr { get { return CommitTime == DateTime.MinValue ? "" : CommitTime.ToString(("M/d/yyyy h:mm tt")); } } public string CommitTimeLocalStr { get { return CommitTimeLocal == DateTime.MinValue ? "" : CommitTimeLocal.ToString(("M/d/yy h:mm tt")); } } public string LastUpdatedTimeLocalStr { get { return LastUpdatedTime.Year <= 1900 ? "" : LastUpdatedTimeLocal.ToString(("M/d/yyyy h:mm tt")); } } public WorkOrderListItem[] WorkOrders { get; set; } } public class AssetsOnOffEventInfo : AssetsOnOffEvent { public string VIN { get; set; } public string DisplayName { get; set; } public string MakeName { get; set; } public string ModelName { get; set; } } public class AlertMappingClient : AlertMappingItem { public string Source { get; set; } public string SPN { get; set; } public string FMI { get; set; } public string Description { get; set; } public string EnhancedDescription { get; set; } public string MakeName { get; set; } public string ModelNames { get; set; } } }