896 lines
35 KiB
C#
896 lines
35 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using System.Xml;
|
|
using System.Web;
|
|
using IronIntel.Contractor.Users;
|
|
using Foresight.ServiceModel;
|
|
using Foresight.Fleet.Services.Styles;
|
|
using Foresight.Fleet.Services;
|
|
using Foresight.Fleet.Services.User;
|
|
using Foresight;
|
|
using IronIntel.Contractor.Machines;
|
|
using Foresight.Fleet.Services.JobSite;
|
|
using Foresight.Fleet.Services.Asset;
|
|
using System.Web.UI.WebControls;
|
|
using FI.FIC.Contracts.DataObjects.BaseObject;
|
|
using System.Security.Cryptography;
|
|
using Foresight.Fleet.Services.Customer;
|
|
|
|
namespace IronIntel.Contractor.Site.SystemSettings
|
|
{
|
|
public class SystemSettingsBasePage : ContractorBasePage
|
|
{
|
|
protected bool IsDev
|
|
{
|
|
get
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
if (Helper.DevAccounts.Contains(session.User.ID, StringComparer.OrdinalIgnoreCase))
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
protected void ProcessRequest(string methodName)
|
|
{
|
|
object result = null;
|
|
try
|
|
{
|
|
if (methodName != null)
|
|
{
|
|
switch (methodName.ToUpper())
|
|
{
|
|
case "GETCOMPANYUISTYLES":
|
|
result = GetCompanyUIStyles();
|
|
break;
|
|
case "SETCOMPANYUISTYLE":
|
|
result = SetCompanyUIStyle();
|
|
break;
|
|
case "DELETECOMPANYUISTYLE":
|
|
result = DeleteCompanyUIStyle();
|
|
break;
|
|
case "GETUSEROPTIONS":
|
|
result = GetUserOptions();
|
|
break;
|
|
case "SAVEUSEROPTIONS":
|
|
result = SaveUserOptions();
|
|
break;
|
|
case "GETTIMEZONES":
|
|
result = GetTimeZones();
|
|
break;
|
|
case "GETSYSTEMOPTIONS":
|
|
result = GetSystemOptions();
|
|
break;
|
|
case "SAVESYSTEMOPTIONS":
|
|
result = SaveSystemOptions();
|
|
break;
|
|
case "GETLANGUAGES":
|
|
result = GetLanguages();
|
|
break;
|
|
case "GETSYSTEMUNITOFODOMETER":
|
|
result = GetSystemUnitOfOdometer();
|
|
break;
|
|
case "GETASSETGROUPLIST":
|
|
result = GetAssetGroupList();
|
|
break;
|
|
case "GETJOBSITELIST":
|
|
result = GetJobsiteList();
|
|
break;
|
|
case "GETASSETTYPES":
|
|
result = GetAssetTypes();
|
|
break;
|
|
case "GETFILTERTEMPLATES":
|
|
result = GetFilterTemplates();
|
|
break;
|
|
case "GETFILTERTEMPLATEITEM":
|
|
result = GetFilterTemplateItem();
|
|
break;
|
|
case "GETUSERASSIGNEDASSETGROUPS":
|
|
result = GetUserAssignedAssetGroups();
|
|
break;
|
|
case "GETUSERASSIGNEDJOBSITES":
|
|
result = GetUserAssignedJobsites();
|
|
break;
|
|
case "GETUSERASSIGNEDASSETTYPES":
|
|
result = GetUserAssignedAssetTypes();
|
|
break;
|
|
case "SAVEASSETALERTFILTER":
|
|
result = SaveAssetAlertFilter();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = ex.Message;
|
|
SystemParams.WriteLog("Error", "Settingcolor.ProcessRequest", ex.Message, ex.ToString());
|
|
}
|
|
|
|
string json = JsonConvert.SerializeObject(result);
|
|
Response.Write(json);
|
|
Response.End();
|
|
}
|
|
|
|
private object GetCompanyUIStyles()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
CustUIStyleList uis = CreateClient<StyleProvider>().GetCompanyUIStyles(SystemParams.CompanyID);
|
|
|
|
List<CustUIStyleItem> list = new List<CustUIStyleItem>();
|
|
foreach (CustUIStyle ui in uis)
|
|
{
|
|
CustUIStyleItem item = new CustUIStyleItem();
|
|
Helper.CloneProperty(item, ui);
|
|
list.Add(item);
|
|
}
|
|
if (list.Count() > 0)
|
|
return list.ToArray();
|
|
else
|
|
return new CustUIStyleItem[0];
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private string SetCompanyUIStyle()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string uidata = Request.Params["ClientData"];
|
|
CustUIStyleItem item = JsonConvert.DeserializeObject<CustUIStyleItem>(uidata);
|
|
item.UIStyleName = HttpUtility.HtmlDecode(item.UIStyleName);
|
|
CustUIStyle ui = new CustUIStyle();
|
|
Helper.CloneProperty(ui, item);
|
|
CreateClient<StyleProvider>().SetCompanyUIStyle(SystemParams.CompanyID, ui);
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
return "User being not logged in.";
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private string DeleteCompanyUIStyle()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string uistyleid = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
int styleid = -1;
|
|
int.TryParse(uistyleid, out styleid);
|
|
CreateClient<StyleProvider>().DeleteCompanyUIStyle(SystemParams.CompanyID, styleid);
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetUserOptions()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
var up = UserParams.GetUserParams(session.SessionID, session.User.UID);
|
|
return up;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object SaveUserOptions()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string content = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
var user = JsonConvert.DeserializeObject<UserOptionObject>(content);
|
|
var uid = session.User.UID;
|
|
UserParamInfo upi = user.UserParam;
|
|
|
|
UserParams.SetUserParams(uid, upi);
|
|
var uc = CreateClient<UserQueryClient>();
|
|
uc.UpdateUserPreferredLanguage(uid, upi.PreferredLanguage);
|
|
uc.UpdateUserTimeZone(uid, upi.TimeZone);
|
|
|
|
// save subscribe message
|
|
if (user.Subscribe != null)
|
|
{
|
|
user.Subscribe.UserIID = uid;
|
|
List<UserAlertFilter> filters = null;
|
|
if (!string.IsNullOrEmpty(user.UserAlertFilter))
|
|
{
|
|
filters = JsonConvert.DeserializeObject<List<UserAlertFilter>>(user.UserAlertFilter);
|
|
}
|
|
FI.FIC.Models.WorkspaceManager.SaveSubscribeMessageByEmail(user.Subscribe, filters, uid);
|
|
}
|
|
|
|
|
|
//FIC Alert Filter Templates
|
|
var userfilterclient = CreateClient<Foresight.Fleet.Services.User.UserFilterProvider>();
|
|
if (user.FilterTemplates != null && user.FilterTemplates.Length > 0)
|
|
{
|
|
foreach (UserFilterTemplateItem filter in user.FilterTemplates)
|
|
{
|
|
if (filter.Id < 0)
|
|
filter.Id = userfilterclient.AddFilterTemplate(SystemParams.CompanyID, uid, filter.Name);
|
|
else
|
|
userfilterclient.ChangeFilterName(SystemParams.CompanyID, filter.Id, filter.Name);
|
|
|
|
long[] assetids = null;
|
|
if (filter.Assets != null && filter.Assets.Length > 0)
|
|
assetids = filter.Assets.Select(m => m.Id).ToArray();
|
|
userfilterclient.SetAssetFilter(SystemParams.CompanyID, filter.Id, assetids);
|
|
|
|
string[] assetgroups = null;
|
|
if (filter.AssetGroups != null && filter.AssetGroups.Length > 0)
|
|
assetgroups = filter.AssetGroups.Select(m => m.GroupID).ToArray();
|
|
userfilterclient.SetAssetGroupFilter(SystemParams.CompanyID, filter.Id, assetgroups);
|
|
|
|
int[] assettypes = null;
|
|
if (filter.AssetTypes != null && filter.AssetTypes.Length > 0)
|
|
assettypes = filter.AssetTypes.Select(m => m.ID).ToArray();
|
|
userfilterclient.SetAssetTypeFilter(SystemParams.CompanyID, filter.Id, assettypes);
|
|
|
|
long[] jobsites = null;
|
|
if (filter.Jobsites != null && filter.Jobsites.Length > 0)
|
|
jobsites = filter.Jobsites.Select(m => m.ID).ToArray();
|
|
userfilterclient.SetJobSiteFilter(SystemParams.CompanyID, filter.Id, jobsites);
|
|
}
|
|
}
|
|
if (user.DeleteFilterTemplates != null && user.DeleteFilterTemplates.Length > 0)
|
|
{
|
|
foreach (int id in user.DeleteFilterTemplates)
|
|
{
|
|
userfilterclient.DeleteFilterTemplate(SystemParams.CompanyID, id);
|
|
}
|
|
}
|
|
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object SaveAssetAlertFilter()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string content = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
var user = JsonConvert.DeserializeObject<UserOptionObject>(content);
|
|
var uid = session.User.UID;
|
|
|
|
var userfilterclient = CreateClient<Foresight.Fleet.Services.User.UserFilterProvider>();
|
|
if (user.FilterTemplates != null && user.FilterTemplates.Length > 0)
|
|
{
|
|
foreach (UserFilterTemplateItem filter in user.FilterTemplates)
|
|
{
|
|
if (filter.Id < 0)
|
|
filter.Id = userfilterclient.AddFilterTemplate(SystemParams.CompanyID, uid, filter.Name);
|
|
else
|
|
userfilterclient.ChangeFilterName(SystemParams.CompanyID, filter.Id, filter.Name);
|
|
|
|
long[] assetids = null;
|
|
if (filter.Assets != null && filter.Assets.Length > 0)
|
|
assetids = filter.Assets.Select(m => m.Id).ToArray();
|
|
userfilterclient.SetAssetFilter(SystemParams.CompanyID, filter.Id, assetids);
|
|
|
|
string[] assetgroups = null;
|
|
if (filter.AssetGroups != null && filter.AssetGroups.Length > 0)
|
|
assetgroups = filter.AssetGroups.Select(m => m.GroupID).ToArray();
|
|
userfilterclient.SetAssetGroupFilter(SystemParams.CompanyID, filter.Id, assetgroups);
|
|
|
|
int[] assettypes = null;
|
|
if (filter.AssetTypes != null && filter.AssetTypes.Length > 0)
|
|
assettypes = filter.AssetTypes.Select(m => m.ID).ToArray();
|
|
userfilterclient.SetAssetTypeFilter(SystemParams.CompanyID, filter.Id, assettypes);
|
|
|
|
long[] jobsites = null;
|
|
if (filter.Jobsites != null && filter.Jobsites.Length > 0)
|
|
jobsites = filter.Jobsites.Select(m => m.ID).ToArray();
|
|
userfilterclient.SetJobSiteFilter(SystemParams.CompanyID, filter.Id, jobsites);
|
|
}
|
|
}
|
|
if (user.DeleteFilterTemplates != null && user.DeleteFilterTemplates.Length > 0)
|
|
{
|
|
foreach (int id in user.DeleteFilterTemplates)
|
|
{
|
|
userfilterclient.DeleteFilterTemplate(SystemParams.CompanyID, id);
|
|
}
|
|
}
|
|
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetTimeZones()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
var timezones = SystemParams.GetTimeZones();
|
|
return timezones;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetSystemUnitOfOdometer()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
return SystemParams.GetStringParam("UnitOfOdometer");
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetLanguages()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
return CountryAndRegionCode.SupportedLanguages;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetSystemOptions()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string af = SystemParams.GetStringParam("AccuracyFilter");
|
|
double accuracyfilter = 0;
|
|
double.TryParse(af, out accuracyfilter);
|
|
|
|
string au = SystemParams.GetStringParam("AreaUnits");
|
|
int areaunits = 0;
|
|
int.TryParse(au, out areaunits);
|
|
|
|
string vu = SystemParams.GetStringParam("VolumnUnits");
|
|
int volumeunits = 0;
|
|
int.TryParse(vu, out volumeunits);
|
|
|
|
string wu = SystemParams.GetStringParam("WeightUnits");
|
|
int weightunits = 0;
|
|
int.TryParse(wu, out weightunits);
|
|
|
|
string rmd = SystemParams.GetStringParam("MFARememberMeDays");
|
|
int remembermedays = 0;
|
|
if (!int.TryParse(rmd, out remembermedays))
|
|
remembermedays = 30;
|
|
|
|
string locsourcestr = SystemParams.GetStringParam("BreadcrumbLocationSource");
|
|
int locsource = 0;
|
|
int.TryParse(locsourcestr, out locsource);
|
|
|
|
SystemOptionInfo soi = new SystemOptionInfo();
|
|
soi.TimeZone = CreateClient<CustomerProvider>().GetCustomerTimeZone(SystemParams.CompanyID);
|
|
soi.AccuracyFilter = accuracyfilter;
|
|
soi.UnitOfOdometer = SystemParams.GetStringParam("UnitOfOdometer");
|
|
soi.AcknowledgingAlerts = SystemParams.GetStringParam("AcknowledgingAlerts");
|
|
soi.LoginVerifyType = SystemParams.GetStringParam("LoginVerifyType");
|
|
soi.AreaUnits = areaunits;
|
|
soi.VolumeUnits = volumeunits;
|
|
soi.WeightUnits = weightunits;
|
|
soi.MFARememberMeDays = remembermedays;
|
|
soi.BreadcrumbLocationSource = locsource;
|
|
|
|
string connectorxml = SystemParams.GetStringParam("Connector");
|
|
soi.Connectors = ConnectorHelper.FromXML(connectorxml);
|
|
|
|
return soi;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object SaveSystemOptions()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
string options = HttpUtility.HtmlDecode(Request.Params["ClientData"]);
|
|
SystemOptionInfo upi = JsonConvert.DeserializeObject<SystemOptionInfo>(options);
|
|
CreateClient<CustomerProvider>().SaveCustomerTimeZone(SystemParams.CompanyID, upi.TimeZone);
|
|
SystemParams.SetStringParam("CustomerTimeZoneOffset", upi.Offset.ToString());
|
|
SystemParams.SetStringParam("AccuracyFilter", upi.AccuracyFilter.ToString());
|
|
SystemParams.SetStringParam("UnitOfOdometer", upi.UnitOfOdometer);
|
|
SystemParams.SetStringParam("AcknowledgingAlerts", upi.AcknowledgingAlerts);
|
|
SystemParams.SetStringParam("AreaUnits", upi.AreaUnits.ToString());
|
|
SystemParams.SetStringParam("VolumnUnits", upi.VolumeUnits.ToString());
|
|
SystemParams.SetStringParam("WeightUnits", upi.WeightUnits.ToString());
|
|
SystemParams.SetStringParam("LoginVerifyType", upi.LoginVerifyType);
|
|
SystemParams.SetStringParam("MFARememberMeDays", upi.MFARememberMeDays.ToString());
|
|
SystemParams.SetStringParam("BreadcrumbLocationSource", upi.BreadcrumbLocationSource.ToString());
|
|
|
|
XmlDocument doc = ConnectorHelper.ToXml(upi.Connectors);
|
|
SystemParams.SetStringParam("Connector", doc.InnerXml);
|
|
|
|
return "OK";
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("not login.");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
|
|
#region user filter
|
|
private object GetFilterTemplates()
|
|
{
|
|
try
|
|
{
|
|
var session = GetCurrentLoginSession();
|
|
|
|
if (session != null)
|
|
{
|
|
var client = CreateClient<Foresight.Fleet.Services.User.UserFilterProvider>();
|
|
KeyValuePair<int, string>[] filters = client.GetFilterTemplates(SystemParams.CompanyID, session.User.UID);
|
|
if (filters == null && filters.Length == 0)
|
|
return new KeyValuePair<int, string>[0];
|
|
|
|
return filters;
|
|
}
|
|
else
|
|
{
|
|
return new KeyValuePair<int, string>[0];
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetFilterTemplateItem()
|
|
{
|
|
try
|
|
{
|
|
var clientdata = Request.Form["ClientData"];
|
|
string filteridstr = HttpUtility.HtmlDecode(clientdata);
|
|
int filterid = Convert.ToInt32(filteridstr);
|
|
|
|
var session = GetCurrentLoginSession();
|
|
if (session != null)
|
|
{
|
|
var client = CreateClient<Foresight.Fleet.Services.User.UserFilterProvider>();
|
|
|
|
string useriid = session.User.UID;
|
|
|
|
bool accessallassets = session.User.UserType >= Foresight.Fleet.Services.User.UserTypes.Admin;
|
|
if (!accessallassets)
|
|
{
|
|
Foresight.Fleet.Services.User.UserAdditionalAttribute attrs = CreateClient<Foresight.Fleet.Services.User.UserQueryClient>(SystemParams.CompanyID).GetUserAdditionalAttribute(useriid);
|
|
if (attrs != null)
|
|
accessallassets = attrs.AccessAllAssets;
|
|
}
|
|
|
|
UserFilterTemplateItem filter = new UserFilterTemplateItem();
|
|
|
|
List<AssetListItemInfo> lsasset = new List<AssetListItemInfo>();
|
|
var fassets = client.GetAssetFilter(SystemParams.CompanyID, filterid);
|
|
if (fassets != null && fassets.Length > 0)
|
|
{
|
|
var selitems = CreateClient<AssetDataAdjustClient>(SystemParams.CompanyID).GetAssetsAssignedToUser(SystemParams.CompanyID, useriid);
|
|
|
|
foreach (var ai in fassets)
|
|
{
|
|
AssetListItemInfo item = new AssetListItemInfo();
|
|
item.Id = ai.Id;
|
|
item.Name = ai.Name;
|
|
item.VIN = ai.VIN;
|
|
item.MakeName = ai.MakeName;
|
|
item.ModelName = ai.ModelName;
|
|
item.TypeName = ai.TypeName;
|
|
|
|
if (accessallassets)
|
|
lsasset.Add(item);
|
|
else
|
|
{
|
|
if (selitems != null && selitems.Length > 0 && selitems.Select(m => m.Id).Contains(ai.Id))
|
|
lsasset.Add(item);
|
|
}
|
|
}
|
|
}
|
|
filter.Assets = lsasset.ToArray();
|
|
|
|
List<MachineGroup> lsag = new List<MachineGroup>();
|
|
var fassetgroups = client.GetAssetGroupFilter(SystemParams.CompanyID, filterid);
|
|
if (fassetgroups != null && fassetgroups.Length > 0)
|
|
{
|
|
var selitems = MachineManagement.GetMachineGroupByUser(useriid).OrderBy((m) => m.GroupName).ToArray();
|
|
foreach (var kv in fassetgroups)
|
|
{
|
|
MachineGroup item = new MachineGroup();
|
|
item.GroupID = kv.Key;
|
|
item.GroupName = kv.Value;
|
|
|
|
if (accessallassets)
|
|
lsag.Add(item);
|
|
else
|
|
{
|
|
if (selitems != null && selitems.Length > 0 && selitems.Select(m => m.GroupID).Contains(kv.Key))
|
|
lsag.Add(item);
|
|
}
|
|
}
|
|
}
|
|
filter.AssetGroups = lsag.ToArray();
|
|
|
|
List<AssetType> lstp = new List<AssetType>();
|
|
var fassettypes = client.GetAssetTypeFilter(SystemParams.CompanyID, filterid);
|
|
if (fassettypes != null && fassettypes.Length > 0)
|
|
{
|
|
var selitems = MachineManagement.GetMachineTypesByUser(useriid);
|
|
foreach (var kv in fassettypes)
|
|
{
|
|
AssetType item = new AssetType();
|
|
item.ID = kv.Key;
|
|
item.Name = kv.Value;
|
|
if (accessallassets)
|
|
lstp.Add(item);
|
|
else
|
|
{
|
|
if (selitems != null && selitems.Length > 0 && selitems.Select(m => m.ID).Contains(kv.Key))
|
|
lstp.Add(item);
|
|
}
|
|
}
|
|
}
|
|
filter.AssetTypes = lstp.ToArray();
|
|
|
|
List<JobSiteItem> lsjs = new List<JobSiteItem>();
|
|
var fjobsites = client.GetJobsiteFilter(SystemParams.CompanyID, filterid);
|
|
if (fjobsites != null && fjobsites.Length > 0)
|
|
{
|
|
var selitems = CreateClient<JobSiteProvider>().GetUserJobsites(SystemParams.CompanyID, useriid);
|
|
foreach (var kv in fjobsites)
|
|
{
|
|
JobSiteItem item = new JobSiteItem();
|
|
item.ID = kv.Key;
|
|
item.Name = kv.Value;
|
|
if (accessallassets)
|
|
lsjs.Add(item);
|
|
else
|
|
{
|
|
if (selitems != null && selitems.Length > 0 && selitems.Select(m => m.ID).Contains(kv.Key))
|
|
lsjs.Add(item);
|
|
}
|
|
}
|
|
}
|
|
filter.Jobsites = lsjs.ToArray();
|
|
|
|
return filter;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetAssetGroupList()
|
|
{
|
|
try
|
|
{
|
|
MachineGroup[] items = null;
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
items = MachineManagement.GetMachineGroups("").OrderBy((m) => m.GroupName).ToArray();
|
|
}
|
|
else
|
|
{
|
|
items = new MachineGroup[0];
|
|
}
|
|
return items;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
private object GetJobsiteList()
|
|
{
|
|
try
|
|
{
|
|
JobSiteItem[] items = null;
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var s = Request.Form["ClientData"];
|
|
s = HttpUtility.HtmlDecode(s);
|
|
|
|
items = CreateClient<JobSiteProvider>().GetJobSiteItems(SystemParams.CompanyID, "", false);
|
|
}
|
|
else
|
|
{
|
|
items = new JobSiteItem[0];
|
|
}
|
|
return items;
|
|
}
|
|
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.OrderBy((t) => t.Name).ToArray();
|
|
}
|
|
else
|
|
return new AssetType[0];
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
private object GetUserAssignedAssetGroups()
|
|
{
|
|
try
|
|
{
|
|
var clientdata = Request.Form["ClientData"];
|
|
var uid = HttpUtility.HtmlDecode(clientdata);
|
|
|
|
MachineGroup[] items = null;
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var ui = UserManagement.GetUserByIID(uid);
|
|
if (ui.UserType < IronIntel.Contractor.Users.UserTypes.Admin)
|
|
{
|
|
bool accessallassets = GetAccessAllAssets(uid);
|
|
|
|
if (accessallassets)
|
|
return GetAssetGroupList();
|
|
else
|
|
items = MachineManagement.GetMachineGroupByUser(uid).OrderBy((m) => m.GroupName).ToArray();
|
|
}
|
|
else
|
|
return GetAssetGroupList();
|
|
|
|
}
|
|
else
|
|
{
|
|
items = new MachineGroup[0];
|
|
}
|
|
|
|
return items;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
|
|
private object GetUserAssignedAssetTypes()
|
|
{
|
|
try
|
|
{
|
|
var clientdata = Request.Form["ClientData"];
|
|
var uid = HttpUtility.HtmlDecode(clientdata);
|
|
|
|
AssetType[] items = null;
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var ui = UserManagement.GetUserByIID(uid);
|
|
if (ui.UserType < IronIntel.Contractor.Users.UserTypes.Admin)
|
|
{
|
|
bool accessallassets = GetAccessAllAssets(uid);
|
|
if (accessallassets)
|
|
return GetAssetTypes();
|
|
else
|
|
items = MachineManagement.GetMachineTypesByUser(uid);
|
|
|
|
}
|
|
else
|
|
return GetAssetTypes();
|
|
}
|
|
else
|
|
{
|
|
items = new AssetType[0];
|
|
}
|
|
return items;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
private object GetUserAssignedJobsites()
|
|
{
|
|
try
|
|
{
|
|
JobSiteItem[] items = null;
|
|
if (GetCurrentLoginSession() != null)
|
|
{
|
|
var uid = Request.Form["ClientData"];
|
|
uid = HttpUtility.HtmlDecode(uid);
|
|
|
|
var ui = UserManagement.GetUserByIID(uid);
|
|
if (ui.UserType < IronIntel.Contractor.Users.UserTypes.Admin)
|
|
{
|
|
bool accessallassets = GetAccessAllAssets(uid);
|
|
if (accessallassets)
|
|
return GetJobsiteList();
|
|
else
|
|
items = CreateClient<JobSiteProvider>().GetUserJobsites(SystemParams.CompanyID, uid);
|
|
}
|
|
else
|
|
return GetJobsiteList();
|
|
}
|
|
else
|
|
{
|
|
items = new JobSiteItem[0];
|
|
}
|
|
return items;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return ex.Message;
|
|
}
|
|
}
|
|
private bool GetAccessAllAssets(string uid)
|
|
{
|
|
bool accessallassets = false;
|
|
var attrs = CreateClient<Foresight.Fleet.Services.User.UserQueryClient>(SystemParams.CompanyID).GetUserAdditionalAttribute(uid);
|
|
if (attrs != null)
|
|
accessallassets = attrs.AccessAllAssets;
|
|
return accessallassets;
|
|
}
|
|
|
|
#endregion
|
|
private class CustUIStyleItem
|
|
{
|
|
public int UIStyleID { get; set; }
|
|
public string UIStyleName { get; set; }
|
|
public bool IsDefault { get; set; }
|
|
public string TitleBarColor { get; set; }
|
|
public string MenuBackgroundColor { get; set; }
|
|
public string ChartTitleBackgroundColor { get; set; }
|
|
public string ChartBorderColor { get; set; }
|
|
}
|
|
|
|
private class SystemOptionInfo
|
|
{
|
|
public string TimeZone { get; set; }
|
|
public int Offset { get; set; }
|
|
public double AccuracyFilter { get; set; }
|
|
public string UnitOfOdometer { get; set; }
|
|
public string AcknowledgingAlerts { get; set; }
|
|
public int AreaUnits { get; set; }
|
|
public int VolumeUnits { get; set; }
|
|
public int WeightUnits { get; set; }
|
|
public string LoginVerifyType { get; set; }
|
|
public StringKeyValue[] Connectors { get; set; }
|
|
public int MFARememberMeDays { get; set; }
|
|
public int BreadcrumbLocationSource { get; set; }
|
|
}
|
|
|
|
private class UserOptionObject
|
|
{
|
|
public UserParamInfo UserParam { get; set; }
|
|
public SubscribeMessageByEmail Subscribe { get; set; }
|
|
public string UserAlertFilter { get; set; }
|
|
public UserFilterTemplateItem[] FilterTemplates { get; set; }
|
|
public int[] DeleteFilterTemplates { get; set; }
|
|
}
|
|
}
|
|
}
|