2024-03-26 15:56:31 +08:00

2853 lines
161 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<AssetQueryClient>(companyid, sessionid).GetAssetRentals(companyid, searchtext, useriid);
List<MachineRentalInfo> ls = new List<MachineRentalInfo>();
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<AssetQueryClient>(companyid, sessionid).GetAssetRentalChangeHistory(companyid, Convert.ToInt64(rentalid));
List<RentalChangeHistoryInfo> rentalHistory = new List<RentalChangeHistoryInfo>();
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<AssetQueryClient>(companyid, sessionid).GetAssetBasicInfoByID(companyid, machineid);
AssetOdometerAdjustInfo[] odoHistory = FleetServiceClientHelper.CreateClient<AssetDataAdjustClient>(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<AssetQueryClient>(companyid, sessionid).GetAssetBasicInfoByID(companyid, machineid);
AssetEngineHoursAdjustInfo[] ehHistory = FleetServiceClientHelper.CreateClient<AssetDataAdjustClient>(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<AlertQueryParams>(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<WorkOrderProvider>(sessionid).GetAssetAlertGridViewItemsByAsset(SystemParams.CompanyID, alertparam.AssetID, beginDate, endDate, alertparam.AlertTypes, alertparam.JobSites, assigned, completed, alertparam.SearchText, alertparam.IncludeunCompleted, alertparam.Category);
else
assetalerts = FleetServiceClientHelper.CreateClient<AlertProvider>(sessionid).GetAssetAlertGridViewItems(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.JobSites, assigned, completed, alertparam.SearchText, useriid, alertparam.IncludeunCompleted, alertparam.Category);
List<AlertInfo> list = new List<AlertInfo>();
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<AlertQueryParams>(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<WorkOrderProvider>(sessionid).GetAssetAlertGridViewItemsByAsset(SystemParams.CompanyID, alertparam.AssetID, beginDate, endDate, alertparam.AlertTypes, alertparam.JobSites, assigned, completed, alertparam.SearchText, alertparam.IncludeunCompleted, alertparam.Category);
else
assetalerts = FleetServiceClientHelper.CreateClient<AlertProvider>(sessionid).GetAssetAlertGridViewItems(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.JobSites, assigned, completed, alertparam.SearchText, useriid, alertparam.IncludeunCompleted, alertparam.Category);
List<MachineInfoForAlert> list = new List<MachineInfoForAlert>();
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<AlertQueryParams>(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<AlertProvider>(sessionid).GetAcknowledgedAlerts(SystemParams.CompanyID, beginDate, endDate, alertparam.AlertTypes, alertparam.AssetGroups, alertparam.SearchText);
List<AlertInfo> list = new List<AlertInfo>();
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<WorkOrderProvider>(sessionid).GetAutoAcknowledgeAlertTypesHistory(SystemParams.CompanyID, useriid);
List<AutoAcknowledgeInfo> list = new List<AutoAcknowledgeInfo>();
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<AlertProvider>(sessionid);
AlertMappingInfo[] mappings = client.GetAlertMappings(SystemParams.CompanyID, searchtxt, true);
List<AlertMappingClient> ls = new List<AlertMappingClient>();
if (mappings != null && mappings.Length > 0)
{
var ap = FleetServiceClientHelper.CreateClient<AssetClassProvider>(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<string> lsmodelname = new List<string>();
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<LayoutColumn[]>(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<string[]>(typesdata);
var jss = FleetServiceClientHelper.CreateClient<JobSiteProvider>(sessionid).GetJobSiteItems(SystemParams.CompanyID, searchtext, types, active);
var colinfos = JsonConvert.DeserializeObject<LayoutColumn[]>(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<JobSiteViewItem> list = new List<JobSiteViewItem>();
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<PostionItem> temps = new List<PostionItem>();
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<JobSiteRequirementQueryItem>(clientdata);
DateTime latestStartDate = Helper.DBMinDateTime;
if (!DateTime.TryParse(p.LatestStartDate, out latestStartDate))
latestStartDate = Helper.DBMinDateTime;
List<JobSiteRequirmentItem> list = new List<JobSiteRequirmentItem>();
JobSiteRequirmentInfo[] reqs = FleetServiceClientHelper.CreateClient<JobSiteDispatchProvider>(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<BusinessPartnerProvider>(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<JobSiteRequirementQueryItem>(filter);
DateTime latestStartDate = Helper.DBMinDateTime;
if (!DateTime.TryParse(p.LatestStartDate, out latestStartDate))
latestStartDate = Helper.DBMinDateTime;
JobSiteAssetDispatchInfo[] list = FleetServiceClientHelper.CreateClient<JobSiteDispatchProvider>(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<FuelManagementClient>(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<AssetQueryClient>(sessionid).GetAssetBasicInfo(SystemParams.CompanyID);
List<FuelRecordInfo> list = new List<FuelRecordInfo>();
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<WorkOrderQueryParams>(clientdata);
WorkOrderListItem[] workorders = null;
if (p.AssetID > 0)
workorders = FleetServiceClientHelper.CreateClient<WorkOrderProvider>(sessionid).GetWorkOrderItemsByAsset(SystemParams.CompanyID, p.AssetID);
else
workorders = FleetServiceClientHelper.CreateClient<WorkOrderProvider>(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<LayoutColumn[]>(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<WorkOrderListItemClient> list = new List<WorkOrderListItemClient>();
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<AssetQueryClient>(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<Foresight.Fleet.Services.AssetHealth.WorkOrder.ContactInfo> 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<string[]>(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<AssetQueryClient>(companyid, sessionid).GetAssetBasicInfoByUser(companyid, searchtxt, useriid, att);
List<AssetBasicItem> list = new List<AssetBasicItem>();
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<LayoutColumn[]>(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<AssetQueryClient>(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<LayoutColumn[]>(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<string[]>(clientdata);
string contractorid = p[0];
string searchtxt = p[1];
if (string.IsNullOrEmpty(contractorid))
contractorid = SystemParams.CompanyID;
FFSDevice.DeviceInfo[] devs = FleetServiceClientHelper.CreateClient<FFSDevice.DeviceProvider>(contractorid, sessionid).GetDevices(contractorid, searchtxt);
if (devs == null)
return new byte[0];
List<DeviceItem> list = new List<DeviceItem>();
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<LayoutColumn[]>(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<string[]>(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<LayoutColumn[]>(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<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string inspectid = HttpUtility.HtmlDecode(ps[1]);
AssetInspectItem[] insplectitems = null;
if (teamintelligence)
{
var client = FleetServiceClientHelper.CreateClient<TeamIntelligenceClient>(sessionid);
insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid);
}
else
{
var client = FleetServiceClientHelper.CreateClient<AssetInspectClient>(sessionid);
insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid);
}
if (insplectitems == null || insplectitems.Length == 0)
return new byte[0];
List<AssetInspectInfo> list = new List<AssetInspectInfo>();
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<LayoutColumn[]>(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<WorkOrderProvider>(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<AssetQueryClient>(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<AssetLocationQueryClient>(companyid, sessionid).GetAssetsOnOffTimeline(companyid, assetids, date);
var assets = FleetServiceClientHelper.CreateClient<AssetQueryClient>(companyid, sessionid).GetAssetBasicInfo(companyid, assetids, 0);
List<AssetsOnOffEventInfo> items = new List<AssetsOnOffEventInfo>();
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<Foresight.Fleet.Services.SystemUtil>(sessionid).GetCustomerDateTimeNow(companyid);
List<double[]> total = new List<double[]>();
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; }
}
}