2020-06-09 15:58:22 +08:00

293 lines
12 KiB
C#

using Foresight.Fleet.Services.Asset;
using Foresight.Fleet.Services.User;
using IronIntel.Contractor.Machines;
using IronIntel.Services.Customers;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IronIntel.Contractor
{
public class ExportExcelManager
{
public static byte[] ExportRentals(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 = "VIN/SN" });
dt.Columns.Add(new DataColumn() { ColumnName = "Asset Name" });
dt.Columns.Add(new DataColumn() { ColumnName = "Outside/Internal" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Vendor" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Rate" });
dt.Columns.Add(new DataColumn() { ColumnName = "Term" });
dt.Columns.Add(new DataColumn() { ColumnName = "Term Unit" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Date On" });
dt.Columns.Add(new DataColumn() { ColumnName = "Project Return Date" });
dt.Columns.Add(new DataColumn() { ColumnName = "Return Date" });
dt.Columns.Add(new DataColumn() { ColumnName = "Purchase Order #" });
dt.Columns.Add(new DataColumn() { ColumnName = "Comments" });
foreach (var r in rentals)
{
var dr = dt.NewRow();
dr[0] = r.VIN;
dr[1] = r.DisplayName;
dr[2] = r.Outside;
dr[3] = r.Vendor;
dr[4] = r.RentalRate;
dr[5] = r.Term;
dr[6] = r.TermUnit;
dr[7] = r.RentalDateStr;
dr[8] = r.ProjectReturnDateStr;
dr[9] = r.ReturnDateStr;
dr[10] = r.PONumber;
dr[11] = r.Comments;
dt.Rows.Add(dr);
}
double[] widths = new double[] { 180d, 180d, 180d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 200d };
byte[] data = ete.CreateExcel(dt, null, widths, null);
return data;
}
public static byte[] ExportRentalChanges(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 = "Rental ID" });
dt.Columns.Add(new DataColumn() { ColumnName = "User Name" });
dt.Columns.Add(new DataColumn() { ColumnName = "Last Update Date" });
//dt.Columns.Add(new DataColumn() { ColumnName = "Operate Type" });
dt.Columns.Add(new DataColumn() { ColumnName = "VIN/SN" });
dt.Columns.Add(new DataColumn() { ColumnName = "Asset Name" });
dt.Columns.Add(new DataColumn() { ColumnName = "Outside/Internal" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Vendor" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Rate" });
dt.Columns.Add(new DataColumn() { ColumnName = "Term" });
dt.Columns.Add(new DataColumn() { ColumnName = "Term Unit" });
dt.Columns.Add(new DataColumn() { ColumnName = "Rental Date On" });
dt.Columns.Add(new DataColumn() { ColumnName = "Project Return Date" });
dt.Columns.Add(new DataColumn() { ColumnName = "Return Date" });
dt.Columns.Add(new DataColumn() { ColumnName = "Purchase Order #" });
dt.Columns.Add(new DataColumn() { ColumnName = "Comments" });
foreach (var r in rentalHistory)
{
var dr = dt.NewRow();
dr[0] = r.RentalID;
dr[1] = r.LastUpdateUserName;
dr[2] = r.LastUpdateDateStr;
//dr[3] = r.OperateType;
dr[3] = r.VIN;
dr[4] = r.DisplayName;
dr[5] = r.Outside;
dr[6] = r.Vendor;
dr[7] = r.RentalRate;
dr[8] = r.Term;
dr[9] = r.TermUnit;
dr[10] = r.RentalDateStr;
dr[11] = r.ProjectReturnDateStr;
dr[12] = r.ReturnDateStr;
dr[13] = r.PONumber;
dr[14] = r.Comments;
dt.Rows.Add(dr);
}
double[] widths = new double[] { 120d, 150d, 150d, 180d, 180d, 180d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 150d, 200d };
byte[] data = ete.CreateExcel(dt, null, widths, null);
return data;
}
public static byte[] ExportOdometerAdjustHistory(string sessionid, string companyid, long machineid, DateTime from, DateTime to, string sortPath, bool desc)
{
if (string.IsNullOrEmpty(companyid))
companyid = SystemParams.CompanyID;
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 = "User Name" });
dt.Columns.Add(new DataColumn() { ColumnName = "Adjustment Time" });
dt.Columns.Add(new DataColumn() { ColumnName = "Odometer Entered" });
dt.Columns.Add(new DataColumn() { ColumnName = "Odometer UOM" });
dt.Columns.Add(new DataColumn() { ColumnName = "Odometer Time" });
dt.Columns.Add(new DataColumn() { ColumnName = "Notes" });
foreach (var r in odoHistory)
{
var dr = dt.NewRow();
dr[0] = r.UserName;
dr[1] = r.AdjustmentLocalTime.ToString("MM/dd/yyyy HH:mm");
dr[2] = r.Odometer;
dr[3] = r.UOM;
dr[4] = r.OdometerLocalTime.ToString("MM/dd/yyyy HH:mm");
dr[5] = r.Notes;
dt.Rows.Add(dr);
}
double[] widths = new double[] { 200d, 150d, 150d, 150d, 150d, 300d };
byte[] data = ete.CreateExcel(dt, null, widths, null);
return data;
}
public static byte[] ExportEngineHoursAdjustHistory(string sessionid, string companyid, long machineid, DateTime from, DateTime to, string sortPath, bool desc)
{
if (string.IsNullOrEmpty(companyid))
companyid = SystemParams.CompanyID;
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 = "User Name" });
dt.Columns.Add(new DataColumn() { ColumnName = "Adjustment Time" });
dt.Columns.Add(new DataColumn() { ColumnName = "Engine Hours Entered" });
dt.Columns.Add(new DataColumn() { ColumnName = "Engine Hours Time" });
dt.Columns.Add(new DataColumn() { ColumnName = "Notes" });
foreach (var r in ehHistory)
{
var dr = dt.NewRow();
dr[0] = r.UserName;
dr[1] = r.AdjustmentLocalTime.ToString("MM/dd/yyyy HH:mm");
dr[2] = r.EngineHours;
dr[3] = r.EngineHoursLocalTime.ToString("MM/dd/yyyy HH:mm");
dr[4] = r.Notes;
dt.Rows.Add(dr);
}
double[] widths = new double[] { 200d, 150d, 150d, 150d, 300d };
byte[] data = ete.CreateExcel(dt, null, widths, null);
return data;
}
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;
}
}
}