SafeDispatch/Safedispatch_4_0/ClassDef.cs
2024-02-22 18:43:59 +02:00

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
///
}