196 lines
9.7 KiB
C#
196 lines
9.7 KiB
C#
using Foresight.Data;
|
|
using Foresight.Fleet.Services.Asset;
|
|
using Foresight.ServiceModel;
|
|
using IronIntel.Contractor.Machines;
|
|
using IronIntel.Contractor.Maintenance;
|
|
using IronIntel.Contractor.MapView;
|
|
using IronIntel.Contractor.Users;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace IronIntel.Contractor.Contact
|
|
{
|
|
public class ContactManagement
|
|
{
|
|
public static ContactInfo[] GetContacts(string sessionid, FISqlConnection db = null)
|
|
{
|
|
const string SQL = "select CONTACTID,CONTACTNAME,USERIID,NOTES,CONTACTTYPE,EMAILADDRESS,TEXTADDRESS from CONTACT";
|
|
|
|
List<ContactInfo> list = new List<ContactInfo>();
|
|
if (db == null)
|
|
db = SystemParams.GetDbInstance();
|
|
DataTable dt = db.GetDataTableBySQL(SQL);
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
UserInfo[] users = UserManagement.GetUsers();
|
|
foreach (DataRow dr in dt.Rows)
|
|
{
|
|
ContactInfo ci = ConvertToContactInfo(dr);
|
|
if (!string.IsNullOrWhiteSpace(ci.UserIID))
|
|
{
|
|
UserInfo ui = users.FirstOrDefault(m => m.IID == ci.UserIID);
|
|
if (ui != null)
|
|
ci.UserName = ui.DisplayName;
|
|
}
|
|
list.Add(ci);
|
|
}
|
|
}
|
|
return list.ToArray();
|
|
}
|
|
|
|
|
|
public static void SaveContact(ContactInfo ci, string useriid)
|
|
{
|
|
const string SQL = @"if exists(select 1 from CONTACT where CONTACTID={0}) update CONTACT set CONTACTNAME={1},USERIID={2},NOTES={3},LASTUPDATEDBY={4},
|
|
LASTUPDATEDON = GETUTCDATE(),RECVER = ISNULL(RECVER,0) + 1,CONTACTTYPE={5},EMAILADDRESS={6},TEXTADDRESS={7} where CONTACTID={0} else insert CONTACT(CONTACTID,CONTACTNAME,USERIID, NOTES, ADDEDBY,
|
|
ADDEDON,LASTUPDATEDBY,LASTUPDATEDON,RECVER,CONTACTTYPE,EMAILADDRESS,TEXTADDRESS) values({0},{1},{2},{3},{4},GETUTCDATE(),{4},GETUTCDATE(),1,{5},{6},{7})";
|
|
|
|
const string SQL_C = "select COUNT(1) from CONTACT where CONTACTID!={0} and CONTACTNAME={1}";
|
|
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
object obj = db.GetRC1BySQL(SQL_C, ci.ContactID, ci.ContactName);
|
|
if (Convert.ToInt32(obj) > 0)
|
|
{
|
|
throw new Exception("The contact name must be unique.");
|
|
}
|
|
|
|
db.ExecSQL(SQL, ci.ContactID, ci.ContactName, ci.UserIID, ci.Notes, useriid, ci.ContactType, ci.EmailAddress, ci.TextAddress);
|
|
|
|
}
|
|
|
|
public static void DeleteContact(string contactid)
|
|
{
|
|
const string SQL = @"delete from CONTACT where CONTACTID={0}
|
|
delete from RELATIONSHIP where PRIMARYID = {0} and (RELATIONSHIPTYPEID='MachineContact' or RELATIONSHIPTYPEID='ContactJobsite') ";
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
db.ExecSQL(SQL, contactid);
|
|
}
|
|
|
|
public static MaintenanceMachineInfo[] GetContactMachinesByID(string contactid)
|
|
{
|
|
const string SQL = @"select a.RELATEDID as MACHINEID,b.MACHINENAME,b.MACHINENAME2,b.VIN,b.MAKEID,b.MODELID,b.TYPEID,b.HIDE,ISNULL(b.ENGINEHOURS,0) as ENGINEHOURS,
|
|
ISNULL(b.ODOMETER,0) as ODOMETER,ISNULL(b.ODOMETERUOM,'Mile') AS ODOMETERUOM from RELATIONSHIP a,MACHINES b
|
|
where a.RELATEDID=b.MACHINEID and a.RELATIONSHIPTYPEID='MachineContact' and a.REMOVED<>1 and a.PRIMARYID={0}";
|
|
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
DataTable tb = db.GetDataTableBySQL(SQL, contactid);
|
|
if (tb.Rows.Count == 0)
|
|
{
|
|
return new MaintenanceMachineInfo[0];
|
|
}
|
|
MachineManagement.RefreshBaseData();
|
|
AssetMake[] makes = MachineManagement.GetMachineMakes();
|
|
AssetModel[] models = MachineManagement.GetMachineModels();
|
|
AssetType[] types = MachineManagement.GetMachineTypes();
|
|
List<MaintenanceMachineInfo> ls = new List<MaintenanceMachineInfo>();
|
|
foreach (DataRow dr in tb.Rows)
|
|
{
|
|
MaintenanceMachineInfo mi = MaintenanceManagement.ConvertToMaintenanceMachineInfo(dr, makes, models, types);
|
|
ls.Add(mi);
|
|
}
|
|
return ls.ToArray();
|
|
|
|
}
|
|
|
|
public static void SaveContactMachines(string contactid, string contractorid, string[] machineids)
|
|
{
|
|
const string SQL_R = "update RELATIONSHIP set REMOVEDON=GETUTCDATE(),REMOVED=1 where RELATIONSHIPTYPEID='MachineContact' and REMOVED<>1 and PRIMARYID={0}";
|
|
const string SQL = @"if exists(select 1 from RELATIONSHIP where RELATIONSHIPTYPEID='MachineContact' and PRIMARYID={0} and RELATEDID={1}) update RELATIONSHIP
|
|
set REMOVEDON=null,REMOVED=0 where RELATIONSHIPTYPEID='MachineContact' and PRIMARYID={0} and RELATEDID={1} else insert into RELATIONSHIP
|
|
(RELATIONSHIPID,RELATIONSHIPTYPEID,CONTRACTORID,PRIMARYID,RELATEDID,ADDEDON) values({3},'MachineContact',{2},{0},{1},GETUTCDATE())";
|
|
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
db.ExecSQL(SQL_R, contactid);
|
|
|
|
foreach (var mid in machineids)
|
|
{
|
|
db.ExecSQL(SQL, contactid, mid, contractorid, Guid.NewGuid().ToString());
|
|
}
|
|
}
|
|
|
|
private static ContactInfo ConvertToContactInfo(DataRow dr)
|
|
{
|
|
ContactInfo ci = new ContactInfo();
|
|
ci.ContactID = FIDbAccess.GetFieldString(dr["CONTACTID"], string.Empty);
|
|
ci.ContactName = FIDbAccess.GetFieldString(dr["CONTACTNAME"], string.Empty);
|
|
ci.UserIID = FIDbAccess.GetFieldString(dr["USERIID"], string.Empty);
|
|
ci.Notes = FIDbAccess.GetFieldString(dr["NOTES"], string.Empty);
|
|
ci.ContactType = FIDbAccess.GetFieldString(dr["CONTACTTYPE"], string.Empty);
|
|
ci.EmailAddress = FIDbAccess.GetFieldString(dr["EMAILADDRESS"], string.Empty);
|
|
ci.TextAddress = FIDbAccess.GetFieldString(dr["TEXTADDRESS"], string.Empty);
|
|
return ci;
|
|
}
|
|
|
|
public static JobSiteViewItem[] GetContactJobsitesByID(string contactid)
|
|
{
|
|
const string SQL = @"select a.RELATEDID as JOBSITEID,JOBSITENAME,LATITUDE,LONGITUDE,RADIUS,RADUIS_UOM,b.CONTRACTORID,COLOR,NOTES,STARTDATE,ENDDATE,POLYGON,BASEONMACHINEID from RELATIONSHIP a,JOBSITES b
|
|
where a.RELATIONSHIPTYPEID='ContactJobsite' and a.REMOVED<>1 and a.RELATEDID=b.JOBSITEID and a.PRIMARYID={0}";
|
|
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
DataTable tb = db.GetDataTableBySQL(SQL, contactid);
|
|
if (tb.Rows.Count == 0)
|
|
{
|
|
return new JobSiteViewItem[0];
|
|
}
|
|
List<JobSiteViewItem> ls = new List<JobSiteViewItem>();
|
|
foreach (DataRow dr in tb.Rows)
|
|
{
|
|
JobSiteViewItem js = ConvertToJobSiteViewItem(dr);
|
|
ls.Add(js);
|
|
}
|
|
return ls.ToArray();
|
|
|
|
}
|
|
|
|
public static void SaveContactJobsites(string contactid, string contractorid, string[] jobsiteids)
|
|
{
|
|
const string SQL_R = "update RELATIONSHIP set REMOVEDON=GETUTCDATE(),REMOVED=1 where RELATIONSHIPTYPEID='ContactJobsite' and REMOVED<>1 and PRIMARYID={0}";
|
|
const string SQL = @"if exists(select 1 from RELATIONSHIP where RELATIONSHIPTYPEID='ContactJobsite' and PRIMARYID={0} and RELATEDID={1}) update RELATIONSHIP
|
|
set REMOVEDON=null,REMOVED=0 where RELATIONSHIPTYPEID='ContactJobsite' and PRIMARYID={0} and RELATEDID={1} else insert into RELATIONSHIP
|
|
(RELATIONSHIPID,RELATIONSHIPTYPEID,CONTRACTORID,PRIMARYID,RELATEDID,ADDEDON) values({3},'ContactJobsite',{2},{0},{1},GETUTCDATE())";
|
|
|
|
FISqlConnection db = SystemParams.GetDbInstance();
|
|
db.ExecSQL(SQL_R, contactid);
|
|
|
|
foreach (var mid in jobsiteids)
|
|
{
|
|
db.ExecSQL(SQL, contactid, mid, contractorid, Guid.NewGuid().ToString());
|
|
}
|
|
}
|
|
private static JobSiteViewItem ConvertToJobSiteViewItem(DataRow dr)
|
|
{
|
|
JobSiteViewItem js = new JobSiteViewItem();
|
|
long JobSiteId = FIDbAccess.GetFieldInt(dr["JOBSITEID"], 0);
|
|
js.ID = FIDbAccess.GetFieldInt(dr["JOBSITEID"], 0);
|
|
js.Name = FIDbAccess.GetFieldString(dr["JOBSITENAME"], string.Empty);
|
|
js.Latitude = FIDbAccess.GetFieldDouble(dr["LATITUDE"], 0);
|
|
js.Longitude = FIDbAccess.GetFieldDouble(dr["LONGITUDE"], 0);
|
|
js.Radius = FIDbAccess.GetFieldDouble(dr["RADIUS"], 0);
|
|
js.Radius_UOM = FIDbAccess.GetFieldString(dr["RADUIS_UOM"], string.Empty);
|
|
if (string.IsNullOrWhiteSpace(js.Radius_UOM))
|
|
js.Radius_UOM = "Mile";
|
|
js.ContractorID = FIDbAccess.GetFieldString(dr["CONTRACTORID"], string.Empty);
|
|
//js.ColorString = FIDbAccess.GetFieldString(dr["COLOR"], string.Empty);
|
|
//System.Drawing.Color color = System.Drawing.Color.Orange;
|
|
//try
|
|
//{
|
|
// color = System.Drawing.ColorTranslator.FromHtml(js.ColorString);
|
|
//}
|
|
//catch
|
|
//{
|
|
//}
|
|
//js.Color = new IIColor() { Alpha = color.A, Red = color.R, Green = color.G, Blue = color.B };
|
|
|
|
js.Notes = FIDbAccess.GetFieldString(dr["NOTES"], string.Empty);
|
|
js.StartDate = FIDbAccess.GetFieldDateTime(dr["STARTDATE"], DateTime.MinValue);
|
|
js.EndDate = FIDbAccess.GetFieldDateTime(dr["ENDDATE"], DateTime.MinValue);
|
|
js.BaseOnMachineID = FIDbAccess.GetFieldInt(dr["BASEONMACHINEID"], 0);
|
|
return js;
|
|
}
|
|
}
|
|
}
|