4187 lines
136 KiB
C#
4187 lines
136 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Telerik.WinControls.UI;
|
|
using MapGoogle;
|
|
using System.Collections;
|
|
using System.Drawing;
|
|
using SafeMobileLib;
|
|
using Telerik.WinControls.UI.Docking;
|
|
using System.Net.NetworkInformation;
|
|
using System.Net;
|
|
using System.IO;
|
|
using System.Web.Script.Serialization;
|
|
using System.ComponentModel;
|
|
using Telerik.WinControls;
|
|
using Telerik.WinControls.Layouts;
|
|
using System.Windows.Forms;
|
|
using Telerik.WinControls.Enumerations;
|
|
using System.Xml;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Safedispatch_4_0
|
|
{
|
|
public enum API
|
|
{
|
|
RADIO_ENABLE_DISABLE_REQ = 150,
|
|
POLL_GPS_REQ = 154,
|
|
POLL_ARS_REQ = 149,
|
|
RECORDING_RECEIVED = 155,
|
|
STOLEN_REQ = 208,
|
|
EMERGENCY_REC = 138
|
|
};
|
|
|
|
|
|
public class transfer125
|
|
{
|
|
public Int32 callStatus = 0;
|
|
public Int32 callType = 0;
|
|
public Int32 grpID = 0;
|
|
public Int64 intvalID = 0;
|
|
public String gwID = "0";
|
|
public String radioGwID = "0";
|
|
|
|
public transfer125(Int32 _callStatus, Int32 _callType, Int32 _grpID,Int64 _intvalID)
|
|
{
|
|
callStatus = _callStatus;
|
|
callType = _callType;
|
|
grpID = _grpID;
|
|
intvalID = _intvalID;
|
|
}
|
|
}
|
|
|
|
public class TabInstance
|
|
{
|
|
public String tabName="";
|
|
public Boolean isCreated = false;
|
|
|
|
public TabInstance(String _tabName,Boolean _isCreated)
|
|
{
|
|
tabName = _tabName;
|
|
isCreated = _isCreated;
|
|
}
|
|
}
|
|
|
|
public class GridData
|
|
{
|
|
public String col0 { get; set; }
|
|
public String col1 { get; set; }
|
|
public String col2 { get; set; }
|
|
public String col3 { get; set; }
|
|
public Int32 status { get; set; }
|
|
public String email { get; set; }
|
|
public Int32 idx { get; set; }
|
|
}
|
|
|
|
public class XYcoord
|
|
{
|
|
public Double lat;
|
|
public Double lng;
|
|
public Double dlat;
|
|
public Double dlng;
|
|
}
|
|
|
|
//public enum car_state_e
|
|
//{
|
|
// CAR_RUNNING = 0,
|
|
// CAR_START,
|
|
// CAR_STOP,
|
|
// CAR_HW
|
|
//};
|
|
|
|
//public enum rep_type
|
|
//{
|
|
// RFID = 0,
|
|
// GEOFENC,
|
|
// SPEED,
|
|
// EMERG,
|
|
// LAND,
|
|
// LOG,
|
|
// ENDOFDAY,
|
|
// STOP,
|
|
// IDLE,
|
|
// FLEET,
|
|
// SMSRECIVE,
|
|
// SMSSEND,
|
|
// CALLRECIVE,
|
|
// CALLSEND,
|
|
// TELEMETRY_ALARM,
|
|
// TELEMETRY_EVENT,
|
|
// HIST,
|
|
// ALLALARM,
|
|
// SMS_LOCATION,
|
|
// JOB_TICKETING
|
|
//};
|
|
|
|
public enum track_type
|
|
{
|
|
LIVE = 0,
|
|
HIST,
|
|
LANDZONE,
|
|
SMS,
|
|
TICKETING,
|
|
VOICE,
|
|
TELEM,
|
|
REPORTS,
|
|
SYSTEM,
|
|
HELP,
|
|
RADIO
|
|
};
|
|
|
|
//public enum StartItems
|
|
//{
|
|
// HISTTAB = 0,
|
|
// LIVETAB,
|
|
// SPEED,
|
|
// GEOFENC,
|
|
// LAND,
|
|
// EMERG,
|
|
// VIEWLOG,
|
|
// SMSINBOX,
|
|
// SMSOUTBOX
|
|
//};
|
|
|
|
public class SMSfromDB
|
|
{
|
|
public int sc_id_sour;
|
|
public int sc_id_Dest;
|
|
public int sc_id;
|
|
public Int32 date;
|
|
public string mes;
|
|
public int status;
|
|
public int idx;
|
|
public string email;
|
|
public Color color;
|
|
|
|
public SMSfromDB(int _sc_id, Int32 _date, string _mes, int _status, int _idx, string _email)
|
|
{
|
|
sc_id_sour = 0;
|
|
sc_id_Dest = 0;
|
|
sc_id = _sc_id;
|
|
date = _date;
|
|
mes = _mes;
|
|
status = _status;
|
|
idx = _idx;
|
|
email = _email;
|
|
}
|
|
|
|
|
|
public SMSfromDB(int _sc_id_sour, int _sc_id_Dest, Int32 _date, string _mes, int _status, int _idx, string _email)
|
|
{
|
|
sc_id_sour = _sc_id_sour;
|
|
sc_id_Dest = _sc_id_Dest;
|
|
sc_id = 0;
|
|
date = _date;
|
|
mes = _mes;
|
|
status = _status;
|
|
idx = _idx;
|
|
email = _email;
|
|
}
|
|
}
|
|
|
|
public class LocAndColor
|
|
{
|
|
//public Locationx[] location;
|
|
public ArrayList latlng = new ArrayList();
|
|
public Color color;
|
|
public Int32 startTime;
|
|
public Int32 endTime;
|
|
}
|
|
|
|
#region TABS
|
|
/// <summary>
|
|
/// Class equal with an enum containing a string as a returned value
|
|
/// </summary>
|
|
public sealed class Tabs
|
|
{
|
|
private readonly String name;
|
|
private readonly int value;
|
|
|
|
public static readonly Tabs LIVE = new Tabs(1, "LIVE");
|
|
public static readonly Tabs GEOFENCE = new Tabs(2, "GEOFENCE");
|
|
public static readonly Tabs HISTORY = new Tabs(3, "HISTORY");
|
|
public static readonly Tabs TEXT = new Tabs(4, "TEXT");
|
|
public static readonly Tabs TICKETING = new Tabs(5, "TICKETING");
|
|
public static readonly Tabs REPORTS = new Tabs(6, "REPORTS");
|
|
public static readonly Tabs VOICE = new Tabs(7, "VOICE");
|
|
public static readonly Tabs TELEMETRY = new Tabs(8, "TELEMETRY");
|
|
public static readonly Tabs SYSTEM = new Tabs(9, "SYSTEM");
|
|
public static readonly Tabs ALERTS = new Tabs(10, "ALERTS");
|
|
public static readonly Tabs RADIO = new Tabs(11, "RADIO");
|
|
|
|
private Tabs(int value, String name)
|
|
{
|
|
this.name = name;
|
|
this.value = value;
|
|
}
|
|
|
|
public override String ToString()
|
|
{
|
|
return name;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Detect if a string tag can be converted to a TAB enume
|
|
/// </summary>
|
|
/// <param name="tag">Name of the enum which needs to be converted</param>
|
|
/// <returns>True is the string is a TAB enum</returns>
|
|
public bool Contains(String tag)
|
|
{
|
|
try
|
|
{
|
|
if (LIVE.ToString().Equals(tag) ||
|
|
HISTORY.ToString().Equals(tag) ||
|
|
GEOFENCE.ToString().Equals(tag) ||
|
|
REPORTS.ToString().Equals(tag) ||
|
|
TELEMETRY.ToString().Equals(tag) ||
|
|
TEXT.ToString().Equals(tag) ||
|
|
TICKETING.ToString().Equals(tag) ||
|
|
VOICE.ToString().Equals(tag) ||
|
|
RADIO.ToString().Equals(tag) ||
|
|
SYSTEM.ToString().Equals(tag) ||
|
|
ALERTS.ToString().Equals(tag)
|
|
)
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Utils.WriteLine(ex.ToString(), ConsoleColor.Red);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region GEOFENCE
|
|
public class GeofenceUI
|
|
{
|
|
public Int32 Idx { get; set; }
|
|
public String Name { get; set; }
|
|
public Color FillColor { get; set; }
|
|
public Double FillOpacity { get; set; }
|
|
public Color BorderColor { get; set; }
|
|
public Double BorderOpacity { get; set; }
|
|
public Double BorderWidth { get; set; }
|
|
public Int32 UserIdx { get; set; }
|
|
public AlertType AlertTypee { get; set; }
|
|
|
|
public List<GeofencePoint> points { get; set; }
|
|
|
|
public Boolean SendUnitMessage { get; set; }
|
|
public String UnitMessage { get; set; }
|
|
|
|
public Boolean SendUnitsMessage { get; set; }
|
|
public String UnitsMessage { get; set; }
|
|
public List<Int32> UnitsIds { get; set; }
|
|
public List<Int64> UnitsImeis { get; set; }
|
|
|
|
public Boolean SendEmail { get; set; }
|
|
public String EmailAddress { get; set; }
|
|
public String EmailSubject { get; set; }
|
|
public String EmailBody { get; set; }
|
|
|
|
public Int32 SpeedLimit { get; set; }
|
|
|
|
public Boolean Callout { get; set; }
|
|
public int CalloutSeverity { get; set; }
|
|
|
|
public enum AlertType { IN = 1, OUT = 2, IN_OUT = 3, NONE = 4 };
|
|
}
|
|
|
|
public class GeofencePoint
|
|
{
|
|
public Int32 Idx { get; set; }
|
|
public Double Latitude { get; set; }
|
|
public Double Longitude { get; set; }
|
|
public Int32 GeofeceId { get; set; }
|
|
}
|
|
#endregion
|
|
|
|
#region LANNDMARK
|
|
public class LandmarkUI
|
|
{
|
|
public Int32 Idx { get; set; }
|
|
public String Name { get; set; }
|
|
public String Description { get; set; }
|
|
public String Address { get; set; }
|
|
public Double Latitude { get; set; }
|
|
public Double Longitude { get; set; }
|
|
public Int32 TypeIdx { get; set; }
|
|
|
|
public Int32 UserIdx { get; set; }
|
|
public Color Color { get; set; }
|
|
public String IconName { get; set; }
|
|
public IconSize Size { get; set; }
|
|
public Boolean Callout { get; set; }
|
|
public int CalloutSeverity { get; set; }
|
|
|
|
/// <summary>
|
|
/// Class equal with an enum containing a string as a returned value
|
|
/// </summary>
|
|
public sealed class IconSize
|
|
{
|
|
|
|
private readonly String name;
|
|
private readonly int value;
|
|
|
|
public static readonly IconSize SMALL = new IconSize(1, "s");
|
|
public static readonly IconSize MEDIUM = new IconSize(2, "m");
|
|
public static readonly IconSize LARGE = new IconSize(3, "l");
|
|
|
|
private IconSize(int value, String name)
|
|
{
|
|
this.name = name;
|
|
this.value = value;
|
|
}
|
|
|
|
public override String ToString()
|
|
{
|
|
return name;
|
|
}
|
|
|
|
|
|
public String ToDBString()
|
|
{
|
|
return value == 1 ? "small" : (value == 2 ? "medium" : "large");
|
|
}
|
|
|
|
|
|
public static IconSize GetIconSize(string size)
|
|
{
|
|
if(size.ToLower().Equals("small"))
|
|
return IconSize.SMALL;
|
|
else if(size.ToLower().Equals("large"))
|
|
return IconSize.LARGE;
|
|
else
|
|
return IconSize.MEDIUM;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public class LandmarkType
|
|
{
|
|
public Int32 CrtIdx { get; set; }
|
|
public Int32 Idx { get; set; }
|
|
public String IconName { get; set; }
|
|
public String TypeName { get; set; }
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
public class Zone_type
|
|
{
|
|
public string name;
|
|
public Int32 idx;
|
|
public Int32 driver_id;
|
|
|
|
public Zone_type(String paramName, Int32 paramidx, Int32 paramdriver)
|
|
{
|
|
name = paramName;
|
|
idx = paramidx;
|
|
driver_id = paramdriver;
|
|
}
|
|
|
|
public String Name
|
|
{
|
|
get
|
|
{
|
|
return name;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class Zones
|
|
{
|
|
private String name;
|
|
public double latMAX;
|
|
public double lngMAX;
|
|
public double latMIN;
|
|
public double lngMIN;
|
|
private Int32 idx;
|
|
private Int32 position = 0; //0=nu stiu 2=IN 1=OUT
|
|
|
|
public Zones(String paramName, Double lat1, Double lng1, Double lat2, Double lng2, Int32 paramidx)
|
|
{
|
|
name = paramName;
|
|
idx = paramidx;
|
|
if (lat1 > lat2) { latMAX = lat1; latMIN = lat2; }
|
|
else { latMAX = lat2; latMIN = lat1; }
|
|
if (lng1 > lng2) { lngMAX = lng1; lngMIN = lng2; }
|
|
else { lngMAX = lng2; lngMIN = lng1; }
|
|
position = 0;
|
|
}
|
|
|
|
public Boolean CheckZone(Double _lat, Double _lng)
|
|
{
|
|
Boolean tmp = false;
|
|
if (((_lat >= latMIN) && (_lat <= latMAX)) && ((_lng >= lngMIN) && (_lng <= lngMAX)))
|
|
{
|
|
if (position == 1) { tmp = true; }
|
|
position = 2;
|
|
}
|
|
else
|
|
{
|
|
if (position == 2) { tmp = true; }
|
|
position = 1;
|
|
}
|
|
return tmp;
|
|
}
|
|
|
|
public Int32 zone_id
|
|
{
|
|
get
|
|
{
|
|
return idx;
|
|
}
|
|
}
|
|
|
|
public Int32 action
|
|
{
|
|
get
|
|
{
|
|
return position;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public class ReportDefinition
|
|
{
|
|
public Int32 Idx { get; set; }
|
|
public Int32 StartDate { get; set; }
|
|
public Int32 EndDate { get; set; }
|
|
public String UnitIds { get; set; }
|
|
public Int32 GeofenceId { get; set; }
|
|
public Int32 TypeStat { get; set; }
|
|
public Int32 ReportId { get; set; }
|
|
public String Email { get; set; }
|
|
public Int32 IdleTime { get; set; }
|
|
public Boolean LatLng { get; set; }
|
|
public Int32 UserId { get; set; }
|
|
public String TicketStatus { get; set; }
|
|
public String TicketDate { get; set; }
|
|
public String ReportType { get; set; }
|
|
public String Day { get; set; }
|
|
public Boolean IsActive { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// used in report form in order to store the imeis and the scIDs of the units and groups
|
|
/// </summary>
|
|
public class DropListItem : RadListDataItem
|
|
{
|
|
public Image Image { get; set; }
|
|
public String ValueImei { get; set; }
|
|
public String ValueScID { get; set; }
|
|
public Boolean IsGroup { get; set; }
|
|
|
|
public DropListItem()
|
|
{
|
|
this.Image = null;
|
|
this.ValueImei = "";
|
|
this.ValueScID = "";
|
|
this.IsGroup = false;
|
|
}
|
|
|
|
public DropListItem(String name, Image image, String valueImei, String valueScID, Boolean isGroup)
|
|
{
|
|
this.Text = name;
|
|
this.Image = image;
|
|
this.ValueImei = valueImei;
|
|
this.ValueScID = valueScID;
|
|
this.IsGroup = isGroup;
|
|
}
|
|
}
|
|
|
|
|
|
public class VehandID
|
|
{
|
|
private string name;
|
|
private Int32 idx;
|
|
private string imei;
|
|
public Int32 color = 0;
|
|
public Int32 IconID = 0;
|
|
public Int32 veh_id = 0;
|
|
public Int32 report_int = 0;
|
|
public Boolean check = false;
|
|
public Boolean is_stolen = false;
|
|
|
|
public Int32 groupID;
|
|
public String groupName;
|
|
|
|
public String GwandRadioID = "0.0";
|
|
|
|
public bool hasEmergencyAlert = false;
|
|
public bool hasZoneAlert = false;
|
|
public bool hasLoneWorkerAlert = false;
|
|
public bool hasSpeedAlert = false;
|
|
public bool hasEmailAlert = false;
|
|
public bool hasLandmarkAlert = false;
|
|
public bool hasTelemetryAlert = false;
|
|
public bool canMakeSipCalls = false;
|
|
public int sipID = -1;
|
|
|
|
public string Imei
|
|
{
|
|
get { return imei; }
|
|
set { imei = value; }
|
|
}
|
|
|
|
public VehandID(String paramName, Int32 paramidx, string pimei)
|
|
{
|
|
name = paramName;
|
|
idx = paramidx;
|
|
imei = pimei;
|
|
}
|
|
|
|
public VehandID(String paramName, Int32 paramidx, string pimei, Int32 color_param, Int32 IconID_param, Int32 veh_id_param,Int32 report_int_param, Boolean checkpar)
|
|
{
|
|
name = paramName;
|
|
idx = paramidx; //sc_id
|
|
imei = pimei;
|
|
color = color_param;
|
|
IconID = IconID_param;
|
|
veh_id = veh_id_param;
|
|
check = checkpar;
|
|
report_int = report_int_param;
|
|
is_stolen = false;
|
|
}
|
|
|
|
public VehandID(String paramName, Int32 paramidx, string pimei, Int32 color_param, Int32 IconID_param, Int32 veh_id_param, Int32 report_int_param, Boolean checkpar, Boolean is_stolenParam)
|
|
{
|
|
name = paramName;
|
|
idx = paramidx; //sc_id
|
|
imei = pimei;
|
|
color = color_param;
|
|
IconID = IconID_param;
|
|
veh_id = veh_id_param;
|
|
check = checkpar;
|
|
report_int = report_int_param;
|
|
is_stolen = is_stolenParam;
|
|
}
|
|
|
|
public String Name
|
|
{
|
|
get
|
|
{
|
|
return name;
|
|
}
|
|
}
|
|
|
|
public Int32 sc_id
|
|
{
|
|
get
|
|
{
|
|
return idx;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class TeleNames
|
|
{
|
|
private string name;
|
|
private Int32 id;
|
|
|
|
public TeleNames(String _name, Int32 _id)
|
|
{
|
|
name = _name;
|
|
id = _id;
|
|
}
|
|
|
|
public Int32 Id
|
|
{
|
|
get { return id; }
|
|
set { id = value; }
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get { return name; }
|
|
set { name = value; }
|
|
}
|
|
}
|
|
|
|
enum StopTypes : int
|
|
{
|
|
NA, NORMAL, DEPOT, RRXING, NEW, SCHOOL
|
|
}
|
|
|
|
enum PeopleTypes : int
|
|
{
|
|
STUDENT, DRIVER
|
|
}
|
|
|
|
public enum ActionSMS : int
|
|
{
|
|
INSERT, CONFIRM, VIEW
|
|
}
|
|
|
|
public class SMposition
|
|
{
|
|
public double m_lat { get; set; }
|
|
public double m_lng { get; set; }
|
|
public double m_alt { get; set; }
|
|
public Int32 m_time { get; set; }
|
|
public string m_vehName { get; set; }
|
|
public string m_imei { get; set; }
|
|
public byte m_di { get; set; }
|
|
public byte m_motostat { get; set; }
|
|
public byte m_do { get; set; }
|
|
public byte m_speed { get; set; }
|
|
public Int32 m_heading { get; set; }
|
|
public Int32 m_evnt_id { get; set; }
|
|
public string m_address { get; set; }
|
|
public Int32 m_posID { get; set; }
|
|
public double m_scevMSSQL { get; set; }
|
|
|
|
public SMposition()
|
|
{
|
|
m_imei = "";
|
|
m_vehName = "";
|
|
m_time = 0;
|
|
m_lat = m_lng = m_alt = 0.0;
|
|
m_scevMSSQL = 0;
|
|
m_di = m_do = m_speed = 0;
|
|
m_address = "";
|
|
m_posID = 0;
|
|
m_motostat = 0;
|
|
}
|
|
public SMposition(double LAT, double LNG, double ALT)
|
|
{
|
|
m_lat = LAT;
|
|
m_lng = LNG;
|
|
m_alt = ALT;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return String.Format("IMEI: {0}, time: {1}, Lat: {2}, Lng:{3}, DI: {4}, DO: {5}, Speed: {6}",
|
|
m_imei, m_time, m_lat, m_lng, m_di, m_do, m_speed);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public class SMSrecv
|
|
{
|
|
public Int32 timeGMT { get; set; }
|
|
public Int32 sc_id { get; set; }
|
|
public String mess { get; set; }
|
|
public Int32 idx { get; set; }
|
|
public String vehname { get; set; }
|
|
public Boolean onscreen { get; set; }
|
|
}
|
|
|
|
public class Stops
|
|
{
|
|
public String name;
|
|
public Int32 start, stop;
|
|
public Double lat, lng;
|
|
public car_state_e type;
|
|
public Stops()
|
|
{
|
|
name = "";
|
|
}
|
|
}
|
|
|
|
public class Place
|
|
{
|
|
public string name;
|
|
public string desc { get; set; }
|
|
public double lat { get; set; }
|
|
public double lng { get; set; }
|
|
public string type { get; set; }
|
|
public string pic { get; set; }
|
|
public string address { get; set; }
|
|
public Int32 idx { get; set; }
|
|
public Int32 useridx { get; set; }
|
|
public ESRI.ArcGIS.Display.IPictureMarkerSymbol GISsymb = null;
|
|
public Hashtable SymbGIS = new Hashtable();
|
|
public String iconName { get; set; }
|
|
public String iconSize { get; set; }
|
|
public String color { get; set; }
|
|
public Boolean callout { get; set; }
|
|
public int callout_severity { get; set; }
|
|
|
|
public String Name
|
|
{
|
|
get
|
|
{
|
|
return name;
|
|
}
|
|
}
|
|
|
|
public String Type
|
|
{
|
|
get
|
|
{
|
|
return type;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class Car
|
|
{
|
|
public string name;
|
|
public string fileName;
|
|
public string listFilePath;
|
|
public string googleAddresPath;
|
|
public string iconPattern;
|
|
public string displayedName;
|
|
public string desc;
|
|
public Int32 idx;
|
|
public Symbolx symb;
|
|
public ESRI.ArcGIS.Display.IPictureMarkerSymbol GISsymb =null;
|
|
public Hashtable SymbMap = new Hashtable();
|
|
public Hashtable SymbGIS = new Hashtable();
|
|
}
|
|
|
|
public class TwoIntOneStr
|
|
{
|
|
public String cmd;
|
|
public Int32 timeout;
|
|
public Int32 id;
|
|
}
|
|
|
|
public class PassengerClass
|
|
{
|
|
public String RFID { get; set; }
|
|
public String Name { get; set; }
|
|
public String VehName { get; set; }
|
|
public Int32 sc_id { get; set; }
|
|
public String VehNameAssign { get; set; }
|
|
public Int32 sc_idAssign { get; set; }
|
|
public Int32 TimePick { get; set; }
|
|
public Int32 TimeDrop { get; set; }
|
|
|
|
public String NameCOM
|
|
{
|
|
get
|
|
{
|
|
return Name;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class GroupClass
|
|
{
|
|
public GroupClass(String _name, Int32 _id, Int32 _cps_id, ArrayList _arr, ArrayList _arrImei)
|
|
{
|
|
id = _id;
|
|
name = _name;
|
|
arrSc_id = _arr;
|
|
cps_id = _cps_id;
|
|
arrImei = _arrImei;
|
|
}
|
|
public GroupClass(String _name, Int32 _id, Int32 _cps_id)
|
|
{
|
|
name = _name;
|
|
id = _id;
|
|
cps_id = _cps_id;
|
|
}
|
|
public GroupClass() { }
|
|
public ArrayList arrSc_id;
|
|
public string name;
|
|
public Int32 id;
|
|
public Int32 cps_id;
|
|
public ArrayList arrImei;
|
|
}
|
|
|
|
//public class ZoneClass
|
|
//{
|
|
// public ZoneClass(String _name, Int32 _id, Int32 _color, Int32 _useridx, ArrayList _arr)
|
|
// {
|
|
// id = _id;
|
|
// name = _name;
|
|
// arrSc_id = _arr;
|
|
// new_arrSc_id = new ArrayList();
|
|
// foreach (PointonZone obj in arrSc_id)
|
|
// {
|
|
// PointonZone tmp = new PointonZone(obj.lat, obj.lng, obj.idx);
|
|
// new_arrSc_id.Add(tmp);
|
|
// }
|
|
// position = 0;
|
|
// color = _color;
|
|
// useridx = _useridx;
|
|
// }
|
|
|
|
// public ZoneClass(ZoneClass _oldzone, Int32 _id, ArrayList _arr)
|
|
// {
|
|
// id = _id;
|
|
// arrSc_id = _arr;
|
|
// new_arrSc_id = new ArrayList();
|
|
// foreach (PointonZone obj in arrSc_id)
|
|
// {
|
|
// PointonZone tmp = new PointonZone(obj.lat, obj.lng, obj.idx);
|
|
// new_arrSc_id.Add(tmp);
|
|
// }
|
|
// position = 0;
|
|
// name = _oldzone.name;
|
|
// color = _oldzone.color;
|
|
// useridx = _oldzone.useridx;
|
|
// AlarmType = _oldzone.AlarmType;
|
|
// sentmsg = _oldzone.sentmsg;
|
|
// msgbody = _oldzone.msgbody;
|
|
// unitids = _oldzone.unitids;
|
|
// sentemail = _oldzone.sentemail;
|
|
// email = _oldzone.email;
|
|
// subj = _oldzone.subj;
|
|
// body = _oldzone.body;
|
|
// sentmsg2 = _oldzone.sentmsg2;
|
|
// msgbody2 = _oldzone.msgbody2;
|
|
// speed = _oldzone.speed;
|
|
// }
|
|
|
|
// public ZoneClass(String _name, Int32 _color, Int32 _useridx, Int32 _AlarmType, Boolean _sentmsg, String _msgbody, String _unitids, Boolean _sentemail, String _email, String _subj, String _body, Boolean _sentmsg2, String _msgbody2, Int32 _speed)
|
|
// {
|
|
// position = 0;
|
|
// name = _name;
|
|
// color = _color;
|
|
// useridx = _useridx;
|
|
// AlarmType = _AlarmType;
|
|
// sentmsg = _sentmsg;
|
|
// msgbody = _msgbody;
|
|
// unitids = _unitids;
|
|
// sentemail = _sentemail;
|
|
// email = _email;
|
|
// subj = _subj;
|
|
// body = _body;
|
|
// sentmsg2 = _sentmsg2;
|
|
// msgbody2 = _msgbody2;
|
|
// speed = _speed;
|
|
// }
|
|
|
|
|
|
// public ArrayList arrSc_id;
|
|
// public ArrayList new_arrSc_id;
|
|
// public string name;
|
|
// public Int32 id;
|
|
// public Int32 color;
|
|
// private Int32 position = 0; //0=nu stiu 2=IN 1=OUT
|
|
// public Int32 useridx = 0;
|
|
// public Int32 AlarmType = 3;
|
|
// public Boolean sentmsg = true;
|
|
// public String msgbody = "";
|
|
// public String unitids = "";
|
|
// public Boolean sentemail = true;
|
|
// public String email = "";
|
|
// public String subj = "";
|
|
// public String body = "";
|
|
// public Boolean sentmsg2 = true;
|
|
// public String msgbody2 = "";
|
|
// public Int32 speed = 0;
|
|
// public String Name
|
|
// {
|
|
// get
|
|
// {
|
|
// return name;
|
|
// }
|
|
// }
|
|
|
|
// public String CheckZone(Double _lat, Double _lng)
|
|
// {
|
|
// String response = "";
|
|
// Boolean tmp = false;
|
|
// PointonZone oldPoint = (PointonZone)arrSc_id[arrSc_id.Count - 1];
|
|
// foreach (PointonZone obj in arrSc_id)
|
|
// {
|
|
// if (((obj.lat > _lat) != (oldPoint.lat > _lat)) && (_lng < (oldPoint.lng - obj.lng) * (_lat - obj.lat) / (oldPoint.lat - obj.lat) + obj.lng)) tmp = !tmp;
|
|
// oldPoint = obj;
|
|
// }
|
|
// if ((position != 2) && (tmp)) { position = 2; response = "IN " + name; }
|
|
// else if ((position != 1) && (!tmp)) { position = 1; response = "OUT " + name; }
|
|
|
|
// return response;
|
|
// }
|
|
//}
|
|
|
|
public class Square
|
|
{
|
|
public Square(Double latParam, Double lngParam, Double lat2Param, Double lng2Param, Int32 IdParam)
|
|
{
|
|
lat = latParam;
|
|
lng = lngParam;
|
|
lat2 = lat2Param;
|
|
lng2 = lng2Param;
|
|
Id = IdParam;
|
|
}
|
|
|
|
public Double lat, lng, lat2, lng2;
|
|
public Int32 Id;
|
|
}
|
|
|
|
public class Lines
|
|
{
|
|
public Lines(Double latParam, Double lngParam, Double lat2Param, Double lng2Param, String nameParam)
|
|
{
|
|
lat = latParam;
|
|
lng = lngParam;
|
|
lat2 = lat2Param;
|
|
lng2 = lng2Param;
|
|
name = nameParam;
|
|
}
|
|
|
|
public Double lat, lng, lat2, lng2;
|
|
public String name;
|
|
}
|
|
|
|
public class Points
|
|
{
|
|
public Points(Double latParam, Double lngParam, String Name1Param, String Name2Param, String Name3Param, String Name4Param, String Name5Param)
|
|
{
|
|
lat = latParam;
|
|
lng = lngParam;
|
|
name1 = Name1Param;
|
|
name2 = Name2Param;
|
|
name3 = Name3Param;
|
|
name4 = Name4Param;
|
|
name5 = Name5Param;
|
|
}
|
|
|
|
public Double lat, lng;
|
|
public String name1, name2, name3, name4, name5;
|
|
}
|
|
|
|
//public class PointonZone
|
|
//{
|
|
// public PointonZone(Double latParam, Double lngParam, Int32 idxParam)
|
|
// {
|
|
// lat = latParam;
|
|
// lng = lngParam;
|
|
// idx = idxParam;
|
|
// }
|
|
// public Double lat, lng;
|
|
// public Int32 idx;
|
|
//}
|
|
|
|
public class TimerAndResp
|
|
{
|
|
public System.Threading.Timer timer = null;
|
|
public Boolean wait = true;
|
|
public Boolean Respose = false;
|
|
public Boolean StatusON = false;
|
|
public Int64 intval = 0;
|
|
public Int32 typeID = 0;
|
|
public Int32 callStatus = 0;
|
|
public Int32 callType = 0;
|
|
public Int32 GrpID = 0;
|
|
public String gwID = "0";
|
|
public String radioGwID = "0";
|
|
|
|
public TimerAndResp(System.Threading.Timer _timer, Boolean _wait)
|
|
{
|
|
timer = _timer;
|
|
wait = _wait;
|
|
}
|
|
|
|
public TimerAndResp(System.Threading.Timer _timer, Boolean _wait,Int32 _typeID)
|
|
{
|
|
timer = _timer;
|
|
wait = _wait;
|
|
typeID = _typeID;
|
|
}
|
|
}
|
|
|
|
public struct sDevice
|
|
{
|
|
public int index;
|
|
public string name;
|
|
}
|
|
|
|
public class messBody
|
|
{
|
|
public string body;
|
|
public string name;
|
|
|
|
public messBody(String _body,String _name)
|
|
{
|
|
body = _body;
|
|
name = _name;
|
|
}
|
|
}
|
|
|
|
public class LiveTabWind
|
|
{
|
|
public ToolWindow toolwind;
|
|
public LiveTab livetab=null;
|
|
public LiveTabGIS livetabgis = null;
|
|
|
|
public LiveTabWind(ToolWindow _toolwind, LiveTab _livetab)
|
|
{
|
|
toolwind = _toolwind;
|
|
livetab = _livetab;
|
|
}
|
|
|
|
public LiveTabWind(ToolWindow _toolwind, LiveTabGIS _livetabgis)
|
|
{
|
|
toolwind = _toolwind;
|
|
livetabgis = _livetabgis;
|
|
}
|
|
}
|
|
|
|
public class HistTabWind
|
|
{
|
|
public ToolWindow toolwind;
|
|
public HistoryTab histtab = null;
|
|
|
|
public HistTabWind(ToolWindow _toolwind, HistoryTab _livetab)
|
|
{
|
|
toolwind = _toolwind;
|
|
histtab = _livetab;
|
|
}
|
|
|
|
}
|
|
|
|
public class Commands
|
|
{
|
|
public Commands(Int32 _type, String _imei, Int32 _time, Double _lat, Double _lng, Int32 _speed, Int32 _di, Double _alt)
|
|
{
|
|
type = _type;
|
|
imei = _imei;
|
|
time = _time;
|
|
lat = _lat;
|
|
lng = _lng;
|
|
alt = _alt;
|
|
speed = _speed;
|
|
di = _di;
|
|
}
|
|
|
|
public Commands(Int32 _type, String _imei, Boolean _ARSon)
|
|
{
|
|
type = _type;
|
|
imei = _imei;
|
|
ARSon = _ARSon;
|
|
}
|
|
|
|
public Commands(Int32 _type, String _imei, String _mess, String _email)
|
|
{
|
|
type = _type;
|
|
imei = _imei;
|
|
messages = _mess;
|
|
email = _email;
|
|
}
|
|
|
|
public Commands(Int32 _type, String _imei, String _zone)
|
|
{
|
|
type = _type;
|
|
imei = _imei;
|
|
zone = _zone;
|
|
}
|
|
|
|
|
|
public Commands(Int32 _type, String _imei,Int32 _di,Boolean _diNew)
|
|
{
|
|
type = _type;
|
|
imei = _imei;
|
|
di = _di;
|
|
diNew = _diNew;
|
|
}
|
|
|
|
public Int32 type;
|
|
public Int32 speed;
|
|
public Int32 time;
|
|
public Int32 di;
|
|
public Boolean diNew = false;
|
|
public string imei;
|
|
public string messages;
|
|
public string email;
|
|
public string zone;
|
|
public Double lat;
|
|
public Double lng;
|
|
public Double alt;
|
|
public Boolean ARSon;
|
|
}
|
|
|
|
public class UnitsGroupClass
|
|
{
|
|
public ArrayList arrSc_id;
|
|
public string name;
|
|
}
|
|
|
|
public class GatewayIDandIP
|
|
{
|
|
public Int32 GWID;
|
|
public Int32 ID;
|
|
public String IP;
|
|
public GatewayIDandIP(Int32 _ID, Int32 _GWID, String _IP)
|
|
{
|
|
GWID = _GWID;
|
|
ID = _ID;
|
|
IP = _IP;
|
|
}
|
|
}
|
|
|
|
public class DimensionsGoogle
|
|
{
|
|
public DimensionsGoogle(int HeightParam, int WidthParam)
|
|
{
|
|
Height = HeightParam;
|
|
Width = WidthParam;
|
|
}
|
|
|
|
public int Height = 100;
|
|
public int Width = 100;
|
|
}
|
|
|
|
/*
|
|
public class AddrAndID
|
|
{
|
|
public String Address = "";
|
|
public Int32 ID = 0;
|
|
public Int32 mapPointID = 0;
|
|
public Double LAT = 0;
|
|
public Double LNG = 0;
|
|
public Int32 step = 0;
|
|
public String Name = "";
|
|
public AddrAndID(Int32 _ID, Double _LAT, Double _LNG)
|
|
{
|
|
ID = _ID;
|
|
LAT = _LAT;
|
|
LNG = _LNG;
|
|
Name = "";
|
|
step = 0;
|
|
mapPointID = 0;
|
|
}
|
|
|
|
public AddrAndID(String _Name, Double _LAT, Double _LNG)
|
|
{
|
|
ID = 0;
|
|
LAT = _LAT;
|
|
LNG = _LNG;
|
|
Name = _Name;
|
|
step = 0;
|
|
mapPointID = 0;
|
|
}
|
|
|
|
public AddrAndID(String _Name, Int32 _mapPointID,Double _LAT, Double _LNG)
|
|
{
|
|
ID = 0;
|
|
LAT = _LAT;
|
|
LNG = _LNG;
|
|
Name = _Name;
|
|
step = 0;
|
|
mapPointID = _mapPointID;
|
|
}
|
|
|
|
public AddrAndID(AddrAndID _instanta)
|
|
{
|
|
ID = _instanta.ID;
|
|
LAT = _instanta.LAT;
|
|
LNG = _instanta.LNG;
|
|
Name = _instanta.Name;
|
|
step = 0;
|
|
mapPointID = _instanta.mapPointID;
|
|
}
|
|
}*/
|
|
|
|
public class DataforGRID : INotifyPropertyChanged
|
|
{
|
|
|
|
private object _lock = new object();
|
|
|
|
private Int32 nrOfUpdates;
|
|
public Int32 NrOfUpdates
|
|
{
|
|
get { return nrOfUpdates; }
|
|
set
|
|
{
|
|
lock (_lock)
|
|
{
|
|
//The property changed event will get fired whenever
|
|
//the value changes. The subscriber will do work if the value is
|
|
//1. This way you can keep your business logic outside of the setter
|
|
if (value != nrOfUpdates)
|
|
{
|
|
nrOfUpdates = value;
|
|
NotifyPropertyChanged("nrOfUpdates");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void NotifyPropertyChanged(string propertyName)
|
|
{
|
|
//Raise PropertyChanged event
|
|
if (PropertyChanged != null)
|
|
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
|
private String id;
|
|
public string Id
|
|
{
|
|
get { return id; }
|
|
set { id = value; }
|
|
}
|
|
|
|
private string vehName;
|
|
public string VehName
|
|
{
|
|
get { return vehName; }
|
|
set { vehName = value; }
|
|
}
|
|
|
|
private DateTime datatime;
|
|
public DateTime Datatime
|
|
{
|
|
get { return datatime; }
|
|
set { datatime = value; }
|
|
}
|
|
|
|
private string address;
|
|
public string Address
|
|
{
|
|
get { return address; }
|
|
set { address = value; }
|
|
}
|
|
|
|
private string speed;
|
|
public string Speed
|
|
{
|
|
get { return speed; }
|
|
set { speed = value; }
|
|
}
|
|
|
|
private string di;
|
|
public string DI
|
|
{
|
|
get { return di; }
|
|
set { di = value; }
|
|
}
|
|
|
|
private string dox;
|
|
public string DO
|
|
{
|
|
get { return dox; }
|
|
set { dox = value; }
|
|
}
|
|
|
|
private string lat;
|
|
public string Lat
|
|
{
|
|
get { return lat; }
|
|
set { lat = value; }
|
|
}
|
|
|
|
private string alt;
|
|
public string Alt
|
|
{
|
|
get { return alt; }
|
|
set { alt = value; }
|
|
}
|
|
|
|
|
|
private string lng;
|
|
public string Lng
|
|
{
|
|
get { return lng; }
|
|
set { lng = value; }
|
|
}
|
|
|
|
private string zone;
|
|
public string Zone
|
|
{
|
|
get { return zone; }
|
|
set { zone = value; }
|
|
}
|
|
|
|
private string head;
|
|
public string Head
|
|
{
|
|
get { return head; }
|
|
set { head = value; }
|
|
}
|
|
|
|
private Int32 heading_int;
|
|
public Int32 Heading_int
|
|
{
|
|
get { return heading_int; }
|
|
set { heading_int = value; }
|
|
}
|
|
|
|
public DataforGRID(string _id, string _vehName, DateTime _datatime, string _address, string _speed, string _di, string _do, string _lat, string _lng, string _alt,Int32 _heading_Int32)
|
|
{
|
|
id = _id;
|
|
vehName = _vehName;
|
|
datatime = _datatime;
|
|
address = _address;
|
|
speed = _speed;
|
|
di = _di;
|
|
dox = _do;
|
|
lat = _lat;
|
|
lng = _lng;
|
|
zone = "";
|
|
alt = _alt;
|
|
heading_int = _heading_Int32;
|
|
}
|
|
|
|
public DataforGRID(string _id, string _vehName, DateTime _datatime, string _address, string _speed, string _head, string _di, string _do, string _lat, string _lng, String _zone, string _alt)
|
|
{
|
|
id ="";
|
|
vehName = _vehName;
|
|
datatime = _datatime;
|
|
address = _address;
|
|
speed = _speed;
|
|
head = _head;
|
|
di = _di;
|
|
dox = _do;
|
|
lat = _lat;
|
|
lng = _lng;
|
|
zone = _zone;
|
|
alt = _alt;
|
|
}
|
|
}
|
|
|
|
public class DataforRecording
|
|
{
|
|
private Image _buttonCol;
|
|
public Image ButtonCol
|
|
{
|
|
get { return _buttonCol; }
|
|
set { _buttonCol = value; }
|
|
}
|
|
|
|
private string _id;
|
|
public string id
|
|
{
|
|
get { return _id; }
|
|
set { _id = value; }
|
|
}
|
|
|
|
private Image _calltype;
|
|
public Image calltype
|
|
{
|
|
get { return _calltype; }
|
|
set { _calltype = value; }
|
|
}
|
|
|
|
private string _from;
|
|
public string from
|
|
{
|
|
get { return _from; }
|
|
set { _from = value; }
|
|
}
|
|
|
|
private string _to;
|
|
public string to
|
|
{
|
|
get { return _to; }
|
|
set { _to = value; }
|
|
}
|
|
|
|
private string _start;
|
|
public string start
|
|
{
|
|
get { return _start; }
|
|
set { _start = value; }
|
|
}
|
|
|
|
private string _stop;
|
|
public string stop
|
|
{
|
|
get { return _stop; }
|
|
set { _stop = value; }
|
|
}
|
|
|
|
private string _lngStart;
|
|
public string lngStart
|
|
{
|
|
get { return _lngStart; }
|
|
set { _lngStart = value; }
|
|
}
|
|
|
|
private string _lngStop;
|
|
public string lngStop
|
|
{
|
|
get { return _lngStop; }
|
|
set { _lngStop = value; }
|
|
}
|
|
|
|
private Int32 _duration;
|
|
public Int32 duration
|
|
{
|
|
get { return _duration; }
|
|
set { _duration = value; }
|
|
}
|
|
|
|
private Int32 _calltypeint;
|
|
public Int32 calltypeint
|
|
{
|
|
get { return _calltypeint; }
|
|
set { _calltypeint = value; }
|
|
}
|
|
|
|
public DataforRecording(Image V_buttonCol, string V_id, Image V_calltype, string V_from, string V_to, string V_start, string V_stop, string V_lngStart, string V_lngStop,Int32 V_duration,Int32 V_calltypeint)
|
|
{
|
|
_buttonCol = V_buttonCol;
|
|
_id = V_id;
|
|
_calltype = V_calltype;
|
|
_from = V_from;
|
|
_to = V_to;
|
|
_start = V_start;
|
|
_stop = V_stop;
|
|
_lngStart = V_lngStart;
|
|
_lngStop = V_lngStop;
|
|
_duration = V_duration;
|
|
_calltypeint = V_calltypeint;
|
|
}
|
|
}
|
|
|
|
public class DataforVehList : INotifyPropertyChanged
|
|
{
|
|
private object _lock = new object();
|
|
|
|
private Int32 nrOfUpdates;
|
|
public Int32 NrOfUpdates
|
|
{
|
|
get { return nrOfUpdates; }
|
|
set
|
|
{
|
|
lock (_lock)
|
|
{
|
|
//The property changed event will get fired whenever
|
|
//the value changes. The subscriber will do work if the value is
|
|
//1. This way you can keep your business logic outside of the setter
|
|
if (value != nrOfUpdates)
|
|
{
|
|
nrOfUpdates = value;
|
|
NotifyPropertyChanged("nrOfUpdates");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
private void NotifyPropertyChanged(string propertyName)
|
|
{
|
|
//Raise PropertyChanged event
|
|
if(PropertyChanged!= null)
|
|
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
private string grpName;
|
|
public string GrpName
|
|
{
|
|
get { return grpName; }
|
|
set { grpName = value; }
|
|
}
|
|
|
|
private Image pict;
|
|
public Image Pict
|
|
{
|
|
get { return pict; }
|
|
set { pict = value; }
|
|
}
|
|
|
|
private string unitName;
|
|
public string UnitName
|
|
{
|
|
get { return unitName; }
|
|
set { unitName = value; }
|
|
}
|
|
|
|
private Boolean onMap;
|
|
public Boolean OnMap
|
|
{
|
|
get { return onMap; }
|
|
set { onMap = value; }
|
|
}
|
|
|
|
private string status;
|
|
public string Status
|
|
{
|
|
get { return status; }
|
|
set
|
|
{
|
|
// save current status as previous one
|
|
prevStatus = status;
|
|
// update the current status value
|
|
status = value;
|
|
}
|
|
}
|
|
private string prevStatus;
|
|
public string PreviousStatus
|
|
{
|
|
get { return prevStatus; }
|
|
}
|
|
|
|
|
|
private Status_for_tab unitStatus;
|
|
public Status_for_tab UnitStatus
|
|
{
|
|
get { return unitStatus; }
|
|
set { unitStatus = value;
|
|
status = Vehicle.GetString_Status(unitStatus);
|
|
}
|
|
}
|
|
|
|
private Boolean isEmergency;
|
|
public Boolean IsEmergency
|
|
{
|
|
get { return isEmergency; }
|
|
set { isEmergency = value; }
|
|
}
|
|
|
|
private Int32 emerg0off1on;
|
|
public Int32 Emerg0off1on
|
|
{
|
|
get { return emerg0off1on; }
|
|
set { emerg0off1on = value; }
|
|
}
|
|
|
|
|
|
private Double latitude;
|
|
public Double Latitude
|
|
{
|
|
get { return latitude; }
|
|
set { latitude = value; }
|
|
}
|
|
|
|
private Double longitue;
|
|
public Double Longitude
|
|
{
|
|
get { return longitue; }
|
|
set { longitue = value; }
|
|
}
|
|
|
|
|
|
private string address;
|
|
public string Address
|
|
{
|
|
get { return address; }
|
|
set { address = value; }
|
|
}
|
|
|
|
|
|
private DateTime positionTime;
|
|
public DateTime PositionTime
|
|
{
|
|
get { return positionTime; }
|
|
set { positionTime = value;
|
|
string timeAgo = Utils.GetDateTimeAgo(positionTime);
|
|
if (timeAgo.Equals(MainForm2.returnLNGString("scheduled")))
|
|
positionTimeAgo = MainForm2.returnLNGString("inTheFuture");
|
|
else
|
|
positionTimeAgo = timeAgo;
|
|
}
|
|
}
|
|
|
|
|
|
private String positionTimeAgo;
|
|
public String PositionTimeAgo
|
|
{
|
|
get { return positionTimeAgo; }
|
|
set { positionTimeAgo = value; }
|
|
}
|
|
|
|
|
|
private Int16 speed;
|
|
public Int16 Speed
|
|
{
|
|
get { return speed; }
|
|
set { speed = value; }
|
|
}
|
|
|
|
private Boolean isMPH;
|
|
public Boolean IsMPH
|
|
{
|
|
get { return isMPH; }
|
|
set { isMPH = value; }
|
|
}
|
|
|
|
|
|
private Boolean hasAlerts;
|
|
public Boolean HasAlerts
|
|
{
|
|
get { return hasAlerts; }
|
|
set { hasAlerts = value; }
|
|
}
|
|
|
|
private Boolean stolen;
|
|
public Boolean Stolen { get { return stolen; } set { this.stolen = value; nrOfUpdates++; } }
|
|
|
|
public Boolean HasVoice { get; set; }
|
|
|
|
public Boolean HasText { get; set; }
|
|
|
|
|
|
private String radioId;
|
|
public String RadioId
|
|
{
|
|
get { return radioId; }
|
|
set { radioId = value; }
|
|
}
|
|
|
|
|
|
private Int32 sipId;
|
|
public Int32 SipId
|
|
{
|
|
get { return sipId; }
|
|
set { sipId = value; }
|
|
}
|
|
|
|
private String radioGateway;
|
|
public String RadioGateway
|
|
{
|
|
get { return radioGateway; }
|
|
set { radioGateway = value; }
|
|
}
|
|
|
|
public DataforVehList()
|
|
{
|
|
PositionTime = new DateTime(1970,1,1);
|
|
}
|
|
|
|
|
|
public DataforVehList(string _grpName, Image _pict, String _unitName, Boolean _onMap, string _status, Int32 _emerg0off1on)
|
|
{
|
|
grpName = _grpName;
|
|
pict = _pict;
|
|
unitName = _unitName;
|
|
onMap = _onMap;
|
|
status = _status;
|
|
emerg0off1on = _emerg0off1on;
|
|
PositionTime = new DateTime(1970, 1, 1);
|
|
radioGateway = "";
|
|
}
|
|
}
|
|
|
|
public class DataforHistList
|
|
{
|
|
private Boolean checkItem;
|
|
public Boolean CheckItem
|
|
{
|
|
get { return checkItem; }
|
|
set { checkItem = value; }
|
|
}
|
|
|
|
private Image pict;
|
|
public Image Pict
|
|
{
|
|
get { return pict; }
|
|
set { pict = value; }
|
|
}
|
|
|
|
private string unitName;
|
|
public string UnitName
|
|
{
|
|
get { return unitName; }
|
|
set { unitName = value; }
|
|
}
|
|
|
|
public DataforHistList(Boolean _checkItem, Image _pict, String _unitName)
|
|
{
|
|
checkItem = _checkItem;
|
|
pict = _pict;
|
|
unitName = _unitName;
|
|
}
|
|
}
|
|
|
|
public class DataforAlarmList
|
|
{
|
|
private String unitName;
|
|
public String UnitName
|
|
{
|
|
get { return unitName; }
|
|
set { unitName = value; }
|
|
}
|
|
|
|
private DateTime timex;
|
|
public DateTime Timex
|
|
{
|
|
get { return timex; }
|
|
set { timex = value; }
|
|
}
|
|
|
|
private string descript;
|
|
public string Descript
|
|
{
|
|
get { return descript; }
|
|
set { descript = value; }
|
|
}
|
|
|
|
public DataforAlarmList(String _unitName, DateTime _timex, String _desc)
|
|
{
|
|
descript = _desc;
|
|
timex = _timex;
|
|
unitName = _unitName;
|
|
}
|
|
}
|
|
|
|
public class DataforSystemList
|
|
{
|
|
public enum SystemEvent
|
|
{
|
|
ARS,
|
|
GPS,
|
|
POLL,
|
|
CALLCOMMAND,
|
|
CALLBROADCAST,
|
|
DEKEY,
|
|
SMS,
|
|
TICKETING,
|
|
TELEMETRY,
|
|
DISPATCHERS,
|
|
EMERGENCY,
|
|
ENABLE_DISABLE,
|
|
REMOTE,
|
|
DISPATCH_ALERTS,
|
|
EMAIL_REPORTS,
|
|
RADIO_STATUS,
|
|
RECORDINGS,
|
|
UNKNOWN,
|
|
CHANNEL,
|
|
FAILOVER
|
|
}
|
|
|
|
private Int32 direct;
|
|
public Int32 Direct
|
|
{
|
|
get { return direct; }
|
|
set { direct = value; }
|
|
}
|
|
|
|
private String typestr;
|
|
public String Typestr
|
|
{
|
|
get { return typestr; }
|
|
set { typestr = value; }
|
|
}
|
|
|
|
private string opcode;
|
|
public string Opcode
|
|
{
|
|
get { return opcode; }
|
|
set { Opcode = value; }
|
|
}
|
|
|
|
private string imei;
|
|
public string Imei
|
|
{
|
|
get { return imei; }
|
|
set { imei = value; }
|
|
}
|
|
|
|
private DateTime timecmd;
|
|
public DateTime Timecmd
|
|
{
|
|
get { return timecmd; }
|
|
set { timecmd = value; }
|
|
}
|
|
|
|
private string cmd;
|
|
public string Cmd
|
|
{
|
|
get { return cmd; }
|
|
set { cmd = value; }
|
|
}
|
|
|
|
private string humanMsg;
|
|
public string HumanMsg
|
|
{
|
|
get { return humanMsg; }
|
|
set { humanMsg = value; }
|
|
}
|
|
|
|
private Color color;
|
|
public Color Color
|
|
{
|
|
get { return color; }
|
|
set { color = value; }
|
|
}
|
|
|
|
private SystemEvent sysEvent;
|
|
public SystemEvent SysEvent
|
|
{
|
|
get { return sysEvent; }
|
|
set { sysEvent = value; }
|
|
}
|
|
|
|
private CheckState checkState = CheckState.Unchecked;
|
|
public CheckState CheckState
|
|
{
|
|
get { return checkState; }
|
|
set { checkState = value; }
|
|
}
|
|
|
|
private String sysEventMsg;
|
|
public String SysEventMsg
|
|
{
|
|
get { return sysEventMsg; }
|
|
set { sysEventMsg = value; }
|
|
}
|
|
|
|
public DataforSystemList()
|
|
{
|
|
color = Color.White;
|
|
}
|
|
|
|
public DataforSystemList(Int32 _direct, string _typestr, string _opcode, String _imei, DateTime _timecmd, string _cmd,
|
|
ContactType callSourceType = ContactType.UNIT)
|
|
{
|
|
color = Color.White;
|
|
direct = _direct;
|
|
typestr = _typestr;
|
|
opcode = _opcode;
|
|
imei = _imei;
|
|
timecmd = _timecmd;
|
|
cmd = _cmd;
|
|
sysEvent = GetSystemEventFromOpCode(opcode, callSourceType);
|
|
color = GetColorForEvent(sysEvent, false);
|
|
}
|
|
|
|
private SystemEvent GetSystemEventFromOpCode(string opCode, ContactType callSourceType = ContactType.UNIT)
|
|
{
|
|
humanMsg = " - ";
|
|
try
|
|
{
|
|
string[] splitCmd = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
switch (opCode)
|
|
{
|
|
case "10":
|
|
{
|
|
// nothing here, only BUSY
|
|
sysEventMsg = "BUSY";
|
|
return SystemEvent.UNKNOWN;
|
|
}
|
|
case "100":
|
|
{
|
|
// nothing here, "ON/OFF" for radio gatways from Gws;
|
|
sysEventMsg = "ON/OFF";
|
|
return SystemEvent.UNKNOWN;
|
|
}
|
|
case "101":
|
|
{
|
|
#region ALL CALL INIT
|
|
sysEventMsg = "All Call Initiating";
|
|
|
|
imei = "Gateway " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("allCallInit"));
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "121":
|
|
{
|
|
#region ALL CALL INIT ACK
|
|
sysEventMsg = "All Call Initiating ACK";
|
|
|
|
imei = "Gateway " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackAllCallInitReq"));
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "111":
|
|
{
|
|
#region ALL CALL INIT ACK
|
|
sysEventMsg = "All Call Ending";
|
|
|
|
imei = "Gateway " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("allCallEndingReq"));
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "115":
|
|
{
|
|
#region ALL CALL INIT ACK
|
|
sysEventMsg = "All Call Ending ACK";
|
|
|
|
imei = "Gateway " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackAllCallEndingReq"));
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "103":
|
|
{
|
|
#region PRIVATE CALL INIT
|
|
sysEventMsg = "Group Call Initiating";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
imei = "Gateway " + imei;
|
|
vehicleName = split[2];
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("privCallInitGroup"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "123":
|
|
{
|
|
#region GROUP CALL INIT ACK
|
|
sysEventMsg = "Group Call Initiating ACK";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length >= 3)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackGroupCallInitReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "113":
|
|
{
|
|
#region GROUP CALL END
|
|
sysEventMsg = "Group Call Ending";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
|
|
vehicleName = split[2];
|
|
imei = "Gateway " + id;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("groupCallEndingReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "117":
|
|
{
|
|
#region GROUP CALL END ACK
|
|
sysEventMsg = "Group Call Ending ACK";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
{
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
|
|
vehicleName = split[2];
|
|
}
|
|
imei = "Gateway" + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackGroupCallEndingReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
|
|
#endregion
|
|
}
|
|
case "102":
|
|
{
|
|
#region PRIVATE CALL INIT
|
|
sysEventMsg = "Private Call Initiating";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("privCallInitVeh"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "122":
|
|
{
|
|
#region PRIVATE CALL INIT ACK
|
|
sysEventMsg = "Private Call Initiating ACK";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackPrivCallInitReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "112":
|
|
{
|
|
#region PRIVATE CALL END
|
|
sysEventMsg = "Private Call Ending";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("privCallEndingReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "116":
|
|
{
|
|
#region PRIVATE CALL END ACK
|
|
sysEventMsg = "Private Call Ending ACK";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ackPrivCallEndingReq"), vehicleName);
|
|
return SystemEvent.CALLCOMMAND;
|
|
#endregion
|
|
}
|
|
case "94":
|
|
{
|
|
#region CHANNEL QUERY
|
|
sysEventMsg = "Gateway channel query";
|
|
humanMsg = string.Format(MainForm2.returnLNGString("voicetabChQueryForGW"), imei);
|
|
imei = "Gateway " + imei;
|
|
return SystemEvent.CHANNEL;
|
|
#endregion
|
|
}
|
|
case "104":
|
|
{
|
|
#region CHANNEL REQUEST
|
|
sysEventMsg = "Chanel info request";
|
|
humanMsg = string.Format(MainForm2.returnLNGString("chanelInfoReqGW"), imei);
|
|
imei = "Gateway " + imei;
|
|
return SystemEvent.CHANNEL;
|
|
#endregion
|
|
}
|
|
case "124":
|
|
{
|
|
#region CHANNEL RECEIVED
|
|
sysEventMsg = "Chanel info received";
|
|
humanMsg = string.Format(MainForm2.returnLNGString("chanelInfoRecGW"), imei);
|
|
imei = "Gateway " + imei;
|
|
return SystemEvent.CHANNEL;
|
|
#endregion
|
|
}
|
|
case "125":
|
|
{
|
|
#region CALL STATUS
|
|
sysEventMsg = "Call status";
|
|
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// get the id of the unit
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
if (callSourceType == ContactType.UNIT)
|
|
{
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
}
|
|
else if (callSourceType == ContactType.USER)
|
|
{
|
|
// find user
|
|
if (MainForm2.userIDHash.ContainsKey(id)) // check if source radio id is a dispatcher (for sip group calls)
|
|
{
|
|
imei = MainForm2.userIDHash[id].ToString();
|
|
vehicleName = "dispatcher " + imei;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
String callMsg = "";
|
|
String[] split2 = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
|
|
if (split2.Length >= 7)
|
|
{
|
|
string callType = split2[5];
|
|
string callStatus = split2[4];
|
|
string calledImei = split2[6];
|
|
|
|
if (callType.EndsWith("3"))
|
|
callType = "GROUP CALL";
|
|
else if (callType.EndsWith("1"))
|
|
callType = "ALL CALL";
|
|
else if (callType.EndsWith("2"))
|
|
callType = "PRIVATE CALL";
|
|
|
|
|
|
if (callStatus.Equals("1"))
|
|
callStatus = "in progress";
|
|
else if (callStatus.Equals("2"))
|
|
callStatus = "hang timed";
|
|
else if (callStatus.Equals("3"))
|
|
callStatus = "ended";
|
|
|
|
|
|
callMsg = callType + " " + callStatus;
|
|
|
|
|
|
// set the called user name
|
|
if (callType.Equals("PRIVATE CALL"))
|
|
{
|
|
String calledName = "";
|
|
if (MainForm2.VehIMEIHash.Contains(calledImei + ""))
|
|
calledName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[calledImei + ""].ToString()])).busName;
|
|
else
|
|
calledName = calledImei;
|
|
|
|
callMsg += " with " + calledName.ToUpper();
|
|
}
|
|
else if (callType.Equals("GROUP CALL"))
|
|
{
|
|
String calledName = "";
|
|
/*
|
|
if (MainForm2.VehIMEIHash.Contains(calledImei))
|
|
calledName = ((GroupClass)(MainForm2.GroupHash[MainForm2.VehIMEIHash[calledImei + ""].ToString()])).name;
|
|
else*/
|
|
calledName = calledImei;
|
|
|
|
callMsg += " with " + calledName.ToUpper();
|
|
}
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("from"), callMsg, vehicleName);
|
|
|
|
|
|
return SystemEvent.CALLBROADCAST;
|
|
#endregion
|
|
}
|
|
case "130":
|
|
{
|
|
#region ARS RECEIVED
|
|
sysEventMsg = "ARS received";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ARSfrom"), split[4], vehicleName);
|
|
|
|
return SystemEvent.ARS;
|
|
#endregion
|
|
}
|
|
case "230":
|
|
{
|
|
sysEventMsg = "POLL ARS";
|
|
return SystemEvent.ARS;
|
|
}
|
|
case "131":
|
|
{
|
|
#region LOCATION RECEIVED
|
|
sysEventMsg = "Location received";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("positionFrom"), Math.Round(Double.Parse(split[6]), 5),
|
|
Math.Round(Double.Parse(split[7]), 5), vehicleName);
|
|
|
|
return SystemEvent.GPS;
|
|
#endregion
|
|
}
|
|
case "132":
|
|
{
|
|
if (cmd.Contains("<JTS>"))
|
|
{
|
|
#region TICKET RECEIVED
|
|
sysEventMsg = "Ticket received";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length >= 5)
|
|
Int32.TryParse(split[3], out id);
|
|
|
|
try
|
|
{
|
|
String ticketMsg = split[4];
|
|
String ticketNr = "0";
|
|
String ticketStatus = "unknown".ToUpper();
|
|
|
|
ticketNr = Regex.Match(ticketMsg, @"\d+").Value;
|
|
ticketStatus = ticketMsg.Substring(ticketMsg.IndexOf(ticketNr + "") + ticketNr.Length).ToUpper();
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + imei;
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ticketStatusEventLog"), ticketNr, ticketStatus, vehicleName);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
humanMsg = String.Format(MainForm2.returnLNGString("ticketStatusUpdate"), vehicleName);
|
|
}
|
|
return SystemEvent.TICKETING;
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
sysEventMsg = "SMS RECEIVED";
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String textMessage = "";
|
|
|
|
if (split.Length > 5)
|
|
textMessage = split[4];
|
|
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + imei;
|
|
}
|
|
|
|
humanMsg = String.Format("Text message [{0}] received from {1}", textMessage, vehicleName);
|
|
|
|
return SystemEvent.TICKETING;
|
|
}
|
|
}
|
|
case "232":
|
|
{
|
|
#region TEXT MESSAGE ACK
|
|
sysEventMsg = "Text message acknowledge";
|
|
|
|
String vehicleName = "";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("smsACK"), vehicleName);
|
|
|
|
return SystemEvent.SMS;
|
|
#endregion
|
|
}
|
|
case "142":
|
|
case "143":
|
|
{
|
|
if (cmd.Contains("<JTS>"))
|
|
{
|
|
#region TICKET SEND
|
|
sysEventMsg = opCode.Equals("142") ? MainForm2.returnLNGString("tkSent") : MainForm2.returnLNGString("tkResent");
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = string.Format(MainForm2.returnLNGString("toUnit"), id);
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(sysEventMsg + vehicleName);
|
|
|
|
return SystemEvent.TICKETING;
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region SMS SEND
|
|
sysEventMsg = opCode.Equals("142") ? MainForm2.returnLNGString("smsSent") : MainForm2.returnLNGString("smsResent");
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = string.Format(MainForm2.returnLNGString("toUnit"), id);
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(sysEventMsg + vehicleName);
|
|
|
|
return SystemEvent.SMS;
|
|
#endregion
|
|
}
|
|
}
|
|
case "242":
|
|
{
|
|
#region TEXT MESSAGE ACK
|
|
sysEventMsg = "Text message acknowledge";
|
|
|
|
String vehicleName = "";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("smsACK"), vehicleName);
|
|
|
|
return SystemEvent.SMS;
|
|
#endregion
|
|
}
|
|
case "144":
|
|
{
|
|
sysEventMsg = "SMS GROUP SEND";
|
|
return SystemEvent.SMS;
|
|
}
|
|
case "244":
|
|
{
|
|
sysEventMsg = "SMS GROUP ACK";
|
|
return SystemEvent.SMS;
|
|
}
|
|
case "133":
|
|
{
|
|
#region TELEMETRY REQUEST
|
|
sysEventMsg = "Telemetry request";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// get the id of the unit
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
String telemetryMsg = "";
|
|
String[] split2 = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
if (split2.Length >= 5)
|
|
{
|
|
string telemOptions = split2[4];
|
|
string pin = (telemOptions.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries))[0];
|
|
if (pin.Equals("10"))
|
|
telemetryMsg = " [" + MainForm2.returnLNGString("telemRefresh").ToUpper() + "]";
|
|
else
|
|
{
|
|
string option = (telemOptions.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries))[1];
|
|
if (option.Equals("0"))
|
|
option = MainForm2.returnLNGString("telemSet").ToUpper();
|
|
else if (option.Equals("1"))
|
|
option = MainForm2.returnLNGString("telemClear").ToUpper();
|
|
else if (option.Equals("2"))
|
|
option = MainForm2.returnLNGString("telemToggle").ToUpper();
|
|
else if (option.Equals("3"))
|
|
option = MainForm2.returnLNGString("telemPulse").ToUpper();
|
|
|
|
|
|
telemetryMsg = " [" + option + " " +
|
|
MainForm2.returnLNGString("telemPin").ToLower() + " " + pin + "]";
|
|
}
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("telReq"), vehicleName, telemetryMsg);
|
|
|
|
return SystemEvent.TELEMETRY;
|
|
#endregion
|
|
}
|
|
case "233":
|
|
{
|
|
#region TELEMETRY RECEIVED
|
|
sysEventMsg = "Telemetry received";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length >= 5)
|
|
Int32.TryParse(split[4], out id);
|
|
|
|
// get the pin from int value
|
|
string pin = split[4];
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("telRec"), vehicleName, pin);
|
|
|
|
return SystemEvent.TELEMETRY;
|
|
#endregion
|
|
}
|
|
case "231":
|
|
{
|
|
sysEventMsg = "Poll Location";
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
humanMsg = String.Format("Poll response [{0:0.0000},{1:0.0000}] from {2}", Math.Round(Double.Parse(split[6]), 5),
|
|
Math.Round(Double.Parse(split[7]), 5), vehicleName);
|
|
|
|
return SystemEvent.POLL;
|
|
}
|
|
case "207":
|
|
{
|
|
#region CHANNEL BUSY/FREE
|
|
imei = "Gateway " + imei;
|
|
|
|
int status = 0;
|
|
//string[] splitCmd = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
// set the type value
|
|
if (splitCmd.Length >= 6)
|
|
Int32.TryParse(splitCmd[5], out status);
|
|
|
|
sysEventMsg = "Channel " + (status == 1 ? "Busy" : "Free");
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("chnStatus"), splitCmd[4],
|
|
(status == 0 ? MainForm2.returnLNGString("Free") : MainForm2.returnLNGString("Busy")), imei);
|
|
return SystemEvent.CHANNEL;
|
|
#endregion
|
|
}
|
|
case "202":
|
|
{
|
|
#region DISPATCHER ON
|
|
sysEventMsg = "Dispatcher ON";
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String dispatcherName = "";
|
|
int id = 0;
|
|
|
|
// set the id
|
|
if (split.Length >= 4)
|
|
Int32.TryParse(split[3], out id);
|
|
|
|
|
|
// check if contains the user id
|
|
if (MainForm2.allDispatchersNames.ContainsKey(id))
|
|
dispatcherName = MainForm2.allDispatchersNames[id];
|
|
|
|
imei = dispatcherName;
|
|
|
|
humanMsg = "Dispatcher " + (dispatcherName.Length > 0 ? dispatcherName.ToUpper() : "with id " + id) + " has signed in";
|
|
return SystemEvent.DISPATCHERS;
|
|
#endregion
|
|
}
|
|
case "212":
|
|
{
|
|
#region DISPATCHER OFF
|
|
sysEventMsg = "Dispatcher OFF";
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String dispatcherName = "";
|
|
int id = 0;
|
|
|
|
// set the id
|
|
if (split.Length >= 4)
|
|
Int32.TryParse(split[3], out id);
|
|
|
|
|
|
// check if contains the user id
|
|
if (MainForm2.allDispatchersNames.ContainsKey(id))
|
|
dispatcherName = MainForm2.allDispatchersNames[id];
|
|
|
|
imei = dispatcherName;
|
|
|
|
humanMsg = "Dispatcher " + (dispatcherName.Length > 0 ? dispatcherName.ToUpper() : "with id " + id) + " has signed out";
|
|
return SystemEvent.DISPATCHERS;
|
|
#endregion
|
|
}
|
|
case "201":
|
|
{
|
|
sysEventMsg = "USER CALL";
|
|
return SystemEvent.DISPATCHERS;
|
|
}
|
|
case "221":
|
|
{
|
|
sysEventMsg = "ACK USER CALL";
|
|
return SystemEvent.DISPATCHERS;
|
|
}
|
|
case "211":
|
|
{
|
|
sysEventMsg = "END USER CALL";
|
|
return SystemEvent.DISPATCHERS;
|
|
}
|
|
case "134":
|
|
case "138":
|
|
{
|
|
sysEventMsg = "EMERGENCY";
|
|
String vehicleName = "";
|
|
int emergType = -1;
|
|
string emergDesc = "";
|
|
if (splitCmd.Count() > 4)
|
|
int.TryParse(splitCmd[4], out emergType);
|
|
if (emergType != -1)
|
|
emergDesc = $"\"{((EmergencyTypes)emergType).ToString()}\"";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + imei;
|
|
}
|
|
|
|
humanMsg = $"Emergency {emergDesc} received from {vehicleName}";
|
|
return SystemEvent.EMERGENCY;
|
|
}
|
|
case "238":
|
|
{
|
|
// #48#2.1507709848636433174488152074#238#0.0.115#3
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
|
|
AlarmTypes alarmType = AlarmTypes.unknown;
|
|
int emergType = -1;
|
|
if (splitCmd.Count() > 4)
|
|
int.TryParse(splitCmd[4], out emergType);
|
|
if (emergType != -1)
|
|
alarmType = (AlarmTypes)emergType;
|
|
|
|
|
|
if (alarmType != AlarmTypes.unknown && alarmType != AlarmTypes.all)
|
|
{
|
|
sysEventMsg = $"{alarmType.ToString().FirstLetterToUpper()} alarm ACK";
|
|
humanMsg = $"{alarmType.ToString().FirstLetterToUpper()} alarm acknowledgment for {vehicleName}";
|
|
}
|
|
else
|
|
{
|
|
alarmType = AlarmTypes.all;
|
|
sysEventMsg = $"{alarmType.ToString().FirstLetterToUpper()} alarms ACK";
|
|
humanMsg = $"{alarmType.ToString().FirstLetterToUpper()} alarms acknowledged for {vehicleName}";
|
|
}
|
|
|
|
return SystemEvent.EMERGENCY;
|
|
}
|
|
case "208":
|
|
{
|
|
#region STOLEN REQUEST
|
|
sysEventMsg = "Stolen Request";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = " unit with id " + imei;
|
|
|
|
int type = 0;
|
|
|
|
// set the type value
|
|
if (splitCmd.Length >= 5)
|
|
Int32.TryParse(splitCmd[4], out type);
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("stolenReq"), vehicleName);
|
|
|
|
return SystemEvent.ENABLE_DISABLE;
|
|
#endregion
|
|
}
|
|
case "150":
|
|
{
|
|
#region ENABLE/DISABLE REQ
|
|
sysEventMsg = "Enable/Disable Request";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the imei value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = " unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
int type = 0;
|
|
//string[] splitCmd = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
// set the type value
|
|
if (splitCmd.Length >= 5)
|
|
Int32.TryParse(splitCmd[4], out type);
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("req"),
|
|
(type == 1 ? MainForm2.returnLNGString("Enable") : MainForm2.returnLNGString("Disable")), vehicleName);
|
|
|
|
return SystemEvent.ENABLE_DISABLE;
|
|
#endregion
|
|
}
|
|
case "151":
|
|
{
|
|
sysEventMsg = "Enable/Disable STAT";
|
|
return SystemEvent.ENABLE_DISABLE;
|
|
}
|
|
case "250":
|
|
{
|
|
#region ENABLE/DISABLE RESPONSE
|
|
sysEventMsg = "Enable/Disable Broadcast";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = "Unit with id " + imei;
|
|
|
|
int type = 0;
|
|
//string[] splitCmd = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
// set the type value
|
|
if (splitCmd.Length >= 5)
|
|
Int32.TryParse(splitCmd[4], out type);
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("isNow"), vehicleName,
|
|
(type == 1 ? MainForm2.returnLNGString("Enabled") : MainForm2.returnLNGString("Disabled")));
|
|
|
|
return SystemEvent.ENABLE_DISABLE;
|
|
#endregion
|
|
}
|
|
case "160":
|
|
{
|
|
sysEventMsg = "Radio DeKEY";
|
|
return SystemEvent.DEKEY;
|
|
}
|
|
case "161":
|
|
{
|
|
sysEventMsg = "Remote Monitor";
|
|
return SystemEvent.REMOTE;
|
|
}
|
|
case "162":
|
|
{
|
|
sysEventMsg = "Remote Monitor Response";
|
|
return SystemEvent.REMOTE;
|
|
}
|
|
case "172":
|
|
{
|
|
sysEventMsg = "End Remote Monitor";
|
|
return SystemEvent.REMOTE;
|
|
}
|
|
case "135":
|
|
{
|
|
sysEventMsg = "Speed Alarm";
|
|
|
|
int speedValue = -1;
|
|
if (splitCmd.Count() > 4 && splitCmd[4].Contains("_"))
|
|
int.TryParse(splitCmd[4].Split('_')[0], out speedValue);
|
|
|
|
String vehicleName = "";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = "Unit with id " + imei;
|
|
|
|
humanMsg = String.Format($"{vehicleName} was speeding with {speedValue} {(splitCmd[4].EndsWith("m") ? "mph" : "kph")}");
|
|
return SystemEvent.DISPATCH_ALERTS;
|
|
}
|
|
case "136":
|
|
{
|
|
sysEventMsg = "Zone Alarm";
|
|
|
|
String vehicleName = "";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = "Unit with id " + imei;
|
|
|
|
if (splitCmd.Count() > 4)
|
|
humanMsg = $"{splitCmd[4]}";
|
|
|
|
return SystemEvent.DISPATCH_ALERTS;
|
|
}
|
|
case "137":
|
|
{
|
|
sysEventMsg = "LandMark Alarm";
|
|
|
|
String vehicleName = "";
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = "Unit with id " + imei;
|
|
|
|
if (splitCmd.Count() > 4)
|
|
humanMsg = $"{splitCmd[4]}";
|
|
|
|
return SystemEvent.DISPATCH_ALERTS;
|
|
}
|
|
case "139":
|
|
{
|
|
sysEventMsg = "Subs. Location";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
|
|
// set the status value
|
|
if (split.Length >= 6)
|
|
imei = split[5];
|
|
|
|
// get the status from int value
|
|
String gateway = "";
|
|
if (split.Length >= 5)
|
|
gateway = split[4];
|
|
|
|
|
|
|
|
humanMsg = String.Format("{0} registered on gateway {1}", vehicleName, "");
|
|
cmd = "ddsdds";
|
|
return SystemEvent.UNKNOWN;
|
|
}
|
|
case "140":
|
|
{
|
|
sysEventMsg = "DI alarm";
|
|
return SystemEvent.DISPATCH_ALERTS;
|
|
}
|
|
case "149":
|
|
{
|
|
#region Radio Check Online Request
|
|
sysEventMsg = "Radio Online Check";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "Unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("radioOnlineCheckReqFor"), vehicleName);
|
|
return SystemEvent.ARS;
|
|
#endregion
|
|
}
|
|
case "154":
|
|
{
|
|
#region POLL REQUEST
|
|
sysEventMsg = "Poll request";
|
|
|
|
String[] split = imei.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length > 2)
|
|
Int32.TryParse(split[2], out id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(id + ""))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[id + ""].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
{
|
|
vehicleName = "Unit with id " + id;
|
|
imei = id + "";
|
|
}
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("pollReqFor"), vehicleName);
|
|
return SystemEvent.POLL;
|
|
#endregion
|
|
}
|
|
case "152":
|
|
{
|
|
sysEventMsg = "Email report";
|
|
return SystemEvent.EMAIL_REPORTS;
|
|
}
|
|
case "153":
|
|
{
|
|
#region UNIT STATUS
|
|
sysEventMsg = "Unit Status";
|
|
|
|
String[] split = cmd.Split(new char[] { '#' }, StringSplitOptions.RemoveEmptyEntries);
|
|
String vehicleName = "";
|
|
int id = 0;
|
|
|
|
// set the status value
|
|
if (split.Length >= 5)
|
|
Int32.TryParse(split[4], out id);
|
|
|
|
// get the status from int value
|
|
String status = "";
|
|
status = Utils.GetStatusFromInt(id);
|
|
|
|
// check if vehicle name exists
|
|
if (MainForm2.VehIMEIHash.Contains(imei))
|
|
{
|
|
vehicleName = ((Vehicle)(MainForm2.vehicleHT[MainForm2.VehIMEIHash[imei].ToString()])).busName;
|
|
imei = vehicleName;
|
|
}
|
|
else
|
|
vehicleName = "Unit with id " + imei;
|
|
|
|
humanMsg = String.Format(MainForm2.returnLNGString("statusIsNow"), vehicleName, status);
|
|
|
|
return SystemEvent.RADIO_STATUS;
|
|
#endregion
|
|
}
|
|
case "155":
|
|
{
|
|
#region RECORDINGS
|
|
sysEventMsg = "Recordings";
|
|
humanMsg = MainForm2.returnLNGString("newRec");
|
|
return SystemEvent.RECORDINGS;
|
|
#endregion
|
|
}
|
|
case "610":
|
|
{
|
|
sysEventMsg = "Failover module";
|
|
string message = MainForm2.returnLNGString(splitCmd[4]);
|
|
humanMsg = string.IsNullOrEmpty(message) ? $"missing message for {splitCmd[4]}" : message ;
|
|
return SystemEvent.FAILOVER;
|
|
}
|
|
default:
|
|
{
|
|
sysEventMsg = "RESERVED";
|
|
humanMsg = MainForm2.returnLNGString("reservedMsg");
|
|
return SystemEvent.UNKNOWN;
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Utils.WriteLine("Error on display Systemlog:" + ex.ToString() + " OP code:" + opCode, ConsoleColor.Red);
|
|
sysEventMsg = "RESERVED";
|
|
humanMsg = MainForm2.returnLNGString("reservedMsg");
|
|
return SystemEvent.UNKNOWN;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private Color GetColorForEvent(SystemEvent ev, bool isFirstColor)
|
|
{
|
|
switch(ev)
|
|
{
|
|
case SystemEvent.ARS:
|
|
{
|
|
if(isFirstColor)
|
|
return Color.FromArgb(173,35,35);
|
|
else
|
|
return Color.FromArgb(29, 105, 20);
|
|
}
|
|
case SystemEvent.GPS:
|
|
return Color.FromArgb(42,75,215);
|
|
case SystemEvent.POLL:
|
|
return Color.FromArgb(92, 157, 228);
|
|
case SystemEvent.CALLCOMMAND:
|
|
return Color.FromArgb(255,238,51);
|
|
case SystemEvent.CALLBROADCAST:
|
|
return Color.FromArgb(221,204,0);
|
|
case SystemEvent.DEKEY:
|
|
return Color.Black;
|
|
case SystemEvent.SMS:
|
|
return Color.FromArgb(129,74,25);
|
|
case SystemEvent.TICKETING:
|
|
return Color.FromArgb(162,36,139);
|
|
case SystemEvent.TELEMETRY:
|
|
return Color.FromArgb(83,52,146);
|
|
case SystemEvent.EMERGENCY:
|
|
return Color.FromArgb(255,0,0);
|
|
case SystemEvent.ENABLE_DISABLE:
|
|
return Color.FromArgb(87,87,87);
|
|
case SystemEvent.REMOTE:
|
|
return Color.FromArgb(129,38,192);
|
|
case SystemEvent.DISPATCHERS:
|
|
return Color.FromArgb(41,208,208);
|
|
case SystemEvent.DISPATCH_ALERTS:
|
|
return Color.FromArgb(129, 197, 122);
|
|
case SystemEvent.EMAIL_REPORTS:
|
|
return Color.FromArgb(233,222,187);
|
|
case SystemEvent.RADIO_STATUS:
|
|
return Color.White;
|
|
}
|
|
return Color.White;
|
|
}
|
|
|
|
}
|
|
|
|
public class DataforTelemList
|
|
{
|
|
private string grpName;
|
|
public string GrpName
|
|
{
|
|
get { return grpName; }
|
|
set { grpName = value; }
|
|
}
|
|
|
|
private Image pict;
|
|
public Image Pict
|
|
{
|
|
get { return pict; }
|
|
set { pict = value; }
|
|
}
|
|
|
|
private string unitName;
|
|
public string UnitName
|
|
{
|
|
get { return unitName; }
|
|
set { unitName = value; }
|
|
}
|
|
|
|
private Image digi1;
|
|
public Image Digi1
|
|
{
|
|
get { return digi1; }
|
|
set { digi1 = value; }
|
|
}
|
|
|
|
private Image digi2;
|
|
public Image Digi2
|
|
{
|
|
get { return digi2; }
|
|
set { digi2 = value; }
|
|
}
|
|
|
|
private Image digi3;
|
|
public Image Digi3
|
|
{
|
|
get { return digi3; }
|
|
set { digi3 = value; }
|
|
}
|
|
|
|
private Image digi4;
|
|
public Image Digi4
|
|
{
|
|
get { return digi4; }
|
|
set { digi4 = value; }
|
|
}
|
|
|
|
private Image digi5;
|
|
public Image Digi5
|
|
{
|
|
get { return digi5; }
|
|
set { digi5 = value; }
|
|
}
|
|
|
|
public DataforTelemList(string _grpName, Image _pict, String _unitName, Image _digi1, Image _digi2, Image _digi3, Image _digi4, Image _digi5)
|
|
{
|
|
grpName = _grpName;
|
|
pict = _pict;
|
|
unitName = _unitName;
|
|
digi1 = _digi1;
|
|
digi2 = _digi2;
|
|
digi3 = _digi3;
|
|
digi4 = _digi4;
|
|
digi5 = _digi5;
|
|
}
|
|
}
|
|
|
|
public class SMSDataforGRID
|
|
{
|
|
private Int32 idx;
|
|
public Int32 Idx
|
|
{
|
|
get { return idx; }
|
|
set { idx = value; }
|
|
}
|
|
|
|
//image part
|
|
private Bitmap icon;
|
|
public Bitmap Icon
|
|
{
|
|
get { return icon; }
|
|
set { icon = value; }
|
|
}
|
|
|
|
private string source;
|
|
public string Source
|
|
{
|
|
get { return source; }
|
|
set { source = value; }
|
|
}
|
|
|
|
private string dest;
|
|
public string Dest
|
|
{
|
|
get { return dest; }
|
|
set { dest = value; }
|
|
}
|
|
|
|
private string dispMess;
|
|
public string DisplayMessage
|
|
{
|
|
get { return dispMess; }
|
|
set { dispMess = value; }
|
|
}
|
|
|
|
private string msg;
|
|
public string Message
|
|
{
|
|
get { return msg; }
|
|
set { msg = value; }
|
|
}
|
|
|
|
private string data;
|
|
public string Date
|
|
{
|
|
get { return data; }
|
|
set { data = value; }
|
|
}
|
|
|
|
private Int32 stat;
|
|
public Int32 Status
|
|
{
|
|
get { return stat; }
|
|
set { stat = value; }
|
|
}
|
|
|
|
private string emailprv;
|
|
public string email
|
|
{
|
|
get { return emailprv; }
|
|
set { emailprv = value; }
|
|
}
|
|
|
|
private Int32 sc_id_source_prv;
|
|
public Int32 sc_id_source
|
|
{
|
|
get { return sc_id_source_prv; }
|
|
set { sc_id_source_prv = value; }
|
|
}
|
|
|
|
private Int32 sc_id_dest_prv;
|
|
public Int32 sc_id_dest
|
|
{
|
|
get { return sc_id_dest_prv; }
|
|
set { sc_id_dest_prv = value; }
|
|
}
|
|
|
|
|
|
private string timeAgo;
|
|
public string TimeAgo
|
|
{
|
|
get { return timeAgo; }
|
|
set { timeAgo = value; }
|
|
}
|
|
|
|
private Color color;
|
|
public Color Color
|
|
{
|
|
get { return color; }
|
|
set { color = value; }
|
|
}
|
|
|
|
private DateTime _dateTime;
|
|
public DateTime DateTime
|
|
{
|
|
get { return _dateTime; }
|
|
}
|
|
|
|
public SMSDataforGRID(Int32 _idx, Bitmap _icon, String _source, string _dest, string _dispmess, string _mess,
|
|
string _date, Int32 _stat, string _email, Int32 _sc_id_source, Int32 _sc_id_dest, DateTime date)
|
|
{
|
|
idx = _idx;
|
|
icon = _icon;
|
|
source = _source;
|
|
dest = _dest;
|
|
dispMess = _dispmess;
|
|
msg = _mess;
|
|
data = _date;
|
|
stat = _stat;
|
|
emailprv = _email;
|
|
sc_id_source_prv = _sc_id_source;
|
|
sc_id_dest_prv = _sc_id_dest;
|
|
_dateTime = date;
|
|
String timeAgoStr = Utils.GetDateTimeAgo(date.ToLocalTime());
|
|
if (timeAgoStr.Equals(MainForm2.returnLNGString("scheduled")))
|
|
timeAgo = MainForm2.returnLNGString("inTheFuture");
|
|
else
|
|
timeAgo = timeAgoStr;
|
|
}
|
|
}
|
|
|
|
public class SystemLog
|
|
{
|
|
public String cmd = "";
|
|
public Boolean Senddata;
|
|
|
|
public SystemLog(Boolean _Senddata, String _cmd)
|
|
{
|
|
Senddata = _Senddata;
|
|
cmd = _cmd;
|
|
}
|
|
}
|
|
|
|
|
|
public class SoundandPopup
|
|
{
|
|
public Boolean EMsound { get; set; }
|
|
public Boolean EMpopup { get; set; }
|
|
public Boolean GEOsound { get; set; }
|
|
public Boolean GEOpopup { get; set; }
|
|
public Boolean SPEEDsound { get; set; }
|
|
public Boolean SPEEDpopup { get; set; }
|
|
public Boolean TELEMsound { get; set; }
|
|
public Boolean TELEMpopup { get; set; }
|
|
public Int32 sc_id = 0;
|
|
|
|
public SoundandPopup()
|
|
{
|
|
|
|
}
|
|
|
|
public SoundandPopup(Int32 _sc_id,Boolean _EMsound, Boolean _EMpopup, Boolean _GEOsound, Boolean _GEOpopup, Boolean _SPEEDsound, Boolean _SPEEDpopup, Boolean _TELEMsound, Boolean _TELEMpopup)
|
|
{
|
|
EMsound = _EMsound;
|
|
EMpopup = _EMpopup;
|
|
GEOsound = _GEOsound;
|
|
GEOpopup = _GEOpopup;
|
|
SPEEDsound = _SPEEDsound;
|
|
SPEEDpopup = _SPEEDpopup;
|
|
TELEMsound = _TELEMsound;
|
|
TELEMpopup = _TELEMpopup;
|
|
sc_id = _sc_id;
|
|
}
|
|
}
|
|
|
|
public class GoogleGeoCodeResponse
|
|
{
|
|
public string status { get; set; }
|
|
public results[] results { get; set; }
|
|
}
|
|
public class results
|
|
{
|
|
public string formatted_address { get; set; }
|
|
public geometry geometry { get; set; }
|
|
public string[] types { get; set; }
|
|
public address_component[] address_components { get; set; }
|
|
}
|
|
public class geometry { public string location_type { get; set; } public location location { get; set; } }
|
|
public class location { public string lat { get; set; } public string lng { get; set; } }
|
|
public class address_component { public string long_name { get; set; } public string short_name { get; set; } public string[] types { get; set; } }
|
|
|
|
public class OpenStreetGeoCodeResponse
|
|
{
|
|
public string place_id { get; set; }
|
|
public string licence { get; set; }
|
|
public string osm_type { get; set; }
|
|
public string osm_id { get; set; }
|
|
public string lat { get; set; }
|
|
public string lon { get; set; }
|
|
public string display_name { get; set; }
|
|
public address_type address { get; set; }
|
|
}
|
|
public class address_type
|
|
{
|
|
public string house_number { get; set; }
|
|
public string road { get; set; }
|
|
public string suburb { get; set; }
|
|
public string city { get; set; }
|
|
public string county { get; set; }
|
|
public string state_district { get; set; }
|
|
public string state { get; set; }
|
|
public string postcode { get; set; }
|
|
public string country { get; set; }
|
|
public string country_code { get; set; }
|
|
}
|
|
|
|
|
|
public class POSIDGIS
|
|
{
|
|
public Int32 GISID = 0;
|
|
public SMposition SMpos = null;
|
|
public Boolean Select = false;
|
|
public POSIDGIS(Int32 _GISID,SMposition _SMpos)
|
|
{
|
|
GISID = _GISID;
|
|
SMpos = _SMpos;
|
|
Select = false;
|
|
}
|
|
}
|
|
|
|
public enum RADIO_STATUS
|
|
{
|
|
OFF = 0x00,
|
|
FREE = 0x01,
|
|
ALLcall_INIT = 101,
|
|
ALLcall_INPROGRES = 121,
|
|
PrivateCall_INIT = 102,
|
|
PrivateCall_INPROGRES = 122,
|
|
GroupCall_INIT = 103,
|
|
GroupCall_INPROGRES = 123,
|
|
ChannelQuery = 104,
|
|
CallEvent = 125,
|
|
RemoteMonitor = 161,
|
|
RemoteMonitor_INPROGRES = 162,
|
|
DKEY = 160,
|
|
EnableDisable = 150,
|
|
HangTime = 108,
|
|
}
|
|
|
|
///code from telerik
|
|
|
|
public class CustomListVisualItem : RadListVisualItem
|
|
{
|
|
#region Fields
|
|
|
|
private RadLabelElement label = new RadLabelElement();
|
|
private RadCheckBox checkBox = new RadCheckBox();
|
|
private RadHostItem host;
|
|
|
|
#endregion
|
|
|
|
#region Initialization
|
|
|
|
static CustomListVisualItem()
|
|
{
|
|
RadListVisualItem.SynchronizationProperties.Add(CustomListDataItem.CheckedProperty);
|
|
RadListVisualItem.SynchronizationProperties.Add(CustomListDataItem.NameProperty);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Overrides
|
|
|
|
protected override Type ThemeEffectiveType
|
|
{
|
|
get
|
|
{
|
|
return typeof(RadListVisualItem);
|
|
}
|
|
}
|
|
|
|
protected override void CreateChildElements()
|
|
{
|
|
base.CreateChildElements();
|
|
|
|
this.host = new RadHostItem(checkBox);
|
|
this.checkBox.ToggleStateChanged += this.ToggleStateChanged;
|
|
this.label.StretchHorizontally = true;
|
|
this.label.Margin = new System.Windows.Forms.Padding(15, 0, 0, 0);
|
|
this.host.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0);
|
|
StackLayoutPanel stack = new StackLayoutPanel();
|
|
stack.Orientation = Orientation.Horizontal;
|
|
stack.Children.Add(host);
|
|
stack.Children.Add(label);
|
|
this.Children.Add(stack);
|
|
}
|
|
|
|
protected override void PropertySynchronized(RadProperty property)
|
|
{
|
|
CustomListDataItem dataItem = (CustomListDataItem)this.Data;
|
|
|
|
if (property == CustomListDataItem.CheckedProperty)
|
|
{
|
|
bool newValue = dataItem.Checked;
|
|
this.checkBox.Checked = newValue;
|
|
string itemName = dataItem.Text;
|
|
//this.label.Text = this.GetAvailabilityText(itemName, newValue);
|
|
this.label.Text = itemName;
|
|
}
|
|
|
|
if (property == CustomListDataItem.NameProperty)
|
|
{
|
|
string itemName = dataItem.Text;
|
|
bool available = dataItem.Checked;
|
|
//this.label.Text = this.GetAvailabilityText(itemName, available);
|
|
this.label.Text = itemName;
|
|
}
|
|
|
|
this.Text = "";
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private Methods
|
|
|
|
/* private string GetAvailabilityText(string itemName, bool available)
|
|
{
|
|
string yesno = available ? " " : " not ";
|
|
return itemName + " is" + yesno + "checked";
|
|
}*/
|
|
|
|
private void ToggleStateChanged(object sender, StateChangedEventArgs args)
|
|
{
|
|
((CustomListDataItem)this.Data).Checked = this.checkBox.Checked;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
public class CustomListDataItem : RadListDataItem
|
|
{
|
|
#region Contructors
|
|
|
|
public CustomListDataItem()
|
|
{
|
|
this.PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged);
|
|
}
|
|
|
|
public CustomListDataItem(string text)
|
|
: base(text)
|
|
{
|
|
this.PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region RadProperties
|
|
|
|
public static readonly RadProperty CheckedProperty = RadProperty.Register("Checked", typeof(bool), typeof(CustomListDataItem), new RadElementPropertyMetadata(false));
|
|
public static readonly RadProperty NameProperty = RadProperty.Register("Name", typeof(string), typeof(CustomListDataItem), new RadElementPropertyMetadata(""));
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
public bool Checked
|
|
{
|
|
get
|
|
{
|
|
return (bool)this.GetValue(CustomListDataItem.CheckedProperty);
|
|
}
|
|
set
|
|
{
|
|
//Console.WriteLine(this.Text + " " + value);
|
|
this.SetValue(CustomListDataItem.CheckedProperty, value);
|
|
}
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
return (string)this.GetValue(CustomListDataItem.NameProperty);
|
|
}
|
|
set
|
|
{
|
|
this.SetValue(CustomListDataItem.NameProperty, value);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private Methods
|
|
|
|
private void item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
{
|
|
//Console.WriteLine("Valori: "+e.PropertyName);
|
|
//if ((e.PropertyName == "Checked") || (e.PropertyName == "Selected") || (e.PropertyName == "Active"))
|
|
|
|
if (e.PropertyName.Equals("Selected"))
|
|
{
|
|
RadMultiSelectDropDownList ddlControl = (RadMultiSelectDropDownList)((DropDownPopupForm)this.Owner.ElementTree.Control).OwnerDropDownListElement.ElementTree.Control;
|
|
ddlControl.SetText();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
public enum CMDTYPE
|
|
{
|
|
DisableCMD = 0,
|
|
EnableCMD = 1,
|
|
POLLGPSCMD = 2,
|
|
StolenONCMD = 3,
|
|
StolenOFFCMD = 4,
|
|
POLLARSCMD = 5,
|
|
RADIO_CHECK_CMD = 6
|
|
}
|
|
|
|
//public enum RADIOTYPE
|
|
//{
|
|
// MOTO = 0,
|
|
// HYT = 1,
|
|
// HARRIS = 2,
|
|
// ATLAS = 3,
|
|
// UNKNOWN = 4,
|
|
// TETRA = 5,
|
|
// CONECTPLUS = 6,
|
|
// REPEATER_TRBO = 7,
|
|
// SIMOCO = 8,
|
|
// LINX = 9,
|
|
// LINXB = 10,
|
|
// EXCERA = 11
|
|
//}
|
|
|
|
public enum IconType
|
|
{
|
|
ICONS = 0,
|
|
ARROWS = 1,
|
|
EMERG = 2,
|
|
}
|
|
|
|
|
|
|
|
|
|
public class MyDynamicCollection : IList<CustomListDataItem>
|
|
{
|
|
RadMultiSelectDropDownList owner;
|
|
|
|
public MyDynamicCollection(RadMultiSelectDropDownList owner)
|
|
{
|
|
this.owner = owner;
|
|
}
|
|
|
|
public void Add(CustomListDataItem item)
|
|
{
|
|
item.Checked = true;
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
((CustomListDataItem)owner.Items[i]).Checked = false;
|
|
}
|
|
}
|
|
|
|
public bool Contains(CustomListDataItem item)
|
|
{
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
if (owner.Items[i] == item)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public void CopyTo(CustomListDataItem[] array, int arrayIndex)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public int Count
|
|
{
|
|
get
|
|
{
|
|
int counter = 0;
|
|
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
counter++;
|
|
}
|
|
}
|
|
|
|
Console.WriteLine(owner.Items[0].Selected + " " + owner.Items[1].Selected + " " + owner.Items[2].Selected + " " + owner.Items[3].Selected + " " + owner.Items[4].Selected);
|
|
Console.WriteLine("SelectedItems Count " + counter);
|
|
return counter;
|
|
}
|
|
}
|
|
|
|
public bool IsReadOnly
|
|
{
|
|
get { return false; }
|
|
}
|
|
|
|
public bool Remove(CustomListDataItem item)
|
|
{
|
|
item.Checked = false;
|
|
|
|
return true;
|
|
}
|
|
|
|
public IEnumerator<CustomListDataItem> GetEnumerator()
|
|
{
|
|
return new MyCollectionEnumerator(owner, this);
|
|
}
|
|
|
|
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
|
|
{
|
|
return new MyCollectionEnumerator(owner, this);
|
|
}
|
|
|
|
public int IndexOf(CustomListDataItem item)
|
|
{
|
|
int counter = 0;
|
|
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
|
|
|
|
if (owner.Items[i] == item)
|
|
{
|
|
return counter;
|
|
}
|
|
|
|
counter++;
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
public void Insert(int index, CustomListDataItem item)
|
|
{
|
|
// throw new NotImplementedException();
|
|
}
|
|
|
|
public void RemoveAt(int index)
|
|
{
|
|
int counter = 0;
|
|
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
if (counter == index)
|
|
{
|
|
((CustomListDataItem)owner.Items[i]).Checked = false;
|
|
}
|
|
|
|
counter++;
|
|
}
|
|
}
|
|
}
|
|
|
|
public CustomListDataItem this[int index]
|
|
{
|
|
get
|
|
{
|
|
int counter = 0;
|
|
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
if (counter == index)
|
|
{
|
|
return (CustomListDataItem)owner.Items[i];
|
|
}
|
|
|
|
counter++;
|
|
}
|
|
}
|
|
|
|
throw new IndexOutOfRangeException();
|
|
}
|
|
set
|
|
{
|
|
int counter = 0;
|
|
|
|
for (int i = 0; i < owner.Items.Count; i++)
|
|
{
|
|
if (((CustomListDataItem)owner.Items[i]).Checked)
|
|
{
|
|
if (counter == index)
|
|
{
|
|
owner.Items[i] = value;
|
|
}
|
|
|
|
counter++;
|
|
}
|
|
}
|
|
|
|
throw new IndexOutOfRangeException();
|
|
}
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
string selectedItems = String.Empty;
|
|
for (int i = 0; i < this.Count; i++)
|
|
{
|
|
selectedItems += this[i].Text + " ";
|
|
}
|
|
|
|
return selectedItems;
|
|
}
|
|
}
|
|
|
|
public class MyCollectionEnumerator : IEnumerator<CustomListDataItem>
|
|
{
|
|
int current = 0;
|
|
RadMultiSelectDropDownList owner;
|
|
MyDynamicCollection ownerCollection;
|
|
|
|
public MyCollectionEnumerator(RadMultiSelectDropDownList owner, MyDynamicCollection ownerCollection)
|
|
{
|
|
this.owner = owner;
|
|
this.ownerCollection = ownerCollection;
|
|
}
|
|
|
|
public CustomListDataItem Current
|
|
{
|
|
get
|
|
{
|
|
return (CustomListDataItem)owner.Items[current];
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
|
|
}
|
|
|
|
object System.Collections.IEnumerator.Current
|
|
{
|
|
get
|
|
{
|
|
return this.Current;
|
|
}
|
|
}
|
|
|
|
public bool MoveNext()
|
|
{
|
|
if (current < ownerCollection.Count - 1)
|
|
{
|
|
current++;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
current = 0;
|
|
}
|
|
}
|
|
|
|
public class RadMultiSelectDropDownList : RadDropDownList
|
|
{
|
|
MyDynamicCollection selectedItems;
|
|
|
|
public RadMultiSelectDropDownList()
|
|
{
|
|
selectedItems = new MyDynamicCollection(this);
|
|
}
|
|
|
|
public MyDynamicCollection SelectedItems
|
|
{
|
|
get
|
|
{
|
|
return selectedItems;
|
|
}
|
|
}
|
|
|
|
protected override void OnCreatingVisualItem(object sender, CreatingVisualListItemEventArgs args)
|
|
{
|
|
base.OnCreatingVisualItem(sender, args);
|
|
|
|
args.VisualItem = new CustomListVisualItem();
|
|
}
|
|
|
|
public override string ThemeClassName
|
|
{
|
|
get
|
|
{
|
|
return typeof(RadDropDownList).FullName;
|
|
}
|
|
}
|
|
|
|
protected override void OnSelectedIndexChanged(object sender, int newIndex)
|
|
{
|
|
base.OnSelectedIndexChanged(sender, newIndex);
|
|
SetText();
|
|
}
|
|
|
|
internal void SetText()
|
|
{
|
|
try
|
|
{
|
|
Int32 count = 0;
|
|
Boolean valid = true;
|
|
try
|
|
{
|
|
foreach (CustomListDataItem item in this.Items)
|
|
{
|
|
if (item.Checked)
|
|
{
|
|
// this.DropDownListElement.EditableElementText += item.Text + "; ";
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception exe)
|
|
{
|
|
SM.Debug("Not able to pasres:"+exe.ToString());
|
|
valid = false;
|
|
}
|
|
if ((valid) && (count == 0)) valid = false;
|
|
String newText = String.Empty;
|
|
if (valid)
|
|
{
|
|
//this.BeginUpdate();
|
|
//this.Text = String.Empty;
|
|
foreach (CustomListDataItem item in this.Items)
|
|
{
|
|
if (item.Checked)
|
|
{
|
|
newText += item.Text + "; ";
|
|
}
|
|
}
|
|
//this.EndUpdate();
|
|
// update text
|
|
this.DropDownListElement.EditableElementText = newText;
|
|
}
|
|
else if (!valid && count == 0)
|
|
{
|
|
this.DropDownListElement.EditableElementText = newText;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error on set text on combobox");
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
public class GRPEventArgs : EventArgs
|
|
{
|
|
private Int32 index;
|
|
private Boolean status;
|
|
|
|
public GRPEventArgs(Int32 _index,Boolean _status)
|
|
{
|
|
index = _index;
|
|
status = _status;
|
|
}
|
|
public Int32 idx
|
|
{
|
|
get { return index; }
|
|
set { index = value; }
|
|
}
|
|
|
|
public Boolean stat
|
|
{
|
|
get { return status; }
|
|
set { status = value; }
|
|
}
|
|
}
|
|
|
|
|
|
public class CustomGroupHeaderCell : GridGroupContentCellElement
|
|
{
|
|
public static Boolean CheckBoxClicked = false;
|
|
|
|
public event EventHandler<GRPEventArgs> GoupCheckBoxStateChanged;
|
|
|
|
public RadCheckBoxElement checkbox;
|
|
|
|
public CustomGroupHeaderCell(GridViewColumn column, GridRowElement row)
|
|
: base(column, row)
|
|
{
|
|
this.DrawText = false;
|
|
this.DrawFill = true;
|
|
this.NumberOfColors = 1;
|
|
//this.BackColor = Color.FromArgb(27, 161, 226);
|
|
|
|
}
|
|
|
|
protected override Type ThemeEffectiveType
|
|
{
|
|
get
|
|
{
|
|
return typeof(GridGroupContentCellElement);
|
|
}
|
|
}
|
|
|
|
protected override void CreateChildElements()
|
|
{
|
|
base.CreateChildElements();
|
|
checkbox = new RadCheckBoxElement();
|
|
checkbox.MinSize = new System.Drawing.Size(5, 5);
|
|
checkbox.ToggleStateChanged += new StateChangedEventHandler(checkbox_ToggleStateChanged);
|
|
checkbox.Click += checkbox_Click;
|
|
Children.Insert(0, checkbox);
|
|
}
|
|
|
|
void checkbox_Click(object sender, EventArgs e)
|
|
{
|
|
CheckBoxClicked = true;
|
|
}
|
|
|
|
protected override void SetContentCore(object value)
|
|
{
|
|
try
|
|
{
|
|
base.SetContentCore(value);
|
|
|
|
if (this.RowInfo.Tag != null)
|
|
this.checkbox.ToggleState = (bool)this.RowInfo.Tag ? ToggleState.On : ToggleState.Off;
|
|
else
|
|
this.checkbox.ToggleState = ToggleState.Indeterminate;
|
|
|
|
this.checkbox.TextElement.Text = this.Text.ToUpper();
|
|
|
|
this.checkbox.TextElement.ForeColor = Color.Black;
|
|
Font fontGroup = new Font(
|
|
"Segoe UI",
|
|
12,
|
|
FontStyle.Bold,
|
|
GraphicsUnit.Pixel);
|
|
this.checkbox.Font = fontGroup;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
SM.Debug("Error on SetContentCore:"+ex.ToString());
|
|
}
|
|
}
|
|
|
|
private void checkbox_ToggleStateChanged(object sender, StateChangedEventArgs args)
|
|
{
|
|
Boolean decision = (this.checkbox.ToggleState == ToggleState.On);
|
|
this.RowInfo.Tag = decision;
|
|
|
|
if (GoupCheckBoxStateChanged != null)
|
|
{
|
|
if (CheckBoxClicked)
|
|
GoupCheckBoxStateChanged(this, new GRPEventArgs(this.RowIndex, decision));
|
|
|
|
CheckBoxClicked = false;
|
|
}
|
|
}
|
|
|
|
protected override System.Drawing.SizeF ArrangeOverride(System.Drawing.SizeF finalSize)
|
|
{
|
|
SizeF size = base.ArrangeOverride(finalSize);
|
|
RectangleF rect = this.GetClientRectangle(finalSize);
|
|
if (this.checkbox != null)
|
|
{
|
|
|
|
this.checkbox.Arrange(new RectangleF(30,
|
|
rect.Top + (rect.Height - this.checkbox.DesiredSize.Height) / 2,
|
|
this.checkbox.DesiredSize.Width,
|
|
this.checkbox.DesiredSize.Height));
|
|
}
|
|
return size;
|
|
}
|
|
}
|
|
|
|
public class CallType_Drop
|
|
{
|
|
public int Id
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public Image Image
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public CallType_Drop(int id, string name, Image image)
|
|
{
|
|
this.Id = id;
|
|
this.Name = name;
|
|
this.Image = image;
|
|
}
|
|
}
|
|
|
|
|
|
public class CallType_DropCollection : BindingList<CallType_Drop>
|
|
{
|
|
public CallType_DropCollection()
|
|
{
|
|
this.Add(new CallType_Drop(0, "Private call made", global::Dispatcher.Properties.Resources.call_made_24x20));
|
|
this.Add(new CallType_Drop(1, "Group call made", global::Dispatcher.Properties.Resources.call_made_group_24x20));
|
|
this.Add(new CallType_Drop(2, "All call made", global::Dispatcher.Properties.Resources.call_made_all_24x20));
|
|
this.Add(new CallType_Drop(3, "Dispatcher call made", global::Dispatcher.Properties.Resources.remmonitor24x20));
|
|
this.Add(new CallType_Drop(4, "Private call received", global::Dispatcher.Properties.Resources.call_received_24X20));
|
|
this.Add(new CallType_Drop(5, "Group call received", global::Dispatcher.Properties.Resources.call_received_group_24x20));
|
|
this.Add(new CallType_Drop(6, "All call received", global::Dispatcher.Properties.Resources.call_received_all_24x20));
|
|
this.Add(new CallType_Drop(9, "Dispatcher call received", global::Dispatcher.Properties.Resources.remmonitor24x20));
|
|
this.Add(new CallType_Drop(7, "Remote Monitor", global::Dispatcher.Properties.Resources.remmonitor24x20));
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public class SmsUtils
|
|
{
|
|
public static int GetMaxNumberOfCharacters(RADIOTYPE radioType)
|
|
{
|
|
switch (radioType)
|
|
{
|
|
case RADIOTYPE.CONECTPLUS:
|
|
return 141;
|
|
case RADIOTYPE.TETRA:
|
|
return 171;
|
|
case RADIOTYPE.MOTO:
|
|
return 141;
|
|
case RADIOTYPE.REPEATER_TRBO:
|
|
return 141;
|
|
case RADIOTYPE.ATLAS:
|
|
return 141;
|
|
case RADIOTYPE.HARRIS:
|
|
return 141;
|
|
case RADIOTYPE.HYT:
|
|
return 141;
|
|
case RADIOTYPE.SIMOCO:
|
|
return 23;
|
|
case RADIOTYPE.EXCERA:
|
|
return 50;
|
|
case RADIOTYPE.LINX:
|
|
return 900;
|
|
case RADIOTYPE.LINXB:
|
|
return 900;
|
|
default:
|
|
return 100;
|
|
}
|
|
}
|
|
|
|
public static int GetMaxNumberOfCharacters(int gatewayType)
|
|
{
|
|
switch (gatewayType)
|
|
{
|
|
case (int)GatewayType.Broadband:
|
|
return 900;
|
|
case (int)GatewayType.Tier2Radio:
|
|
return 141;
|
|
case (int)GatewayType.Tier3Radio:
|
|
return 23;
|
|
case (int)GatewayType.Unknown:
|
|
return 141;
|
|
default:
|
|
return 100;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
///end code from telerik
|
|
///
|
|
|
|
}
|