Files
fleet-contractor/IronIntelContractorSiteLib/Maintenance/MaintanceRecordsBasePage.cs
T

459 lines
18 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using IronIntel.Contractor.Machines;
using IronIntel.Contractor.Maintenance;
using IronIntel.Services.Business.Admin;
using System.Web;
using IronIntel.Contractor.Users;
using Foresight.ServiceModel;
using Foresight.Fleet.Services.Attachment;
using IronIntel.Contractor.Attachment;
namespace IronIntel.Contractor.Site.Maintenance
{
public class MaintanceRecordsBasePage : ContractorBasePage
{
protected void ProcessRequest(string methodName)
{
object result = null;
try
{
if (methodName != null)
{
switch (methodName.ToUpper())
{
case "GETTYPESDATA":
GetTypesData();
break;
case "GETRECORDS":
GetRecords();
break;
case "GETMACHINES":
Getmachines();
break;
case "GETMACHINEINFO":
GetmachineInfo();
break;
case "SEARCHMACHINELIST":
SearchmachineList();
break;
case "ADDMAINTENANCE":
result = Addmaintenance();
break;
case "GETRECORDSBYMACHINEID":
GetRecordsbymachineID();
break;
case "DELETEMAINTENANCE":
Deletemaintenance();
break;
case "GETUNCOMPLETEDPMALERTS":
result = GetUnCompletedPMAlerts();
break;
case "GETUSERSDATA":
GetUsersData();
break;
case "GETMAINTANENCELOGATTACHLIST":
result = GetMaintanenceLogAttachList();
break;
case "GETMAINTENANCEINFO":
result = GetMaintenanceInfo();
break;
case "GETATTACHMENTS":
result = GetAttachments();
break;
case "ADDATTACHMENT":
result = AddAttachment();
break;
case "DELETEATTACHMENT":
result = DeleteAttachment();
break;
}
}
}
catch (System.Threading.ThreadAbortException)
{
throw;
}
catch (Exception ex)
{
SystemParams.WriteLog("error", "MaintanceRecordsBasePage" + methodName, ex.Message, ex.ToString());
}
string json = JsonConvert.SerializeObject(result);
Response.Write(json);
Response.End();
}
private void GetTypesData()
{
string json = "";
List<KeyValuePair<int, string>> typeskeypair = new List<KeyValuePair<int, string>>();
MachineServiceClient2 mc = new MachineServiceClient2(SystemParams.SystemServiceAddresses[0]);
MachineType[] types = mc.GetMachineTypes();
foreach (MachineType item in types)
{
typeskeypair.Add(new KeyValuePair<int, string>(item.ID, item.Name));
}
if (typeskeypair.Count > 0)
{
typeskeypair = typeskeypair.OrderBy(t => t.Value).ToList();
}
json += JsonConvert.SerializeObject(typeskeypair);
Response.Write(json);
Response.End();
}
private void GetRecords()
{
var session = GetCurrentLoginSession();
string json = "";
long assetid = -1;
long.TryParse(Request.Params["assetid"], out assetid);
string maintenanceType = Request.Params["maintenancetype"];
string mtype = Request.Params["type"];
string searchtxt = HttpUtility.UrlDecode(Request.Params["searchtxt"]);
string sortype = HttpUtility.UrlDecode(Request.Params["sortype"]);
string sortdata = HttpUtility.UrlDecode(Request.Params["sortdata"]);
MaintenanceLogInfo[] logs = MaintenanceManagement.GetMaintenanceLog(session.SessionID, assetid, maintenanceType, string.IsNullOrWhiteSpace(mtype) ? -1 : Convert.ToInt32(mtype), searchtxt, session.User.UID);
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();
}
}
}
json += JsonConvert.SerializeObject(logs);
Response.Write(json);
Response.End();
}
private object GetMaintenanceInfo()
{
try
{
if (GetCurrentLoginSession() != null)
{
var id = Request.Form["ClientData"];
MaintenanceLogInfo ml = MaintenanceManagement.GetMaintenanceInfo(id);
return ml;
}
else
return new MaintenanceLogInfo();
}
catch (Exception ex)
{
AddLog("ERROR", "MaintanceRecordsBasePage.GetMaintenanceInfo", ex.Message, ex.ToString());
return ex.Message;
}
}
private void GetRecordsbymachineID()
{
string json = "";
long mid = -1;
long.TryParse(Request.Params["machineID"].ToString(), out mid);
string maintenanceType = Request.Params["maintenancetype"];
MaintenanceLogInfo[] logs = MaintenanceManagement.GetMaintenanceLogByMachineID(mid, maintenanceType).OrderByDescending(log => log.MaintenanceDate).ToArray();
json += JsonConvert.SerializeObject(logs);
Response.Write(json);
Response.End();
}
private void GetmachineInfo()
{
string json = "";
long mid = -1;
long.TryParse(Request.Params["machineID"].ToString(), out mid);
MaintenanceMachineInfo machine = MaintenanceManagement.GetmachineByMachineID(mid);
json += JsonConvert.SerializeObject(machine);
Response.Write(json);
Response.End();
}
private void Getmachines()
{
var session = GetCurrentLoginSession();
string json = "";
string mtype = Request.Params["type"];
string searchtxt = HttpUtility.UrlDecode(Request.Params["searchtxt"]);
MaintenanceMachineInfo[] machines = MaintenanceManagement.GetMaintenanceMachines(session.SessionID, string.IsNullOrWhiteSpace(mtype) ? -1 : Convert.ToInt32(mtype), searchtxt, session.User.UID).OrderBy(t => t.VIN).ToArray();
json += JsonConvert.SerializeObject(machines);
Response.Write(json);
Response.End();
}
private void SearchmachineList()
{
var session = GetCurrentLoginSession();
string json = "";
string mtype = Request.Params["type"];
string searchtxt = HttpUtility.UrlDecode(Request.Params["searchtxt"]);
MaintenanceMachineInfo[] machines = MaintenanceManagement.GetMaintenanceMachines(session.SessionID, string.IsNullOrWhiteSpace(mtype) ? -1 : Convert.ToInt32(mtype), searchtxt, session.User.UID);
if (machines.Length > 0)
{
json = JsonConvert.SerializeObject(machines);
}
Response.Write(json);
Response.End();
}
private object Addmaintenance()
{
try
{
UserInfo u = GetCurrentUser();
if (u != null)
{
var clientdata = Request.Form["ClientData"];
MaintenanceLogInfo m = JsonConvert.DeserializeObject<MaintenanceLogInfo>(clientdata);
MaintenanceLogInfo oldinfo = null;
if (!string.IsNullOrEmpty(m.MaintenanceID))
{
oldinfo = MaintenanceManagement.GetMaintenanceLogByMaintenanceID(m.MaintenanceID);
}
if (oldinfo == null)
{
oldinfo = new MaintenanceLogInfo();
oldinfo.MaintenanceID = Guid.NewGuid().ToString().ToUpper();
}
oldinfo.MachineID = m.MachineID;
oldinfo.MaintenanceDate = m.MaintenanceDate;
oldinfo.MaintenanceHours = m.MaintenanceHours;
oldinfo.ODOMeter = m.ODOMeter;
oldinfo.ODOMemterUOM = m.ODOMemterUOM;
oldinfo.Notes = HttpUtility.UrlDecode(m.Notes);
oldinfo.LogType = m.LogType;
oldinfo.Cost = m.Cost;
oldinfo.InvoiceNumber = m.InvoiceNumber;
oldinfo.AttachmentIDs = m.AttachmentIDs;
if (oldinfo.AlertID != m.AlertID && oldinfo.AlertID > 0)
{//取消旧的Alert Completed状态
MaintenanceManagement.SetPMAlertCompleted(oldinfo.AlertID, false, "");
}
if (m.AlertID > 0)//对于Alert,关联了Maintenance Rocord才认为是完成
{//更新新的Alert Completed状态
MaintenanceManagement.SetPMAlertCompleted(m.AlertID, true, m.CompletedByName);
}
oldinfo.CompletedByName = m.CompletedByName;
oldinfo.Completed = !string.IsNullOrWhiteSpace(m.CompletedByName);//对于Maintenance Rocord选择了Completed By就认为是完成
oldinfo.AlertID = m.AlertID;
MaintenanceManagement.UpdateMaintenanceLog(oldinfo, u.IID);
AttachmentsManagement.SaveAttach(oldinfo.MaintenanceID, u.IID, oldinfo.AttachmentIDs, AttachmentType.MaintenanceLog);
return new string[] { oldinfo.MaintenanceID, "Saved Successfully." };
}
else
return "Failed to save,The user is not logged.";
}
catch (Exception ex)
{
return ex.Message;
}
}
private void Deletemaintenance()
{
string maintenanceID = Request.Params["maintenanceid"].ToString();
UserInfo u = GetCurrentUser();
if (u != null)
{
MaintenanceLogInfo m = MaintenanceManagement.GetMaintenanceLogByMaintenanceID(maintenanceID);
if (m.AlertID > 0)//取消Alert Completed状态
MaintenanceManagement.SetPMAlertCompleted(m.AlertID, false, "");
MaintenanceManagement.DeleteMaintenanceLog(maintenanceID);
Response.Write(JsonConvert.SerializeObject("Deleted Successfully."));
}
else
Response.Write(JsonConvert.SerializeObject("Failed to delete record."));
Response.End();
}
private object GetUnCompletedPMAlerts()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = Request.Form["ClientData"].Split((char)170);
long machineid = -1;
long.TryParse(clientdata[0], out machineid);
string maintenanceid = clientdata[1];
PMAlert[] pmalerts = MaintenanceManagement.GetUnCompletedPMAlerts(machineid, maintenanceid);
return pmalerts;
}
else
return new PMAlert[0];
}
catch (Exception ex)
{
AddLog("ERROR", "MaintanceRecordsBasePage.GetUnCompletedPMAlerts", ex.Message, ex.ToString());
return ex.Message;
}
}
private void GetUsersData()
{
UserInfo[] user = UserManagement.GetUsers();
user = user.OrderBy((u) => u.DisplayName).ToArray();
string json = JsonConvert.SerializeObject(user);
Response.Write(json);
Response.End();
}
private object GetMaintanenceLogAttachList()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
var clientdata = Request.Form["ClientData"].Split((char)170);
var id = HttpUtility.HtmlDecode(clientdata[0]);
var type = HttpUtility.HtmlDecode(clientdata[1]);
StringKeyValue[] attas = AttachmentsManagement.GetAttachList(id, type);
return attas;
}
else
return new StringKeyValue[0];
}
catch (Exception ex)
{
AddLog("ERROR", "MaintanceRecordsBasePage.GetMaintanenceLogAttachList", ex.Message, ex.ToString());
return ex.Message;
}
}
#region Attachment
private object GetAttachments()
{
try
{
if (GetCurrentLoginSession() != null)
{
var clientdata = Request.Form["ClientData"].Split((char)170);
var woid = HttpUtility.HtmlDecode(clientdata[0]);
AttachmentInfo[] atts = CreateClient<AttachmentClient>().GetAttachments(SystemParams.CompanyID, "MaintenanceLog", woid);
if (atts == null || atts.Length <= 0)
return new AttachmentItem[0];
List<AttachmentItem> list = new List<AttachmentItem>();
foreach (AttachmentInfo att in atts)
{
AttachmentItem item = new AttachmentItem();
Helper.CloneProperty(item, att);
item.AddedOn = item.AddedOn.ToLocalTime();
list.Add(item);
}
return list.OrderBy(m => m.AddedOn).ToArray();
}
else
return new AttachmentItem[0];
}
catch (Exception ex)
{
return ex.Message;
}
}
private object AddAttachment()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string woid = HttpUtility.HtmlDecode(Request.Form["ClientData"]);
HttpPostedFile uploadFile = null;
byte[] iconfilebyte = null;
if (Request.Files.Count > 0)
{
uploadFile = Request.Files[0];
iconfilebyte = ConvertFile2bytes(uploadFile);
}
AttachmentInfo attachment = new AttachmentInfo();
attachment.StringID = Guid.NewGuid().ToString().ToUpper();
attachment.FileName = uploadFile == null ? "" : uploadFile.FileName;
attachment.Source = "MaintenanceLog";
attachment.SourceID = woid;
attachment.FileData = iconfilebyte;
attachment.AddedByUserIID = session.User.UID;
string attid = CreateClient<AttachmentClient>().AddAttachmentLegacy(SystemParams.CompanyID, attachment);
return "OK";
}
return "Failed";
}
catch (Exception ex)
{
return ex.Message;
}
}
private object DeleteAttachment()
{
try
{
var session = GetCurrentLoginSession();
if (session != null)
{
string attachid = HttpUtility.HtmlDecode(Request.Form["ClientData"]);
CreateClient<AttachmentClient>().DeleteAttachmentLegacy(SystemParams.CompanyID, attachid, session.User.UID);
return "OK";
}
return "Failed";
}
catch (Exception ex)
{
return ex.Message;
}
}
#endregion
}
}