716 lines
30 KiB
C#
716 lines
30 KiB
C#
using Foresight.Data;
|
|
using Foresight.Fleet.Services;
|
|
using Foresight.Fleet.Services.Asset;
|
|
using Foresight.Fleet.Services.AssetHealth;
|
|
using Foresight.Fleet.Services.Device;
|
|
using Foresight.Fleet.Services.User;
|
|
using Foresight.ServiceModel;
|
|
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;
|
|
|
|
namespace IronIntel.Contractor.Site.Asset
|
|
{
|
|
public class AssetBasePage : ContractorBasePage
|
|
{
|
|
protected void ProcessRequest(string method)
|
|
{
|
|
object result = null;
|
|
string methodName = Request.Params["MethodName"];
|
|
try
|
|
{
|
|
if (methodName != null)
|
|
{
|
|
switch (methodName.ToUpper())
|
|
{
|
|
case "GETMACHINESBYCOMPANY":
|
|
result = GetMachinesByCompany();
|
|
break;
|
|
case "GETMACHINEINFO":
|
|
result = GetMachineInfo();
|
|
break;
|
|
case "SAVEMACHINE":
|
|
result = SaveMachine();
|
|
break;
|
|
case "CHANGEMACHINEICONFILE":
|
|
result = ChangeMachineIconFile();
|
|
break;
|
|
case "GETMACHINEATTRIBUTES":
|
|
result = GetMachineAttributes();
|
|
break;
|
|
case "GETCUSTOMERTIMEZONE":
|
|
result = GetCustomerTimeZone();
|
|
break;
|
|
case "GETODOMETERADJUSTMENTHISTORY":
|
|
result = GetOdometerAdjustmentHistory();
|
|
break;
|
|
case "GETENGINEHOURSADJUSTMENTHISTORY":
|
|
result = GetEngineHoursAdjustmentHistory();
|
|
break;
|
|
case "GETPMSCHEDULESBYASSET":
|
|
result = GetPMSchedulesByAsset();
|
|
break;
|
|
case "ADDASSETTOPMSCHEDULE":
|
|
result = AddAssetToPMSchedule();
|
|
break;
|
|
case "REMOVEASSETFROMPMSCHEDULE":
|
|
result = RemoveAssetFromPMSchedule();
|
|
break;
|
|
case "CHANGEASSETPROPERTY":
|
|
result = ChangeAssetProperty();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SystemParams.WriteLog("error", "AssetBasePage", ex.Message, ex.ToString());
|
|
throw ex;
|
|
}
|
|
string json = JsonConvert.SerializeObject(result);
|
|
Response.Write(json);
|
|
Response.End();
|
|
}
|
|
private object GetMachinesByCompany()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"].Split((char)170);
|
|
var companyid = HttpUtility.HtmlDecode(clientdata[0]);
|
|
bool showHidden = HttpUtility.HtmlDecode(clientdata[1]) == "1";
|
|
var searchtxt = HttpUtility.HtmlDecode(clientdata[2]);
|
|
|
|
if (string.IsNullOrEmpty(companyid))
|
|
companyid = SystemParams.CompanyID;
|
|
|
|
if (string.IsNullOrWhiteSpace(companyid) && SystemParams.IsDealer)
|
|
return new MachineItem[0];
|
|
|
|
//GpsDeviceInfo[] devs = SystemParams.DeviceProvider.GetDeviceItems(contractorid, "");
|
|
|
|
AssetBasicInfo[] assets = CreateClient<AssetQueryClient>(companyid).GetAssetBasicInfoByUser(companyid, searchtxt, session.User.UID);
|
|
List<AssetBasicItem> list = new List<AssetBasicItem>();
|
|
foreach (var a in assets)
|
|
{
|
|
if (!showHidden && a.Hide) continue;
|
|
AssetBasicItem asset = new AssetBasicItem();
|
|
Helper.CloneProperty(asset, a);
|
|
list.Add(asset);
|
|
}
|
|
return list.OrderBy((m) => m.VIN).ToArray();
|
|
}
|
|
else
|
|
return new MachineItem[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
AddLog("ERROR", "AssetBasePage.GetMachinesByCompany", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetMachineInfo()
|
|
{
|
|
try
|
|
{
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"].Split((char)170);
|
|
var companyid = HttpUtility.HtmlDecode(clientdata[0]);
|
|
var mid = HttpUtility.HtmlDecode(clientdata[1]);
|
|
long machineid = -1;
|
|
long.TryParse(mid, out machineid);
|
|
|
|
string connectionStr = string.Empty;
|
|
if (!SystemParams.IsDealer)
|
|
{
|
|
companyid = SystemParams.CompanyID;
|
|
connectionStr = SystemParams.DataDbConnectionString;
|
|
}
|
|
else
|
|
{
|
|
string connetionstring = SystemParams.GetDbStringByCompany(companyid);
|
|
connectionStr = connetionstring;
|
|
}
|
|
|
|
var client = CreateClient<AssetDataAdjustClient>(companyid);
|
|
AssetDetailInfo2 assetDetail = client.GetAssetDetailInfo2(companyid, machineid);
|
|
MachineOtherInfo mother = client.GetMachineOtherInfo(companyid, machineid);
|
|
|
|
AssetDetailItem2 assetItem = new AssetDetailItem2();
|
|
Helper.CloneProperty(assetItem, assetDetail);
|
|
|
|
assetItem.OnSiteJobsiteID = mother.JobSiteID;
|
|
assetItem.ContactIDs = string.IsNullOrEmpty(mother.ContactIDs) ? new string[0] : mother.ContactIDs.Split(',');
|
|
assetItem.MachineGroupIDs = string.IsNullOrEmpty(mother.GroupIDs) ? new string[0] : mother.GroupIDs.Split(',');
|
|
|
|
//MachineRentalInfo[] machinerentals = new RentalManagement(connectionStr).SearchRentalsByAsset(machineid);
|
|
//if (machinerentals != null && machinerentals.Length > 0)
|
|
//{
|
|
// DateTime nowdate = DateTime.Now;
|
|
// //当前时间所在的rental
|
|
// MachineRentalInfo rental = machinerentals.FirstOrDefault(m => m.RentalDate <= nowdate && nowdate.Date <= ((m.ReturnDate ?? m.ProjectReturnDate ?? DateTime.MaxValue)));
|
|
// if (rental == null)//当前时间的下一个rental
|
|
// rental = machinerentals.Where(m => m.RentalDate >= nowdate.Date).OrderBy(m => m.RentalDate).FirstOrDefault();
|
|
// if (rental == null)//最新rental
|
|
// rental = machinerentals[0];
|
|
|
|
// assetItem.MachineRental = rental;
|
|
//}
|
|
|
|
if (assetItem.UnderCarriageHours != null)
|
|
assetItem.UnderCarriageHours = Math.Round(assetItem.UnderCarriageHours.Value, 2);
|
|
|
|
return assetItem;
|
|
}
|
|
else
|
|
return new AssetDetailItem2();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SystemParams.WriteLog("error", "AssetBasePage.GetMachineInfo", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object SaveMachine()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
if (!CheckRight(SystemParams.CompanyID, Foresight.Fleet.Services.User.Feature.MANAGE_ASSETS))
|
|
return "";
|
|
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
AssetDetailItem2 asset = JsonConvert.DeserializeObject<AssetDetailItem2>(clientdata);
|
|
|
|
if (SystemParams.IsDealer && string.IsNullOrWhiteSpace(asset.ContractorID))
|
|
return "Failed";
|
|
|
|
string connectionStr = string.Empty;
|
|
string customerid = string.Empty;
|
|
if (SystemParams.IsDealer)
|
|
{
|
|
string connetionstring = SystemParams.GetDbStringByCompany(asset.ContractorID);
|
|
connectionStr = connetionstring;
|
|
customerid = asset.ContractorID;
|
|
}
|
|
else
|
|
{
|
|
connectionStr = SystemParams.DataDbConnectionString;
|
|
customerid = SystemParams.CompanyID;
|
|
}
|
|
|
|
AssetDataAdjustClient client = CreateClient<AssetDataAdjustClient>(customerid);
|
|
if (asset.ID > 0)
|
|
{
|
|
//没有权限修改的,保持原来的值
|
|
var oldMachine = client.GetAssetDetailInfo2(customerid, asset.ID);
|
|
asset.EngineHours = oldMachine.EngineHours;//EngineHours单独保存
|
|
var user = UserManagement.GetUserByIID(session.User.UID);
|
|
bool permission = CheckRight(SystemParams.CompanyID, Feature.MANAGE_ASSETS);
|
|
if (!permission)
|
|
{
|
|
asset.VIN = oldMachine.VIN;
|
|
asset.MakeID = oldMachine.MakeID;
|
|
asset.MakeName = oldMachine.MakeName;
|
|
asset.ModelID = oldMachine.ModelID;
|
|
asset.ModelName = oldMachine.ModelName;
|
|
asset.Odometer = oldMachine.Odometer;
|
|
asset.OdometerUnits = oldMachine.OdometerUnits;
|
|
}
|
|
}
|
|
else if (!asset.IgnoreDuplicate)
|
|
{
|
|
long[] dupassets = client.FindAssetsByVIN(customerid, asset.VIN);
|
|
|
|
if (dupassets.Length > 0)
|
|
{
|
|
return new
|
|
{
|
|
Result = 0,
|
|
Data = dupassets
|
|
};
|
|
}
|
|
}
|
|
|
|
AssetDetailInfo2 a = new AssetDetailInfo2();
|
|
Helper.CloneProperty(a, asset);
|
|
a.ID = client.UpdateAssetInfo(customerid, a, asset.ContactIDs, asset.MachineGroupIDs, (int)asset.OnSiteJobsiteID, session.User.UID);
|
|
|
|
UpdateMachineAttributes(a.ID, asset.ContractorID, asset.MachineAttributes, session.User.UID);
|
|
if (asset.VisibleOnWorkOrders != null)
|
|
{
|
|
foreach (StringKeyValue kv in asset.VisibleOnWorkOrders)
|
|
{
|
|
CreateClient<AssetAttachmentProvider>(customerid).ChangeVisibleOnWorkOrder(customerid, Convert.ToInt32(kv.Key), Helper.IsTrue(kv.Value));
|
|
}
|
|
|
|
}
|
|
long rentalID = -1;
|
|
if (asset.MachineRental != null)
|
|
{
|
|
asset.MachineRental.MachineID = a.ID;
|
|
AssetRentalInfo rentalinfo = new AssetRentalInfo();
|
|
Helper.CloneProperty(rentalinfo, asset.MachineRental);
|
|
rentalinfo.RentalRate = (double)asset.MachineRental.RentalRate;
|
|
rentalID = CreateClient<AssetQueryClient>(customerid).SaveAssetRental(customerid, rentalinfo, session.User.UID);
|
|
}
|
|
return new
|
|
{
|
|
Result = 1,
|
|
Data = new long[] { a.ID, rentalID }
|
|
};
|
|
}
|
|
else
|
|
{
|
|
return "Failed";
|
|
}
|
|
}
|
|
catch (BusinessException bex)
|
|
{
|
|
return bex.Message;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SystemParams.WriteLog("error", "AssetBasePage.SaveMachine", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private string ChangeAssetProperty()
|
|
{
|
|
try
|
|
{
|
|
var user = GetCurrentUser();
|
|
if (user != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"];
|
|
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
|
|
var contractorid = ps[0];
|
|
if (string.IsNullOrWhiteSpace(contractorid))
|
|
contractorid = SystemParams.CompanyID;
|
|
long assetid = 0;
|
|
long.TryParse(ps[1], out assetid);
|
|
var name = ps[2];
|
|
bool value = Helper.IsTrue(ps[3]);
|
|
|
|
switch (name)
|
|
{
|
|
case "Hide":
|
|
CreateClient<AssetDataAdjustClient>(contractorid).ChangeAssetHideProperty(contractorid, assetid, value, "", user.IID);
|
|
break;
|
|
case "OnRoad":
|
|
CreateClient<AssetDataAdjustClient>(contractorid).ChangeAssetOnRoadProperty(contractorid, assetid, value, "", user.IID);
|
|
break;
|
|
case "TelematicsEnabled":
|
|
CreateClient<AssetDataAdjustClient>(contractorid).ChangeAssetTelematicsProperty(contractorid, assetid, value, "", user.IID);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return "OK";
|
|
}
|
|
else
|
|
return "Failed";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
#region Machine Attributes
|
|
|
|
private object GetMachineAttributes()
|
|
{
|
|
try
|
|
{
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"].Split((char)170);
|
|
var companyid = HttpUtility.HtmlDecode(clientdata[0]);
|
|
var id = HttpUtility.HtmlDecode(clientdata[1]);
|
|
long machineid = Convert.ToInt64(id);
|
|
|
|
if (string.IsNullOrWhiteSpace(companyid))
|
|
{
|
|
if (SystemParams.IsDealer)
|
|
return new MachineAttributeCategoryClient[0];
|
|
companyid = SystemParams.CompanyID;
|
|
}
|
|
|
|
MachineAttributes abt = CreateClient<AssetDataAdjustClient>(companyid).GetMachineAttributes(companyid, machineid);
|
|
|
|
List<MachineAttributeCategoryClient> list = new List<MachineAttributeCategoryClient>();
|
|
if (abt != null && abt.Category.Count > 0)
|
|
{
|
|
ConvertMachineAttributesCategory(abt, ref list);
|
|
}
|
|
return list.OrderBy(m => m.OrderIndex);
|
|
}
|
|
else
|
|
return new MachineAttributeCategoryClient[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private void UpdateMachineAttributes(long machineid, string companyid, MachineAttributeClient[] attributes, string useriid)
|
|
{
|
|
try
|
|
{
|
|
|
|
if (attributes != null && attributes.Length > 0)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(companyid))
|
|
companyid = SystemParams.CompanyID;
|
|
|
|
List<MachineAttributeItem> attritems = new List<MachineAttributeItem>();
|
|
foreach (MachineAttributeClient attclient in attributes)
|
|
{
|
|
MachineAttributeItem machineattributeitem = new MachineAttributeItem();
|
|
Helper.CloneProperty(machineattributeitem, attclient);
|
|
attritems.Add(machineattributeitem);
|
|
}
|
|
|
|
List<MachineAttributeCategory> listcate = new List<MachineAttributeCategory>();
|
|
MachineAttributeCategory category = new MachineAttributeCategory();
|
|
category.Attributes.AddRange(attritems);
|
|
listcate.Add(category);
|
|
|
|
MachineAttributes att = new MachineAttributes();
|
|
att.Category.AddRange(listcate);
|
|
CreateClient<AssetDataAdjustClient>(companyid).UpdateMachineAttributes(companyid, machineid, att, useriid);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
AddLog("ERROR", "AssetBasePage.UpdateMachineAttributes", ex.Message, ex.ToString());
|
|
throw new Exception(ex.Message);
|
|
}
|
|
}
|
|
|
|
private static void ConvertMachineAttributesCategory(MachineAttributes abtc, ref List<MachineAttributeCategoryClient> list)
|
|
{
|
|
if (abtc != null && abtc.Category.Count > 0)
|
|
{
|
|
foreach (MachineAttributeCategory cateitem in abtc.Category)
|
|
{
|
|
MachineAttributeCategoryClient cateclt = new MachineAttributeCategoryClient();
|
|
Helper.CloneProperty(cateclt, cateitem);
|
|
|
|
var tab = abtc.Tabs.FirstOrDefault(m => m.ID == cateitem.TabID);
|
|
if (tab == null)
|
|
continue;
|
|
else
|
|
{
|
|
cateclt.TabName = tab.Name;
|
|
cateclt.OrderIndex = abtc.Tabs.IndexOf(tab);
|
|
}
|
|
cateclt.MachineAttributes = new List<MachineAttributeClient>();
|
|
|
|
foreach (MachineAttributeItem attitem in cateitem.Attributes)
|
|
{
|
|
MachineAttributeClient attclt = new MachineAttributeClient();
|
|
Helper.CloneProperty(attclt, attitem);
|
|
cateclt.MachineAttributes.Add(attclt);
|
|
}
|
|
list.Add(cateclt);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void ConvertMachineAttributes(MachineAttributes abtc, ref List<MachineAttributeClient> list)
|
|
{
|
|
if (abtc != null && abtc.Category.Count > 0)
|
|
{
|
|
foreach (MachineAttributeCategory cateitem in abtc.Category)
|
|
{
|
|
foreach (MachineAttributeItem attitem in cateitem.Attributes)
|
|
{
|
|
MachineAttributeClient attclt = new MachineAttributeClient();
|
|
Helper.CloneProperty(attclt, attitem);
|
|
list.Add(attclt);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Odometer Adjustment History
|
|
|
|
private object GetOdometerAdjustmentHistory()
|
|
{
|
|
try
|
|
{
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"].Split((char)170);
|
|
var customerid = HttpUtility.HtmlDecode(clientdata[0]);
|
|
var assetid = HttpUtility.HtmlDecode(clientdata[1]);
|
|
var sdate = HttpUtility.HtmlDecode(clientdata[2]);
|
|
var edate = HttpUtility.HtmlDecode(clientdata[3]);
|
|
if (string.IsNullOrEmpty(customerid))
|
|
customerid = SystemParams.CompanyID;
|
|
|
|
DateTime starttime = Helper.DBMinDateTime;
|
|
DateTime endtime = DateTime.MaxValue;
|
|
if (!DateTime.TryParse(sdate, out starttime))
|
|
starttime = Helper.DBMinDateTime;
|
|
|
|
if (!DateTime.TryParse(edate, out endtime))
|
|
endtime = DateTime.MaxValue;
|
|
else
|
|
endtime = endtime.Date.AddDays(1).AddSeconds(-1);
|
|
|
|
AssetOdometerAdjustInfo[] odos = CreateClient<AssetDataAdjustClient>(customerid).GetOdometerAdjustmentHistory(customerid, Convert.ToInt64(assetid), starttime, endtime);
|
|
if (odos == null || odos.Length == 0)
|
|
return new AssetOdometerAdjustItem[0];
|
|
|
|
List<AssetOdometerAdjustItem> list = new List<AssetOdometerAdjustItem>();
|
|
foreach (AssetOdometerAdjustInfo odo in odos)
|
|
{
|
|
AssetOdometerAdjustItem item = new AssetOdometerAdjustItem();
|
|
Helper.CloneProperty(item, odo);
|
|
list.Add(item);
|
|
}
|
|
return list.ToArray();
|
|
}
|
|
else
|
|
return new AssetOdometerAdjustItem[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
#region Engine Hours Adjustment History
|
|
private object GetEngineHoursAdjustmentHistory()
|
|
{
|
|
try
|
|
{
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var clientdata = Request.Form["ClientData"].Split((char)170);
|
|
var customerid = HttpUtility.HtmlDecode(clientdata[0]);
|
|
var assetid = HttpUtility.HtmlDecode(clientdata[1]);
|
|
var sdate = HttpUtility.HtmlDecode(clientdata[2]);
|
|
var edate = HttpUtility.HtmlDecode(clientdata[3]);
|
|
if (string.IsNullOrEmpty(customerid))
|
|
customerid = SystemParams.CompanyID;
|
|
|
|
DateTime starttime = Helper.DBMinDateTime;
|
|
DateTime endtime = DateTime.MaxValue;
|
|
if (!DateTime.TryParse(sdate, out starttime))
|
|
starttime = Helper.DBMinDateTime;
|
|
|
|
if (!DateTime.TryParse(edate, out endtime))
|
|
endtime = DateTime.MaxValue;
|
|
else
|
|
endtime = endtime.Date.AddDays(1).AddSeconds(-1);
|
|
|
|
AssetEngineHoursAdjustInfo[] hours = CreateClient<AssetDataAdjustClient>(customerid).GetEngineHoursAdjustmentHistory(customerid, Convert.ToInt64(assetid), starttime, endtime);
|
|
if (hours == null || hours.Length == 0)
|
|
return new AssetEngineHoursAdjustItem[0];
|
|
|
|
List<AssetEngineHoursAdjustItem> list = new List<AssetEngineHoursAdjustItem>();
|
|
foreach (AssetEngineHoursAdjustInfo hour in hours)
|
|
{
|
|
AssetEngineHoursAdjustItem item = new AssetEngineHoursAdjustItem();
|
|
Helper.CloneProperty(item, hour);
|
|
list.Add(item);
|
|
}
|
|
return list.ToArray();
|
|
}
|
|
else
|
|
return new AssetEngineHoursAdjustItem[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
private object GetCustomerTimeZone()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string custid = Request.Form["ClientData"];
|
|
FISqlConnection db = null;
|
|
if (SystemParams.IsDealer)
|
|
{
|
|
if (string.IsNullOrEmpty(custid))
|
|
custid = SystemParams.CompanyID;
|
|
string connetionstring = SystemParams.GetDbStringByCompany(custid);
|
|
db = new FISqlConnection(connetionstring);
|
|
}
|
|
else
|
|
custid = SystemParams.CompanyID;
|
|
|
|
StringKeyValue kv = new StringKeyValue();
|
|
kv.Key = SystemParams.GetStringParam("CustomerTimeZone", false, db);
|
|
TimeZoneInfo tz = SystemParams.GetTimeZoneInfo(custid, db);
|
|
DateTime time = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Now.ToUniversalTime(), tz);
|
|
kv.Value = time.ToString("MM/dd/yyyy HH:mm:ss");
|
|
return kv;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object ChangeMachineIconFile()
|
|
{
|
|
try
|
|
{
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
StringKeyValue kv = JsonConvert.DeserializeObject<StringKeyValue>(clientdata);
|
|
|
|
HttpPostedFile uploadFile = null;
|
|
byte[] iconfilebyte = null;
|
|
if (Request.Files.Count > 0)
|
|
{
|
|
uploadFile = Request.Files[0];
|
|
iconfilebyte = ConvertFile2bytes(uploadFile);
|
|
}
|
|
FISqlConnection db = null;
|
|
if (SystemParams.IsDealer)
|
|
{
|
|
string connetionstring = SystemParams.GetDbStringByCompany(kv.Key);
|
|
db = new FISqlConnection(connetionstring);
|
|
}
|
|
MachineManagement.ChangeMachineIconFile(Convert.ToInt64(kv.Value), uploadFile == null ? "" : uploadFile.FileName, iconfilebyte, db);
|
|
|
|
return "OK";
|
|
}
|
|
return "Failed";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetPMSchedulesByAsset()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
long assetid = 0;
|
|
long.TryParse(clientdata, out assetid);
|
|
return MaintenanceManagement.GetPmScheduleByAsset(session.SessionID, assetid);
|
|
}
|
|
else
|
|
return new PmScheduleInfo[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
AddLog("ERROR", "AssetBasePage.GetPmSchedules", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object AddAssetToPMSchedule()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
PMScheduleAssetItem p = JsonConvert.DeserializeObject<PMScheduleAssetItem>(clientdata);
|
|
|
|
PMAssetInfo pmAsset = new PMAssetInfo();
|
|
pmAsset.AssetId = p.AssetId;
|
|
pmAsset.StartHours = p.StartHours;
|
|
pmAsset.StartOdometer = p.StartOdometer;
|
|
pmAsset.StartDate = p.StartDate;
|
|
pmAsset.StartIntervalValue = p.StartIntervalValue;
|
|
|
|
var client = CreateClient<PMClient>();
|
|
client.UpdatePMScheduleAsset(SystemParams.CompanyID, p.PmScheduleID, pmAsset, session.User.UID);
|
|
if (!string.IsNullOrEmpty(p.SelectedIntervalID))
|
|
{
|
|
//SystemParams.PMClient.TriggerPMAlert(SystemParams.CompanyID, p.PmScheduleID, pmAsset.AssetId);
|
|
client.GenerateMissedPMAlert(SystemParams.CompanyID, p.SelectedIntervalID, pmAsset.AssetId);
|
|
}
|
|
}
|
|
return "OK";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
AddLog("ERROR", "AssetBasePage.GetPmSchedules", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object RemoveAssetFromPMSchedule()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string clientdata = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
string[] ps = JsonConvert.DeserializeObject<string[]>(clientdata);
|
|
long assetid = 0;
|
|
long.TryParse(ps[0], out assetid);
|
|
|
|
CreateClient<PMClient>().DeleteAssetsFromSchedule(SystemParams.CompanyID, ps[1], new long[] { assetid }, session.User.UID);
|
|
}
|
|
return "OK";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
AddLog("ERROR", "AssetBasePage.GetPmSchedules", ex.Message, ex.ToString());
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
class PMScheduleAssetItem
|
|
{
|
|
public long AssetId { get; set; }
|
|
public string PmScheduleID { get; set; }
|
|
public double? StartHours { get; set; }
|
|
public double? StartOdometer { get; set; }
|
|
public DateTime? StartDate { get; set; }
|
|
public int? StartIntervalValue { get; set; }
|
|
public string SelectedIntervalID { get; set; }
|
|
}
|
|
}
|
|
}
|