sync
This commit is contained in:
@ -23,24 +23,74 @@ namespace IronIntel.Contractor.Users
|
||||
public AppModuleType ModuleType { get; set; }
|
||||
public List<NavigateItem> SubItems { get; set; }
|
||||
|
||||
public List<NavigateItem> GetJobsiteNavigateItems(Tuple<Feature, Permissions>[] pmss)
|
||||
{
|
||||
List<NavigateItem> list = new List<NavigateItem>();
|
||||
Foresight.Fleet.Services.Customer.LicenseInfo license = SystemParams.GetLicense();
|
||||
var jsitem = license.Items.FirstOrDefault(m => m.Key == "JobSites");
|
||||
if (jsitem == null || !Helper.IsTrue(jsitem.Value))
|
||||
{
|
||||
return list;
|
||||
}
|
||||
NavigateItem item = null;
|
||||
var jsditem = license.Items.FirstOrDefault(m => m.Key == "JobsiteDispatch");
|
||||
if (jsditem != null && Helper.IsTrue(jsditem.Value))
|
||||
{
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_jobsiterequirements";
|
||||
item.FeatureID = Feature.JOB_SITES_REQUIREMENTS;
|
||||
item.Title = "Jobsite Requirements";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "JobSiteRequirements.aspx";
|
||||
item.IconPath = "img/jobsiterequirements.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JOB_SITES_REQUIREMENTS) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_dispatchrequests";
|
||||
item.FeatureID = Feature.JOB_SITES_DISPATCHREQUESTS;
|
||||
item.Title = "Dispatch Requests";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "DispatchRequests.aspx";
|
||||
item.IconPath = "img/dispatch.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JOB_SITES_DISPATCHREQUESTS) != null)
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_jobsitemanage";
|
||||
item.FeatureID = Feature.JOB_SITES;
|
||||
item.Title = "Jobsites";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "JobSiteManage.aspx";
|
||||
item.IconPath = "img/jobsite.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JOB_SITES) != null)
|
||||
list.Add(item);
|
||||
|
||||
if (jsditem != null || Helper.IsTrue(jsditem.Value))
|
||||
{
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_scheduler";
|
||||
item.FeatureID = Feature.JOB_SITES_SCHEDULER;
|
||||
item.Title = "Scheduler";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "SchedulerManagement.aspx";
|
||||
item.IconPath = "img/scheduler.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JOB_SITES_SCHEDULER) != null)
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<NavigateItem> GetMaintenanceNavigateItems(Tuple<Feature, Permissions>[] pmss)
|
||||
{
|
||||
List<NavigateItem> list = new List<NavigateItem>();
|
||||
|
||||
NavigateItem item = new NavigateItem();
|
||||
item.ID = "nav_alertsmanagement";
|
||||
item.FeatureID = Feature.ALERTS_MANAGEMENT;
|
||||
item.Title = "Alerts Management **New**";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "AlertsManagement.aspx";
|
||||
item.IconPath = "img/alert.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.ALERTS_MANAGEMENT) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_workorder";
|
||||
item.FeatureID = Feature.WORK_ORDER;
|
||||
item.Title = "Work Order **New**";
|
||||
item.Title = "Work Order";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "WorkOrderMaintenance.aspx";
|
||||
item.IconPath = "img/workorder.png";
|
||||
@ -48,75 +98,93 @@ namespace IronIntel.Contractor.Users
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_preventative";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Absolute Hours Maintenance";
|
||||
item.ID = "nav_workorderhis";
|
||||
item.FeatureID = Feature.WORKORDERHISTORY;
|
||||
item.Title = "Work Order History";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "PreventativeMaintenance.aspx";
|
||||
item.PageUrl = "WorkOrderHistory.aspx";
|
||||
item.IconPath = "img/workorderhis.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.WORKORDERHISTORY) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_alertsmanagement";
|
||||
item.FeatureID = Feature.ALERTS_MANAGEMENT;
|
||||
item.Title = "Alerts Management";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "AlertsManagement.aspx";
|
||||
item.IconPath = "img/alert.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.ALERTS_MANAGEMENT) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_maintenanceschedule";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Maintenance Schedules";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "MaintenanceSchedulesManagement.aspx";
|
||||
item.IconPath = "img/preventative.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_timebased";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Relative Time Maintenance";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "TimeBasedMaintenance.aspx";
|
||||
item.IconPath = "img/timebased.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_hours";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Relative Hours Maintenance";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "HoursMaintenance.aspx";
|
||||
item.IconPath = "img/hours.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_absolutedistance";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Absolute Distance Maintenance";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "AbsoluteDistanceMaintenance.aspx";
|
||||
item.IconPath = "img/preventative.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.ID = "nav_relativedistance";
|
||||
item.Title = "Relative Distance Maintenance";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "RelativeDistanceMaintenance.aspx";
|
||||
item.IconPath = "img/hours.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_record";
|
||||
item.FeatureID = Feature.PREVENTATIVE_MAINTENANCE;
|
||||
item.Title = "Maintenance Record **Legacy**";
|
||||
item.Title = "Maintenance Record";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "MaintanceRecordsManagement.aspx";
|
||||
item.IconPath = "img/record.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null)
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.PREVENTATIVE_MAINTENANCE) != null
|
||||
&& pmss.FirstOrDefault(m => m.Item1.Id == Feature.MAINTENANCE_RECORD) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_fuelrecord";
|
||||
item.FeatureID = Feature.FUEL_RECORDS;
|
||||
item.Title = "Fuel Records";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "FuelRecordManagement.aspx";
|
||||
item.IconPath = "img/fuelrecord.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.FUEL_RECORDS) != null)
|
||||
{
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_fuelrecord";
|
||||
item.FeatureID = Feature.FUEL_RECORDS;
|
||||
item.Title = "Fuel Records";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "FuelRecordManagement.aspx";
|
||||
item.IconPath = "img/fuelrecord.png";
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.CUSTOMER_RECORD) != null)
|
||||
{
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_customerrecord";
|
||||
item.FeatureID = Feature.CUSTOMER_RECORD;
|
||||
item.Title = "Customer Record";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "CustomerRecordManagement.aspx";
|
||||
item.IconPath = "img/customerrecord.png?v=1";
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_surveymanagementresult";
|
||||
item.FeatureID = Feature.WORKORDERSURVEYS;
|
||||
item.Title = "Survey Management/Result";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "SurveyManagement.aspx";
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_wosurveytemplate";
|
||||
item.FeatureID = -1;
|
||||
item.Title = "Templates";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "SurveyTemplateManagement.aspx";
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_wosurveytemplatereport";
|
||||
item.FeatureID = -1;
|
||||
item.Title = "Report";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "SurveyTemplateReport.aspx";
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
@ -178,7 +246,8 @@ namespace IronIntel.Contractor.Users
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "CurfewManage.aspx";
|
||||
item.IconPath = "img/curfew.png";
|
||||
list.Add(item);
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.CURFEW_CONFIG) != null)
|
||||
list.Add(item);
|
||||
|
||||
if (user.UserType == UserTypes.SupperAdmin)
|
||||
{
|
||||
@ -189,7 +258,8 @@ namespace IronIntel.Contractor.Users
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "CurfewMovementTolerance.aspx";
|
||||
item.IconPath = "img/curfewmovementtolerance.png";
|
||||
list.Add(item);
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.CURFEW_CONFIG) != null)
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
return list;
|
||||
@ -250,6 +320,70 @@ namespace IronIntel.Contractor.Users
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public List<NavigateItem> GetCredentialNavigateItems(Tuple<Feature, Permissions>[] pmss, UserInfo user)
|
||||
{
|
||||
List<NavigateItem> list = new List<NavigateItem>();
|
||||
NavigateItem item = new NavigateItem();
|
||||
item.ID = "nav_credential";
|
||||
item.FeatureID = Feature.CREDENTIALS;
|
||||
item.Title = "Credentials";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "ManageCredential.aspx";
|
||||
item.IconPath = "img/credential.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.CREDENTIALS) != null)
|
||||
list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_jdlink";
|
||||
item.FeatureID = Feature.JDLINK;
|
||||
item.Title = "JD Link";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "ManageJDLink.aspx";
|
||||
item.IconPath = "img/jdlink.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JDLINK) != null)
|
||||
list.Add(item);
|
||||
|
||||
//item = new NavigateItem();
|
||||
//item.ID = "nav_jdnotification";
|
||||
//item.FeatureID = Feature.JDNOTIFICATION;
|
||||
//item.Title = "JohnDeere Notifications";
|
||||
//item.Url = Url + "#" + item.ID;
|
||||
//item.PageUrl = "ManageJDNotifications.aspx";
|
||||
//item.IconPath = "img/jdnotifications.png";
|
||||
//if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.JDNOTIFICATION) != null)
|
||||
// list.Add(item);
|
||||
|
||||
item = new NavigateItem();
|
||||
item.ID = "nav_apicredential";
|
||||
item.FeatureID = Feature.APICREDENTIALS;
|
||||
item.Title = "API Credentials";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "ManageAPICredential.aspx";
|
||||
item.IconPath = "img/apicredential.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.APICREDENTIALS) != null)
|
||||
list.Add(item);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
public List<NavigateItem> GetOTRConfigNavigateItems(Tuple<Feature, Permissions>[] pmss, UserInfo user)
|
||||
{
|
||||
List<NavigateItem> list = new List<NavigateItem>();
|
||||
NavigateItem item = new NavigateItem();
|
||||
item.ID = "nav_manageharshdriving";
|
||||
item.FeatureID = Feature.HARSH_DRIVING;
|
||||
item.Title = "Manage Harsh Driving";
|
||||
item.Url = Url + "#" + item.ID;
|
||||
item.PageUrl = "ManageHarshDriving.aspx";
|
||||
item.IconPath = "img/harshdriving.png";
|
||||
if (pmss.FirstOrDefault(m => m.Item1.Id == Feature.HARSH_DRIVING) != null)
|
||||
list.Add(item);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class NavigateItem
|
||||
@ -270,6 +404,14 @@ namespace IronIntel.Contractor.Users
|
||||
public string IconPath { get; set; }
|
||||
}
|
||||
|
||||
public class CredentialNavigateItem
|
||||
{
|
||||
public string ID { get; set; }
|
||||
public string Title { get; set; }
|
||||
public string Url { get; set; }
|
||||
public string IconPath { get; set; }
|
||||
}
|
||||
|
||||
public enum AppModuleType
|
||||
{
|
||||
System,
|
||||
|
@ -5,9 +5,8 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Data;
|
||||
using Foresight.Data;
|
||||
using IronIntel.Contractor.Users;
|
||||
using IronIntel.Services;
|
||||
using Foresight.Fleet.Services.User;
|
||||
using Foresight.Fleet.Services.Styles;
|
||||
|
||||
namespace IronIntel.Contractor.Users
|
||||
{
|
||||
@ -37,6 +36,14 @@ namespace IronIntel.Contractor.Users
|
||||
moudles.Insert(0, FeatureModule.Modules[0]);
|
||||
foreach (var m in moudles)
|
||||
{
|
||||
if (m.Id == FeatureModule.MODULE_TEAM && user.UserType != UserTypes.SupperAdmin)
|
||||
continue;
|
||||
|
||||
if (m.Id == FeatureModule.MODULE_MANAGEASSETS && pmss.FirstOrDefault(p => p.Item1.Id == Feature.MANAGE_ASSETS) == null)
|
||||
continue;
|
||||
//if (m.Id == FeatureModule.MODULE_JOBSITES && pmss.FirstOrDefault(p => p.Item1.Id == Feature.JOB_SITES) == null)
|
||||
// continue;
|
||||
|
||||
AppModuleInfo ami = new AppModuleInfo();
|
||||
ami.ID = m.Id.ToString();
|
||||
ami.Name = m.Name;
|
||||
@ -49,14 +56,19 @@ namespace IronIntel.Contractor.Users
|
||||
ami.Visible = true;
|
||||
ami.ModuleType = AppModuleType.System;
|
||||
|
||||
if (m.Id == FeatureModule.MODULE_ASSETHEALTH)
|
||||
if (m.Id == FeatureModule.MODULE_JOBSITES)
|
||||
ami.SubItems = ami.GetJobsiteNavigateItems(pmss);
|
||||
else if (m.Id == FeatureModule.MODULE_ASSETHEALTH)
|
||||
ami.SubItems = ami.GetMaintenanceNavigateItems(pmss);
|
||||
else if (m.Id == FeatureModule.MODULE_SECURITY)
|
||||
ami.SubItems = ami.GetSecurityNavigateItems(pmss, user);
|
||||
else if (m.Id == FeatureModule.MODULE_MANAGEASSETS)
|
||||
ami.SubItems = ami.GetAssetsNavigateItems(pmss, user);
|
||||
else if (m.Id == FeatureModule.MODULE_CREDENTIAL)
|
||||
ami.SubItems = ami.GetCredentialNavigateItems(pmss, user);
|
||||
|
||||
list.Add(ami);
|
||||
if (ami.SubItems == null || ami.SubItems.Count > 0)
|
||||
list.Add(ami);
|
||||
}
|
||||
AppModuleInfo[] wsps = GetFICWorkspace(user);
|
||||
foreach (AppModuleInfo ap in wsps)
|
||||
@ -82,22 +94,6 @@ namespace IronIntel.Contractor.Users
|
||||
return false;
|
||||
}
|
||||
|
||||
private static AppModuleInfo ConvertToAppModule(DataRow dr)
|
||||
{
|
||||
AppModuleInfo ai = new AppModuleInfo();
|
||||
ai.ID = FIDbAccess.GetFieldString(dr["ID"], string.Empty);
|
||||
ai.Name = FIDbAccess.GetFieldString(dr["APPMODULENAME"], string.Empty);
|
||||
ai.Description = FIDbAccess.GetFieldString(dr["APPMODULEDESC"], string.Empty);
|
||||
ai.Url = FIDbAccess.GetFieldString(dr["URL"], string.Empty);
|
||||
ai.IconPath = FIDbAccess.GetFieldString(dr["ICONPATH"], string.Empty);
|
||||
ai.BackColor = FIDbAccess.GetFieldString(dr["BACKCOLOR"], string.Empty);
|
||||
ai.ForeColor = FIDbAccess.GetFieldString(dr["FORECOLOR"], string.Empty);
|
||||
ai.OpenInNewWindow = FIDbAccess.GetFieldInt(dr["OPENINNEWWINDOW"], 0) == 1;
|
||||
ai.Visible = true;
|
||||
ai.ModuleType = AppModuleType.System;
|
||||
return ai;
|
||||
}
|
||||
|
||||
public static AppModuleInfo[] GetFICWorkspace(UserInfo user)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(SystemParams.FICDbConnectionString))
|
||||
|
@ -1,5 +1,10 @@
|
||||
using FI.FIC;
|
||||
using FI.FIC.Contracts.DataObjects.BaseObject;
|
||||
using Foresight.Fleet.Services.Asset;
|
||||
using Foresight.Fleet.Services.JobSite;
|
||||
using Foresight.Fleet.Services.User;
|
||||
using Foresight.Standard;
|
||||
using IronIntel.Contractor.Machines;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@ -10,7 +15,7 @@ namespace IronIntel.Contractor.Users
|
||||
{
|
||||
public class UserInfo
|
||||
{
|
||||
private static string[] ContactTypeNames = { "Foreman", "Driver", "Inventory Manager", "Rental Manager", "Service Manager", "Fleet Manager", "Technician", "Other" };
|
||||
private static string[] ContactTypeNames = { "Foreman", "Driver", "Inventory Manager", "Rental Manager", "Service Manager", "Fleet Manager", "Technician", "Advisor", "Other" };
|
||||
public string IID { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string DisplayName { get; set; }
|
||||
@ -18,6 +23,7 @@ namespace IronIntel.Contractor.Users
|
||||
public bool IsUser { get; set; }
|
||||
public ContactTypes ContactType { get; set; }
|
||||
public string Mobile { get; set; }
|
||||
public string MobilePhoneDisplayText { get; set; }
|
||||
public string BusinessPhone { get; set; }
|
||||
public string Notes { get; set; }
|
||||
public bool Active { get; set; }
|
||||
@ -25,6 +31,7 @@ namespace IronIntel.Contractor.Users
|
||||
public string TransPass { get; set; }
|
||||
public string ManagerIID { get; set; }
|
||||
public string ManagerName { get; set; }
|
||||
public bool AssignedWorkOrders { get; set; }
|
||||
public bool EmailOptOut { get; set; }
|
||||
public bool InspectEmailList { get; set; }
|
||||
public bool TeamIntelligenceUser { get; set; }
|
||||
@ -35,16 +42,29 @@ namespace IronIntel.Contractor.Users
|
||||
public bool AllowLoginIntoPC { get; set; }
|
||||
public bool AllowLoginIntoInspectMobile { get; set; }
|
||||
public bool AllowLoginIntoFleetMobile { get; set; }
|
||||
public bool AllowMobileBarcodeScanning { get; set; }
|
||||
public string PreferredLanguage { get; set; }
|
||||
public string TimeZone { get; set; }
|
||||
public string LandingPage { get; set; }
|
||||
public string GroupNamesStr { get { return (GroupNames == null || GroupNames.Length == 0) ? "" : string.Join(",", GroupNames); } }
|
||||
|
||||
public long[] AssetIDs { get; set; }
|
||||
public string[] AssetGroupIDs { get; set; }
|
||||
public string[] JobsiteIDs { get; set; }
|
||||
public string[] AssetTypeIDs { get; set; }
|
||||
public int[] LocationIds { get; set; }
|
||||
public int[] DepartmentIds { get; set; }
|
||||
public bool WorkOrderFollower { get; set; }
|
||||
public bool ExcelExports { get; set; }
|
||||
public LoginVerifyTypes LoginVerifyType { get; set; } = LoginVerifyTypes.OrganizationSetting;
|
||||
public UserInfo[] Managers { get; set; }
|
||||
public string ContactTypeName
|
||||
{
|
||||
get
|
||||
{
|
||||
int cType = (int)ContactType;
|
||||
if (cType > 7)
|
||||
cType = 7;
|
||||
if (cType > 8)
|
||||
cType = 8;
|
||||
return ContactTypeNames[cType];
|
||||
}
|
||||
}
|
||||
@ -56,8 +76,12 @@ namespace IronIntel.Contractor.Users
|
||||
public SubscribeMessageByEmail Subscribe { get; set; }
|
||||
public KeyValuePair<int, Foresight.Fleet.Services.User.Permissions[]>[] Features { get; set; }
|
||||
|
||||
public EmailSchedule Schedule { get; set; }
|
||||
public string UserAlertFilter { get; set; }
|
||||
|
||||
public EmailSchedule Schedule { get; set; }
|
||||
public StringKeyValue[] MessageTypes { get; set; }
|
||||
public UserFilterTemplateItem[] FilterTemplates { get; set; }
|
||||
public int[] DeleteFilterTemplates { get; set; }
|
||||
}
|
||||
|
||||
public enum UserTypes
|
||||
@ -76,6 +100,7 @@ namespace IronIntel.Contractor.Users
|
||||
ServiceManager = 4,
|
||||
FleetManager = 5,
|
||||
Technician = 6,
|
||||
Advisor = 7,
|
||||
Other = 100
|
||||
}
|
||||
|
||||
@ -85,4 +110,15 @@ namespace IronIntel.Contractor.Users
|
||||
public string ID { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class UserFilterTemplateItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public AssetListItemInfo[] Assets { get; set; }
|
||||
public MachineGroup[] AssetGroups { get; set; }
|
||||
public AssetType[] AssetTypes { get; set; }
|
||||
public JobSiteItem[] Jobsites { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,12 +2,12 @@
|
||||
using FI.FIC.Contracts.DataObjects;
|
||||
using FI.FIC.Contracts.DataObjects.BaseObject;
|
||||
using FI.FIC.Contracts.DataObjects.Enumeration;
|
||||
using FI.FIC.Models;
|
||||
using Foresight.Data;
|
||||
using Foresight.Fleet.Services.Asset;
|
||||
using Foresight.Fleet.Services.Customer;
|
||||
using Foresight.Fleet.Services.User;
|
||||
using Foresight.ServiceModel;
|
||||
using IronIntel.Services.Customers;
|
||||
using IronIntel.Services.Users;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
@ -17,11 +17,11 @@ namespace IronIntel.Contractor.Users
|
||||
{
|
||||
public static class UserManagement
|
||||
{
|
||||
public static UserInfo[] GetUsers(string companyid = null)
|
||||
public static UserInfo[] GetUsers(string companyid = null, string filter = null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(companyid))
|
||||
companyid = SystemParams.CompanyID;
|
||||
var users = FleetServiceClientHelper.CreateClient<UserQueryClient>(companyid, string.Empty).GetUsersByCustomerID(companyid, "");
|
||||
var users = FleetServiceClientHelper.CreateClient<UserQueryClient>(companyid, string.Empty).GetUsersByCustomerID(companyid, filter);
|
||||
if (users == null || users.Length == 0)
|
||||
return new UserInfo[0];
|
||||
|
||||
@ -35,16 +35,6 @@ namespace IronIntel.Contractor.Users
|
||||
list.Add(u);
|
||||
}
|
||||
return list.ToArray();
|
||||
|
||||
//const string SQL = @"SELECT USERIID,USERID,USERNAME,USERTYPE,EMAIL,ACTIVE,MOBILE,BUSINESSPHONE,NOTES FROM USERS";
|
||||
//FIDbAccess db = SystemParams.GetDbInstance();
|
||||
//DataTable dt = db.GetDataTableBySQL(SQL);
|
||||
//List<UserInfo> list = new List<UserInfo>();
|
||||
//foreach (DataRow dr in dt.Rows)
|
||||
//{
|
||||
// list.Add(ConvertToUserInfo(dr));
|
||||
//}
|
||||
//return list.ToArray();
|
||||
}
|
||||
|
||||
|
||||
@ -86,6 +76,30 @@ namespace IronIntel.Contractor.Users
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
public static UserInfo[] GetSalespersons(string sessionid, string companyid = null, string filter = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(companyid))
|
||||
companyid = SystemParams.CompanyID;
|
||||
var users = FleetServiceClientHelper.CreateClient<UserQueryClient>(companyid, sessionid).GetUsersByCustomerID(companyid, "");
|
||||
List<UserInfo> list = new List<UserInfo>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
if (user.Active)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(filter))
|
||||
list.Add(ConvertUserItem(user));
|
||||
else
|
||||
{
|
||||
if (user.ID.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0
|
||||
|| user.Name.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0
|
||||
|| user.FOB.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0)
|
||||
list.Add(ConvertUserItem(user));
|
||||
}
|
||||
}
|
||||
}
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
private static UserInfo ConvertUserItem(Foresight.Fleet.Services.User.UserInfo user)
|
||||
{
|
||||
if (user == null)
|
||||
@ -98,12 +112,14 @@ namespace IronIntel.Contractor.Users
|
||||
u.Active = user.Active;
|
||||
u.TextAddress = user.TextAddress;
|
||||
u.Mobile = user.Mobile;
|
||||
u.MobilePhoneDisplayText = user.MobilePhoneDisplayText;
|
||||
u.BusinessPhone = user.BusinessPhone;
|
||||
u.Notes = user.Remark;
|
||||
u.IsUser = user.IsUser;
|
||||
u.ContactType = (ContactTypes)user.ContactType;
|
||||
u.ManagerIID = user.ManagerIID;
|
||||
u.ManagerName = user.ManagerName;
|
||||
u.AssignedWorkOrders = user.AssignedWorkOrders;
|
||||
u.EmailOptOut = user.EmailOptOut;
|
||||
u.InspectEmailList = user.InspectEmailList;
|
||||
u.TeamIntelligenceUser = user.TeamIntelligenceUser;
|
||||
@ -112,6 +128,13 @@ namespace IronIntel.Contractor.Users
|
||||
u.AllowLoginIntoPC = user.AllowLoginIntoPC;
|
||||
u.AllowLoginIntoFleetMobile = user.AllowLoginIntoFleetMobile;
|
||||
u.AllowLoginIntoInspectMobile = user.AllowLoginIntoInspectMobile;
|
||||
u.AllowMobileBarcodeScanning = user.AllowMobileBarcodeScanning;
|
||||
u.PreferredLanguage = user.PreferredLanguage;
|
||||
u.LoginVerifyType = user.LoginVerifyType;
|
||||
u.TimeZone = user.TimeZone;
|
||||
if (!string.IsNullOrWhiteSpace(u.ManagerIID))
|
||||
u.Managers = new UserInfo[] { new UserInfo() { IID = u.ManagerIID, DisplayName = u.ManagerName } };
|
||||
|
||||
return u;
|
||||
}
|
||||
|
||||
@ -133,6 +156,7 @@ namespace IronIntel.Contractor.Users
|
||||
u.IsUser = user.IsUser;
|
||||
u.ContactType = (Foresight.Fleet.Services.User.ContactTypes)user.ContactType;
|
||||
u.ManagerIID = user.ManagerIID;
|
||||
u.AssignedWorkOrders = user.AssignedWorkOrders;
|
||||
u.EmailOptOut = user.EmailOptOut;
|
||||
u.InspectEmailList = user.InspectEmailList;
|
||||
u.TeamIntelligenceUser = user.TeamIntelligenceUser;
|
||||
@ -141,18 +165,23 @@ namespace IronIntel.Contractor.Users
|
||||
u.AllowLoginIntoPC = user.AllowLoginIntoPC;
|
||||
u.AllowLoginIntoFleetMobile = user.AllowLoginIntoFleetMobile;
|
||||
u.AllowLoginIntoInspectMobile = user.AllowLoginIntoInspectMobile;
|
||||
u.AllowMobileBarcodeScanning = user.AllowMobileBarcodeScanning;
|
||||
u.PreferredLanguage = user.PreferredLanguage;
|
||||
u.LoginVerifyType = user.LoginVerifyType;
|
||||
u.TimeZone = user.TimeZone;
|
||||
return u;
|
||||
}
|
||||
|
||||
public static UserInfo[] GetUnmanagementUsers()
|
||||
{
|
||||
const string SQL = @"SELECT USERIID,USERID,USERNAME,USERTYPE,EMAIL,ACTIVE,MOBILE,BUSINESSPHONE,NOTES FROM USERS where isnull(ISUSER,0)=1 and (USERTYPE=0 or USERTYPE=1)";
|
||||
FIDbAccess db = SystemParams.GetDbInstance();
|
||||
DataTable dt = db.GetDataTableBySQL(SQL);
|
||||
var users = FleetServiceClientHelper.CreateClient<UserQueryClient>(SystemParams.CompanyID).GetUsersByCustomerID(SystemParams.CompanyID, "");
|
||||
List<UserInfo> list = new List<UserInfo>();
|
||||
foreach (DataRow dr in dt.Rows)
|
||||
foreach (var user in users)
|
||||
{
|
||||
list.Add(ConvertToUserInfo(dr));
|
||||
if (user.IsUser && user.UserType < Foresight.Fleet.Services.User.UserTypes.Admin)
|
||||
{
|
||||
list.Add(ConvertUserItem(user));
|
||||
}
|
||||
}
|
||||
return list.ToArray();
|
||||
}
|
||||
@ -173,12 +202,6 @@ namespace IronIntel.Contractor.Users
|
||||
{
|
||||
var dealerusers = GetUsers(dealer.ID);
|
||||
ls.AddRange(dealerusers);
|
||||
//LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
//UserInfoEx[] dealerusers = lp.GetAllUsersByCustomerID(dealer.ID);
|
||||
//foreach (UserInfoEx u in dealerusers)
|
||||
//{
|
||||
// ls.Add(ConvertToServiceUserInfo(u));
|
||||
//}
|
||||
}
|
||||
}
|
||||
return ls.ToArray();
|
||||
@ -193,30 +216,6 @@ namespace IronIntel.Contractor.Users
|
||||
list.Add(ConvertUserItem(user));
|
||||
}
|
||||
return list.ToArray();
|
||||
|
||||
//LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
//UserInfoEx[] susers = lp.GetAllUsersByCustomerID("Foresight");
|
||||
|
||||
//List<UserInfo> list = new List<UserInfo>();
|
||||
//foreach (UserInfoEx u in susers)
|
||||
//{
|
||||
// UserInfo user = ConvertToServiceUserInfo(u);
|
||||
// list.Add(user);
|
||||
//}
|
||||
//return list.ToArray();
|
||||
}
|
||||
|
||||
private static UserInfo ConvertToServiceUserInfo(UserInfoEx suer)
|
||||
{
|
||||
UserInfo user = new UserInfo();
|
||||
user.IID = suer.UID;
|
||||
user.ID = suer.ID;
|
||||
user.DisplayName = suer.Name;
|
||||
user.Mobile = suer.Mobile;
|
||||
user.BusinessPhone = suer.BusinessPhone;
|
||||
user.Active = suer.Active;
|
||||
user.UserType = (UserTypes)3;
|
||||
return user;
|
||||
}
|
||||
|
||||
private static UserInfo ConvertToUserInfo(DataRow dr)
|
||||
@ -234,21 +233,6 @@ namespace IronIntel.Contractor.Users
|
||||
return ui;
|
||||
}
|
||||
|
||||
private static UserInfo GetLocalUserInfo(string sessionid, string iid)
|
||||
{
|
||||
var user = FleetServiceClientHelper.CreateClient<UserQueryClient>(sessionid).GetUserByIID(iid);
|
||||
return ConvertUserItem(user);
|
||||
//const string SQL = "select * from USERS where USERIID={0}";
|
||||
|
||||
//FIDbAccess db = SystemParams.GetDbInstance();
|
||||
//DataTable dt = db.GetDataTableBySQL(SQL, iid);
|
||||
//if (dt.Rows.Count == 0)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
//return ConvertToUserInfo(dt.Rows[0]);
|
||||
}
|
||||
|
||||
public static UserInfo GetUserBySessionID(string sessionid)
|
||||
{
|
||||
var ls = FleetServiceClientHelper.CreateClient<UserQueryClient>(sessionid).GetLoginSession(sessionid);
|
||||
@ -264,78 +248,28 @@ namespace IronIntel.Contractor.Users
|
||||
ui.DisplayName = ls.User.Name;
|
||||
ui.Active = true;
|
||||
ui.UserType = UserTypes.SupperAdmin;
|
||||
ui.TimeZone = ls.User.TimeZone;
|
||||
return ui;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ConvertUserItem(ls.User);
|
||||
}
|
||||
|
||||
//LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
//LoginSession ls = lp.GetLoginSession(sessionid);
|
||||
|
||||
//if (ls == null)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
//if (ls.User.IsForesightUser)
|
||||
//{
|
||||
// UserInfo ui = new UserInfo();
|
||||
// ui.IID = ls.User.UID;
|
||||
// ui.ID = ls.User.ID;
|
||||
// ui.DisplayName = ls.User.Name;
|
||||
// ui.Active = true;
|
||||
// ui.UserType = UserTypes.SupperAdmin;
|
||||
// return ui;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// return GetLocalUserInfo(ls.User.UID);
|
||||
//}
|
||||
}
|
||||
|
||||
public static UserInfo GetUserByIID(string iid)
|
||||
{
|
||||
var user = FleetServiceClientHelper.CreateClient<UserQueryClient>().GetUserByIID(iid);
|
||||
return ConvertUserItem(user);
|
||||
|
||||
//LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
//UserInfoEx ui1 = lp.GetUserInfoEx(iid);
|
||||
//if (ui1 == null)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
|
||||
//if (ui1.IsForesightUser)
|
||||
//{
|
||||
// UserInfo ui = new UserInfo();
|
||||
// ui.IID = ui1.UID;
|
||||
// ui.ID = ui1.ID;
|
||||
// ui.DisplayName = ui1.Name;
|
||||
// ui.Active = true;
|
||||
// ui.UserType = UserTypes.SupperAdmin;
|
||||
// return ui;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// return GetLocalUserInfo(iid);
|
||||
//}
|
||||
}
|
||||
|
||||
public static UserInfo GetUserByID(string userid)
|
||||
{
|
||||
var user = FleetServiceClientHelper.CreateClient<UserQueryClient>().GetUserByUserID(userid);
|
||||
return ConvertUserItem(user);
|
||||
//LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
//UserInfoEx ui1 = lp.GetUserInfoExByUserID(userid);
|
||||
//if (ui1 == null)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
//return GetUserByIID(ui1.UID);
|
||||
}
|
||||
|
||||
public static string AddUser(UserInfo ui, string password, string addby, string sessionid, string clienthost)
|
||||
public static string AddUser(UserInfo ui, string password, string addby, string sessionid, string clienthost, byte[] avadarBytes)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -346,6 +280,12 @@ namespace IronIntel.Contractor.Users
|
||||
client.SessionID = sessionid;
|
||||
client.ClientHost = clienthost;
|
||||
user = client.AddNewUser(user, password, addby);
|
||||
if (avadarBytes != null)
|
||||
{
|
||||
avadarBytes = Helper.GetThumbImg(avadarBytes, 300, 300);
|
||||
client.SetUserAvatar(user.UID, avadarBytes);
|
||||
}
|
||||
|
||||
return user.UID;
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -353,47 +293,10 @@ namespace IronIntel.Contractor.Users
|
||||
SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".AddUser", "Add new user failed: " + ui.ID, ex.ToString());
|
||||
throw;
|
||||
}
|
||||
|
||||
//const string SQL = @"insert into USERS(USERIID,USERID,USERNAME,USERTYPE,EMAIL,ACTIVE,MOBILE,BUSINESSPHONE,NOTES) values({0},{1},{2},{3},{4},{5},{6},{7},{8})";
|
||||
//try
|
||||
//{
|
||||
// LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
// FIDbAccess db = SystemParams.GetDbInstance();
|
||||
// UserInfoEx user = ConvertUserInfoTOUserInfoEx(ui);
|
||||
// if (!string.IsNullOrWhiteSpace(password))
|
||||
// {
|
||||
// ui.IID = lp.RegisterUser(user, password);
|
||||
// db.ExecSQL(SQL, ui.IID, ui.ID, ui.DisplayName, (int)ui.UserType, ui.ID, ui.Active ? 1 : 0, ui.Mobile, ui.BusinessPhone, ui.Notes);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// ui.IID = lp.RegisterUser(user, Guid.NewGuid().ToString());
|
||||
// db.ExecSQL(SQL, ui.IID, ui.ID, ui.DisplayName, (int)ui.UserType, ui.ID, ui.Active ? 1 : 0, ui.Mobile, ui.BusinessPhone, ui.Notes);
|
||||
// lp.ForgotPassword(ui.ID);
|
||||
// }
|
||||
// return ui.IID;
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".AddUserInfo", "Add new user failed: " + ui.ID, ex.ToString());
|
||||
// throw;
|
||||
//}
|
||||
}
|
||||
|
||||
private static UserInfoEx ConvertUserInfoTOUserInfoEx(UserInfo ui)
|
||||
{
|
||||
UserInfoEx user = new UserInfoEx();
|
||||
user.UID = ui.IID;
|
||||
user.ID = ui.ID;
|
||||
user.Name = ui.DisplayName;
|
||||
user.Mobile = ui.Mobile;
|
||||
user.BusinessPhone = ui.BusinessPhone;
|
||||
user.Active = ui.Active;
|
||||
user.CompanyID = SystemParams.CompanyID;
|
||||
return user;
|
||||
}
|
||||
|
||||
public static void UpdateUserInfo(UserInfo ui, string updatedby, string sessionid, string clienthost)
|
||||
public static void UpdateUserInfo(UserInfo ui, string updatedby, string sessionid, string clienthost, byte[] avadarBytes)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -404,28 +307,30 @@ namespace IronIntel.Contractor.Users
|
||||
client.SessionID = sessionid;
|
||||
client.ClientHost = clienthost;
|
||||
client.UpdateUser(user, updatedby);
|
||||
if (avadarBytes != null)
|
||||
{
|
||||
avadarBytes = Helper.GetThumbImg(avadarBytes, 300, 300);
|
||||
client.SetUserAvatar(user.UID, avadarBytes);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".UpdateUserInfo", "Update user failed: " + ui.IID, ex.ToString());
|
||||
throw;
|
||||
}
|
||||
|
||||
|
||||
//const string SQL = @" update USERS set USERNAME={0},MOBILE={1},BUSINESSPHONE={2},ACTIVE={3},USERTYPE={4},NOTES={5} where USERIID={6}";
|
||||
//try
|
||||
//{
|
||||
// LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
// UserInfoEx user = ConvertUserInfoTOUserInfoEx(ui);
|
||||
// lp.UpdateUser(user);
|
||||
// FIDbAccess db = SystemParams.GetDbInstance();
|
||||
// db.ExecSQL(SQL, ui.DisplayName, ui.Mobile, ui.BusinessPhone, ui.Active ? 1 : 0, ui.UserType, ui.Notes, ui.IID);
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".UpdateUserInfo", "Update user failed: " + ui.IID, ex.ToString());
|
||||
// throw;
|
||||
//}
|
||||
}
|
||||
public static void SetUserAvatar(string sessionid, string uid, byte[] avadarBytes)
|
||||
{
|
||||
try
|
||||
{
|
||||
var client = FleetServiceClientHelper.CreateClient<UserQueryClient>(sessionid);
|
||||
client.SetUserAvatar(uid, avadarBytes);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".SetUserAvatar", "Set user Avatar failed: " + uid, ex.ToString());
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ResetPassword(string useriid, string password, string resetby, string sessionid, string clienthost)
|
||||
@ -434,20 +339,6 @@ namespace IronIntel.Contractor.Users
|
||||
client.SessionID = sessionid;
|
||||
client.ClientHost = clienthost;
|
||||
client.ResetPassword(useriid, password, true, resetby);
|
||||
|
||||
//const string SQL = "select USERID from USERS where USERIID={0}";
|
||||
//FIDbAccess db = SystemParams.GetDbInstance();
|
||||
//string userid = db.GetRC1BySQL(SQL, useriid).ToString();
|
||||
//try
|
||||
//{
|
||||
// LoginProvider lp = SystemParams.GetLoginProvider();
|
||||
// lp.ForgotPassword(userid);
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// SystemParams.WriteLog("Error", typeof(UserManagement).FullName + ".ResetPassword", "Reset Password failed: " + useriid, ex.ToString());
|
||||
// throw;
|
||||
//}
|
||||
}
|
||||
|
||||
public static bool CanDeleteUser(string useriid)
|
||||
@ -456,6 +347,13 @@ namespace IronIntel.Contractor.Users
|
||||
return true;
|
||||
}
|
||||
|
||||
public static byte[] GetUserAvatar(string sessionid, string useriid)
|
||||
{
|
||||
|
||||
var client = FleetServiceClientHelper.CreateClient<UserQueryClient>(sessionid);
|
||||
return client.GetUserAvatar(useriid);
|
||||
}
|
||||
|
||||
|
||||
#region user group
|
||||
|
||||
@ -515,26 +413,6 @@ namespace IronIntel.Contractor.Users
|
||||
return result;
|
||||
}
|
||||
|
||||
public static void SaveUserGroups(string userIID, string[] groupids)
|
||||
{
|
||||
if (groupids == null) return;//groupids为null表示前端group没有加载,不修改用户的Group.
|
||||
const string SQL_map = "insert into USERGROUPMAP(GROUPID,USERIID) values({0},{1})";
|
||||
const string SQL_del = "delete from USERGROUPMAP where USERIID={0}";
|
||||
|
||||
using (FISqlTransaction tran = new FISqlTransaction(SystemParams.DataDbConnectionString))
|
||||
{
|
||||
tran.ExecSQL(SQL_del, userIID);
|
||||
if (groupids.Length > 0)
|
||||
{
|
||||
foreach (string id in groupids)
|
||||
{
|
||||
tran.ExecSQL(SQL_map, id, userIID);
|
||||
}
|
||||
}
|
||||
tran.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
public static void AddGroup(UserGroupInfo gi)
|
||||
{
|
||||
const string SQL_group = "insert into USERGROUPS(GROUPID,GROUPNAME,NOTES) values({0},{1},{2})";
|
||||
@ -555,7 +433,6 @@ namespace IronIntel.Contractor.Users
|
||||
}
|
||||
tran.Commit();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void UpdateGroup(UserGroupInfo gi)
|
||||
@ -643,49 +520,7 @@ namespace IronIntel.Contractor.Users
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region User Machines/Jobsite
|
||||
|
||||
public static void SaveUserMachines(string uid, string[] machineids)
|
||||
{
|
||||
const string SQL_D = "delete USERMACHINEMAP where USERIID={0}";
|
||||
const string SQL = @"insert into USERMACHINEMAP(USERIID,MACHINEID) values ({0},{1})";
|
||||
|
||||
FIDbAccess db = SystemParams.GetDbInstance();
|
||||
db.ExecSQL(SQL_D, uid);
|
||||
|
||||
foreach (var mid in machineids)
|
||||
{
|
||||
db.ExecSQL(SQL, uid, mid);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SaveUserJobsites(string uid, string[] jobsiteids)
|
||||
{
|
||||
const string SQL_D = "delete USERJOBSITEMAP where USERIID={0}";
|
||||
const string SQL = @"insert into USERJOBSITEMAP(USERIID,JOBSITEID) values ({0},{1})";
|
||||
|
||||
FIDbAccess db = SystemParams.GetDbInstance();
|
||||
db.ExecSQL(SQL_D, uid);
|
||||
|
||||
foreach (var jsid in jobsiteids)
|
||||
{
|
||||
db.ExecSQL(SQL, uid, jsid);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SaveMachineUsers(string machineid, string[] uids, FISqlConnection db = null)
|
||||
{
|
||||
const string SQL_D = "delete USERMACHINEMAP where MACHINEID={0}";
|
||||
const string SQL = @"insert into USERMACHINEMAP(USERIID,MACHINEID) values ({0},{1})";
|
||||
if (db == null)
|
||||
db = SystemParams.GetDbInstance();
|
||||
db.ExecSQL(SQL_D, machineid);
|
||||
|
||||
foreach (var uid in uids)
|
||||
{
|
||||
db.ExecSQL(SQL, uid, machineid);
|
||||
}
|
||||
}
|
||||
#region User Machines/Jobsite/MachineType/Department/Location
|
||||
|
||||
public static UserInfo[] GetUsersByAssetID(string sessionid, long assetid, string companyid)
|
||||
{
|
||||
@ -700,6 +535,65 @@ namespace IronIntel.Contractor.Users
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
public static UserInfo[] GetWorkOrderAssignToUsers(string sessionid, string companyid, long assetid, int locid, int depid)
|
||||
{
|
||||
if (string.IsNullOrEmpty(companyid))
|
||||
companyid = SystemParams.CompanyID;
|
||||
var users = FleetServiceClientHelper.CreateClient<AssetQueryClient>(companyid, sessionid).GetUsersAvailableForAsset(companyid, assetid);
|
||||
var cusers = FleetServiceClientHelper.CreateClient<AssetDataAdjustClient>(companyid, sessionid).GetAssetContacts(companyid, assetid);
|
||||
|
||||
List<Foresight.Fleet.Services.User.UserInfo> allusers = new List<Foresight.Fleet.Services.User.UserInfo>();
|
||||
if (users != null && users.Length > 0)
|
||||
allusers.AddRange(users);
|
||||
if (cusers != null && cusers.Length > 0)
|
||||
allusers.AddRange(cusers);
|
||||
|
||||
string[] depandlocusers = null;
|
||||
if (locid > 0 || depid > 0)
|
||||
depandlocusers = FleetServiceClientHelper.CreateClient<UserProfileProvider>(companyid, sessionid).GetUsersByLocAndDep(companyid, locid, depid);
|
||||
List<UserInfo> list = new List<UserInfo>();
|
||||
List<string> uids = new List<string>();
|
||||
foreach (var user in allusers)
|
||||
{
|
||||
if (uids.Contains(user.UID))
|
||||
continue;
|
||||
|
||||
if (!user.AssignedWorkOrders && user.ContactType != Foresight.Fleet.Services.User.ContactTypes.Advisor) continue;
|
||||
if (depandlocusers == null || depandlocusers.Contains(user.UID, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
list.Add(ConvertUserItem(user));
|
||||
uids.Add(user.UID);
|
||||
}
|
||||
}
|
||||
return list.OrderBy(u => u.DisplayName).ToArray();
|
||||
}
|
||||
|
||||
public static UserInfo[] GetUsersByAssets(string sessionid, long[] assetids, string companyid)
|
||||
{
|
||||
if (string.IsNullOrEmpty(companyid))
|
||||
companyid = SystemParams.CompanyID;
|
||||
var users = FleetServiceClientHelper.CreateClient<AssetQueryClient>(companyid, sessionid).GetUsersAvailableForAssets(companyid, assetids);
|
||||
List<UserInfo> list = new List<UserInfo>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
list.Add(ConvertUserItem(user));
|
||||
}
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
public static UserInfo[] GetUsersByJobsiteID(string sessionid, long jsid, string companyid)
|
||||
{
|
||||
if (string.IsNullOrEmpty(companyid))
|
||||
companyid = SystemParams.CompanyID;
|
||||
var users = FleetServiceClientHelper.CreateClient<AssetQueryClient>(companyid, sessionid).GetUsersAvailableForJobsite(companyid, jsid);
|
||||
List<UserInfo> list = new List<UserInfo>();
|
||||
foreach (var user in users)
|
||||
{
|
||||
list.Add(ConvertUserItem(user));
|
||||
}
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取机器对应的ContactID
|
||||
/// </summary>
|
||||
@ -864,11 +758,11 @@ namespace IronIntel.Contractor.Users
|
||||
|
||||
return list;
|
||||
}
|
||||
internal static UserInfoItem[] GetPermissionUsers()
|
||||
internal static UserInfoItem[] GetPermissionUsers1()
|
||||
{
|
||||
List<UserInfoItem> users = new List<UserInfoItem>();
|
||||
|
||||
DataTable authenDt = SystemParams.GetDbInstance().GetDataTableBySQL("SELECT * FROM Users");
|
||||
DataTable authenDt = SystemParams.GetDbInstance().GetDataTableBySQL("select * from Users where isnull(DELETED,0)=0");
|
||||
|
||||
string str = "";
|
||||
for (int i = authenDt.Rows.Count - 1; i >= 0; i--)
|
||||
@ -890,7 +784,30 @@ namespace IronIntel.Contractor.Users
|
||||
return users.ToArray();
|
||||
}
|
||||
|
||||
internal static UserPermissionData[] GetUserOrGroupPermission(string UserOrGroup, string objIID, string userIID)
|
||||
internal static UserInfoItem[] GetPermissionUsers()
|
||||
{
|
||||
List<UserInfoItem> ls = new List<UserInfoItem>();
|
||||
|
||||
var users = FleetServiceClientHelper.CreateClient<UserQueryClient>(SystemParams.CompanyID, string.Empty).GetUsersByCustomerID(SystemParams.CompanyID, "");
|
||||
if (users == null || users.Length == 0)
|
||||
return new UserInfoItem[0];
|
||||
|
||||
foreach (var u in users)
|
||||
{
|
||||
if (string.Compare(u.ID, "admin", true) == 0 || (int)u.UserType != 1) //EMUserType.Common
|
||||
continue;
|
||||
|
||||
UserInfoItem user = new UserInfoItem();
|
||||
user.IID = u.UID;
|
||||
user.ID = u.ID;
|
||||
user.DisplayName = u.Name;
|
||||
ls.Add(user);
|
||||
}
|
||||
|
||||
return ls.ToArray();
|
||||
}
|
||||
|
||||
internal static UserPermissionData[] GetUserOrGroupPermission(string UserOrGroup, string objIID, string userIID, string lang)
|
||||
{
|
||||
List<UserPermissionData> UserOrGroupPermissionDatas = new List<UserPermissionData>();
|
||||
|
||||
@ -910,8 +827,8 @@ namespace IronIntel.Contractor.Users
|
||||
UserPermissionData upmd = new UserPermissionData();
|
||||
upmd.FunctionIID = opr.IID;
|
||||
upmd.IsAllowed = false;
|
||||
upmd.ManagementFunction = ResManager.GetLanguage(ResManager.GetResourceString(opr.FunctionName));
|
||||
upmd.Description = ResManager.GetLanguage(ResManager.GetResourceString(opr.Description));
|
||||
upmd.ManagementFunction = ResManager.GetLanguage(lang, ResManager.GetResourceString(opr.FunctionName));
|
||||
upmd.Description = ResManager.GetLanguage(lang, ResManager.GetResourceString(opr.Description));
|
||||
upmd.IsNotPermissionInGroup = true;
|
||||
|
||||
UserOrGroupPermissionDatas.Add(upmd);
|
||||
|
@ -14,6 +14,7 @@ namespace IronIntel.Contractor.Users
|
||||
public static class UserParams
|
||||
{
|
||||
private const string _AutoRecenterMap = "AutoRecenterMap";
|
||||
private const string _ShowJSTooltip = "ShowJSTooltip";
|
||||
private const string _BaseMap = "BaseMap";
|
||||
private const string _MapViewContratorID = "MapViewContratorID";
|
||||
private const string _MapAlertLayer = "MapAlertLayer";
|
||||
@ -26,6 +27,7 @@ namespace IronIntel.Contractor.Users
|
||||
private const string _UnShownJobsites = "UnShownJobsites";
|
||||
private const string _UnShownJobsiteMachines = "UnShownJobsiteMachines";
|
||||
private const string _Onroad = "Onroad";
|
||||
private const string _Attachment = "Attachment";
|
||||
private const string _ExcludeNoLocation = "ExcludeNoLocation";
|
||||
|
||||
private const string _MapViewSearches = "MapViewSearches";
|
||||
@ -47,6 +49,9 @@ namespace IronIntel.Contractor.Users
|
||||
case _AutoRecenterMap:
|
||||
userParams.AutoRecenterMap = Helper.IsTrue(value);
|
||||
break;
|
||||
case _ShowJSTooltip:
|
||||
userParams.ShowJSTooltip = Helper.IsTrue(value);
|
||||
break;
|
||||
case _BaseMap:
|
||||
userParams.BaseMap = value;
|
||||
break;
|
||||
@ -80,6 +85,9 @@ namespace IronIntel.Contractor.Users
|
||||
case _Onroad:
|
||||
userParams.Onroad = int.Parse(value);
|
||||
break;
|
||||
case _Attachment:
|
||||
userParams.Attachment = int.Parse(value);
|
||||
break;
|
||||
case _ExcludeNoLocation:
|
||||
userParams.ExcludeNoLocation = int.Parse(value) == 1;
|
||||
break;
|
||||
@ -102,6 +110,11 @@ namespace IronIntel.Contractor.Users
|
||||
else
|
||||
userParams.MapRefreshInterval = 60;
|
||||
userParams.MachineIconURL = SystemParams.MachineTypeMapViewIconUrl;
|
||||
|
||||
var uc = FleetServiceClientHelper.CreateClient<UserQueryClient>();
|
||||
userParams.PreferredLanguage = uc.GetUserPreferredLanguageByIID(useriid);
|
||||
userParams.TimeZone = uc.GetUserTimeZoneByIID(useriid);
|
||||
|
||||
return userParams;
|
||||
}
|
||||
|
||||
@ -114,6 +127,7 @@ namespace IronIntel.Contractor.Users
|
||||
|
||||
FIDbAccess db = SystemParams.GetDbInstance();
|
||||
db.ExecSQL(SQL, useriid, _AutoRecenterMap, userParams.AutoRecenterMap ? "true" : "false");
|
||||
db.ExecSQL(SQL, useriid, _ShowJSTooltip, userParams.ShowJSTooltip ? "true" : "false");
|
||||
|
||||
if (!string.IsNullOrEmpty(userParams.BaseMap))
|
||||
db.ExecSQL(SQL, useriid, _BaseMap, userParams.BaseMap);
|
||||
@ -170,13 +184,18 @@ namespace IronIntel.Contractor.Users
|
||||
else
|
||||
db.ExecSQL(SQL_Delete, useriid, _Onroad);
|
||||
|
||||
if (userParams.ExcludeNoLocation)
|
||||
db.ExecSQL(SQL, useriid, _ExcludeNoLocation, userParams.ExcludeNoLocation ? 1 : 0);
|
||||
if (userParams.Attachment >= 0)
|
||||
db.ExecSQL(SQL, useriid, _Attachment, userParams.Attachment);
|
||||
else
|
||||
db.ExecSQL(SQL_Delete, useriid, _Attachment);
|
||||
|
||||
db.ExecSQL(SQL, useriid, _ExcludeNoLocation, userParams.ExcludeNoLocation ? 1 : 0);
|
||||
|
||||
if (!string.IsNullOrEmpty(userParams.LandingPage))
|
||||
db.ExecSQL(SQL, useriid, _LandingPage, userParams.LandingPage);
|
||||
else
|
||||
db.ExecSQL(SQL_Delete, useriid, _LandingPage);
|
||||
|
||||
}
|
||||
|
||||
public static string GetStringParameter(string useriid, string paramname)
|
||||
@ -304,6 +323,7 @@ namespace IronIntel.Contractor.Users
|
||||
public class UserParamInfo
|
||||
{
|
||||
public bool AutoRecenterMap { get; set; } = false;
|
||||
public bool ShowJSTooltip { get; set; } = false;
|
||||
public string BaseMap { get; set; }
|
||||
public string MapViewContratorID { get; set; }
|
||||
public string MapAlertLayer { get; set; }
|
||||
@ -317,10 +337,13 @@ namespace IronIntel.Contractor.Users
|
||||
public string[] UnShownJobsites { get; set; }
|
||||
public string[] UnShownJobsiteMachines { get; set; }
|
||||
public int Onroad { get; set; } = -1;
|
||||
public int Attachment { get; set; } = 0;
|
||||
public bool ExcludeNoLocation { get; set; } = true;
|
||||
|
||||
public MapViewSearchItem[] MapViewSearches { get; set; }
|
||||
public string LandingPage { get; set; }
|
||||
public string PreferredLanguage { get; set; }
|
||||
public string TimeZone { get; set; }
|
||||
}
|
||||
|
||||
public class MapViewSearcheHelper
|
||||
@ -355,6 +378,8 @@ namespace IronIntel.Contractor.Users
|
||||
item.IsDefault = Helper.IsTrue(ch.InnerText);
|
||||
else if (string.Compare(ch.Name, "Onroad", true) == 0)
|
||||
item.Onroad = Convert.ToInt32(ch.InnerText);
|
||||
else if (string.Compare(ch.Name, "Attachment", true) == 0)
|
||||
item.Attachment = Convert.ToInt32(ch.InnerText);
|
||||
else if (string.Compare(ch.Name, "AssetDefaultSearch", true) == 0)
|
||||
item.AssetDefaultSearch = ch.InnerText;
|
||||
else if (string.Compare(ch.Name, "JobSiteDefaultSearch", true) == 0)
|
||||
@ -392,6 +417,7 @@ namespace IronIntel.Contractor.Users
|
||||
if (!string.IsNullOrEmpty(search.AssetGroupDefaultSearch))
|
||||
AddSubNode(sn, "AssetGroupDefaultSearch", search.AssetGroupDefaultSearch);
|
||||
AddSubNode(sn, "Onroad", search.Onroad.ToString());
|
||||
AddSubNode(sn, "Attachment", search.Attachment.ToString());
|
||||
AddSubNode(sn, "ExcludeNoLocation", search.ExcludeNoLocation ? "1" : "0");
|
||||
if (search.UnShownMachines != null && search.UnShownMachines.Length > 0)
|
||||
AddSubNode(sn, "UnShownMachines", string.Join(",", search.UnShownMachines));
|
||||
@ -422,6 +448,7 @@ namespace IronIntel.Contractor.Users
|
||||
public bool IsDefault { get; set; }
|
||||
|
||||
public int Onroad { get; set; } = -1;
|
||||
public int Attachment { get; set; } = 0;
|
||||
public string AssetDefaultSearch { get; set; } = "";
|
||||
public string JobSiteDefaultSearch { get; set; } = "";
|
||||
public string AssetGroupDefaultSearch { get; set; } = "";
|
||||
|
Reference in New Issue
Block a user