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

2475 lines
101 KiB
C#

using Foresight.Fleet.Services.Asset;
using Foresight.Fleet.Services.AssetHealth;
using Foresight.Fleet.Services.Inspection;
using Foresight.Fleet.Services.Inspection.Package;
using Foresight.Fleet.Services.User;
using IronIntel.Contractor.FilterQ;
using IronIntel.Contractor.Machines;
using IronIntel.Contractor.Maintenance;
using IronIntel.Contractor.Users;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Foresight.Standard;
using Foresight.Fleet.Services.AssetHealth.WorkOrder;
using FI.FIC;
namespace IronIntel.Contractor.Site
{
public class InspectionBasePage : ContractorBasePage
{
protected void ProcessRequest(string method)
{
object result = null;
try
{
string methodName = Request.Params["MethodName"];
if (methodName != null)
{
switch (methodName)
{
case "GetGlobalSections":
result = GetGlobalSections();
break;
case "GetGlobalQuestions":
result = GetGlobalQuestions();
break;
case "SaveGlobalSection":
result = SaveGlobalSection();
break;
case "SaveGlobalQuestion":
result = SaveGlobalQuestion();
break;
case "DeleteGlobalSection":
result = DeleteGlobalSection();
break;
case "DeleteGlobalQuestion":
result = DeleteGlobalQuestion();
break;
case "GetTemplates":
result = GetTemplates();
break;
case "GetTemplate":
result = GetTemplate();
break;
case "SaveTemplate":
result = SaveTemplate();
break;
case "DeleteTemplate":
result = DeleteTemplate();
break;
case "PublishTemplate":
result = PublishTemplate();
break;
case "GetAssetMakes":
result = GetAssetMakes();
break;
case "GetAssetModels":
result = GetAssetModels();
break;
case "GetAssetTypes":
result = GetAssetTypes();
break;
case "GetAssetGroups":
result = GetAssetGroups();
break;
case "GetInspectItems":
result = GetInspectItems();
break;
case "GetGlobalSectionsByID":
result = GetGlobalSectionsByID();
break;
case "GetInspectionReport":
result = GetInspectionReport();
break;
case "TemplateSaveAs":
result = TemplateSaveAs();
break;
case "GetInspectEmailList":
result = GetInspectEmailList();
break;
case "GetInspectionReportForEdit":
result = GetInspectionReportForEdit();
break;
case "GetAssetBasicInfoForEdit":
result = GetAssetBasicInfoForEdit();
break;
case "UpdateInspectionReport":
result = UpdateInspectionReport();
break;
case "UploadStaticPicture":
result = UploadStaticPicture();
break;
case "GetStaticPictureContent":
result = GetStaticPictureContent();
break;
case "DeleteStaticPicture":
result = DeleteStaticPicture();
break;
case "GetFuelReportItems":
result = GetFuelReportItems();
break;
case "GetFuelReport":
result = GetFuelReport();
break;
case "GetFuelReportHeaderFooter":
result = GetFuelReportHeaderFooter();
break;
case "UpdateFuelReportHeaderFooter":
result = UpdateFuelReportHeaderFooter();
break;
case "SendFuelTruckFuelReport":
result = SendFuelTruckFuelReport();
break;
case "GetFuelLogEmailList":
result = GetFuelLogEmailList();
break;
case "GetFuelTypes":
result = GetFuelTypes();
break;
case "GetCreatedPackages":
result = GetCreatedPackages();
break;
case "DeletePackage":
result = DeletePackage();
break;
case "CreatePackage":
result = CreatePackage();
break;
case "GetPackageData":
result = GetPackageData();
break;
case "ImportPackage":
result = ImportPackage();
break;
case "GetAssetWorkOrders":
result = GetAssetWorkOrders();
break;
case "GetInspectLayouts":
result = GetInspectionLayouts();
break;
case "GetInspectLayout":
result = GetInspectLayout();
break;
case "SaveInspectLayout":
result = SaveInspectLayout();
break;
case "DeleteInspectLayout":
result = DeleteInspectLayout();
break;
case "UpdateInspectionWorkOrder":
result = UpdateInspectionWorkOrder();
break;
case "GetInspectHistoryItems":
result = GetInspectHistoryItems();
break;
}
}
}
catch (Exception ex)
{
SystemParams.WriteLog("error", "InspectionBasePage", ex.Message, ex.ToString());
throw ex;
}
string json = JsonConvert.SerializeObject(result);
Response.Write(json);
Response.End();
}
protected void ProcessFileRequest()
{
bool download = false;
string fileName = "";
byte[] buffer = null;
try
{
string type = Request.Params["t"];
if (type != null)
{
switch (type)
{
case "1"://download
buffer = GetInspectionPDF(out fileName, false);
download = true;
break;
case "2"://print
buffer = GetInspectionPDF(out fileName);
break;
case "3"://download fuel
buffer = GetFuelReportPDF(out fileName, false);
download = true;
break;
case "4"://print fuel
buffer = GetFuelReportPDF(out fileName);
break;
}
}
}
catch (Exception ex)
{
SystemParams.WriteLog("error", "InspectionBasePage", ex.Message, ex.ToString());
throw ex;
}
fileName = HttpUtility.UrlEncode(string.IsNullOrEmpty(fileName) ? "attachment" : fileName, System.Text.Encoding.UTF8) + ".pdf";
Response.ContentType = "application/pdf";
Response.BufferOutput = false;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("Content-Disposition"
, string.Format("{0}filename={1}", download ? "attachment;" : "", fileName));
if (buffer != null)
{
Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
}
Response.Flush();
Response.End();
}
protected object GetInspectItem(string inspectionid)
{//只有id,不知道类型
var sesstion = GetCurrentLoginSession();
AssetInspectClient aclient = CreateClient<AssetInspectClient>();
AssetInspectItem aitem = aclient.GetInspectItem(SystemParams.CompanyID, inspectionid, sesstion.User.UID);
if (aitem != null)
{
if (!CheckRight(SystemParams.CompanyID, Foresight.Fleet.Services.User.Feature.INSPECTION_REPORTS))
return null;
else
return aitem;
}
TeamIntelligenceClient tclient = CreateClient<TeamIntelligenceClient>();
TeamInspectItem titem = tclient.GetInspectItem(SystemParams.CompanyID, inspectionid, sesstion.User.UID);
if (!CheckRight(SystemParams.CompanyID, Foresight.Fleet.Services.User.Feature.TEAM_REPORTS))
return null;
else
return titem;
}
private object GetInspectItems()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
DateTime startdate = Helper.DBMinDateTime;
DateTime enddate = DateTime.MaxValue;
if (!DateTime.TryParse(ps[1], out startdate))
startdate = Helper.DBMinDateTime;
if (!DateTime.TryParse(ps[2], out enddate))
enddate = DateTime.MaxValue;
string filter = HttpUtility.HtmlDecode(ps[3]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
TeamInspectItem[] insplectitems = client.GetInspectItems(SystemParams.CompanyID, startdate, enddate, filter, sesstion.User.UID);
if (insplectitems == null || insplectitems.Length == 0)
return new TeamInspectInfo[0];
List<TeamInspectInfo> list = new List<TeamInspectInfo>();
foreach (TeamInspectItem item in insplectitems)
{
TeamInspectInfo inspect = new TeamInspectInfo();
Helper.CloneProperty(inspect, item);
list.Add(inspect);
}
return list.ToArray();
}
else
{
var client = CreateClient<AssetInspectClient>();
AssetInspectItem[] insplectitems = client.GetInspectItems(SystemParams.CompanyID, startdate, enddate, filter, sesstion.User.UID);
if (insplectitems == null || insplectitems.Length == 0)
return new AssetInspectInfo[0];
List<AssetInspectInfo> list = new List<AssetInspectInfo>();
foreach (AssetInspectItem item in insplectitems)
{
AssetInspectInfo inspect = new AssetInspectInfo();
Helper.CloneProperty(inspect, item);
if (inspect.WorkOrderId <= 0)
{
inspect.WorkOrderNumber = "Not Assigned";
}
List<WorkOrderListItem> lswo = new List<WorkOrderListItem>();
lswo.Add(new WorkOrderListItem() { Id = -1, WorkOrderNumber = "Not Assigned" });
if (inspect.WorkOrderId > 0)
lswo.Add(new WorkOrderListItem() { Id = inspect.WorkOrderId, WorkOrderNumber = inspect.WorkOrderNumber });
inspect.WorkOrders = lswo.ToArray();
list.Add(inspect);
}
return list.ToArray();
}
}
else
return new AssetInspectItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object UpdateInspectionWorkOrder()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
string ispid = ps[0];
long woid = 0;
long oldwoid = 0;
long.TryParse(ps[1], out woid);
long.TryParse(ps[2], out oldwoid);
CreateClient<AssetInspectClient>().UpdateInspectionWorkOrder(SystemParams.CompanyID, ispid, woid, oldwoid);
return new string[0];
}
else
return "Failed";
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetInspectHistoryItems()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["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 = CreateClient<TeamIntelligenceClient>();
insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid);
}
else
{
var client = CreateClient<AssetInspectClient>();
insplectitems = client.GetInspectHistoryItems(SystemParams.CompanyID, inspectid);
}
if (insplectitems == null || insplectitems.Length == 0)
return new AssetInspectInfo[0];
List<AssetInspectInfo> list = new List<AssetInspectInfo>();
foreach (AssetInspectItem item in insplectitems)
{
AssetInspectInfo inspect = new AssetInspectInfo();
Helper.CloneProperty(inspect, item);
list.Add(inspect);
}
return list.ToArray();
}
else
return new AssetInspectItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetInspectionReportForEdit()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = HttpUtility.HtmlDecode(ps[1]);
string companyId = SystemParams.CompanyID;
InspectReportInfo report = null;
var aic = CreateClient<AssetInspectClient>();
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
report = client.GetInspection(companyId, id);
}
else
{
report = aic.GetInspection(companyId, id);
}
if (report == null)
return null;
var ir = new InspectReportEditItem();
Helper.CloneProperty(ir, report);
ir.CommitTime = ir.CommitTimeLocal;
ir.Answers.AddRange(report.Answers);
ir.Medias.AddRange(report.Medias);
if (!teamintelligence)
{
var aclient = FleetServiceClientHelper.CreateClient<AssetQueryClient>(companyId, session.SessionID);
ir.Asset = aclient.GetAssetBasicInfoByID(companyId, ir.AssetId);
}
// list
//bool hasAsset = false;
bool hasEmail = false;
bool hasJobsite = false;
foreach (var p in report.Template.Pages)
{
foreach (var s in p.Sections)
{
foreach (var q in s.Questions)
{
if (q.QuestionType == QuestionTypes.DropDown)
{
//if (q.LookupSource == LookupSources.Assets)
//{
// hasAsset = true;
//}
//else
if (q.LookupSource == LookupSources.Employee)
{
hasEmail = true;
}
else if (q.LookupSource == LookupSources.Jobsites)
{
hasJobsite = true;
}
}
else if (q.QuestionType == QuestionTypes.EmailList)
{
hasEmail = true;
}
}
}
}
var ic = CreateClient<InspectMobileClient>();
if (hasEmail)
{
ir.EmailList = Download(() => ic.DownloadTeamIntelligenceUsers(companyId)).OrderBy(e => e.UserName).ToArray();
}
//if (hasAsset)
//{
// var ac = CreateClient<AssetQueryClient>();
// ir.AssetList = ac.GetAssetBasicInfoByUser(companyId, string.Empty, session.User.UID);
//}
if (hasJobsite)
{
ir.JobSiteList = Download(() => ic.DownloadJobSites(companyId, session.User.UID)).OrderBy(j => j.Name).ToArray();
}
return ir;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetAssetBasicInfoForEdit()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
//string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
string companyId = SystemParams.CompanyID;
var ac = CreateClient<InspectMobileClient>();
var list = new List<AssetItem>();
var assets = Download(startid => ac.DownloadAssets(companyId, session.User.UID, startid, 20000))
.OrderBy(a => a.Name)
.ToArray();
return assets;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private List<AssetItem> Download(Func<long, AssetItem[]> download, long startid = -1, int size = 100)
{
var list = new List<AssetItem>();
int count = 0;
while (count < 5)
{
try
{
var items = download(startid);
list.AddRange(items);
if (items.Length < size)
{
return list;
}
else
{
startid = items[items.Length - 1].Id;
}
}
catch
{
count++;
}
}
return null;
}
IEnumerable<T> Download<T>(Func<IEnumerable<T>> download)
{
int count = 0;
while (count < 5)
{
try
{
return download();
}
catch
{
count++;
}
}
return null;
}
private object UpdateInspectionReport()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
clientdata = HttpUtility.HtmlDecode(clientdata);
var report = JsonConvert.DeserializeObject<InspectReportInfo>(clientdata);
bool isTeam = report.Target == TemplateTargets.Person;
string companyId = SystemParams.CompanyID;
foreach (var a in report.Answers)
{
if (string.IsNullOrEmpty(a.Id))
{
a.Id = Guid.NewGuid().ToString();
}
}
// TODO: media
if (isTeam)
{
var tc = CreateClient<TeamIntelligenceClient>();
tc.UpdateTeamInspect(companyId, report, session.User.UID);
}
else
{
var ac = CreateClient<AssetInspectClient>();
ac.UpdateAssetInspect(companyId, report, session.User.UID);
}
return true;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetInspectionReport()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = HttpUtility.HtmlDecode(ps[1]);
InspectReportInfo report = null;
ReportLayoutInfo layout = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
report = client.GetInspection(SystemParams.CompanyID, id);
if (report != null)
layout = client.GetInspectReportLayout(SystemParams.CompanyID, id);
}
else
{
var client = CreateClient<AssetInspectClient>();
report = client.GetInspection(SystemParams.CompanyID, id);
if (report != null)
layout = client.GetInspectReportLayout(SystemParams.CompanyID, id);
}
if (report == null)
return null;
InspectReportItem ir = new InspectReportItem();
Helper.CloneProperty(ir, report);
ir.CommitTime = ir.CommitTimeLocal;
ir.Answers.AddRange(report.Answers);
ir.Medias.AddRange(report.Medias);
ir.IdentifiedQuestions = new List<IdentifiedQuestionItem>();
foreach (var p in ir.Template.Pages)
{
foreach (var s in p.Sections)
{
foreach (var q in s.Questions)
{
var qType = ConvertQuestionType(q);
foreach (var a in ir.Answers)
{
if (q.Id.Equals(a.QuestionId, StringComparison.OrdinalIgnoreCase))
{
if (qType == QuestionTypes.Date || qType == QuestionTypes.DateAndTime)
{
DateTime dt = DateTime.Now;
if (DateTime.TryParse(a.Result, out dt))
{
if (qType == QuestionTypes.Date)
a.Result = dt.ToString("M/d/yyyy tt");
else if (qType == QuestionTypes.DateAndTime)
a.Result = dt.ToString("M/d/yyyy h:mm:ss tt");
}
}
else if (qType == QuestionTypes.Number
|| qType == QuestionTypes.Integer
|| qType == QuestionTypes.EngingHours
|| qType == QuestionTypes.Odometer)
{
double tn = 0;
if (double.TryParse(a.Result, out tn))
a.Result = tn.ToString("#,##0.##");
}
//IdentifiedQuestion
if (qType != QuestionTypes.DropDown
&& qType != QuestionTypes.YesOrNo
&& qType != QuestionTypes.List)
{
if (a.SeverityLevel != SeverityLeveles.None)
{
if (qType == QuestionTypes.Picture)
{
var ms = ir.Medias.FirstOrDefault(m => m.AnswerId.ToString() == a.Id.ToString());
if (ms == null)
continue;
}
IdentifiedQuestionItem iq = new IdentifiedQuestionItem();
Helper.CloneProperty(iq, q);
if (q.StaticPictures != null && q.StaticPictures.Count > 0)
{
foreach (var sp in q.StaticPictures)
{
PictureInfo isp = new PictureInfo();
Helper.CloneProperty(isp, sp);
iq.StaticPictures.Add(isp);
}
}
iq.IdentifiedSeverityLevel = a.SeverityLevel;
ir.IdentifiedQuestions.Add(iq);
}
}
else
{
if (a.SelectedItems != null && a.SelectedItems.Count() > 0)
{
bool hasseveritylevel = a.SelectedItems.Count(m => m.SeverityLevel != SeverityLeveles.None) > 0;
if (hasseveritylevel)
{
IdentifiedQuestionItem iq = new IdentifiedQuestionItem();
Helper.CloneProperty(iq, q);
if (q.StaticPictures != null && q.StaticPictures.Count > 0)
{
foreach (var sp in q.StaticPictures)
{
PictureInfo isp = new PictureInfo();
Helper.CloneProperty(isp, sp);
iq.StaticPictures.Add(isp);
}
}
iq.IdentifiedSeverityLevel = SeverityLeveles.Low;
bool isHigh = a.SelectedItems.Count(m => m.SeverityLevel == SeverityLeveles.High) > 0;
if (isHigh)
iq.IdentifiedSeverityLevel = SeverityLeveles.High;
else
{
bool isMedium = a.SelectedItems.Count(m => m.SeverityLevel == SeverityLeveles.Medium) > 0;
if (isMedium)
iq.IdentifiedSeverityLevel = SeverityLeveles.Medium;
}
ir.IdentifiedQuestions.Add(iq);
}
}
else
{
if (a.SeverityLevel != SeverityLeveles.None)
{
IdentifiedQuestionItem iq = new IdentifiedQuestionItem();
Helper.CloneProperty(iq, q);
if (q.StaticPictures != null && q.StaticPictures.Count > 0)
{
foreach (var sp in q.StaticPictures)
{
PictureInfo isp = new PictureInfo();
Helper.CloneProperty(isp, sp);
iq.StaticPictures.Add(isp);
}
}
iq.IdentifiedSeverityLevel = a.SeverityLevel;
ir.IdentifiedQuestions.Add(iq);
}
}
}
break;
}
}
}
}
}
if (!teamintelligence)
{
var aclient = FleetServiceClientHelper.CreateClient<AssetQueryClient>(SystemParams.CompanyID, sesstion.SessionID);
ir.Asset = aclient.GetAssetBasicInfoByID(SystemParams.CompanyID, ir.AssetId);
}
ir.IdentifiedQuestions = ir.IdentifiedQuestions.OrderByDescending(m => m.IdentifiedSeverityLevel).ToList();
if (layout != null)
{
layout.PageHeaderLeft = Escape(layout.PageHeaderLeft);
layout.PageHeaderCenter = Escape(layout.PageHeaderCenter);
layout.PageHeaderRight = Escape(layout.PageHeaderRight);
layout.PageFooterLeft = Escape(layout.PageFooterLeft);
layout.PageFooterCenter = Escape(layout.PageFooterCenter);
layout.PageFooterRight = Escape(layout.PageFooterRight);
}
ir.ReportLayout = layout;
return ir;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
string Escape(string html)
{
if (string.IsNullOrEmpty(html))
{
return string.Empty;
}
return HttpUtility.HtmlEncode(html).Replace("\n", "<br/>");
}
private QuestionTypes ConvertQuestionType(Question q)
{
var questionType = q.QuestionType;
if (questionType == QuestionTypes.FuelRecords)
{
switch (q.SubType)
{
case (int)FuelRecordTypes.TransactionDate:
questionType = QuestionTypes.DateAndTime;
break;
case (int)FuelRecordTypes.Odometer:
case (int)FuelRecordTypes.Quantity:
case (int)FuelRecordTypes.UnitCost:
case (int)FuelRecordTypes.TotalCost:
questionType = QuestionTypes.Odometer;
break;
case (int)FuelRecordTypes.FuelType:
case (int)FuelRecordTypes.State:
case (int)FuelRecordTypes.DistributedBy:
questionType = QuestionTypes.DropDown;
break;
case (int)FuelRecordTypes.Notes:
questionType = QuestionTypes.MultipleLineText;
break;
case (int)FuelRecordTypes.Picture:
questionType = QuestionTypes.Picture;
break;
default:
break;
}
}
return questionType;
}
private byte[] GetInspectionPDF(out string fileName, bool print = true)
{
fileName = "";
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string id = Request.Params["id"];
bool teamintelligence = Helper.IsTrue(Request.Params["team"]);
byte[] bytes = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
bytes = client.GetInspectionPDF(SystemParams.CompanyID, id);
fileName = client.GetInspection(SystemParams.CompanyID, id).Template.Name;
FICHostEnvironment.WriteExportAuditTrail(session.User.UID, "Inspection", "", print ? "Print" : "Download", fileName, print ? "" : ".pdf", bytes);
}
else
{
var client = CreateClient<AssetInspectClient>();
bytes = client.GetInspectionPDF(SystemParams.CompanyID, id);
fileName = client.GetInspection(SystemParams.CompanyID, id).Template.Name;
FICHostEnvironment.WriteExportAuditTrail(session.User.UID, "AssetInspect", "", print ? "Print" : "Download", fileName, print ? "" : ".pdf", bytes);
}
return bytes;
}
else
return null;
}
catch (Exception ex)
{
return null;
}
}
private object GetTemplates()
{
try
{
var user = GetCurrentUser();
if (user != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
int state = 0;
if (!int.TryParse(ps[1], out state))
state = -1;
string filter = HttpUtility.HtmlDecode(ps[2]);
int makeid = -1;
if (!int.TryParse(ps[3], out makeid))
makeid = -1;
int[] modelids = JsonConvert.DeserializeObject<int[]>(ps[4]);
int[] typeids = JsonConvert.DeserializeObject<int[]>(ps[5]);
string[] groupids = JsonConvert.DeserializeObject<string[]>(ps[6]);
FormTemplateItem[] templates = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
templates = client.GetFormTemplateItems(SystemParams.CompanyID, filter, user.IID, state);
}
else
{
var client = CreateClient<AssetInspectClient>();
templates = client.GetAssetTemplateItems(SystemParams.CompanyID, filter, makeid, modelids, typeids, groupids, user.IID, state);
}
return templates;
}
else
return new FormTemplateItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetInspectEmailList()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
bool teamintelligence = Helper.IsTrue(clientdata);
UserEmailInfo[] users = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
users = client.GetInspectEmailList(SystemParams.CompanyID, string.Empty);
}
else
{
var client = CreateClient<AssetInspectClient>();
users = client.GetInspectEmailList(SystemParams.CompanyID, string.Empty);
}
return users;
}
else
return new UserEmailInfo[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetTemplate()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = HttpUtility.HtmlDecode(ps[1]);
FormTemplateInfo template = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
template = client.GetFormTemplate(SystemParams.CompanyID, Convert.ToInt64(id));
}
else
{
var client = CreateClient<AssetInspectClient>();
template = client.GetFormTemplate(SystemParams.CompanyID, Convert.ToInt64(id));
}
return template;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object TemplateSaveAs()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
long srctempid = Convert.ToInt64(ps[1]);
string newtemplatename = HttpUtility.HtmlDecode(ps[2]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
long id = client.TemplateSaveAs(SystemParams.CompanyID, srctempid, newtemplatename, session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
long id = client.TemplateSaveAs(SystemParams.CompanyID, srctempid, newtemplatename, session.User.UID);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object SaveTemplate()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
var data = HttpUtility.HtmlDecode(ps[1]);
FormTemplateInfo templateinfo = JsonConvert.DeserializeObject<FormTemplateInfo>(HttpUtility.HtmlDecode(data));
var user = UserManagement.GetUserByIID(session.User.UID);
if (user.UserType == Users.UserTypes.Readonly)
return "";
else if (user.UserType == Users.UserTypes.Common)
{
var pc = CreateClient<PermissionProvider>(session.SessionID);
Tuple<Feature, Permissions>[] pmss = pc.GetUserPermissions(SystemParams.CompanyID, user.IID);
if (pmss.Length > 0)
{
int pkey = teamintelligence ? Feature.TEAM_TEMPLATES : Feature.INSPECTION_TEMPLATES;
Tuple<Feature, Permissions> pm = pmss.FirstOrDefault(m => m.Item1.Id == pkey);
if (pm.Equals(default(KeyValuePair<int, Permissions>))
|| pm.Item2 != Permissions.FullControl)
{
return "";
}
}
else
return "";
}
if (templateinfo != null)
{
if (templateinfo.Pages != null)
{
foreach (var p in templateinfo.Pages)
{
if (string.IsNullOrWhiteSpace(p.Id))
p.Id = Guid.NewGuid().ToString();
if (p.Sections != null)
{
foreach (var s in p.Sections)
{
if (string.IsNullOrWhiteSpace(s.Id))
s.Id = Guid.NewGuid().ToString();
if (s.Questions != null)
{
foreach (var q in s.Questions)
{
if (string.IsNullOrWhiteSpace(q.Id))
q.Id = Guid.NewGuid().ToString();
}
}
}
}
}
}
}
if (user.UserType < Users.UserTypes.SupperAdmin && !templateinfo.Editable)
{
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
string[] useriids = null;
if (templateinfo.EmailList != null)
useriids = templateinfo.EmailList.Select(u => u.UserIID).ToArray();
client.SetTemplateEmailList(SystemParams.CompanyID, templateinfo.Id, useriids, templateinfo.Emails);
}
else
{
var client = CreateClient<AssetInspectClient>();
string[] useriids = null;
if (templateinfo.EmailList != null)
useriids = templateinfo.EmailList.Select(u => u.UserIID).ToArray();
client.SetTemplateEmailList(SystemParams.CompanyID, templateinfo.Id, useriids, templateinfo.Emails);
}
return templateinfo.Id;
}
FormTemplateInfo newtemp = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
newtemp = client.UpdateTemplate(SystemParams.CompanyID, templateinfo, session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
newtemp = client.UpdateTemplate(SystemParams.CompanyID, templateinfo, session.User.UID);
}
if (templateinfo.Id < 0)
{
// add template, need return some properties like Editable, IssueId
return newtemp;
}
return newtemp.Id;
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeleteTemplate()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
long tempid = Convert.ToInt64(ps[1]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.DeleteTemplate(SystemParams.CompanyID, tempid, session.User.UID, string.Empty);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.DeleteTemplate(SystemParams.CompanyID, tempid, session.User.UID, string.Empty);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object PublishTemplate()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
long tempid = Convert.ToInt64(ps[1]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.PublishTemplate(SystemParams.CompanyID, tempid, session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.PublishTemplate(SystemParams.CompanyID, tempid, session.User.UID);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetGlobalSections()
{
try
{
if (GetCurrentLoginSession() != null)
{
var data = Request.Params["ClientData"];
bool teamintelligence = Helper.IsTrue(data);
Section[] sections = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
sections = client.GetGlobalSectionItems(SystemParams.CompanyID);
}
else
{
var client = CreateClient<AssetInspectClient>();
sections = client.GetGlobalSectionItems(SystemParams.CompanyID);
}
return sections;
}
else
return new Section[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetGlobalQuestions()
{
try
{
if (GetCurrentLoginSession() != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string sectionid = HttpUtility.HtmlDecode(ps[1]);
Question[] questions = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
questions = client.GetGlobalQuestions(SystemParams.CompanyID, sectionid);
}
else
{
var client = CreateClient<AssetInspectClient>();
questions = client.GetGlobalQuestions(SystemParams.CompanyID, sectionid);
}
return questions;
}
else
return new Question[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object SaveGlobalSection()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
var data = HttpUtility.HtmlDecode(ps[1]);
Section sec = JsonConvert.DeserializeObject<Section>(data);
if (string.IsNullOrEmpty(sec.Id))
sec.Id = Guid.NewGuid().ToString();
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.UpdateGlobalSectionItem(SystemParams.CompanyID, sec, session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.UpdateGlobalSectionItem(SystemParams.CompanyID, sec, session.User.UID);
}
return new string[] { sec.Id, "Saved successfully." };
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object SaveGlobalQuestion()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] data = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(data[0]);
string sectioinid = data[1];
Question q = JsonConvert.DeserializeObject<Question>(HttpUtility.HtmlDecode(data[2]));
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
if (string.IsNullOrEmpty(q.Id))
{
q.Id = Guid.NewGuid().ToString();
client.AddGlobalQuestion(SystemParams.CompanyID, sectioinid, q, session.User.UID);
}
else
{
client.UpdateGlobalQuestion(SystemParams.CompanyID, sectioinid, q, session.User.UID);
}
}
else
{
var client = CreateClient<AssetInspectClient>();
if (string.IsNullOrEmpty(q.Id))
{
q.Id = Guid.NewGuid().ToString();
client.AddGlobalQuestion(SystemParams.CompanyID, sectioinid, q, session.User.UID);
}
else
{
client.UpdateGlobalQuestion(SystemParams.CompanyID, sectioinid, q, session.User.UID);
}
}
return new string[] { q.Id, "Saved successfully." };
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeleteGlobalSection()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string sectionid = HttpUtility.HtmlDecode(ps[1]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.DeleteGlobalSection(SystemParams.CompanyID, sectionid, "", session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.DeleteGlobalSection(SystemParams.CompanyID, sectionid, "", session.User.UID);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeleteGlobalQuestion()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string questionid = HttpUtility.HtmlDecode(ps[1]);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.DeleteGlobalQuestion(SystemParams.CompanyID, questionid, "", session.User.UID);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.DeleteGlobalQuestion(SystemParams.CompanyID, questionid, "", session.User.UID);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetGlobalSectionsByID()
{
try
{
if (GetCurrentLoginSession() != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string[] sids = JsonConvert.DeserializeObject<string[]>(ps[1]);
Section[] sections = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
sections = client.GetGlobalSection(SystemParams.CompanyID, sids);
}
else
{
var client = CreateClient<AssetInspectClient>();
sections = client.GetGlobalSection(SystemParams.CompanyID, sids);
}
return sections;
}
else
return new Section[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetAssetMakes()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
AssetMake[] makes = CreateClient<AssetClassProvider>().GetAssetMakes(string.Empty);
List<AssetMakeItem> ls = new List<AssetMakeItem>();
foreach (var mk in makes)
{
AssetMakeItem item = new AssetMakeItem();
Helper.CloneProperty(item, mk);
ls.Add(item);
}
return ls.OrderBy(m => m.Name).ToArray();
}
else
return new AssetMakeItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetAssetModels()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = Request.Form["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
int makeid = -1;
int.TryParse(ps[0], out makeid);
var searchtxt = HttpUtility.HtmlDecode(ps[1]);
AssetModel[] models = CreateClient<AssetClassProvider>().GetAssetModels(makeid, searchtxt);
List<AssetModelItem> ls = new List<AssetModelItem>();
foreach (var md in models)
{
AssetModelItem item = new AssetModelItem();
Helper.CloneProperty(item, md);
if (md.MakeId > 0)
{
item.MakeID = md.MakeId;
item.MakeName = md.MakeName;
}
if (md.TypeId > 0)
{
item.TypeID = md.TypeId;
item.TypeName = md.TypeName;
}
ls.Add(item);
}
return ls.OrderBy(m => m.Name).ToArray();
}
else
return new AssetModelItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetAssetTypes()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
AssetType[] types = CreateClient<AssetClassProvider>().GetAssetTypes(SystemParams.CompanyID);
return types;
}
else
return new AssetType[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetAssetGroups()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var groups = CreateClient<AssetQueryClient>(SystemParams.CompanyID).GetAssetGroups(SystemParams.CompanyID, "", session.User.UID);
return groups.OrderBy(g => g.Name).ToArray();
}
else
return new AssetGroupInfo[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object UploadStaticPicture()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
bool teamintelligence = Helper.IsTrue(clientdata);
HttpPostedFile uploadFile = null;
byte[] iconfilebyte = null;
if (Request.Files.Count > 0)
{
uploadFile = Request.Files[0];
iconfilebyte = ConvertFile2bytes(uploadFile);
}
string filetype = uploadFile.FileName.Substring(uploadFile.FileName.LastIndexOf("."));
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
Tuple<string, string> tp = client.UploadStaticPicture(SystemParams.CompanyID, filetype, iconfilebyte);
return tp;
}
else
{
var client = CreateClient<AssetInspectClient>();
Tuple<string, string> tp = client.UploadStaticPicture(SystemParams.CompanyID, filetype, iconfilebyte);
return tp;
}
}
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetStaticPictureContent()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string fileid = ps[1];
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
return client.GetStaticPictureContent(SystemParams.CompanyID, fileid);
}
else
{
var client = CreateClient<AssetInspectClient>();
return client.GetStaticPictureContent(SystemParams.CompanyID, fileid);
}
}
else
{
return null;
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeleteStaticPicture()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string fileid = ps[1];
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
client.DeleteStaticPicture(SystemParams.CompanyID, fileid);
}
else
{
var client = CreateClient<AssetInspectClient>();
client.DeleteStaticPicture(SystemParams.CompanyID, fileid);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetFuelTypes()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
List<KeyValuePair<string, string>> list = FuelManagementClient.FuelTypes.OrderBy(m => m.Value).ToList();
var type1 = list.FirstOrDefault(m => m.Value == "Unleaded Regular");
var type2 = list.FirstOrDefault(m => m.Value == "Unleaded Plus");
var type3 = list.FirstOrDefault(m => m.Value == "Diesel #1");
list.Remove(type1);
list.Remove(type2);
list.Remove(type3);
list = list.OrderBy(m => m.Value).ToList();
list.Insert(0, type1);
list.Insert(1, type2);
list.Insert(2, type3);
return list.ToArray();
}
else
return new StringKeyValue[0];
}
catch (Exception ex)
{
AddLog("ERROR", "InspectionBasePage.GetFuelTypes", ex.Message, ex.ToString());
return ex.Message;
}
}
#region Fuel Log
private object GetFuelReportItems()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
DateTime startdate = Helper.DBMinDateTime;
DateTime enddate = DateTime.MaxValue;
if (!DateTime.TryParse(ps[1], out startdate))
startdate = Helper.DBMinDateTime;
if (!DateTime.TryParse(ps[2], out enddate))
enddate = DateTime.MaxValue;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
return new FuelTruckFuelReportItemInfo[0];
}
else
{
var client = CreateClient<AssetInspectClient>();
FuelTruckFuelReportItem[] fuelitems = client.GetFuelReportItems(SystemParams.CompanyID, startdate, enddate, -1);
if (fuelitems == null || fuelitems.Length == 0)
return new FuelLogItem[0];
fuelitems = fuelitems.OrderByDescending(m => m.CheckInTimeLocal).ToArray();
List<FuelLogItem> ls = new List<FuelLogItem>();
foreach (FuelTruckFuelReportItem item in fuelitems)
{
FuelTruckFuelReportItemInfo fuelinfo = new FuelTruckFuelReportItemInfo();
Helper.CloneProperty(fuelinfo, item);
FuelLogItem fuellog = ls.FirstOrDefault(m => m.LocalCalendarDate == fuelinfo.LocalCalendarDate);
if (fuellog == null)
{
fuellog = new FuelLogItem();
fuellog.LocalCalendarDate = fuelinfo.LocalCalendarDate;
fuellog.FuelReportItems = new List<FuelTruckFuelReportItemInfo>();
fuellog.FuelReportItems.Add(fuelinfo);
ls.Add(fuellog);
}
else
{
if (fuellog.FuelReportItems == null)
fuellog.FuelReportItems = new List<FuelTruckFuelReportItemInfo>();
fuellog.FuelReportItems.Add(fuelinfo);
}
}
return ls.OrderByDescending(m => m.LocalCalendarDate).ToArray();
}
}
else
return new FuelLogItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetFuelReport()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = HttpUtility.HtmlDecode(ps[1]);
FuelTruckFuelReport report = null;
FuelReportHeaderFooterItem hf = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
}
else
{
var client = CreateClient<AssetInspectClient>();
report = client.GetFuelReport(SystemParams.CompanyID, Convert.ToInt64(id));
hf = client.GetFuelReportHeaderFooter(SystemParams.CompanyID);
}
if (report == null)
return null;
FuelTruckFuelReportInfo fr = new FuelTruckFuelReportInfo();
Helper.CloneProperty(fr, report);
fr.TotalQtyStr = FormatDouble(report.TotalQty);
fr.StartMasterMeterStr = FormatDouble(report.StartMasterMeter);
fr.EndMasterMeterStr = FormatDouble(report.EndMasterMeter);
fr.InchesLeftonTruckStr = FormatDouble(report.InchesLeftonTruck);
if (report.Items != null)
{
List<FuelDetailInfo> list = new List<FuelDetailInfo>();
foreach (var a in report.Items)
{
FuelDetailInfo fi = new FuelDetailInfo();
Helper.CloneProperty(fi, a);
fi.AssetMeterStr = FormatDouble(fi.AssetMeter, fi.AssetMeterUnits);
fi.MasterMeterStr = FormatDouble(fi.MasterMeter);
fi.QtyPumpedStr = FormatDouble(fi.QtyPumped);
fi.QtyOnTruckStr = FormatDouble(fi.QtyOnTruck);
list.Add(fi);
}
fr.FuelDetailItems = list.ToArray();
}
fr.HeaderFooter = hf;
return fr;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetFuelReportHeaderFooter()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
bool teamintelligence = Helper.IsTrue(clientdata);
FuelReportHeaderFooterItem item = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
}
else
{
var client = CreateClient<AssetInspectClient>();
item = client.GetFuelReportHeaderFooter(SystemParams.CompanyID);
}
return item;
}
else
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
private object UpdateFuelReportHeaderFooter()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string data = HttpUtility.HtmlDecode(ps[1]);
FuelReportHeaderFooterItem item = JsonConvert.DeserializeObject<FuelReportHeaderFooterItem>(data);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
}
else
{
var client = CreateClient<AssetInspectClient>();
client.UpdateFuelReportHeaderFooter(SystemParams.CompanyID, item);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetFuelLogEmailList()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
Foresight.Fleet.Services.User.UserInfo[] users = FleetServiceClientHelper.CreateClient<UserQueryClient>(SystemParams.CompanyID, session.SessionID).GetUsersByCustomerID(SystemParams.CompanyID, "");
if (users == null || users.Length == 0)
return new Foresight.Fleet.Services.User.UserInfo[0];
return users;
}
else
return new Foresight.Fleet.Services.User.UserInfo[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object SendFuelTruckFuelReport()
{
try
{
var sesstion = GetCurrentLoginSession();
if (sesstion != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = HttpUtility.HtmlDecode(ps[1]);
string edata = HttpUtility.HtmlDecode(ps[2]);
string[] emails = JsonConvert.DeserializeObject<string[]>(edata);
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
}
else
{
var client = CreateClient<AssetInspectClient>();
client.SendFuelTruckFuelReport(SystemParams.CompanyID, Convert.ToInt64(id), emails);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private byte[] GetFuelReportPDF(out string fileName, bool print = true)
{
fileName = "";
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string id = Request.Params["id"];
bool teamintelligence = Helper.IsTrue(Request.Params["team"]);
byte[] bytes = null;
if (teamintelligence)
{
var client = CreateClient<TeamIntelligenceClient>();
}
else
{
var client = CreateClient<AssetInspectClient>();
bytes = client.GetFuelLogPDF(SystemParams.CompanyID, Convert.ToInt64(id));
fileName = "Fuel Log * Shipping Paper";//client.GetFuelReport(SystemParams.CompanyID, Convert.ToInt64(id)).EmployeeNumber;
FICHostEnvironment.WriteExportAuditTrail(session.User.UID, "FuelReport", "", print ? "Print" : "Download", fileName, print ? "" : ".pdf", bytes);
}
return bytes;
}
else
return null;
}
catch (Exception ex)
{
return null;
}
}
protected object GetFuelReportItem(long reportid)
{//只有id,不知道类型
var sesstion = GetCurrentLoginSession();
bool fuellog = SystemParams.HasLicense("FuelLog");
bool isadmin = (sesstion.User.UserType == Foresight.Fleet.Services.User.UserTypes.SupperAdmin || sesstion.User.UserType == Foresight.Fleet.Services.User.UserTypes.Admin);
AssetInspectClient aclient = CreateClient<AssetInspectClient>();
FuelTruckFuelReport aitem = aclient.GetFuelReport(SystemParams.CompanyID, reportid);
if (aitem != null)
{
var ins = CheckRight(SystemParams.CompanyID, Feature.INSPECTION_REPORTS);
if (fuellog && (isadmin || (sesstion.User.UserType == Foresight.Fleet.Services.User.UserTypes.Common && ins)))
return aitem;
else
return null;
}
return null;
}
public static string FormatDouble(double val, string unit = "")
{
if (val > 0)
return string.Format("{0:N2}", val) + " " + unit;
return string.Empty;
}
#endregion
#region Packages
private object GetCreatedPackages()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var client = CreateClient<InspectPackageProvider>();
InspectPackageItem[] items = client.GetCreatedPackages(SystemParams.CompanyID);
if (items == null)
return new InspectPackageInfo[0];
List<InspectPackageInfo> ls = new List<InspectPackageInfo>();
foreach (InspectPackageItem item in items)
{
InspectPackageInfo pi = new InspectPackageInfo();
Helper.CloneProperty(pi, item);
ls.Add(pi);
}
return ls.ToArray();
}
else
return new InspectPackageInfo[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeletePackage()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string packageid = ps[1];
var client = CreateClient<InspectPackageProvider>();
client.DeletePackage(SystemParams.CompanyID, packageid);
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetPackageContent()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = Request.Params["ClientData"];
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string packageid = ps[1];
var client = CreateClient<InspectPackageProvider>();
client._GetPackageContent(SystemParams.CompanyID, packageid);
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object CreatePackage()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
long[] templates = JsonConvert.DeserializeObject<long[]>(ps[3]);
string[] globalsections = JsonConvert.DeserializeObject<string[]>(ps[4]);
var client = CreateClient<InspectPackageProvider>();
string pkgid = client.CreatePackage(SystemParams.CompanyID, ps[0], ps[1], ps[2], templates, globalsections);
return new { Id = pkgid };
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
private object GetPackageData()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
string pwd = clientdata;
byte[] buffer = null;
if (Request.Files.Count > 0)
{
var pkgfile = Request.Files[0];
buffer = ConvertFile2bytes(pkgfile);
}
if (buffer != null && !string.IsNullOrEmpty(pwd))
{
var pkgdata = InspectPackage.FromBuffer(pwd, buffer);
InspectPackageData data = new InspectPackageData();
data.GlobalSections.AddRange(pkgdata.GlobalItems.Values.Where(t => t.ItemType == 1));
data.IssueId = pkgdata.IssueId;
data.IssueName = pkgdata.IssueName;
data.Notes = pkgdata.Notes;
data.PackageId = pkgdata.PackageId;
data.PackageName = pkgdata.PackageName;
//data.StaticPictures
data.Templates.AddRange(pkgdata.Templates);
return data;
}
return "";
}
else
{
return "Failed";
}
}
catch (BusinessException ex)
{
return ex.Message;
}
catch (Exception ex)
{
return "Invalid package.";
}
}
private object ImportPackage()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
long[] templates = JsonConvert.DeserializeObject<long[]>(ps[1]);
string[] globalsections = JsonConvert.DeserializeObject<string[]>(ps[2]);
byte[] buffer = null;
if (Request.Files.Count > 0)
{
var pkgfile = Request.Files[0];
buffer = ConvertFile2bytes(pkgfile);
}
if (buffer != null)
{
var client = CreateClient<InspectPackageProvider>();
client.ImportPackage(SystemParams.CompanyID, buffer, templates, globalsections, ps[0] == "1");
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
private object GetAssetWorkOrders()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = Request.Form["ClientData"];
long assetid = 0;
if (long.TryParse(clientdata, out assetid))
{
var wos = CreateClient<WorkOrderProvider>().GetWorkOrderItemsByAsset(SystemParams.CompanyID, assetid);
return wos.OrderByDescending(w => !w.Completed).ThenBy(w => w.WorkOrderNumber).ToArray();
}
return new WorkOrderListItem[0];
}
else
return new WorkOrderListItem[0];
}
catch (Exception ex)
{
AddLog("ERROR", "WorkOrderBasePage.GetAssetWorkOrders", ex.Message, ex.ToString());
return ex.Message;
}
}
private object GetInspectionLayouts()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = HttpUtility.UrlDecode(Request.Form["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
if (teamintelligence)
{
return CreateClient<TeamIntelligenceClient>().GetReportLayoutItems(SystemParams.CompanyID, ps[1]);
}
else
{
return CreateClient<AssetInspectClient>().GetReportLayoutItems(SystemParams.CompanyID, ps[1]);
}
}
else
{
return new ReportLayoutItem[0];
}
}
catch (Exception ex)
{
AddLog("ERROR", "InspectionPage.GetInspectionLayouts", ex.Message, ex.ToString());
return ex.Message;
}
}
private object GetInspectLayout()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = HttpUtility.UrlDecode(Request.Form["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = ps[1];
if (teamintelligence)
{
return CreateClient<TeamIntelligenceClient>().GetReportLayoutInfo(SystemParams.CompanyID, id);
}
else
{
return CreateClient<AssetInspectClient>().GetReportLayoutInfo(SystemParams.CompanyID, id);
}
}
else
{
return new ReportLayoutItem[0];
}
}
catch (Exception ex)
{
AddLog("ERROR", "InspectionPage.GetInspectLayout", ex.Message, ex.ToString());
return ex.Message;
}
}
private object DeleteInspectLayout()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = HttpUtility.UrlDecode(Request.Form["ClientData"]);
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
bool teamintelligence = Helper.IsTrue(ps[0]);
string id = ps[1];
if (teamintelligence)
{
CreateClient<TeamIntelligenceClient>().DeleteReportLayout(SystemParams.CompanyID, id);
}
else
{
CreateClient<AssetInspectClient>().DeleteReportLayout(SystemParams.CompanyID, id);
}
return "OK";
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
AddLog("ERROR", "InspectionPage.DeleteInspectLayout", ex.Message, ex.ToString());
return ex.Message;
}
}
private object SaveInspectLayout()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string clientdata = HttpUtility.UrlDecode(Request.Params["ClientData"]);
var layout = JsonConvert.DeserializeObject<ReportLayoutInfo>(clientdata);
if (string.IsNullOrEmpty(layout.Id))
{
layout.Id = Guid.NewGuid().ToString();
}
bool teamintelligence = layout.Target == TemplateTargets.Person;
if (Request.Files.Count > 0)
{
for (int i = 0; i < Request.Files.Count; i++)
{
var logoFile = Request.Files[i];
var logo = ConvertFile2bytes(logoFile);
string key = Request.Files.AllKeys[i];
if (string.Compare("iconFile", key, true) == 0)
layout.LOGO = FI.FIC.ResManager.MakeThumbnail(logo, 0, 180, "H");
else if (string.Compare("iconCenterFile", key, true) == 0)
layout.CenterLOGO = FI.FIC.ResManager.MakeThumbnail(logo, 0, 180, "H");
else if (string.Compare("iconRightFile", key, true) == 0)
layout.RightLOGO = FI.FIC.ResManager.MakeThumbnail(logo, 0, 180, "H");
}
}
if (teamintelligence)
{
CreateClient<TeamIntelligenceClient>().UpdateReportLayout(SystemParams.CompanyID, layout);
}
else
{
CreateClient<AssetInspectClient>().UpdateReportLayout(SystemParams.CompanyID, layout);
}
return new string[] { layout.Id, "Saved successfully." };
}
else
{
return "Failed";
}
}
catch (Exception ex)
{
AddLog("ERROR", "InspectionPage.SaveInspectLayout", ex.Message, ex.ToString());
return ex.Message;
}
}
}
class TeamInspectInfo : TeamInspectItem
{
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/yyyy h:mm tt")); } }
public string LastUpdatedTimeLocalStr { get { return LastUpdatedTime.Year <= 1900 ? "" : LastUpdatedTimeLocal.ToString(("M/d/yyyy h:mm tt")); } }
}
class InspectReportItem : InspectReportInfo
{
public AssetBasicInfo Asset { get; set; }
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/yyyy h:mm tt")); } }
public List<IdentifiedQuestionItem> IdentifiedQuestions { get; set; }
public ReportLayoutInfo ReportLayout { get; set; }
}
class IdentifiedQuestionItem : Question
{
public SeverityLeveles IdentifiedSeverityLevel { get; set; }
}
class InspectReportEditItem : InspectReportInfo
{
public AssetBasicInfo Asset { get; set; }
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/yyyy h:mm tt"); } }
public UserEmailInfo[] EmailList { get; set; }
public AssetBasicInfo[] AssetList { get; set; }
public JobSiteItem[] JobSiteList { get; set; }
}
class FuelLogItem
{
public DateTime LocalCalendarDate { get; set; }
public string LocalCalendarDateStr { get { return LocalCalendarDate == DateTime.MinValue ? "" : LocalCalendarDate.ToString("M/d/yyyy"); } }
public int FuelReportCount { get { return FuelReportItems == null ? 0 : FuelReportItems.Count(); } }
public List<FuelTruckFuelReportItemInfo> FuelReportItems { get; set; }
}
class FuelTruckFuelReportItemInfo : FuelTruckFuelReportItem
{
public string LocalCalendarDateStr { get { return LocalCalendarDate == DateTime.MinValue ? "" : LocalCalendarDate.ToString("M/d/yyyy"); } }
public string CheckInTimeLocalStr { get { return CheckInTimeLocal == DateTime.MinValue ? "" : CheckInTimeLocal.ToString("h:mm tt"); } }
public string CheckOutTimeLocalStr { get { return CheckOutTimeLocal == null ? "" : CheckOutTimeLocal.Value.ToString("h:mm tt"); } }
}
class FuelTruckFuelReportInfo : FuelTruckFuelReport
{
public string LocalCalendarDateStr { get { return LocalCalendarDate == DateTime.MinValue ? "" : LocalCalendarDate.ToString("M/d/yyyy"); } }
public FuelDetailInfo[] FuelDetailItems { get; set; }
public string CheckInLocalStr { get { return CheckInLocal == DateTime.MinValue ? "" : CheckInLocal.ToString("M/d/yyyy h:mm tt"); } }
public string CheckOutLocalStr { get { return CheckOutLocal == null ? "" : CheckOutLocal.Value.ToString("M/d/yyyy h:mm tt"); } }
public string StartMasterMeterStr { get; set; }
public string EndMasterMeterStr { get; set; }
public string TotalQtyStr { get; set; }
public string InchesLeftonTruckStr { get; set; }
public FuelReportHeaderFooterItem HeaderFooter { get; set; }
}
class FuelDetailInfo : FuelDetailItem
{
public string CommitTimeLocalStr { get { return CommitTimeLocal == DateTime.MinValue ? "" : CommitTimeLocal.ToString("M/d/yyyy h:mm tt"); } }
public string AssetMeterStr { get; set; }
public string MasterMeterStr { get; set; }
public string QtyPumpedStr { get; set; }
public string QtyOnTruckStr { get; set; }
}
class InspectPackageInfo : InspectPackageItem
{
public string CreatedOnLocalStr { get { return CreatedOnLocal == DateTime.MinValue ? "" : CreatedOnLocal.ToString("M/d/yyyy h:mm tt"); } }
}
class InspectPackageData : InspectPackage
{
public List<Pkg_TemplateItem> GlobalSections { get; set; } = new List<Pkg_TemplateItem>();
}
}