using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Telerik.WinControls; using SafeMobileLib; using Telerik.WinControls.UI; using System.Collections; using System.Linq; using System.Threading.Tasks; namespace SubscriberAndUserManager { public partial class VehiclesForm : Telerik.WinControls.UI.RadForm { private DBvehiclesManager DB; private DBgroupsManager DBgrp; private DBtelemetryManager DBtel; private DBgatewaysManager DBgateways; private DBalarmManager DBalarm; private DBcontactsManager DBcontact = new DBcontactsManager(MainForm.DBServer, MainForm.DBSchema, MainForm.DBUser, MainForm.DBPass, MainForm.DBPort); private string IDList = ""; private Boolean AdvSettingsCollapse = false; private bool formTypeEdit = false; //false = add user mode; true = edit user mode private bool AddRange = false; Vehicles selVeh; List gList; List listCategory; List listRadioTalk; List assignedTalkGroups; private ArrayList imgList; private MainForm parrent; private bool isMultiEdit = false; internal static MobileVehicles mobile; internal static bool hasModifiedMobile = false; internal static bool isNEW = false; VehiclesMobileForm vmf; bool isloaded = false; bool canEditMobile = false; string initialStatus = ""; string initialGateway = ""; public static Dictionary VehiclesCollection = new Dictionary(); private void setLanguage() { this.Text = MainForm.returnLNGString("unitset"); lbIMEI.Text = MainForm.returnLNGString("radid"); label3.Text = MainForm.returnLNGString("unitname"); label4.Text = MainForm.returnLNGString("user"); lbReportingInterval.Text = MainForm.returnLNGString("gpstime"); lbARSinterval.Text = MainForm.returnLNGString("arstime"); lbSec.Text = radLabel13.Text=radLabel12.Text=radLabel11.Text= MainForm.returnLNGString("sec"); lbGroup.Text = MainForm.returnLNGString("category"); lbIcon.Text = MainForm.returnLNGString("icon"); btnExit.Text = MainForm.returnLNGString("exit"); btnAdd.Text = MainForm.returnLNGString("add"); AdvSettings.Text = MainForm.returnLNGString("advSettings"); lbGPSPOOR.Text = MainForm.returnLNGString("gpspoor"); lbGPSOFF.Text = MainForm.returnLNGString("gpsoff"); lbMADEOFF.Text = MainForm.returnLNGString("madeoff"); radLabel1.Text = MainForm.returnLNGString("IMEIRangeFrom"); radLabel9.Text = MainForm.returnLNGString("RadioTalkGroup"); radLabel6.Text = MainForm.returnLNGString("GWAndRadioGW"); radLabel7.Text = MainForm.returnLNGString("stat"); radLabel8.Text = MainForm.returnLNGString("unittype"); radLabel3.Text = MainForm.returnLNGString("UnitNamePattern"); cbStatus.Items.Clear(); cbStatus.Items.Add(MainForm.returnLNGString("active")); cbStatus.Items.Add(MainForm.returnLNGString("inactive")); } //Add Unit public VehiclesForm(DBvehiclesManager DB,DBgroupsManager DBgrp, DBgatewaysManager DBgw, DBalarmManager DBalarm, DBtelemetryManager DBtel, List usrList, MainForm _parrent) { InitializeComponent(); setLanguage(); this.DB = DB; this.DBgrp = DBgrp; this.DBtel = DBtel; this.DBgateways = DBgw; this.DBalarm = DBalarm; AddRange = false; switch (MainForm.radioType) { case RADIOTYPE.HYT: this.Icon = global::SubscriberAndUserManager.Properties.Resources.SYTADMIN24x; //this.BackColor = MainForm.HyteraColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; break; case RADIOTYPE.HARRIS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.visionSmall; //this.BackColor = MainForm.HarrisColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; /* lbARSinterval.ForeColor = MainForm.HarTextColor; lbARSintervalSeconds.ForeColor = MainForm.HarTextColor; lbGroup.ForeColor = MainForm.HarTextColor; lbIcon.ForeColor = MainForm.HarTextColor; lbIMEI.ForeColor = MainForm.HarTextColor; lbReportingInterval.ForeColor = MainForm.HarTextColor; lbSec.ForeColor = MainForm.HarTextColor; label3.ForeColor = MainForm.HarTextColor; label4.ForeColor = MainForm.HarTextColor;*/ break; case RADIOTYPE.SIMOCO: this.Icon = global::SubscriberAndUserManager.Properties.Resources.simoco_setup_241; break; case RADIOTYPE.EXCERA: this.Icon = global::SubscriberAndUserManager.Properties.Resources.AXYS_ICON; break; case RADIOTYPE.ATLAS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.ATLASadmin32; /*this.BackColor = MainForm.HarrisColor; lbGroup.ForeColor = MainForm.HarTextColor; lbIcon.ForeColor = MainForm.HarTextColor; lbIMEI.ForeColor = MainForm.HarTextColor; lbReportingInterval.ForeColor = MainForm.HarTextColor; lbSec.ForeColor = MainForm.HarTextColor; label3.ForeColor = MainForm.HarTextColor; label4.ForeColor = MainForm.HarTextColor;*/ break; } foreach (User usr in usrList) { //Telerik.WinControls.Enumerations.SortStyle.None; if (usr.UType != USERTYPE.Admin) { RadListDataItem test = new RadListDataItem(usr.UserName); cbUserforImei.Items.Add(test); } } if (cbUserforImei.Items.Count != 0) cbUserforImei.SelectedIndex = 0; gList = DBgrp.GetAllGroups(); RadListDataItem test2 = new RadListDataItem(MainForm.returnLNGString("none")); cbGroups.Items.Add(test2); RadListDataItem test3 = new RadListDataItem(MainForm.returnLNGString("none")); cbTalkGroup.Items.Add(test3); RadListDataItem test4 = new RadListDataItem(MainForm.returnLNGString("none")); cbGatewayAndRadioGW.Items.Add(test4); listCategory = gList.Where(x => x.Type == GroupType.CATEGORY.value).ToList(); listRadioTalk = gList.Where(x => x.Type == GroupType.RADIOTALK.value).ToList(); foreach (Group grp in listCategory) { //Telerik.WinControls.Enumerations.SortStyle.None; test2 = new RadListDataItem(grp.Name); cbGroups.Items.Add(test2); } foreach (Group grp in listRadioTalk) { test2 = new RadListDataItem(grp.Name); cbTalkGroup.Items.Add(test2); } if (cbGroups.Items.Count > 0) cbGroups.SelectedIndex = 0; if (cbTalkGroup.Items.Count > 0) cbTalkGroup.SelectedIndex = 0; //car icons imgList = DB.get_all_car_picture(); foreach (Car obj in imgList) { string filePath = System.Windows.Forms.Application.StartupPath + @"\resource\cars\" + (SubscriberAndUserManager.MainForm.iconThemeType == IconTheme.CLASSIC ? "" : "list_") + SubscriberAndUserManager.MainForm.iconThemeType + "_" + obj.iconPattern + ".png"; Bitmap bmp = new Bitmap(filePath); Image tmp2 = bmp; imageList1.Images.Add(tmp2); } cbImageList.DataSource = imgList; cbImageList.DisplayMember = "DisplayedName"; if (imageList1.Images.Count > 0) { pictureBox1.Image = imageList1.Images[0]; } if (cbStatus.Items.Count != 0) cbStatus.SelectedIndex = 0; if (cbUnitType.Items.Count != 0) cbUnitType.SelectedIndex = 0; parrent = _parrent; } private String InitialVehName = ""; public static VehiclesForm GetSingleton(DBvehiclesManager DB, DBgroupsManager DBgrp, DBgatewaysManager DBgw, List usrList, EditVehicleParams parms, MainForm _parent) { if (!VehiclesCollection.ContainsKey(parms.IdList)) VehiclesCollection.Add(parms.IdList, new VehiclesForm(DB, DBgrp, DBgw, usrList, parms, _parent)); else { if (VehiclesCollection[parms.IdList].IsDisposed) VehiclesCollection[parms.IdList] = new VehiclesForm(DB, DBgrp, DBgw, usrList, parms, _parent); } return VehiclesCollection[parms.IdList]; } public static VehiclesForm GetSingleton(DBvehiclesManager DB, DBgroupsManager DBgrp, DBgatewaysManager DBgw, List usrList, Vehicles selVeh, MainForm _parent) { string vehID = selVeh.Id.ToString(); if (!VehiclesCollection.ContainsKey(vehID)) VehiclesCollection.Add(vehID, new VehiclesForm(DB, DBgrp, DBgw, usrList, selVeh, _parent)); else { if (VehiclesCollection[vehID].IsDisposed) VehiclesCollection[vehID] = new VehiclesForm(DB, DBgrp, DBgw, usrList, selVeh, _parent); } return VehiclesCollection[vehID]; } //multiple vehicle edit public VehiclesForm(DBvehiclesManager DB, DBgroupsManager DBgrp, DBgatewaysManager DBgw, List usrList, EditVehicleParams parms, MainForm _parent) { InitializeComponent(); setLanguage(); this.Text = parms.vehicleList + " " + MainForm.returnLNGString("sdset"); this.DB = DB; this.DBgrp = DBgrp; this.DBgateways = DBgw; this.IDList = parms.IdList; this.Pageview.Controls.Remove(pagRange); AddRange = false; isMultiEdit = true; switch (MainForm.radioType) { case RADIOTYPE.HYT: this.Icon = global::SubscriberAndUserManager.Properties.Resources.SYTADMIN24x; this.BackColor = MainForm.HyteraColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; break; case RADIOTYPE.HARRIS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.visionSmall; this.BackColor = MainForm.HarrisColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; break; case RADIOTYPE.SIMOCO: this.Icon = global::SubscriberAndUserManager.Properties.Resources.simoco_setup_241; break; case RADIOTYPE.EXCERA: this.Icon = global::SubscriberAndUserManager.Properties.Resources.AXYS_ICON; break; case RADIOTYPE.ATLAS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.ATLASadmin32; //ATLASCHANGE this.BackColor = MainForm.HarrisColor; break; } foreach (User usr in usrList) { //Telerik.WinControls.Enumerations.SortStyle.None; if (usr.UType != USERTYPE.Admin) { RadListDataItem test = new RadListDataItem(usr.UserName); test.Value = usr.Id; cbUserforImei.Items.Add(test); } } if (cbUserforImei.Items.Count != 0) cbUserforImei.SelectedIndex = 0; formTypeEdit = true; gList = DBgrp.GetAllGroups(); assignedTalkGroups = DBgrp.getAllTalkGroupsForUnits(IDList); listCategory = gList.Where(x => x.Type == GroupType.CATEGORY.value).ToList(); listRadioTalk = gList.Where(x => x.Type == GroupType.RADIOTALK.value).ToList(); RadListDataItem test2 = new RadListDataItem(MainForm.returnLNGString("none")); cbGroups.Items.Add(test2); RadListDataItem test3 = new RadListDataItem(MainForm.returnLNGString("none")); cbTalkGroup.Items.Add(test3); foreach (Group grp in listCategory) { test2 = new RadListDataItem(grp.Name); cbGroups.Items.Add(test2); } if (cbGroups.Items.Count > 0) cbGroups.SelectedIndex = 0; if (parms.Group == MainForm.returnLNGString("multiple")) { cbGroups.Items.Add(MainForm.returnLNGString("multiple")); cbGroups.SelectedIndex = cbGroups.Items.Count; } else { int count = 0; foreach (Group grp in listCategory) { count++; if (grp.Name == parms.Group) { cbGroups.SelectedIndex = count; } } } if (cbTalkGroup.Items.Count > 0) cbTalkGroup.SelectedIndex = 0; foreach (Group grp in listRadioTalk) { test3 = new RadListDataItem(grp.Name); cbTalkGroup.Items.Add(test3); } if (assignedTalkGroups.Count > 0) { if (assignedTalkGroups.Count() > 1) { cbTalkGroup.Items.Add(MainForm.returnLNGString("multiple")); cbTalkGroup.SelectedIndex = cbGroups.Items.Count; } else { int count = 0; foreach (Group grp in listRadioTalk) { count++; if (grp.Name == assignedTalkGroups[0].Name) { cbTalkGroup.SelectedIndex = count; } } } } //if (cbTalkGroup.Items.Count > 0) cbTalkGroup.SelectedIndex = 0; imgList = DB.get_all_car_picture(); int idx = 0; int tempIDX = -1; foreach (Car obj in imgList) { string filePath = System.Windows.Forms.Application.StartupPath + @"\resource\cars\" + (SubscriberAndUserManager.MainForm.iconThemeType == IconTheme.CLASSIC ? "" : "list_") + SubscriberAndUserManager.MainForm.iconThemeType + "_" + obj.iconPattern + ".png"; try { tempIDX++; Bitmap bmp = new Bitmap(filePath); Image tmp2 = bmp; imageList1.Images.Add(tmp2); if (parms.Icon != MainForm.returnLNGString("multiple")) { if (Convert.ToInt32(parms.Icon) == obj.idx) idx = tempIDX; } } catch(Exception ex) { Utils.WriteLine("\nBmp " + filePath + " exception " + ex.ToString(), ConsoleColor.Red); } } cbImageList.DataSource = imgList; cbImageList.DisplayMember = "DisplayedName"; if (parms.Icon == MainForm.returnLNGString("multiple")) { cbImageList.Items.Add(MainForm.returnLNGString("multiple")); cbImageList.SelectedIndex = cbImageList.Items.Count; pictureBox1.Image = null; } else { if (imageList1.Images.Count > 0) { pictureBox1.Image = imageList1.Images[idx]; cbImageList.SelectedIndex = idx; } } tbImei.Text = parms.imeiList.Replace("'","").Replace("(","").Replace(")",""); tbVehicleName.Text = parms.vehicleList; tbVehicleName.ReadOnly = true; btnAdd.Text = MainForm.returnLNGString("save"); radTextBox1.Visible = radTextBox2.Visible = radTextBox3.Visible = radTextBox4.Visible = true; radTextBox1.NullText = parms.GpsInterval == "0" ? "multiple" : parms.GpsInterval; if (radTextBox1.NullText == "multiple") radTextBox2.NullText = radTextBox3.NullText = radTextBox4.NullText = radTextBox1.NullText; else { radTextBox2.NullText = tbMADEOFF.Value.ToString(); radTextBox3.NullText = tbGPSOFF.Value.ToString(); radTextBox4.NullText = tbGPSPOOR.Value.ToString(); } tbImei.Enabled = false; label4.Visible = false; cbUserforImei.Visible = false; cbUnitType.Enabled = false; btEditMobile.Enabled = false; radLabel9.Visible = cbTalkGroup.Visible = false; //if (cbStatus.Items.Count != 0) // cbStatus.SelectedIndex = 0; if (parms.ActiveList == MainForm.returnLNGString("multiple")) { cbStatus.Items.Add(MainForm.returnLNGString("multiple")); cbStatus.SelectedIndex = cbStatus.Items.Count; } else { cbStatus.SelectedIndex = (parms.ActiveList =="True") ? 0 : 1; } if (parms.TypeList == MainForm.returnLNGString("multiple")) { cbUnitType.Items.Add(MainForm.returnLNGString("multiple")); cbUnitType.SelectedIndex = cbStatus.Items.Count; } else { cbUnitType.SelectedIndex = Convert.ToInt32(parms.TypeList); } btEditMobile.Enabled = cbUnitType.SelectedIndex == 1; parrent = _parent; } public VehiclesForm(DBvehiclesManager DB, DBgroupsManager DBgrp, DBgatewaysManager DBgw, List usrList, Vehicles selVeh, MainForm _parent) { InitializeComponent(); setLanguage(); this.Text = selVeh.VehName + " " + MainForm.returnLNGString("sdset"); this.DB = DB; this.DBgrp = DBgrp; this.DBgateways = DBgw; this.selVeh = selVeh; this.Pageview.Controls.Remove(pagRange); AddRange = false; switch (MainForm.radioType) { case RADIOTYPE.HYT: this.Icon = global::SubscriberAndUserManager.Properties.Resources.SYTADMIN24x; //this.BackColor = MainForm.HyteraColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; break; case RADIOTYPE.HARRIS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.visionSmall; //this.BackColor = MainForm.HarrisColor; lbARSinterval.Visible = true; lbARSintervalSeconds.Visible = true; tbARSreportingInterval.Visible = true; break; case RADIOTYPE.SIMOCO: this.Icon = global::SubscriberAndUserManager.Properties.Resources.simoco_setup_241; break; case RADIOTYPE.EXCERA: this.Icon = global::SubscriberAndUserManager.Properties.Resources.AXYS_ICON; break; case RADIOTYPE.ATLAS: this.Icon = global::SubscriberAndUserManager.Properties.Resources.ATLASadmin32; //ATLASCHANGE //this.BackColor = MainForm.HarrisColor; break; } foreach (User usr in usrList) { //Telerik.WinControls.Enumerations.SortStyle.None; if (usr.UType != USERTYPE.Admin) { RadListDataItem test = new RadListDataItem(usr.UserName); test.Value = usr.Id; cbUserforImei.Items.Add(test); } } if (cbUserforImei.Items.Count != 0) cbUserforImei.SelectedIndex = 0; formTypeEdit = true; int count = 0; foreach (User user in usrList) { if (user.UType != USERTYPE.Admin) { if (user.UserName == selVeh.UserName) { cbUserforImei.SelectedIndex = count; } count++; } } gList = DBgrp.GetAllGroups(); RadListDataItem test2 = new RadListDataItem(MainForm.returnLNGString("none")); cbGroups.Items.Add(test2); RadListDataItem test3 = new RadListDataItem(MainForm.returnLNGString("none")); cbTalkGroup.Items.Add(test3); RadListDataItem test4 = new RadListDataItem(MainForm.returnLNGString("none")); cbGatewayAndRadioGW.Items.Add(test4); listCategory = gList.Where(x => x.Type == GroupType.CATEGORY.value).ToList(); listRadioTalk = gList.Where(x => x.Type == GroupType.RADIOTALK.value).ToList(); foreach (Group grp in listCategory) { test2 = new RadListDataItem(grp.Name); cbGroups.Items.Add(test2); } foreach (Group grp in listRadioTalk) { test2 = new RadListDataItem(grp.Name); cbTalkGroup.Items.Add(test2); } if (cbGroups.Items.Count > 0) cbGroups.SelectedIndex = 0; if (cbTalkGroup.Items.Count > 0) cbTalkGroup.SelectedIndex = 0; //get curent group for unit int sc_id = DB.getSCID(selVeh.Imei); Group g = DBgrp.GetGroupForSCID(sc_id,GroupType.CATEGORY.value); if (g != null) { count = 0; foreach (Group grp in listCategory) { count++; if (grp.Name == g.Name) { cbGroups.SelectedIndex = count; } } } g = DBgrp.GetGroupForSCID(sc_id, GroupType.RADIOTALK.value); if (g != null) { count = 0; foreach (Group grp in listRadioTalk) { count++; if (grp.Name == g.Name) { cbTalkGroup.SelectedIndex = count; } } } //car icons imgList = DB.get_all_car_picture(); int idx = 0; int tempIDX= -1; foreach (Car obj in imgList) { string filePath = System.Windows.Forms.Application.StartupPath + @"\resource\cars\" + (SubscriberAndUserManager.MainForm.iconThemeType == IconTheme.CLASSIC ? "" : "list_") + SubscriberAndUserManager.MainForm.iconThemeType + "_" + obj.iconPattern + ".png"; try { tempIDX++; Bitmap bmp = new Bitmap(filePath); Image tmp2 = bmp; imageList1.Images.Add(tmp2); if (selVeh.ImgID == obj.idx) idx = tempIDX; } catch (Exception ex) { Utils.WriteLine("\nBmp " + filePath + " exception " + ex.ToString(), ConsoleColor.Red); } } cbImageList.DataSource = imgList; cbImageList.DisplayMember = "DisplayedName"; if (imageList1.Images.Count > 0) { pictureBox1.Image = imageList1.Images[idx]; cbImageList.SelectedIndex = idx; } tbImei.Text = selVeh.Imei; tbVehicleName.Text = selVeh.VehName; tbEmail.Text = selVeh.Email; tbPhone.Text = selVeh.Phone; InitialVehName = selVeh.VehName; try { tbGPSreportingInterval.Value = selVeh.GpsInterval; } catch (Exception ex) { SM.Debug("Value from DB for GPSreporting out Range:"+ex.ToString()); tbGPSreportingInterval.Value = tbGPSreportingInterval.Minimum; } try { tbGPSPOOR.Value = selVeh.Gps_poor; } catch (Exception ex) { SM.Debug("Value from DB for GPSreporting out Range:" + ex.ToString()); tbGPSPOOR.Value = 120; } try { tbGPSOFF.Value = selVeh.Gps_off; } catch (Exception ex) { SM.Debug("Value from DB for GPSreporting out Range:" + ex.ToString()); tbGPSOFF.Value = 240; } try { tbMADEOFF.Value = selVeh.Made_off; } catch (Exception ex) { SM.Debug("Value from DB for GPSreporting out Range:" + ex.ToString()); tbMADEOFF.Value = 600; } try { tbARSreportingInterval.Value = selVeh.ArsInterval; } catch (Exception ex) { SM.Debug("Value from DB for ARSreporting out Range:" + ex.ToString()); tbARSreportingInterval.Value = tbARSreportingInterval.Minimum; } btnAdd.Text = MainForm.returnLNGString("save"); tbImei.Enabled = false; label4.Visible = false; cbUserforImei.Visible = false; cbUnitType.Enabled = false; parrent = _parent; } private String TestUniqueIDinRange(Int32 start, Int32 stop) { String toreturn = ""; foreach (String obj in MainForm.ImeiList) { for (Int32 i = start; i <= stop; i++) { if (obj.ToUpper().CompareTo(i.ToString().ToUpper()) == 0) { toreturn = obj; break; } } } return toreturn; } private String TestUniqueID(Int32 imei) { String toreturn = ""; foreach (String obj in MainForm.ImeiList) { if (obj.ToUpper().CompareTo(imei.ToString().ToUpper()) == 0) { toreturn = obj; break; } } return toreturn; } private String TestUniqueNameinRange(Hashtable newNames) { String toreturn = ""; foreach (String obj in MainForm.VehNameList) { foreach (Int32 obj2 in newNames.Keys) { if (obj.ToUpper().CompareTo(((String)newNames[obj2]).ToUpper()) == 0) { toreturn = obj; break; } } } return toreturn; } private Boolean TestUniqueUnitNane() { Boolean toret = false; if (!formTypeEdit) { foreach (String obj in MainForm.VehNameList) { if (obj.ToUpper().CompareTo(tbVehicleName.Text.ToUpper()) == 0) { toret = true; break; } } } else { if (InitialVehName.ToUpper().CompareTo(tbVehicleName.Text.ToUpper()) == 0) toret = false; else { foreach (String obj in MainForm.VehNameList) { if (obj.ToUpper().CompareTo(tbVehicleName.Text.ToUpper()) == 0) { toret = true; break; } } } } return toret; } private void btnAdd_Click(object sender, EventArgs e) { MainForm.needRestart = true; #region Disable SIP related features for Simoco if (MainForm.radioType == RADIOTYPE.SIMOCO) { if(cbGatewayAndRadioGW.Items.Count < 2) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("AddGatewayFirst"), MainForm.returnLNGString("err")); return; } else { //it will be only one gateway cbGatewayAndRadioGW.SelectedIndex = 1; } } #endregion Disable SIP related features for Simoco try { if (!AddRange) { if (tbImei.Text != "" && tbVehicleName.Text != "") { // check if email is unique bool isEmailValid = true; if (tbEmail.Text.Length > 0) { Vehicles veh = controlUnit.vehs.FirstOrDefault(d => d.Email == tbEmail.Text); // if a vehicle with same email exists if (selVeh != null && veh != null && veh.Id != selVeh.Id) isEmailValid = false; else if (selVeh == null && veh != null) isEmailValid = false; } // check if phone is unique bool isPhoneValid = true; if (tbPhone.Text.Length > 0) { Vehicles veh = controlUnit.vehs.FirstOrDefault(d => d.Phone == tbPhone.Text); // if a vehicle with same email exists if (selVeh != null && veh != null && veh.Id != selVeh.Id) isPhoneValid = false; else if (selVeh == null && veh != null) isPhoneValid = false; } Int64 temp = 0; if (!Int64.TryParse(tbImei.Text, out temp) && (!isMultiEdit)) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("ImeiNotInt"), MainForm.returnLNGString("err")); return; } else { if (temp > 1677721) { if (!MainForm.hideLinxFeatures) CustomMessageBox.Show(CustomMessageBoxType.exclamation, string.Format(MainForm.returnLNGString("ImeiLessThan"), 1677721), MainForm.returnLNGString("warning")); } } if (!isMultiEdit) { if (cbUnitType.SelectedItem.Text.ToLower() == DeviceType.SMARTPHONE.ToString().ToLower()) { if (mobile.SipLogin == null || mobile.SipLogin == "" || mobile.SipPswd == null || mobile.SipPswd == "") { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("invldSiploginPSwd"), MainForm.returnLNGString("err")); return; } if (mobile.SipPswd.Length < 4) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("linxPswsLength"), MainForm.returnLNGString("err")); return; } } } if (((tbImei.Text.Length > 16) || (tbImei.Text.Length == 0)) && (!isMultiEdit)) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("limtimei"), MainForm.returnLNGString("err")); } else if (TestUniqueUnitNane() && (!isMultiEdit)) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("vehNameUnique"), MainForm.returnLNGString("err")); } else if (!isEmailValid && (!isMultiEdit)) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("vehEmailUnique"), MainForm.returnLNGString("err")); } else if (!isPhoneValid && (!isMultiEdit)) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("vehPhoneUnique"), MainForm.returnLNGString("err")); } else { //return; if (!formTypeEdit) { try { String testID = TestUniqueID(Convert.ToInt32(tbImei.Text)); if (testID.Length != 0) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("imeiUnique") + "\n " + MainForm.returnLNGString("wehavedouble") + ":" + testID, MainForm.returnLNGString("err")); return; } } catch { } int carID = ((Car)((RadListDataItem)cbImageList.SelectedItem).Value).idx; int gw_id = 0; int radio_id = 0; if (cbGatewayAndRadioGW.SelectedItems.Count == 0 ) { RadMessageBox.Show("Please select a gateway !", "Unit error", MessageBoxButtons.OK, RadMessageIcon.Error); return; } gw_id = (int)((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Gw_id; radio_id = ((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Id; vehResponse reps = (MainForm.IS_SIERRA_WIRELESS ? DB.addVehicleSierraToDb(tbImei.Text, cbUserforImei.Text, tbVehicleName.Text, "", 0, true, (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, (Int32)tbARSreportingInterval.Value, tbEmail.Text, tbPhone.Text, gw_id, radio_id, cbStatus.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex, mobile) : DB.addVehicleToDb(tbImei.Text, cbUserforImei.Text, tbVehicleName.Text, "", 0, true, (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, (Int32)tbARSreportingInterval.Value, gw_id, radio_id, cbStatus.Text.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex, mobile)); if (reps != vehResponse.done) { RadMessageBox.Show("Unable to insert unit into database!", "Unit error", MessageBoxButtons.OK, RadMessageIcon.Error); return; } //MainForm.CallWebServer(MainForm.RestartSipLink); //add group relation int sc_id = DB.getSCID(tbImei.Text); if (cbGroups.SelectedItem != null) { if (cbGroups.Text != MainForm.returnLNGString("none")) { int grID = listCategory[cbGroups.SelectedIndex - 1].Id; DBgrp.AddGroupElement(sc_id, grID, GroupType.CATEGORY.value); } } if (cbTalkGroup.SelectedItem != null) { if (cbTalkGroup.Text != MainForm.returnLNGString("none")) { int grID = listRadioTalk[cbTalkGroup.SelectedIndex - 1].Id; DBgrp.AddGroupElement(sc_id, grID, GroupType.RADIOTALK.value); } } //add telemetry objs if ((MainForm.radioType == RADIOTYPE.MOTO) || (MainForm.radioType == RADIOTYPE.REPEATER_TRBO)) { for (int i = 1; i < 6; i++) { TelemetryObj obj = new TelemetryObj(0, i, "IN", "Low", "Digital " + i, false); try { DBtel.addTelemetryObj(obj, sc_id); } catch (Exception ex) { SM.Debug("ERROR ADD tel obj for digital " + i); SM.Debug(ex.ToString()); } } } // add alarm definition entity into the database for the new unit Alarm alm = new Alarm(0, sc_id, "1", "", "", "", "", "", true, true, true, true, true, true, true, true); try { List alerts = new List() { AdminAlerts.ALARM_ON_EMAIL, AdminAlerts.EMERGENCY, AdminAlerts.EMERGENCY_POPUP, AdminAlerts.EMERGENCY_SOUND, AdminAlerts.GEOFENCE, AdminAlerts.GEOFENCE_POPUP, AdminAlerts.GEOFENCE_SOUND, AdminAlerts.LANDMARK, AdminAlerts.LONE_WORKER, AdminAlerts.SPEED, AdminAlerts.SPEED_POPUP, AdminAlerts.SPEED_SOUND, AdminAlerts.TELEMETRY_POPUP, AdminAlerts.TELEMETRY_SOUND}; DBalarm.insertAlarm4ScIds(alm, new List() { sc_id }, alerts); //resp = DBalarm.deleteAlarm(radioID); //resp = DBalarm.addAlarm(alm, radioID); } catch (Exception ex) { Console.WriteLine(ex.ToString()); return; } HandleResp(reps); } else { if (!isMultiEdit) { int carID = ((Car)((RadListDataItem)cbImageList.SelectedItem).Value).idx; int gw_id = 0; int radio_id = 0; bool isUnitDeleted = DB.isUnitDeleted(selVeh.Id.ToString()); if (cbGatewayAndRadioGW.SelectedItems.Count == 0 ) { RadMessageBox.Show("Please select a gateway !", "Unit error", MessageBoxButtons.OK, RadMessageIcon.Error); return; } if(cbStatus.Text.Equals(MainForm.returnLNGString("active")) && isUnitDeleted) { DialogResult result = RadMessageBox.Show("Setting this unit as active will un-delete it! Are you sure you want to continue?", "Warning!!!", MessageBoxButtons.YesNo, RadMessageIcon.Info); if (result == DialogResult.No) return; } gw_id = (int)((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Gw_id; radio_id = ((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Id; //to do: put correct gw_id and radio_gw_id vehResponse reps = (MainForm.IS_SIERRA_WIRELESS ? DB.editVehicleSierra(selVeh.Id.ToString(), tbVehicleName.Text, 0, "", (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, (Int32)tbARSreportingInterval.Value, tbEmail.Text, tbPhone.Text, gw_id, radio_id, cbStatus.Text.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex, mobile) : DB.editVehicle(selVeh.Id.ToString(), tbVehicleName.Text, 0, "", (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, gw_id, radio_id, cbStatus.Text.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex, mobile, (Int32)tbARSreportingInterval.Value)); //MainForm.CallWebServer(MainForm.RestartSipLink); int sc_id = DB.getSCID(tbImei.Text); if (cbTalkGroup.SelectedItem != null) { if (cbTalkGroup.Text != MainForm.returnLNGString("none")) { int grID = listRadioTalk[cbTalkGroup.SelectedIndex - 1].Id; DBgrp.cleanRadioTalkConnection(grID.ToString()); DBgrp.AddGroupElement(sc_id, grID, GroupType.RADIOTALK.value); } else { DBgrp.RemoveGroupElement(sc_id, GroupType.RADIOTALK.value); } //HandleResp(reps); } if (cbGroups.SelectedItem != null) { if (cbGroups.Text != MainForm.returnLNGString("none")) { int grID = listCategory[cbGroups.SelectedIndex - 1].Id; DBgrp.AddGroupElement(sc_id, grID, GroupType.CATEGORY.value); } else { DBgrp.RemoveGroupElement(sc_id, GroupType.CATEGORY.value); } HandleResp(reps); } } else { EditRangeVehiclesAsync(); } } // send restarts parrent.SendRestart(); } } else { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("CompleteRadioIDAndUnitName"), MainForm.returnLNGString("err")); return; } } else { AddRangeVehiclesAsync(); } } catch (Exception ex) { Utils.WriteLine(ex.Message, ConsoleColor.Red); } } private async void EditRangeVehiclesAsync() { btnAdd.Enabled = btnExit.Enabled = false; await Task.Run(() => EditRangeVehicles()); btnAdd.Enabled = btnExit.Enabled = true; } private void EditRangeVehicles() { int carID = ((Car)((RadListDataItem)cbImageList.SelectedItem).Value).idx; string[] idList = IDList.Replace("(", "").Replace(")", "").Split(','); bool isUnitDeleted = DB.isUnitDeleted(idList[0]); if (cbStatus.Text.Equals(MainForm.returnLNGString("active")) && isUnitDeleted) { DialogResult result = RadMessageBox.Show("Setting these units as active will un-delete them! Are you sure you want to continue?", "Warning!!!", MessageBoxButtons.YesNo, RadMessageIcon.Info); if (result == DialogResult.No) return; } vehResponse reps = DB.editGroupVehicle(IDList, 0, "", (radTextBox1.Text != ""), (Int32)tbGPSreportingInterval.Value, (cbImageList.Text != MainForm.returnLNGString("multiple")), carID, (radTextBox4.Text != ""), (Int32)tbGPSPOOR.Value, (radTextBox3.Text != ""), (Int32)tbGPSOFF.Value, (radTextBox2.Text != ""), (Int32)tbMADEOFF.Value, (((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Name != initialGateway), ((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value), (cbStatus.Text != initialStatus), cbStatus.Text.Equals(MainForm.returnLNGString("active")), mobile, (Int32)tbARSreportingInterval.Value); //MainForm.CallWebServer(MainForm.RestartSipLink); if (cbGroups.SelectedItem != null) { if (cbGroups.Text != MainForm.returnLNGString("multiple")) { if (cbGroups.Text != MainForm.returnLNGString("none")) { int grID = listCategory[cbGroups.SelectedIndex - 1].Id; try { DBgrp.AddGroupElementBulk(IDList, idList, grID, GroupType.CATEGORY.value); } catch(Exception ex) { Utils.WriteLine("EditRangeVehicles error: " + ex.ToString(), ConsoleColor.Red); } } else { try { DBgrp.RemoveGroupElementBulk(IDList, GroupType.CATEGORY.value); } catch (Exception ex) { Utils.WriteLine("EditRangeVehicles error: " + ex.ToString(), ConsoleColor.Red); } } if (cbTalkGroup.Text != MainForm.returnLNGString("none")) { int grID = listRadioTalk[cbTalkGroup.SelectedIndex - 1].Id; try { DBgrp.AddGroupElementBulk(IDList, idList, grID, GroupType.RADIOTALK.value); } catch (Exception ex) { Utils.WriteLine("EditRangeVehicles error: " + ex.ToString(), ConsoleColor.Red); } } else { try { DBgrp.RemoveGroupElementBulk(IDList, GroupType.RADIOTALK.value); } catch (Exception ex) { Utils.WriteLine("EditRangeVehicles error: " + ex.ToString(), ConsoleColor.Red); } } } this.Invoke((MethodInvoker)delegate { HandleResp(reps); }); } } private async void AddRangeVehiclesAsync() { btnAdd.Enabled = btnExit.Enabled = false; await Task.Run(() => AddRangeVehicles()); btnAdd.Enabled = btnExit.Enabled = true; } private void AddRangeVehicles() { if (!tbPattern.Text.Contains("#")) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("unitnamepatternerr"), MainForm.returnLNGString("err")); return; } if (tbImeiEnd.Value - tbImeiStart.Value + 1 + MainForm.numberOfActiveUnits - MainForm.totalUnits > 0 && cbStatus.Text.Equals(MainForm.returnLNGString("active"))) { CustomMessageBox.Show(CustomMessageBoxType.exclamation, string.Format(MainForm.returnLNGString("maxUnitsCanAdd"), MainForm.totalUnits - MainForm.numberOfActiveUnits), MainForm.returnLNGString("err")); return; } String testID = TestUniqueIDinRange((Int32)tbImeiStart.Value, (Int32)tbImeiEnd.Value); if (testID.Length == 0) { Hashtable HashOfNames = GetUnitsIdAndNameFromPatter(tbPattern.Text, (Int32)tbImeiStart.Value, (Int32)tbImeiEnd.Value); String testName = TestUniqueNameinRange(HashOfNames); if (testName.Length == 0) { //We do the insert int carID = ((Car)((RadListDataItem)cbImageList.SelectedItem).Value).idx; int gw_id = 0; int radio_id = 0; if (cbGatewayAndRadioGW.SelectedItems.Count == 0 ) { MessageBox.Show("Please select a gateway !"); return; } if (((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value) != null) { gw_id = (int)((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Gw_id; radio_id = ((RadioGateway)cbGatewayAndRadioGW.SelectedItems[0].Value).Id; } vehResponse reps = (MainForm.IS_SIERRA_WIRELESS ? DB.addRangeVehicleSierraToDb(HashOfNames, cbUserforImei.Text, "", 0, true, (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, (Int32)tbARSreportingInterval.Value, tbEmailPattern.Text, gw_id, radio_id, cbStatus.Text.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex) : DB.addRangeVehicleToDb(HashOfNames, cbUserforImei.Text, "", 0, true, (Int32)tbGPSreportingInterval.Value, carID, (Int32)tbGPSPOOR.Value, (Int32)tbGPSOFF.Value, (Int32)tbMADEOFF.Value, (Int32)tbARSreportingInterval.Value, gw_id, radio_id, cbStatus.Text.Equals(MainForm.returnLNGString("active")), cbUnitType.SelectedIndex)); //MainForm.CallWebServer(MainForm.RestartSipLink); //add group relation ArrayList listof_Sc_id = DB.getListofSCID(HashOfNames); List scIds = new List(); foreach (Int32 scId in listof_Sc_id) scIds.Add(scId); if (cbGroups.SelectedItem != null) { if (cbGroups.Text != MainForm.returnLNGString("none")) { int grID = listCategory[cbGroups.SelectedIndex - 1].Id; DBgrp.AddRangeGroupElement(listof_Sc_id, grID, GroupType.CATEGORY.value); } } if (cbTalkGroup.SelectedItem != null) { if (cbTalkGroup.Text != MainForm.returnLNGString("none")) { int grID = listRadioTalk[cbTalkGroup.SelectedIndex - 1].Id; DBgrp.AddRangeGroupElement(listof_Sc_id, grID, GroupType.RADIOTALK.value); } } //add telemetry objs if ( listof_Sc_id.Count > 0 && ((MainForm.radioType == RADIOTYPE.MOTO) || (MainForm.radioType == RADIOTYPE.REPEATER_TRBO) || (((RadListDataItem)cbUnitType.SelectedItem).Text).ToLower() == DeviceType.RADIO.ToString().ToLower())) { for (int i = 1; i < 6; i++) { TelemetryObj obj = new TelemetryObj(0, i, "IN", "Low", "Digital " + i, false); try { DBtel.addRangeTelemetryObj(obj, listof_Sc_id); } catch (Exception ex) { SM.Debug("ERROR ADD tel obj for digital " + i); SM.Debug(ex.ToString()); } } } int sc_id = 0; if (scIds.Count > 0) sc_id = scIds[0]; // add Alarm entity in the database for all the units with the default values Alarm alm = new Alarm(0, sc_id, "1", "", "", "", "", "", true, true, true, true, true, true, true, true); try { if (scIds.Count > 0) { List alerts = new List() { AdminAlerts.ALARM_ON_EMAIL, AdminAlerts.EMERGENCY, AdminAlerts.EMERGENCY_POPUP, AdminAlerts.EMERGENCY_SOUND, AdminAlerts.GEOFENCE, AdminAlerts.GEOFENCE_POPUP, AdminAlerts.GEOFENCE_SOUND, AdminAlerts.LANDMARK, AdminAlerts.LONE_WORKER, AdminAlerts.SPEED, AdminAlerts.SPEED_POPUP, AdminAlerts.SPEED_SOUND, AdminAlerts.TELEMETRY_POPUP, AdminAlerts.TELEMETRY_SOUND}; DBalarm.insertAlarm4ScIds(alm, scIds, alerts); } //resp = DBalarm.deleteAlarm(radioID); //resp = DBalarm.addAlarm(alm, radioID); } catch (Exception ex) { Console.WriteLine(ex.ToString()); return; } this.Invoke((MethodInvoker)delegate { HandleResp(reps); }); // send restarts parrent.SendRestart(); } else { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("vehNameUnique") + "\n " + MainForm.returnLNGString("wehavedouble") + ":" + testName, MainForm.returnLNGString("err")); } } else { CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("imeiUnique") + "\n " + MainForm.returnLNGString("wehavedouble") + ":" + testID, MainForm.returnLNGString("err")); } } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } //utils private void HandleResp(vehResponse resp) { switch (resp) { case vehResponse.done: if (!formTypeEdit) { //RadMessageBox.Show("Unit Added to Database", "Done!", MessageBoxButtons.OK, RadMessageIcon.Exclamation); CustomMessageBox.Show(CustomMessageBoxType.check, MainForm.returnLNGString("unadd"), MainForm.returnLNGString("done")); this.Close(); } else { //RadMessageBox.Show("Unit edited!", "Done!", MessageBoxButtons.OK, RadMessageIcon.Exclamation); CustomMessageBox.Show(CustomMessageBoxType.check, MainForm.returnLNGString("unsave"), MainForm.returnLNGString("done")); clearVehicleInfo(); this.Close(); } break; case vehResponse.alreadyInDB: //RadMessageBox.Show("Unit Already in Database", "error!", MessageBoxButtons.OK, RadMessageIcon.Error); CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("allin"), MainForm.returnLNGString("err")); break; case vehResponse.SQLerror: //RadMessageBox.Show("SQL error", "error!", MessageBoxButtons.OK, RadMessageIcon.Error); CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("dberr"), MainForm.returnLNGString("err")); break; case vehResponse.vehNontInDB: //RadMessageBox.Show("Unit not in DB", "error!", MessageBoxButtons.OK, RadMessageIcon.Error); CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("unitnot"), MainForm.returnLNGString("err")); break; } } private void clearVehicleInfo() { tbImei.Text = ""; tbVehicleName.Text = ""; cbUserforImei.SelectedIndex = 0; cbGroups.SelectedIndex = 0; } private void cbImageList_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) { try { //multiple edit if (imageList1.Images.Count < cbImageList.Items.Count && cbImageList.SelectedIndex == cbImageList.Items.Count-1) pictureBox1.Image = null; else { pictureBox1.Image = imageList1.Images[cbImageList.SelectedIndex]; } } catch (Exception ex) { Console.WriteLine("Erorr load picture " + ex.Message + "::" + ex.StackTrace); } } private void AdvSettings_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (!AdvSettingsCollapse) { AdvSettingsCollapse = true; AdvSettings.Text = MainForm.returnLNGString("hideadvSettings"); this.Size = new Size(this.Size.Width, this.Size.Height + 100); int startX = panelUnitUI.Location.X + lbReportingInterval.Location.X; int startY = panelUnitUI.Location.Y + lbReportingInterval.Location.Y; lbGPSPOOR.Location = new Point(startX, startY + 50); lbGPSOFF.Location = new Point(startX, startY + 79); lbMADEOFF.Location = new Point(startX, startY + 104); lbGPSPOOR.Visible = true; lbGPSOFF.Visible = true; lbMADEOFF.Visible = true; startX = panelUnitUI.Location.X + cbUserforImei.Location.X; tbGPSPOOR.Location = new Point(startX + 50, startY + 50); tbGPSOFF.Location = new Point(startX + 50, startY + 75); tbMADEOFF.Location = new Point(startX + 50, startY + 100); tbGPSPOOR.Visible = true; tbGPSOFF.Visible = true; tbMADEOFF.Visible = true; radTextBox4.Location = new Point(startX + 50, startY + 50); radTextBox3.Location = new Point(startX + 50, startY + 75); radTextBox2.Location = new Point(startX + 50, startY + 100); radTextBox4.Visible = true; radTextBox3.Visible = true; radTextBox2.Visible = true; lbSecWithOUTPOOR.Location = new Point(lbSec.Location.X - 60, lbSec.Location.Y + 50); lbSecWithOUTOFF.Location = new Point(lbSec.Location.X - 60, lbSec.Location.Y + 75); lbSecWithOUTMADEOFF.Location = new Point(lbSec.Location.X - 60, lbSec.Location.Y + 100); lbSecWithOUTPOOR.Visible = true; lbSecWithOUTOFF.Visible = true; lbSecWithOUTMADEOFF.Visible = true; radLabel11.Location = new Point(lbSec.Location.X, lbSec.Location.Y + 50); radLabel12.Location = new Point(lbSec.Location.X, lbSec.Location.Y + 75); radLabel13.Location = new Point(lbSec.Location.X, lbSec.Location.Y + 100); radLabel11.Visible = true; radLabel12.Visible = true; radLabel13.Visible = true; Int32 valX = 90; lbGroup.Location = new Point(lbGroup.Location.X, lbGroup.Location.Y + valX); lbIcon.Location = new Point(lbIcon.Location.X, lbIcon.Location.Y + valX); lbARSinterval.Location = new Point(lbARSinterval.Location.X, lbARSinterval.Location.Y + valX); lbARSintervalSeconds.Location = new Point(lbARSintervalSeconds.Location.X, lbARSintervalSeconds.Location.Y + valX); cbGroups.Location = new Point(cbGroups.Location.X, cbGroups.Location.Y + valX); cbImageList.Location = new Point(cbImageList.Location.X, cbImageList.Location.Y + valX); tbARSreportingInterval.Location = new Point(tbARSreportingInterval.Location.X, tbARSreportingInterval.Location.Y + valX); pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y + valX); radLabel6.Location = new Point(radLabel6.Location.X, radLabel6.Location.Y + valX); radLabel7.Location = new Point(radLabel7.Location.X, radLabel7.Location.Y + valX); radLabel9.Location = new Point(radLabel9.Location.X, radLabel9.Location.Y + valX); cbGatewayAndRadioGW.Location = new Point(cbGatewayAndRadioGW.Location.X, cbGatewayAndRadioGW.Location.Y + valX); cbStatus.Location = new Point(cbStatus.Location.X, cbStatus.Location.Y + valX); cbTalkGroup.Location = new Point(cbTalkGroup.Location.X, cbTalkGroup.Location.Y + valX); btnAdd.Location = new Point(btnAdd.Location.X, btnAdd.Location.Y + valX); btnExit.Location = new Point(btnExit.Location.X, btnExit.Location.Y + valX); } else { AdvSettingsCollapse = false; AdvSettings.Text = MainForm.returnLNGString("advSettings"); this.Size = new Size(this.Size.Width, this.Size.Height -100); lbGPSPOOR.Visible = false; lbGPSOFF.Visible = false; lbMADEOFF.Visible = false; tbGPSPOOR.Visible = false; tbGPSOFF.Visible = false; tbMADEOFF.Visible = false; radTextBox2.Visible = false; radTextBox3.Visible = false; radTextBox4.Visible = false; lbSecWithOUTPOOR.Visible = false; lbSecWithOUTOFF.Visible = false; lbSecWithOUTMADEOFF.Visible = false; radLabel11.Visible = false; radLabel12.Visible = false; radLabel13.Visible = false; Int32 valX = - 90; lbGroup.Location = new Point(lbGroup.Location.X, lbGroup.Location.Y + valX); lbIcon.Location = new Point(lbIcon.Location.X, lbIcon.Location.Y + valX); lbARSinterval.Location = new Point(lbARSinterval.Location.X, lbARSinterval.Location.Y + valX); lbARSintervalSeconds.Location = new Point(lbARSintervalSeconds.Location.X, lbARSintervalSeconds.Location.Y + valX); cbGroups.Location = new Point(cbGroups.Location.X, cbGroups.Location.Y + valX); cbImageList.Location = new Point(cbImageList.Location.X, cbImageList.Location.Y + valX); tbARSreportingInterval.Location = new Point(tbARSreportingInterval.Location.X, tbARSreportingInterval.Location.Y + valX); pictureBox1.Location = new Point(pictureBox1.Location.X, pictureBox1.Location.Y + valX); radLabel6.Location = new Point(radLabel6.Location.X, radLabel6.Location.Y + valX); radLabel7.Location = new Point(radLabel7.Location.X, radLabel7.Location.Y + valX); radLabel9.Location = new Point(radLabel9.Location.X, radLabel9.Location.Y + valX); cbGatewayAndRadioGW.Location = new Point(cbGatewayAndRadioGW.Location.X, cbGatewayAndRadioGW.Location.Y + valX); cbStatus.Location = new Point(cbStatus.Location.X, cbStatus.Location.Y + valX); cbTalkGroup.Location = new Point(cbTalkGroup.Location.X, cbTalkGroup.Location.Y + valX); btnAdd.Location = new Point(btnAdd.Location.X, btnAdd.Location.Y + valX); btnExit.Location = new Point(btnExit.Location.X, btnExit.Location.Y + valX); } } private void tbGPSreportingInterval_ValueChanged(object sender, EventArgs e) { radTextBox1.Text = tbGPSreportingInterval.Value.ToString(); tbGPSPOOR.Value = tbGPSreportingInterval.Value * 2; tbGPSOFF.Value = tbGPSreportingInterval.Value * 4; tbMADEOFF.Value = tbGPSreportingInterval.Value * 10; } private void VehiclesForm_Load(object sender, EventArgs e) { //remove unittype smartphone for simoco //if (MainForm.radioType == RADIOTYPE.SIMOCO) if (MainForm.radioType != RADIOTYPE.LINX) { if (MainForm.hideLinxFeatures) cbUnitType.Items.RemoveAt(1); } //originalFormSize = this.Size; this.Size = btEditMobile.Visible ? new Size(644, 545) : new Size(321, 545); (Pageview.ViewElement as RadPageViewStripElement).ShowItemCloseButton = false; (Pageview.ViewElement as RadPageViewStripElement).StripButtons = StripViewButtons.Scroll; pagSingle.Text = MainForm.returnLNGString("SingleUnit"); pagSingle.Image = new Bitmap(Properties.Resources.car_214, new Size(16, 16)); pagRange.Text = MainForm.returnLNGString("RangeofUnits"); pagRange.Image = new Bitmap(Properties.Resources.cars_214, new Size(16, 16)); if (isMultiEdit) { pagSingle.Text = MainForm.returnLNGString("editgrp"); pagSingle.Image = new Bitmap(Properties.Resources.cars_214, new Size(16, 16)); } // create the toolTip that will be displayed when the user sets a pattern // over the hint pictureBox toolTipHelp = new ToolTip(); toolTipHelp.ToolTipTitle = MainForm.returnLNGString("IMEIRange"); toolTipHelp.AutoPopDelay = 0; toolTipHelp.InitialDelay = 0; toolTipHelp.ReshowDelay = 0; toolTipHelp.IsBalloon = false; toolTipHelp.ShowAlways = true; RefreshSelectedPage(); radioGWList = DBgateways.gelAllGatewaysAndRadioGateways(); radioGWList.Insert(0,new RadioGateway(){Gw_id = -1, Id = -1, Name = MainForm.returnLNGString("none") }); if (!isMultiEdit) { //foreach (RadioGateway rg in radioGWList) //{ // RadListDataItem test2 = new RadListDataItem(grp.Name); // cbGatewayAndRadioGW.Items.Add(test2); //} cbGatewayAndRadioGW.DataSource = radioGWList; cbGatewayAndRadioGW.DisplayMember = "name"; if (formTypeEdit) { cbStatus.SelectedIndex = (selVeh.Active) ? 0 : 1; cbUnitType.SelectedIndex = selVeh.Type; cbGatewayAndRadioGW.SelectedIndex = 0; for(int i = 0 ; i < radioGWList.Count; i++) { RadioGateway radio = radioGWList[i]; if (radio.Id == selVeh.Radio_gw_id && radio.Gw_id == selVeh.Gw_id) { cbGatewayAndRadioGW.SelectedIndex = i; break; } } } else { cbGatewayAndRadioGW.SelectedIndex = 0; } } else { List radioGWListMulti = DBgateways.gelAllGatewaysAndRadioGateways(IDList); if (radioGWListMulti.Count() > 1) { //radioGWList.Insert(0, new RadioGateway() { Gw_id = -1, Id = -1, Name = "none" }); radioGWList.Insert(0, new RadioGateway() { Id = -1, Gw_id = -1, Name = MainForm.returnLNGString("multiple") }); //foreach (RadioGateway grp in radioGWList) //{ // RadListDataItem test2 = new RadListDataItem(grp.Name); // cbTalkGroup.Items.Add(test2); //} cbGatewayAndRadioGW.DataSource = radioGWList; cbGatewayAndRadioGW.DisplayMember = "name"; //cbGatewayAndRadioGW.Items.Add("none"); cbGatewayAndRadioGW.SelectedIndex = 0; } else if (radioGWListMulti.Count == 1 || radioGWListMulti.Count == 0) { //foreach (RadioGateway grp in radioGWList) //{ // RadListDataItem test2 = new RadListDataItem(grp.Name); // cbTalkGroup.Items.Add(test2); //} //radioGWList.Insert(0, new RadioGateway() { Gw_id = -1, Id = -1, Name = "none" }); cbGatewayAndRadioGW.DataSource = radioGWList; cbGatewayAndRadioGW.DisplayMember = "name"; //cbGatewayAndRadioGW.Items.Add("none"); if (radioGWListMulti.Count == 1) { cbGatewayAndRadioGW.SelectedIndex = 0; for (int i = 0; i < radioGWList.Count; i++) { RadioGateway radio = radioGWList[i]; if (radio.Id == radioGWListMulti[0].Id && radio.Gw_id == radioGWListMulti[0].Gw_id) { cbGatewayAndRadioGW.SelectedIndex = i; break; } } } } } if (!MainForm.IS_SIERRA_WIRELESS) { Pageview.Size = new Size(313, 87); panelUnitUI.Location = new Point(6, 98); this.Size = new Size(this.Size.Width, this.Size.Height - 53); } else if (isMultiEdit) { tbEmail.Enabled = false; tbPhone.Enabled = false; } hasModifiedMobile = false; mobile = new MobileVehicles(); if(selVeh != null) mobile = DB.getMobileVehicle(selVeh.Id); isloaded = true; if (canEditMobile) editMobileButtonVisible(); #region Disable SIP related features for Simoco //hide gateway and radio gateway for simoco radLabel6.Visible = cbGatewayAndRadioGW.Visible = (MainForm.radioType != RADIOTYPE.SIMOCO); //hide radio talk group for simoco if(radLabel9.Visible==true) radLabel9.Visible = cbTalkGroup.Visible = (MainForm.radioType != RADIOTYPE.SIMOCO && MainForm.radioType != RADIOTYPE.EXCERA); if(MainForm.radioType == RADIOTYPE.SIMOCO) { radLabel7.Location = radLabel6.Location; btnExit.Location = new Point(btnExit.Location.X, cbStatus.Location.Y); btnAdd.Location = new Point(btnAdd.Location.X, cbStatus.Location.Y); cbStatus.Location = cbGatewayAndRadioGW.Location; this.Size = new Size(this.Size.Width, this.Size.Height - 100); } #endregion Disable SIP related features for Simoco tbEmail.TabStop = tbPhone.TabStop = MainForm.IS_SIERRA_WIRELESS; initialGateway = cbGatewayAndRadioGW.Text; initialStatus = cbStatus.Text; setGatewayDropDown(); if (MainForm.radioType == RADIOTYPE.LINX) { cbUnitType.SelectedIndex = 1; cbUnitType.Enabled = false; } if (MainForm.radioType == RADIOTYPE.LINXB) { updateLinxGroup(); } } private void updateLinxGroup() { if (!isMultiEdit) { if (((((RadListDataItem)cbUnitType.SelectedItem).Text).ToLower() == DeviceType.SMARTPHONE.ToString().ToLower())) { cbTalkGroup.Items.Clear(); RadListDataItem test5 = new RadListDataItem(MainForm.returnLNGString("none")); cbTalkGroup.Items.Add(test5); int currentGrp = -1; int id = selVeh == null ? -1 : selVeh.Id; listRadioTalk = DBgrp.getAllTalkGroupsAvailableForLinx(id, out currentGrp); if (listRadioTalk.Count() > 0) { cbTalkGroup.SelectedIndex = 0; foreach (Group grp in listRadioTalk) { test5 = new RadListDataItem(grp.Name); cbTalkGroup.Items.Add(test5); } radLabel9.Visible = cbTalkGroup.Visible = true; int count = 0; foreach (Group grp in listRadioTalk) { count++; if (grp.Id == currentGrp) { cbTalkGroup.SelectedIndex = count; } } } } else { radLabel9.Visible = cbTalkGroup.Visible = false; } } } private void pbHint_MouseEnter(object sender, EventArgs e) { DisplayToolTip(); } private void pbHint_MouseLeave(object sender, EventArgs e) { toolTipHelp.Hide(pbHint); } private void pbHint_MouseHover(object sender, EventArgs e) { DisplayToolTip(); } private void DisplayToolTip() { String unitsExample = ""; if (tbPattern.Text.Contains("#")) { for (int i = (Int32)tbImeiStart.Value; i <= (Int32)tbImeiEnd.Value; i++) { // add only first 3 values if (i < (Int32)tbImeiStart.Value + 3 || i > (Int32)tbImeiEnd.Value - 3) { string crtUnitName = ""; try { Hashtable hash = GetUnitsIdAndNameFromPatter(tbPattern.Text, i, i); foreach(DictionaryEntry pair in hash) { crtUnitName = pair.Value.ToString(); } } catch (Exception ex) { Console.WriteLine("EXCEPTION EX" + ex.ToString()); continue; } unitsExample += "\t" + crtUnitName + Environment.NewLine; } else if (i == (Int32)tbImeiStart.Value + 3 && ((Int32)tbImeiEnd.Value - (Int32)tbImeiStart.Value > 5)) { unitsExample += "\t" + "..." + Environment.NewLine; } } } // number of seconds for the toolTip to be shown toolTipHelp.Show( String.Format(string.Format(MainForm.returnLNGString("toolTipRange"),Environment.NewLine) + unitsExample) , pbHint, 150000); } /// /// Get the list of units with their corresponding ID based on the patter between the /// start id and the end id /// /// A hash list containing the ID as a key and the unit name as the value private Hashtable GetUnitsIdAndNameFromPatter(string pattern, Int32 idStart, Int32 idEnd) { Hashtable hash = new Hashtable(); // check if the pattern has the desired characters if (pattern.Contains("#")) { int count = 0; int firstPosition = -1; // the list of ### sequence and their number of apparences // the list will be position#number List apparenceList = new List(); for (int i = 0; i < tbPattern.Text.Length; i++) { // check if the current character is a # and count it if (tbPattern.Text[i].Equals('#')) { // i didn't found any # until now if (firstPosition == -1) { firstPosition = i; count = 1; } else count++; } else { // add into hash the position of the first apparence and it's count if (firstPosition != -1) { apparenceList.Insert(0, firstPosition + "#" + count); //apparenceCount.Add(firstPosition, count); // reset values firstPosition = -1; count = 0; } } } // check if the string is ending in a # if (firstPosition != -1) { apparenceList.Insert(0, firstPosition + "#" + count); //apparenceCount.Add(firstPosition, count); // reset values firstPosition = -1; count = 0; } // for each unit id selected in the number picker I should generate a unit for (int i = idStart; i <= idEnd; i++) { // the current unit name for this ID string crtUnitName = tbPattern.Text; // search for all ### sequences foreach (String str in apparenceList) { // split the position - count correspondence for this ### sequence string[] positionCount = str.Split(new char[] { '#' }); // remove the current ### sequence from the pattern crtUnitName = crtUnitName.Remove(int.Parse(positionCount[0]), int.Parse(positionCount[1])); // create the 000 mask for current ### sequence string mask = ""; for (int j = 0; j < int.Parse(positionCount[1]); j++) mask += "0"; // insert the unit id on using the desired pattern crtUnitName = crtUnitName.Insert(int.Parse(positionCount[0]), String.Format("{0:" + mask + "}", i)); } // add the created unitName to the hash with its ID if (!hash.ContainsKey(i)) hash.Add(i, crtUnitName); } } return hash; } /// /// Prevent the Numberic UpDown to past one over the other. /// Meaning that the start should always be smaller that the End one /// private void numericValueChanged(object sender, EventArgs e) { if (sender == tbImeiStart) { tbImeiEnd.Minimum = tbImeiStart.Value; } else if (sender == tbImeiEnd) { //tbImeiStart.Maximum = tbImeiEnd.Value; } } private void Pageview_SelectedPageChanged(object sender, EventArgs e) { RefreshSelectedPage(); editMobileButtonVisible(); #region Disable SIP related features for Simoco if (MainForm.radioType == RADIOTYPE.SIMOCO) { radLabel9.Visible = cbTalkGroup.Visible = false; this.Size = new Size(this.Size.Width, this.Size.Height - 150); } #endregion Disable SIP related features for Simoco } public void RefreshSelectedPage() { try { if (Pageview.SelectedPage.Name == "pagRange") AddRange = true; else AddRange = false; } catch (Exception ex) { SM.Debug("radTabStrip1_TabSelected:" + ex.ToString()); } } private void pagSingle_Paint(object sender, PaintEventArgs e) { } private void radTextBox_TextChanged(object sender, EventArgs e) { switch(((RadTextBox)sender).Name) { case "radTextBox1": if (radTextBox1.Text != "") { if (Convert.ToDecimal(radTextBox1.Text) >= 10) tbGPSreportingInterval.Value = Convert.ToDecimal(radTextBox1.Text); } break; case "radTextBox2": if (radTextBox2.Text != "") { if (Convert.ToDecimal(radTextBox2.Text) >= 10) tbMADEOFF.Value = Convert.ToDecimal(radTextBox2.Text); } break; case "radTextBox3": if (radTextBox3.Text != "") { if (Convert.ToDecimal(radTextBox3.Text) >= 10) tbGPSOFF.Value = Convert.ToDecimal(radTextBox3.Text); } break; case "radTextBox4": if (radTextBox4.Text != "") { if (Convert.ToDecimal(radTextBox4.Text) >= 10) tbGPSPOOR.Value = Convert.ToDecimal(radTextBox4.Text); } break; default: break; } } private void radTextBox_KeyPress(object sender, KeyPressEventArgs e) { if(char.IsNumber(e.KeyChar)) { } else { e.Handled = e.KeyChar != (char)Keys.Back; } } private void tbMADEOFF_ValueChanged(object sender, EventArgs e) { radTextBox2.Text = tbMADEOFF.Value.ToString(); } private void tbGPSOFF_ValueChanged(object sender, EventArgs e) { radTextBox3.Text = tbGPSOFF.Value.ToString(); } private void tbGPSPOOR_ValueChanged(object sender, EventArgs e) { radTextBox4.Text = tbGPSPOOR.Value.ToString(); } private void cbUnitType_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) { editMobileButtonVisible(); setGatewayDropDown(); } private void editMobileButtonVisible() { if (cbUnitType.SelectedItem == null) cbUnitType.SelectedItem = cbUnitType.Items[0]; btEditMobile.Visible = canEditMobile = ((((RadListDataItem)cbUnitType.SelectedItem).Text).ToLower() == DeviceType.SMARTPHONE.ToString().ToLower() && !AddRange); //btEditMobile.Visible = ((((RadListDataItem)cbUnitType.SelectedItem).Text).ToLower() == DeviceType.MOBILE.ToString().ToLower() && formTypeEdit == true && isMultiEdit == false); //radLabel9.Visible = cbTalkGroup.Visible = ((((RadListDataItem)cbUnitType.SelectedItem).Text).ToLower() == DeviceType.RADIO.ToString().ToLower()); radLabel9.Visible = cbTalkGroup.Visible = false; this.Size = btEditMobile.Visible ? new Size(644, 545) : new Size(321, 545); if(isloaded) btEditMobile.PerformClick(); if(cbUnitType.SelectedIndex == 1) cbTalkGroup.SelectedIndex = 0; btEditMobile.Visible = false; } List radioGWList = null; private void setGatewayDropDown() { if (radioGWList == null) return; if (cbUnitType.SelectedItem.Text.ToUpper() == DeviceType.RADIO.ToString()) { for (int i = 0; i < cbGatewayAndRadioGW.Items.Count; i++) { if (((RadioGateway)((RadListDataItem)cbGatewayAndRadioGW.Items[i]).Value) != null && ((RadioGateway)((RadListDataItem)cbGatewayAndRadioGW.Items[i]).Value).Type == (int)GatewayType.Broadband) cbGatewayAndRadioGW.Items.RemoveAt(i); } cbGatewayAndRadioGW.Enabled = true; if(!formTypeEdit) cbGatewayAndRadioGW.SelectedIndex = 0; return; } else if (cbUnitType.SelectedItem.Text.ToUpper() == DeviceType.SMARTPHONE.ToString()) { radioGWList = DBgateways.gelAllGatewaysAndRadioGateways(); radioGWList.Insert(0, new RadioGateway() { Gw_id = -1, Id = -1, Name = MainForm.returnLNGString("none") }); cbGatewayAndRadioGW.DataSource = radioGWList; int count = 0; cbGatewayAndRadioGW.Enabled = false; foreach (var item in cbGatewayAndRadioGW.Items) { if (((RadioGateway)((RadListDataItem)item).Value).Type == (int)GatewayType.Broadband) { cbGatewayAndRadioGW.SelectedIndex = count; } count++; } } else { var gwList = new List(); gwList.Insert(0, new RadioGateway() { Id = -1, Gw_id = -1, Name = MainForm.returnLNGString("multiple") }); //RadListDataItem test2 = new RadListDataItem("Multiple"); cbGatewayAndRadioGW.DataSource = gwList; cbGatewayAndRadioGW.DisplayMember = "name"; //cbGatewayAndRadioGW.Items.Add("none"); cbGatewayAndRadioGW.SelectedIndex = 0; //cbGatewayAndRadioGW.Items.Add(test2); cbGatewayAndRadioGW.Enabled = false; initialGateway = MainForm.returnLNGString("multiple"); //cbGatewayAndRadioGW.SelectedIndex = 0; } } private void btEditMobile_Click(object sender, EventArgs e) { Int64 temp = 0; //if (!Int64.TryParse(tbImei.Text, out temp) && (!isMultiEdit)) //{ // CustomMessageBox.Show(CustomMessageBoxType.exclamation, MainForm.returnLNGString("ImeiNotInt"), MainForm.returnLNGString("err")); // return; //} //else //{ if (temp > 1677721) { if(!MainForm.hideLinxFeatures) CustomMessageBox.Show(CustomMessageBoxType.exclamation, string.Format(MainForm.returnLNGString("ImeiLessThan"), 1677721), MainForm.returnLNGString("warning")); } //} if (selVeh != null) { if (!hasModifiedMobile) mobile = DB.getMobileVehicle(selVeh.Id); mobile.Id = selVeh.Id; isNEW = false; } else { if (mobile == null) mobile = new MobileVehicles(); isNEW = true; } vmf = new VehiclesMobileForm(tbImei.Text, tbVehicleName.Text); vmf.TopLevel = false; panelMobileForm.Controls.Add(vmf); vmf.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; vmf.Show(); } private void tbImei_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == (char)Keys.Back) ; // ok else e.Handled = true; } private void tbImei_TextChanged(object sender, EventArgs e) { if (vmf != null) { vmf.tbRadioIMEI.Text = tbImei.Text; } } } }