2024-02-22 16:43:59 +00:00
using System ;
using System.Collections.Generic ;
using System.Text ;
using Npgsql ;
using System.Collections ;
using System.Data ;
using System.IO ;
namespace SafeMobileLib
{
public class DBvehiclesManager : DBmanager
{
public DBvehiclesManager ( string p_server , string p_dbname , string p_user , string p_password , string p_port )
: base ( p_server , p_dbname , p_user , p_password , p_port )
{
}
#region ADD VEHICLE
public vehResponse addVehicleSierraToDb ( string _imei , string _user , string _name , string _serialNumber , int DI , bool motoTRBO ,
int gpsInterval , int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , string email , string phone , int gw_id ,
int radio_gw_id , bool active , int unitType , MobileVehicles mv )
{
return AddVehicleIntoDB_Common ( _imei , _user , _name , _serialNumber , DI , motoTRBO ,
gpsInterval , imgID , gpsPOOR , gpsOFF , gpsMADEOFF , 0 , email , phone , true , gw_id , radio_gw_id , active , unitType , mv ) ;
}
public vehResponse addVehicleToDb ( string _imei , string _user , string _name , string _serialNumber , int DI , bool motoTRBO ,
int gpsInterval , int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , int gw_id ,
int radio_gw_id , bool active , int unitType , MobileVehicles mv )
{
return AddVehicleIntoDB_Common ( _imei , _user , _name , _serialNumber , DI , motoTRBO ,
gpsInterval , imgID , gpsPOOR , gpsOFF , gpsMADEOFF , 0 , "" , "" , false , gw_id , radio_gw_id , active , unitType , mv ) ;
}
private vehResponse AddVehicleIntoDB_Common ( string _imei , string _user , string _name , string _serialNumber , int DI , bool motoTRBO ,
int gpsInterval , int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , string email , string phone , bool isSierra , int gw_id ,
int radio_gw_id , bool active , int type , MobileVehicles mv )
{
string SerialNr = "" ;
if ( ! motoTRBO ) SerialNr = _serialNumber ;
NpgsqlCommand cmd = null ;
NpgsqlTransaction transaction = null ;
vehResponse resp ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
_imei = _imei . Trim ( ) ;
_name = _name . TrimEnd ( ) ;
cmd = new NpgsqlCommand ( $"SELECT count(imei) FROM subscriber WHERE imei='{_imei}'" , connection ) ;
object temp = cmd . ExecuteScalar ( ) ;
if ( temp . ToString ( ) = = "0" )
{
string id_subscriber = "" , id_vehicle = "" , id_user = "" ;
cmd = new NpgsqlCommand ( "INSERT INTO vehicle (lp,name,driver_id,time_route,\"GPS_reporting_interval\",ars_interval,gps_poor,gps_off,made_off,active,type) "
+ $" VALUES('{SerialNr}','{_name}',{imgID}, 0, {gpsInterval},{arsInterval},{gpsPOOR},{gpsOFF},{gpsMADEOFF},{active},{type})" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
if ( isSierra )
cmd = new NpgsqlCommand ( $"INSERT INTO subscriber (imei, phone, email) VALUES('{_imei}','{phone}','{email}')" , connection , transaction ) ;
else
cmd = new NpgsqlCommand ( $"INSERT INTO subscriber (imei) VALUES('{_imei}')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
//get vehicle id
cmd = new NpgsqlCommand ( "SELECT max(id) FROM vehicle " , connection ) ;
id_vehicle = cmd . ExecuteScalar ( ) . ToString ( ) ;
//get subscriber id
cmd = new NpgsqlCommand ( "SELECT max(sc_id) FROM subscriber " , connection ) ;
id_subscriber = cmd . ExecuteScalar ( ) . ToString ( ) ;
//get user id
cmd = new NpgsqlCommand ( $"SELECT userId FROM users WHERE login ='{_user}'" , connection ) ;
id_user = cmd . ExecuteScalar ( ) . ToString ( ) ;
if ( id_vehicle . Length > 0 & & id_subscriber . Length > 0 & & id_user . Length > 0 )
{
cmd = new NpgsqlCommand ( $"INSERT INTO vehicle_user(veh_id, user_id, assigned) VALUES({id_vehicle},{id_user},'2007-01-01')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
cmd = new NpgsqlCommand ( $"INSERT INTO subscriber_history(sc_id, veh_id, assigned) VALUES({id_subscriber},{id_vehicle},'2007-01-01')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
cmd = new NpgsqlCommand ( $"DELETE FROM lastpos where imei='{_imei}'" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
NpgsqlCommand cmd2 = new NpgsqlCommand ( ) ;
cmd2 . Connection = connection ;
cmd2 . Transaction = transaction ;
cmd2 . CommandText = "INSERT INTO lastpos (imei,lat,lng,speed,heading,di,dox,timeGMT) VALUES(@imei,@lat1,@lng1,0,0,0,0,0)" ; //42.06054,-88.02397
cmd2 . Parameters . Add ( "@imei" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = _imei ; //42.06054;
cmd2 . Parameters . Add ( "@lat1" , NpgsqlTypes . NpgsqlDbType . Double ) . Value = 0.1 ; //42.06054;
cmd2 . Parameters . Add ( "@lng1" , NpgsqlTypes . NpgsqlDbType . Double ) . Value = 0.1 ; //-88.02397;
cmd2 . Prepare ( ) ;
cmd2 . ExecuteNonQuery ( ) ;
if ( ! motoTRBO )
{
cmd = new NpgsqlCommand ( $"INSERT INTO emergdi (sc_id,DI) VALUES({id_subscriber},{DI})" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( "SELECT max(id) FROM subs_gateway " , connection ) ;
string str_id_subs_gateway = cmd . ExecuteScalar ( ) . ToString ( ) ;
int id_subs_gateway = 0 ;
int . TryParse ( str_id_subs_gateway , out id_subs_gateway ) ;
cmd = new NpgsqlCommand ( $"INSERT INTO subs_gateway (id, sc_id, gateway_id,radio_gw_id) VALUES( {id_subs_gateway + 1}, {id_subscriber},{(gw_id < 0 ? " null " : gw_id.ToString())},{(radio_gw_id < 0 ? " null " : radio_gw_id.ToString()) })" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
if ( type = = ( int ) DeviceType . SMARTPHONE )
{
string emergency = "" ;
if ( mv . HasEmergency )
emergency = "1" ;
string updateSubscriberAlarm =
$"INSERT INTO \" subscriber_alarm \ " (sc_id , emergency ,landmark ,\"zone\",loneworker ,speed ,email,emsound,empopup,geosound,geopopup,speedsound,speedpopup,telemsound,telempopup) VALUES ({id_subscriber},'{emergency}','','','','','',True,True,True,True,True,True,True,True);" ;
NpgsqlCommand cmd3 = new NpgsqlCommand ( ) ;
cmd3 . Connection = connection ;
cmd3 . Transaction = transaction ;
cmd3 . CommandText = "INSERT INTO subscriber_mobile (sc_id, phone_imei, first_name, last_name, company, os, phone_type, sip_pswd, has_gps, has_voice, has_text, has_ticketing, email, login, has_lone_worker, lone_worker_interval, has_man_down, has_emergency)"
+ " VALUES (@sc_id, @phone_imei, @first_name, @last_name, @company, @os, @phone_type, @sip_pswd, @has_gps, @has_voice, @has_text, @has_ticketing, @email, @login, @has_lone_worker, @lone_worker_interval, @has_man_down, @has_emergency);" + updateSubscriberAlarm ;
cmd3 . Parameters . Add ( "@sc_id" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = Convert . ToInt32 ( id_subscriber ) ;
cmd3 . Parameters . Add ( "@phone_imei" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . IMEI ;
cmd3 . Parameters . Add ( "@first_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . FirstName ;
cmd3 . Parameters . Add ( "@last_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . LastName ;
cmd3 . Parameters . Add ( "@company" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Company ;
cmd3 . Parameters . Add ( "@os" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . OS ;
cmd3 . Parameters . Add ( "@phone_type" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . PhoneType ;
cmd3 . Parameters . Add ( "@sip_pswd" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipPswd ;
cmd3 . Parameters . Add ( "@has_gps" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasGPS ;
cmd3 . Parameters . Add ( "@has_voice" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasVoice ;
cmd3 . Parameters . Add ( "@has_text" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasText ;
cmd3 . Parameters . Add ( "@has_ticketing" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasTicketing ;
cmd3 . Parameters . Add ( "@email" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Email ;
cmd3 . Parameters . Add ( "@login" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipLogin ;
cmd3 . Parameters . Add ( "@has_lone_worker" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . IsLoneWorker ;
cmd3 . Parameters . Add ( "@lone_worker_interval" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = mv . LoneWorkerInterval ;
cmd3 . Parameters . Add ( "@has_man_down" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasManDown ;
cmd3 . Parameters . Add ( "@has_emergency" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasEmergency ;
cmd3 . Prepare ( ) ;
cmd3 . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( $"INSERT INTO sip_manager (sip_id,id,type) VALUES((SELECT max(sip_id)+1 FROM sip_manager),{id_subscriber},{(int)ContactType.UNIT})" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
// commit all operations above
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
else
{
resp = vehResponse . alreadyInDB ;
}
}
}
catch ( Exception ex )
{
// rollback the trasaction
transaction ? . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
#endregion
#region ADD RANGE VEHICLES
public vehResponse addRangeVehicleSierraToDb ( Hashtable hashlist , string _user , string _serialNumber , int DI , bool motoTRBO , int gpsInterval ,
int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , string email , int gw_id , int rg_id , bool active , int type )
{
return addRangeVehicleToDb_Common ( hashlist , _user , _serialNumber , DI , motoTRBO , gpsInterval ,
imgID , gpsPOOR , gpsOFF , gpsMADEOFF , arsInterval , email , true , gw_id , rg_id , active , type ) ;
}
public vehResponse addRangeVehicleToDb ( Hashtable hashlist , string _user , string _serialNumber , int DI , bool motoTRBO , int gpsInterval ,
int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , int gw_id , int radio_gw_id , bool active , int type )
{
return addRangeVehicleToDb_Common ( hashlist , _user , _serialNumber , DI , motoTRBO , gpsInterval ,
imgID , gpsPOOR , gpsOFF , gpsMADEOFF , arsInterval , "" , false , gw_id , radio_gw_id , active , type ) ;
}
public vehResponse addRangeVehicleToDb_Common ( Hashtable hashlist , string _user , string _serialNumber , int DI , bool motoTRBO , int gpsInterval ,
int imgID , int gpsPOOR , int gpsOFF , int gpsMADEOFF , int arsInterval , string email , bool isSierra , int gw_id , int radio_gw_id , bool active , int type )
{
string SerialNr = "" ;
if ( ! motoTRBO ) SerialNr = _serialNumber ;
NpgsqlCommand cmd = null ;
NpgsqlTransaction transaction = null ;
vehResponse resp ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
foreach ( Int32 imei in hashlist . Keys )
{
String _imei = imei . ToString ( ) ;
String _name = ( String ) hashlist [ imei ] ;
string id_subscriber = "" , id_vehicle = "" , id_user = "" ;
cmd = new NpgsqlCommand ( "INSERT INTO vehicle"
+ " (lp,name,driver_id,time_route,\"GPS_reporting_interval\",ars_interval,gps_poor,gps_off,made_off,active,type) VALUES('"
+ SerialNr + "' ,'" + _name + "'," + imgID + ",0," + gpsInterval . ToString ( ) + "," + arsInterval . ToString ( ) + "," + gpsPOOR . ToString ( ) + "," + gpsOFF . ToString ( ) + "," + gpsMADEOFF . ToString ( ) + "," + active . ToString ( ) + "," + type + ")" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
if ( isSierra )
cmd = new NpgsqlCommand ( "INSERT INTO subscriber (imei, phone, email) VALUES('" + _imei + "','','" + _name + "@" + email + "')" , connection , transaction ) ;
else
cmd = new NpgsqlCommand ( "INSERT INTO subscriber (imei) VALUES('" + _imei + "')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
//get vehicle id
cmd = new NpgsqlCommand ( "SELECT max(id) FROM vehicle " , connection ) ;
id_vehicle = cmd . ExecuteScalar ( ) . ToString ( ) ;
//get subscriber id
cmd = new NpgsqlCommand ( "SELECT max(sc_id) FROM subscriber " , connection ) ;
id_subscriber = cmd . ExecuteScalar ( ) . ToString ( ) ;
//get user id
cmd = new NpgsqlCommand ( "SELECT userId FROM users Where login ='" + _user + "'" , connection ) ;
id_user = cmd . ExecuteScalar ( ) . ToString ( ) ;
if ( id_vehicle . Length > 0 & & id_subscriber . Length > 0 & & id_user . Length > 0 )
{
cmd = new NpgsqlCommand ( "INSERT INTO vehicle_user (veh_id, user_id, assigned) VALUES(" + id_vehicle + "," + id_user + ",'2007-01-01')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
cmd = new NpgsqlCommand ( "INSERT INTO subscriber_history (sc_id, veh_id, assigned) VALUES(" + id_subscriber + "," + id_vehicle + ",'2007-01-01')" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
cmd = new NpgsqlCommand ( "DELETE FROM lastpos where imei='" + _imei + "'" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
NpgsqlCommand cmd2 = new NpgsqlCommand ( ) ;
cmd2 . Connection = connection ;
cmd2 . Transaction = transaction ;
cmd2 . CommandText = "INSERT INTO lastpos (imei,lat,lng,speed,heading,di,dox,timeGMT) VALUES('" + _imei + "',@lat1,@lng1,0,0,0,0,0)" ; //42.06054,-88.02397
cmd2 . Parameters . Add ( "@lat1" , NpgsqlTypes . NpgsqlDbType . Double ) . Value = 0.1 ; //42.06054;
cmd2 . Parameters . Add ( "@lng1" , NpgsqlTypes . NpgsqlDbType . Double ) . Value = 0.1 ; //-88.02397;
cmd2 . Prepare ( ) ;
cmd2 . ExecuteNonQuery ( ) ;
if ( ! motoTRBO )
{
cmd = new NpgsqlCommand ( "INSERT INTO emergdi (sc_id, DI) VALUES(" + id_subscriber + "," + DI . ToString ( ) + ")" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( "SELECT max(id) FROM subs_gateway " , connection ) ;
string str_id_subs_gateway = cmd . ExecuteScalar ( ) . ToString ( ) ;
int id_subs_gateway = 0 ;
int . TryParse ( str_id_subs_gateway , out id_subs_gateway ) ;
cmd = new NpgsqlCommand ( $"INSERT INTO subs_gateway (id, sc_id, gateway_id,radio_gw_id) VALUES( {id_subs_gateway + 1}, {id_subscriber},{(gw_id < 0 ? " null " : gw_id.ToString())},{(radio_gw_id < 0 ? " null " : radio_gw_id.ToString()) })" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
if ( type = = ( int ) DeviceType . SMARTPHONE )
{
NpgsqlCommand cmd3 = new NpgsqlCommand ( ) ;
cmd3 . Connection = connection ;
cmd3 . Transaction = transaction ;
cmd3 . CommandText = "INSERT INTO subscriber_mobile (sc_id, phone_imei, first_name, last_name, company, os, phone_type, sip_pswd, has_gps, has_voice, has_text, has_ticketing, email, login, has_lone_worker, lone_worker_interval, has_man_down, has_emergency)"
+ " VALUES (@sc_id, @phone_imei, @first_name, @last_name, @company, @os, @phone_type, @sip_pswd, @has_gps, @has_voice, @has_text, @has_ticketing, @email, @login, @has_lone_worker, @lone_worker_interval, @has_man_down, @has_emergency)" ;
cmd3 . Parameters . Add ( "@sc_id" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = Convert . ToInt32 ( id_subscriber ) ;
cmd3 . Parameters . Add ( "@phone_imei" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@first_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@last_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@company" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@os" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@phone_type" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@sip_pswd" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "Password" + imei ;
cmd3 . Parameters . Add ( "@has_gps" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@has_voice" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@has_text" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@has_ticketing" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@email" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "" ;
cmd3 . Parameters . Add ( "@login" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = "Login" + imei ;
cmd3 . Parameters . Add ( "@has_lone_worker" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@lone_worker_interval" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = 1 ;
cmd3 . Parameters . Add ( "@has_man_down" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Parameters . Add ( "@has_emergency" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = false ;
cmd3 . Prepare ( ) ;
cmd3 . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( $"INSERT INTO sip_manager (sip_id,id,type) VALUES((SELECT max(sip_id)+1 FROM sip_manager),{id_subscriber},{(int)ContactType.UNIT})" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
}
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
}
catch ( Exception ex )
{
transaction . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
#endregion
public vehResponse deleteVehicle ( string _imei )
{
vehResponse resp ;
string scid = "0" ;
string vehid = "0" ;
string vehname = "0" ;
NpgsqlTransaction transaction = null ;
try
{
//====== get subscriber id ========
scid = GetInt32Result ( $"SELECT sc_id FROM subscriber where imei='{_imei}'" ) . ToString ( ) ;
//====== get vehicule id ========
vehid = GetInt32Result ( $"SELECT veh_id FROM subscriber_history where sc_id={scid}" ) . ToString ( ) ;
//====== get vehicule name ========
vehname = GetStringResult ( $"SELECT name FROM vehicle WHERE id={vehid}" ) ;
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
object result = null ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( $"SELECT count(imei) FROM subscriber where imei='{_imei}'" , connection ) )
{
result = cmd . ExecuteScalar ( ) ;
}
if ( result ! = null & & result . ToString ( ) ! = "0" )
{
#region old DELETE UNIT
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM lastpos where imei='{_imei}'", connection))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM vehicle WHERE id={vehid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subscriber_stun WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subscriber_alarm WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM vehicle_user WHERE veh_id={vehid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subscriber_history where veh_id={vehid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM telemetry_history WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM telemetry WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subscriber WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM emergdi WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM messages WHERE sc_id={scid}", connection transaction))
//{
// cmd.ExecuteNonQuery();
//}
//// =============================
////delete alarm and SMS
//// =============================
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM speedalarm WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM emergalarm WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM geozoneinout WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM mototurbo WHERE imei='{_imei}'", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM sms WHERE sc_id_sour={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM sms WHERE sc_id_dest={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM vehicle_group WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subs_gateway WHERE sc_id = {scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM lastpos_ars WHERE imei='{_imei}'", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM subscriber_mobile WHERE sc_id={scid}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM sip_manager WHERE id={scid} and type ={(int)ContactType.UNIT}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
#endregion
// commit transaction
using ( NpgsqlCommand cmd = new NpgsqlCommand ( $"UPDATE vehicle SET is_deleted = TRUE , active = FALSE where id= {scid}" , connection ) )
{
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
else
{
resp = vehResponse . vehNontInDB ;
}
}
}
catch ( Exception ex )
{
// rollback trasaction
transaction ? . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
public vehResponse deleteVehicleList ( string _imeiList , string _IdList )
{
vehResponse resp ;
NpgsqlTransaction transaction = null ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
object result = null ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "SELECT count(imei) FROM subscriber where imei in " + _imeiList , connection ) )
{
result = cmd . ExecuteScalar ( ) ;
}
if ( result ! = null & & result . ToString ( ) ! = "0" )
{
#region old DELETE Multipe Units
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM lastpos where imei in " + _imeiList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM vehicle where id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subscriber_stun where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subscriber_alarm where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM vehicle_user where veh_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subscriber_history where veh_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
////=============================
//// telemetry
////=============================
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM telemetry_history where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM telemetry where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subscriber where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM emergdi where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM messages where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
////=============================
////delete alarm and SMS
////=============================
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM speedalarm where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM emergalarm where sc_id in " + _IdList, connection transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM geozoneinout where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM mototurbo where imei in " + _imeiList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM sms where sc_id_sour in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM sms where sc_id_dest in " + _IdList, connection transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM vehicle_group where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subs_gateway where sc_id in " + _IdList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM lastpos_ars where imei in " + _imeiList, connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM subscriber_mobile where sc_id in" + _IdList + "", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
//using (NpgsqlCommand cmd = new NpgsqlCommand($"DELETE FROM sip_manager where id in {_IdList} and type ={(int)ContactType.UNIT}", connection, transaction))
//{
// cmd.ExecuteNonQuery();
//}
#endregion
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "UPDATE vehicle SET is_deleted = TRUE, active = FALSE where id in " + _IdList , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
//=============================
// commit the transaction
//=============================
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
else
{
resp = vehResponse . vehNontInDB ;
}
}
}
catch ( Exception ex )
{
//=============================
// rolback the trasaction
//=============================
transaction ? . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
/// <summary>
/// Clean up DB of olds imeis that are hung up!!!!
/// </summary>
/// <returns></returns>
public List < SUID_AND_IMEI > getOrphanImeis ( )
{
List < SUID_AND_IMEI > suidList = new List < SUID_AND_IMEI > ( ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = "SELECT sc_id ,imei FROM subscriber where sc_id NOT IN (select sc_id from subscriber_history)" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
SUID_AND_IMEI suidAndImei = new SUID_AND_IMEI ( reader . GetInt32 ( 0 ) , reader . GetString ( 1 ) ) ;
suidList . Add ( suidAndImei ) ;
}
}
}
}
}
catch ( Exception ex )
{
Console . WriteLine ( ex . ToString ( ) ) ;
}
return suidList ;
}
public vehResponse CleanupSC_ID ( int scid )
{
vehResponse resp = vehResponse . SQLerror ;
NpgsqlTransaction transaction = null ;
2024-04-18 15:10:37 +00:00
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
2024-02-22 16:43:59 +00:00
{
2024-04-18 15:10:37 +00:00
try
2024-02-22 16:43:59 +00:00
{
2024-04-18 15:10:37 +00:00
2024-02-22 16:43:59 +00:00
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM subscriber_stun where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM subscriber_alarm where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM emergdi where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
2024-04-18 15:10:37 +00:00
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM vehicle_group where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
2024-02-22 16:43:59 +00:00
2024-04-18 15:10:37 +00:00
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM geozoneinout where sc_id=" + scid , connection , transaction ) )
2024-02-22 16:43:59 +00:00
{
cmd . ExecuteNonQuery ( ) ;
}
2024-04-18 15:10:37 +00:00
2024-02-22 16:43:59 +00:00
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM subs_gateway where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "DELETE FROM subscriber where sc_id=" + scid , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
2024-04-18 15:10:37 +00:00
catch ( Exception ex )
2024-02-22 16:43:59 +00:00
{
2024-04-18 15:10:37 +00:00
try
{
transaction ? . Rollback ( ) ;
}
catch ( Exception ex2 )
{
Utils . WriteLine ( "COuld not roll back because: " + ex2 . ToString ( ) ) ;
}
2024-02-22 16:43:59 +00:00
2024-04-18 15:10:37 +00:00
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
2024-02-22 16:43:59 +00:00
}
return resp ;
}
#region EDIT VEHICLE
public vehResponse editVehicleSierra ( string _id , string _name , int _DI , string _lp , int gpsInterval , int imgID ,
int gpsPOOR , int gpsOFF , int madeOFF , int arsInterval , string email , string phone , int gateway_id , int radio_gw_id , bool active , int type , MobileVehicles mv )
{
return editVehicle_Common ( _id , _name , _DI , _lp , gpsInterval , imgID , gpsPOOR , gpsOFF , madeOFF , arsInterval , email , phone , true , gateway_id , radio_gw_id , active , type , mv ) ;
}
public vehResponse editVehicle ( string _id , string _name , int _DI , string _lp , int gpsInterval , int imgID ,
int gpsPOOR , int gpsOFF , int madeOFF , int gateway_id , int radio_gw_id , bool active , int type , MobileVehicles mv , int arsInterval = 0 )
{
return editVehicle_Common ( _id , _name , _DI , _lp , gpsInterval , imgID , gpsPOOR , gpsOFF , madeOFF , arsInterval , "" , "" , false , gateway_id , radio_gw_id , active , type , mv ) ;
}
public vehResponse editVehicle_Common ( string _id , string _name , int _DI , string _lp , int gpsInterval , int imgID ,
int gpsPOOR , int gpsOFF , int madeOFF , int arsInterval , string email , string phone , bool isSierra , int gateway_id , int radio_gw_id , bool active , int type , MobileVehicles mv )
{
vehResponse resp ;
NpgsqlCommand cmd ;
object updateResponse = null ;
bool isDeleted = isUnitDeleted ( _id ) ;
NpgsqlTransaction transaction = null ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
//open trasaction
transaction = connection . BeginTransaction ( ) ;
cmd = new NpgsqlCommand ( "select count(id) from vehicle where id=\'" + _id + "\'" , connection ) ;
object temp = cmd . ExecuteScalar ( ) ;
cmd = new NpgsqlCommand ( "select sc_id from subscriber_history where veh_id=\'" + _id + "\'" , connection ) ;
object tmp_sc_id = cmd . ExecuteScalar ( ) ;
if ( Convert . ToInt32 ( temp ) > 0 )
{
if ( isSierra )
{
cmd = new NpgsqlCommand ( $"UPDATE subscriber SET phone='{phone}', email='{email}' WHERE sc_id = {_id} " , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
if ( isDeleted & & active )
{
cmd = new NpgsqlCommand ( "UPDATE vehicle SET name='" + _name + "',lp='" + _lp +
"',\"GPS_reporting_interval\"=" + gpsInterval . ToString ( ) +
",driver_id=" + imgID + ",ars_interval=" + arsInterval + ",gps_poor=" + gpsPOOR + ",gps_off=" + gpsOFF + ",made_off=" + madeOFF + ",active=" + active . ToString ( ) + ",is_deleted= FALSE" + " where id=" + _id , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
else
{
cmd = new NpgsqlCommand ( "UPDATE vehicle SET name='" + _name + "',lp='" + _lp +
"',\"GPS_reporting_interval\"=" + gpsInterval . ToString ( ) +
",driver_id=" + imgID + ",ars_interval=" + arsInterval + ",gps_poor=" + gpsPOOR + ",gps_off=" + gpsOFF + ",made_off=" + madeOFF + ",active=" + active . ToString ( ) + " where id=" + _id , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( "update emergdi SET DI=" + _DI . ToString ( ) + " where sc_id=" + Convert . ToInt32 ( tmp_sc_id ) , connection , transaction ) ;
if ( cmd . ExecuteNonQuery ( ) = = 0 )
{
cmd = new NpgsqlCommand ( "insert into emergdi (sc_id,DI) VALUES(" + Convert . ToInt32 ( tmp_sc_id ) + "," + _DI . ToString ( ) + ")" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
cmd = new NpgsqlCommand ( $"UPDATE subs_gateway SET gateway_id = {(gateway_id < 0 ? " null " : gateway_id.ToString())}, radio_gw_id= {(radio_gw_id < 0 ? " null " : radio_gw_id.ToString()) } where sc_id =" + _id , connection , transaction ) ;
if ( cmd . ExecuteNonQuery ( ) = = 0 )
{
cmd = new NpgsqlCommand ( "SELECT max(id) FROM subs_gateway " , connection ) ;
string str_id_subs_gateway = cmd . ExecuteScalar ( ) . ToString ( ) ;
int id_subs_gateway = 0 ;
int . TryParse ( str_id_subs_gateway , out id_subs_gateway ) ;
cmd = new NpgsqlCommand ( $"INSERT INTO subs_gateway (id, sc_id, gateway_id, radio_gw_id) VALUES( {id_subs_gateway + 1}, {tmp_sc_id}, {(gateway_id < 0 ? " null " : gateway_id.ToString())}, {(radio_gw_id < 0 ? " null " : radio_gw_id.ToString()) })" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
if ( type = = ( int ) DeviceType . SMARTPHONE )
{
if ( mv . CanUpdate = = true )
{
string emergency = "" ;
if ( mv . HasEmergency )
emergency = "1" ;
string updateSubscriberAlarm = $"update subscriber_alarm set emergency = '{emergency}' where sc_id = {_id}" ;
NpgsqlCommand cmd3 = new NpgsqlCommand ( ) ;
cmd3 . Transaction = transaction ;
cmd3 . Connection = connection ;
cmd3 . CommandText = "UPDATE subscriber_mobile SET phone_imei=@phone_imei, first_name=@first_name, last_name=@last_name, company=@company, os=@os,"
+ " phone_type=@phone_type, sip_pswd=@sip_pswd, has_gps=@has_gps,has_voice =@has_voice, has_text=@has_text, has_ticketing=@has_ticketing,"
+ " email = @email, login = @login, has_lone_worker = @has_lone_worker, lone_worker_interval = @lone_worker_interval, has_man_down = @has_man_down, has_emergency = @has_emergency "
+ " WHERE sc_id=@sc_id "
+ " RETURNING sc_id; " + updateSubscriberAlarm ;
cmd3 . Parameters . Add ( "@sc_id" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = Convert . ToInt32 ( _id ) ;
cmd3 . Parameters . Add ( "@phone_imei" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . IMEI ;
cmd3 . Parameters . Add ( "@first_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . FirstName ;
cmd3 . Parameters . Add ( "@last_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . LastName ;
cmd3 . Parameters . Add ( "@company" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Company ;
cmd3 . Parameters . Add ( "@os" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . OS ;
cmd3 . Parameters . Add ( "@phone_type" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . PhoneType ;
cmd3 . Parameters . Add ( "@sip_pswd" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipPswd ;
cmd3 . Parameters . Add ( "@has_gps" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasGPS ;
cmd3 . Parameters . Add ( "@has_voice" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasVoice ;
cmd3 . Parameters . Add ( "@has_text" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasText ;
cmd3 . Parameters . Add ( "@has_ticketing" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasTicketing ;
cmd3 . Parameters . Add ( "@email" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Email ;
cmd3 . Parameters . Add ( "@login" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipLogin ;
cmd3 . Parameters . Add ( "@has_lone_worker" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . IsLoneWorker ;
cmd3 . Parameters . Add ( "@lone_worker_interval" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = mv . LoneWorkerInterval ;
cmd3 . Parameters . Add ( "@has_man_down" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasManDown ;
cmd3 . Parameters . Add ( "@has_emergency" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasEmergency ;
cmd3 . Prepare ( ) ;
updateResponse = cmd3 . ExecuteScalar ( ) ;
if ( updateResponse = = null )
{
if ( mv . HasEmergency )
emergency = "1" ;
updateSubscriberAlarm =
$"INSERT INTO \" subscriber_alarm \ " (sc_id , emergency ,landmark ,\"zone\",loneworker ,speed ,email,emsound,empopup,geosound,geopopup,speedsound,speedpopup,telemsound,telempopup) VALUES ({_id},'{emergency}','','','','','',True,True,True,True,True,True,True,True);" ;
cmd3 = new NpgsqlCommand ( ) ;
cmd3 . Connection = connection ;
cmd3 . Transaction = transaction ;
cmd3 . CommandText = "INSERT INTO subscriber_mobile (sc_id, phone_imei, first_name, last_name, company, os, phone_type, sip_pswd, has_gps, has_voice, has_text, has_ticketing, email, login, has_lone_worker, lone_worker_interval, has_man_down, has_emergency)"
+ " VALUES (@sc_id, @phone_imei, @first_name, @last_name, @company, @os, @phone_type, @sip_pswd, @has_gps, @has_voice, @has_text, @has_ticketing, @email, @login, @has_lone_worker, @lone_worker_interval, @has_man_down, has_emergency); " + updateSubscriberAlarm ;
cmd3 . Parameters . Add ( "@sc_id" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = Convert . ToInt32 ( _id ) ;
cmd3 . Parameters . Add ( "@phone_imei" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . IMEI ;
cmd3 . Parameters . Add ( "@first_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . FirstName ;
cmd3 . Parameters . Add ( "@last_name" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . LastName ;
cmd3 . Parameters . Add ( "@company" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Company ;
cmd3 . Parameters . Add ( "@os" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . OS ;
cmd3 . Parameters . Add ( "@phone_type" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . PhoneType ;
cmd3 . Parameters . Add ( "@sip_pswd" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipPswd ;
cmd3 . Parameters . Add ( "@has_gps" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasGPS ;
cmd3 . Parameters . Add ( "@has_voice" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasVoice ;
cmd3 . Parameters . Add ( "@has_text" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasText ;
cmd3 . Parameters . Add ( "@has_ticketing" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasTicketing ;
cmd3 . Parameters . Add ( "@email" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . Email ;
cmd3 . Parameters . Add ( "@login" , NpgsqlTypes . NpgsqlDbType . Varchar ) . Value = mv . SipLogin ;
cmd3 . Parameters . Add ( "@has_lone_worker" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . IsLoneWorker ;
cmd3 . Parameters . Add ( "@lone_worker_interval" , NpgsqlTypes . NpgsqlDbType . Integer ) . Value = mv . LoneWorkerInterval ;
cmd3 . Parameters . Add ( "@has_man_down" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasManDown ;
cmd3 . Parameters . Add ( "@has_emergency" , NpgsqlTypes . NpgsqlDbType . Boolean ) . Value = mv . HasEmergency ;
cmd3 . Prepare ( ) ;
cmd3 . ExecuteNonQuery ( ) ;
//}
}
}
}
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
else
{
resp = vehResponse . vehNontInDB ;
}
}
}
catch ( Exception ex )
{
transaction ? . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
#endregion
public vehResponse editGroupVehicle ( string idlist , int _DI , string _lp , bool editGpsInterval , int gpsInterval , bool editImage , int imgID ,
bool editgpsPOOR , int gpsPOOR , bool editgpsOFF , int gpsOFF , bool editmadeOFF , int madeOFF , bool editGW , RadioGateway rg , bool editActive , bool active , MobileVehicles mob , int arsInterval = 0 )
{
vehResponse resp ;
NpgsqlCommand cmd ;
bool isDeleted ;
string [ ] idListArray = idlist . Replace ( "(" , "" ) . Replace ( ")" , "" ) . Split ( ',' ) ;
isDeleted = isUnitDeleted ( idListArray [ 0 ] ) ;
NpgsqlTransaction transaction = null ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
string commandText = "UPDATE vehicle SET lp='" + _lp + "'" ;
if ( editGpsInterval ) commandText + = ",\"GPS_reporting_interval\"=" + gpsInterval . ToString ( ) ;
if ( editgpsPOOR ) commandText + = ",gps_poor=" + gpsPOOR ;
if ( editgpsOFF ) commandText + = ",gps_off=" + gpsOFF ;
if ( editmadeOFF ) commandText + = ",made_off=" + madeOFF ;
if ( editImage ) commandText + = ",driver_id=" + imgID . ToString ( ) ;
if ( isDeleted & & active )
{
if ( editActive ) commandText + = ",active=" + active . ToString ( ) + ",is_deleted=FALSE" ;
}
else
{
if ( editActive ) commandText + = ",active=" + active . ToString ( ) ;
}
commandText + = ",ars_interval=" + arsInterval ;
commandText + = " where id in " + idlist ;
cmd = new NpgsqlCommand ( "select count(id) from vehicle where id in " + idlist , connection ) ;
object temp = cmd . ExecuteScalar ( ) ;
Utils . WriteLine ( "editGroupVehicle: " + commandText ) ;
if ( Convert . ToInt32 ( temp ) > 0 )
{
cmd = new NpgsqlCommand ( commandText , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
cmd = new NpgsqlCommand ( "update emergdi SET DI=" + _DI . ToString ( ) + " where sc_id in " + idlist , connection , transaction ) ;
if ( cmd . ExecuteNonQuery ( ) = = 0 )
{
foreach ( string tmp_sc_id in idListArray )
{
cmd = new NpgsqlCommand ( "insert into emergdi (sc_id,DI) VALUES(" + Convert . ToInt32 ( tmp_sc_id ) + "," + _DI . ToString ( ) + ")" , connection ) ;
cmd . ExecuteNonQuery ( ) ;
}
}
if ( editGW )
{
foreach ( var id in idListArray )
{
cmd = new NpgsqlCommand ( $"update subs_gateway SET gateway_id= {(rg.Gw_id < 0 ? " null " : rg.Gw_id.ToString())}, radio_gw_id= {(rg.Id < 0 ? " null " : rg.Id.ToString()) } where sc_id = {id}" , connection , transaction ) ;
if ( cmd . ExecuteNonQuery ( ) = = 0 )
{
cmd = new NpgsqlCommand ( "SELECT max(id) FROM subs_gateway " , connection ) ;
string str_id_subs_gateway = cmd . ExecuteScalar ( ) . ToString ( ) ;
int id_subs_gateway = 0 ;
int . TryParse ( str_id_subs_gateway , out id_subs_gateway ) ;
cmd = new NpgsqlCommand ( $"insert into subs_gateway (id, sc_id,gateway_id,radio_gw_id) VALUES({id_subs_gateway + 1 }, {id},{(rg.Gw_id < 0 ? " null " : rg.Gw_id.ToString())} , {(rg.Id < 0 ? " null " : rg.Id.ToString()) } )" , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
}
}
if ( mob . CanUpdate )
{
string clause = "" ;
if ( mob . ToggleStateDictionary . ContainsKey ( "HasGPS" ) )
{
if ( mob . ToggleStateDictionary [ "HasGPS" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_gps={mob.HasGPS}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "HasVoice" ) )
{
if ( mob . ToggleStateDictionary [ "HasVoice" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_voice={mob.HasVoice}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "HasText" ) )
{
if ( mob . ToggleStateDictionary [ "HasText" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_text={mob.HasText}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "HasTicketing" ) )
{
if ( mob . ToggleStateDictionary [ "HasTicketing" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_ticketing={mob.HasTicketing}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "IsLoneWorker" ) )
{
if ( mob . ToggleStateDictionary [ "IsLoneWorker" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_lone_worker={mob.IsLoneWorker}, lone_worker_interval={mob.LoneWorkerInterval}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "HasManDown" ) )
{
if ( mob . ToggleStateDictionary [ "HasManDown" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_man_down = {mob.HasManDown}" ;
}
}
if ( mob . ToggleStateDictionary . ContainsKey ( "HasEmergency" ) )
{
if ( mob . ToggleStateDictionary [ "HasEmergency" ] ! = true )
{
if ( clause ! = "" )
clause + = "," ;
clause + = $"has_emergency = {mob.HasEmergency}" ;
}
}
if ( clause ! = "" )
{
string emergency = "" ;
if ( mob . HasEmergency )
emergency = "1" ;
string updateSubscriberAlarm = $"update subscriber_alarm set emergency = '{emergency}' where sc_id in {idlist}" ;
string command = $"update subscriber_mobile SET {clause} where sc_id in {idlist};" + updateSubscriberAlarm ;
cmd = new NpgsqlCommand ( command , connection , transaction ) ;
cmd . ExecuteNonQuery ( ) ;
}
}
transaction . Commit ( ) ;
resp = vehResponse . done ;
}
else
{
resp = vehResponse . vehNontInDB ;
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "editGroupVehicle Commnad: " + ex . ToString ( ) ) ;
transaction ? . Rollback ( ) ;
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
public int getSCID ( string imei )
{
string command = $"SELECT sc_id FROM subscriber WHERE imei='{imei}'" ;
return GetInt32Result ( command ) ;
}
public ArrayList getListofSCID ( Hashtable hash )
{
ArrayList toreturn = new ArrayList ( ) ;
StringBuilder buffer = new StringBuilder ( 4096 ) ;
foreach ( Int32 obj in hash . Keys )
{
buffer . AppendFormat ( "'{0}'," , obj ) ;
}
if ( buffer . Length > 0 )
buffer = buffer . Replace ( "," , "" , buffer . Length - 1 , 1 ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = $"SELECT sc_id FROM subscriber WHERE imei in ( {buffer.ToString() } )" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
toreturn . Add ( reader . GetInt32 ( 0 ) ) ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "getListofSCID: " + ex . ToString ( ) , ConsoleColor . Yellow ) ;
}
return toreturn ;
}
public string getIMEI ( int sc_id )
{
string command = $"SELECT imei FROM subscriber WHERE sc_id={sc_id}" ;
return GetStringResult ( command ) ;
}
public bool isUniqueLogin ( string login , int sc_id )
{
bool ret = true ;
string cmdsql = "" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
cmdsql = $"SELECT count(sc_id) FROM subscriber_mobile WHERE login = '{login}'" ;
if ( sc_id ! = - 1 )
cmdsql = $"{cmdsql} AND sc_id <> {sc_id}" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( cmdsql , connection ) )
{
object veh_id = cmd . ExecuteScalar ( ) ;
if ( veh_id . ToString ( ) ! = "0" )
{
ret = false ;
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "isUniqueLogin: " + ex . ToString ( ) , ConsoleColor . Yellow ) ;
}
return ret ;
}
public MobileVehicles getMobileVehicle ( int sc_id )
{
MobileVehicles result = new MobileVehicles ( ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = $"SELECT sc_id, phone_imei , first_name, last_name, company, os, phone_type,"
+ " sip_pswd, has_gps, has_voice, has_text, has_ticketing, email, login, has_lone_worker, "
+ " lone_worker_interval, has_man_down, has_emergency"
+ " FROM subscriber_mobile"
+ $" WHERE sc_id= {sc_id}" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
while ( Reader . Read ( ) )
{
result = new MobileVehicles ( )
{
IMEI = Reader . IsDBNull ( Reader . GetOrdinal ( "phone_imei" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "phone_imei" ) ) ,
FirstName = Reader . IsDBNull ( Reader . GetOrdinal ( "first_name" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "first_name" ) ) ,
LastName = Reader . IsDBNull ( Reader . GetOrdinal ( "last_name" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "last_name" ) ) ,
Company = Reader . IsDBNull ( Reader . GetOrdinal ( "company" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "company" ) ) ,
OS = Reader . IsDBNull ( Reader . GetOrdinal ( "os" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "os" ) ) ,
PhoneType = Reader . IsDBNull ( Reader . GetOrdinal ( "phone_type" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "phone_type" ) ) ,
SipPswd = Reader . IsDBNull ( Reader . GetOrdinal ( "sip_pswd" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "sip_pswd" ) ) ,
HasGPS = Reader . IsDBNull ( Reader . GetOrdinal ( "has_gps" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_gps" ) ) ,
HasVoice = Reader . IsDBNull ( Reader . GetOrdinal ( "has_voice" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_voice" ) ) ,
HasText = Reader . IsDBNull ( Reader . GetOrdinal ( "has_text" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_text" ) ) ,
HasTicketing = Reader . IsDBNull ( Reader . GetOrdinal ( "has_ticketing" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_ticketing" ) ) ,
Email = Reader . IsDBNull ( Reader . GetOrdinal ( "email" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "email" ) ) ,
SipLogin = Reader . IsDBNull ( Reader . GetOrdinal ( "login" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "login" ) ) ,
IsLoneWorker = Reader . IsDBNull ( Reader . GetOrdinal ( "has_lone_worker" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_lone_worker" ) ) ,
LoneWorkerInterval = Reader . IsDBNull ( Reader . GetOrdinal ( "lone_worker_interval" ) ) ? 0 : Reader . GetInt32 ( Reader . GetOrdinal ( "lone_worker_interval" ) ) ,
HasManDown = Reader . IsDBNull ( Reader . GetOrdinal ( "has_man_down" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_man_down" ) ) ,
HasEmergency = Reader . IsDBNull ( Reader . GetOrdinal ( "has_emergency" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "has_emergency" ) )
} ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( $"getMobileVehicle: {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return result ;
}
public int getReportingInterval ( string imei )
{
string command = "SELECT vehicle.\"GPS_reporting_interval\" FROM vehicle,subscriber,subscriber_history "
+ $" WHERE subscriber.imei = '{imei}'"
+ " AND subscriber.sc_id = subscriber_history.sc_id"
+ " AND subscriber_history.veh_id = vehicle.id " ;
return GetInt32Result ( command ) ;
}
public List < TallysmanLostLog > getGetTallysmanLogs ( int interval )
{
List < TallysmanLostLog > toRet = new List < TallysmanLostLog > ( ) ;
int backwards = DateTime . UtcNow . GetSecondsFromDT ( ) - interval * 60 ;
string command = "SELECT s.imei::int, tallysman_log_id FROM messages m " +
"JOIN subscriber s ON s.sc_id = m.sc_id " +
"JOIN lastpos l on l.imei = s.imei " +
"WHERE tallysman_log_id is not null " +
$"AND m.timegmt >= {backwards} " +
$"AND l.status not in ({(int)Status_for_tab.OFF},{(int)Status_for_tab.DISABLE},{(int)Status_for_tab.MADEOFF})" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
toRet . Add ( new TallysmanLostLog ( )
{
RadioID = reader . GetInt32 ( 0 ) ,
LogId = reader . GetInt32 ( 1 )
} ) ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( $"getGetTallysmanLogs: {ex.ToString()}" , ConsoleColor . Red ) ;
}
return toRet ;
}
public uint getRRSInterval ( string imei )
{
string command = "SELECT vehicle.ars_interval FROM vehicle,subscriber,subscriber_history "
+ "WHERE subscriber.imei = '" + imei + "'"
+ " AND subscriber.sc_id = subscriber_history.sc_id"
+ " AND subscriber_history.veh_id = vehicle.id " ;
int result = GetInt32Result ( command ) ;
return ( uint ) ( result < = 0 ? 0 : result ) ;
}
public List < Vehicles > getAllSierraVehicles ( out Boolean hasOnlyIntegerValues , string arg , bool getDeleted )
{
string whereClause = "" ;
if ( arg = = "GSM Only" )
{
whereClause = "where length(imei) > 7" ;
whereClause + = getDeleted ? " AND is_deleted = TRUE " : " AND is_deleted = FALSE " ;
}
if ( arg = = "TETRA Based" )
{
whereClause = "where length(imei) <= 7 AND is_deleted = FALSE " ;
whereClause + = getDeleted ? " AND is_deleted = TRUE " : " AND is_deleted = FALSE " ;
}
string command = "SELECT veh.id,sub.imei,veh.lp,veh.name,em.di,veh.\"GPS_reporting_interval\",grp.name,veh.driver_id,veh.is_stolen,veh.ars_interval,veh.gps_poor,veh.gps_off,veh.made_off, "
+ " sub.phone, sub.email, "
+ " COALESCE(sgw.gateway_id, -1) gateway_id, COALESCE(sgw.radio_gw_id, -1) radio_gw_id,"
+ " veh.type, veh.active"
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) INNER JOIN subscriber as sub"
+ " on (sh.sc_id = sub.sc_id) LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id)"
+ " LEFT JOIN (select * from vehicle_group vg join groups gp on vg.grp_ip = gp.id and gp.type = " + ( int ) SafeMobileLib . GroupType . CATEGORY . value + " ) as v_grp ON (v_grp.sc_id = sub.sc_id) "
+ " LEFT JOIN groups as grp ON (grp.id = v_grp.grp_ip)"
+ " LEFT JOIN subs_gateway as sgw ON (sgw.sc_id = sub.sc_id)"
+ whereClause
+ " ORDER BY veh.name" ;
return getAllVehiclesFromCMD ( command , out hasOnlyIntegerValues ) ;
}
public List < Vehicles > getAllVehicles ( out Boolean hasOnlyIntegerValues , bool getDeleted )
{
string command = "SELECT veh.id,sub.imei,veh.lp,veh.name,em.di,veh.\"GPS_reporting_interval\",grp.name,veh.driver_id,veh.is_stolen,veh.ars_interval,veh.gps_poor,veh.gps_off,veh.made_off,"
+ " coalesce(sgw.gateway_id, -1) as gateway_id, coalesce(sgw.radio_gw_id, -1) as radio_gw_id, "
+ " veh.type, veh.active"
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) INNER JOIN subscriber as sub"
+ " on (sh.sc_id = sub.sc_id) LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id)"
+ " LEFT JOIN (select * from vehicle_group vg join groups gp on vg.grp_ip = gp.id and gp.type = " + ( int ) SafeMobileLib . GroupType . CATEGORY . value + " ) as v_grp ON (v_grp.sc_id = sub.sc_id) "
+ " LEFT JOIN groups as grp ON (grp.id = v_grp.grp_ip)"
+ " LEFT JOIN subs_gateway as sgw ON (sgw.sc_id = sub.sc_id)" ;
command + = getDeleted ? " WHERE is_deleted = TRUE" : " WHERE is_deleted = FALSE" ;
command + = " ORDER BY veh.name" ;
return getAllVehiclesFromCMD ( command , out hasOnlyIntegerValues ) ;
}
public List < Vehicles > getAllVehicles ( )
{
Boolean hasOnlyIntegerValues = false ;
return getAllVehiclesFromCMD ( "SELECT veh.id,sub.imei,veh.lp,veh.name,em.di,veh.\"GPS_reporting_interval\",grp.name,veh.driver_id,veh.is_stolen,veh.ars_interval,veh.gps_poor,veh.gps_off,veh.made_off,"
+ " coalesce(sgw.gateway_id, -1) as gateway_id, coalesce(sgw.radio_gw_id, -1) as radio_gw_id,"
+ " veh.type, veh.active"
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) INNER JOIN subscriber as sub"
+ " on (sh.sc_id = sub.sc_id) LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id)"
+ " LEFT JOIN (select * from vehicle_group vg join groups gp on vg.grp_ip = gp.id and gp.type = " + ( int ) SafeMobileLib . GroupType . CATEGORY . value + " ) as v_grp ON (v_grp.sc_id = sub.sc_id) "
+ " LEFT JOIN groups as grp ON (grp.id = v_grp.grp_ip)"
+ " LEFT JOIN subs_gateway as sgw ON (sgw.sc_id = sub.sc_id)"
+ " WHERE is_deleted = FALSE"
+ " ORDER BY sub.imei" , out hasOnlyIntegerValues ) ;
}
private List < Vehicles > getAllVehiclesFromCMD ( String command , out Boolean hasOnlyIntegerValues )
{
hasOnlyIntegerValues = true ;
List < Vehicles > vehList = new List < Vehicles > ( ) ;
Vehicles veh ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
while ( Reader . Read ( ) )
{
if ( Reader . IsDBNull ( 4 ) ) veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , 0 , Reader . GetInt32 ( 5 ) ,
( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) , Reader . GetInt32 ( 12 ) ) ;
else veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , Reader . GetInt32 ( 4 ) ,
Reader . GetInt32 ( 5 ) , ( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) , Reader . GetInt32 ( 12 ) ) ;
if ( command . Contains ( "email" ) )
veh . Email = Reader . IsDBNull ( Reader . GetOrdinal ( "email" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "email" ) ) ;
if ( command . Contains ( "phone" ) )
veh . Phone = Reader . IsDBNull ( Reader . GetOrdinal ( "phone" ) ) ? "" : Reader . GetString ( Reader . GetOrdinal ( "phone" ) ) ;
if ( command . Contains ( "gateway_id" ) )
veh . Gw_id = Reader . IsDBNull ( Reader . GetOrdinal ( "gateway_id" ) ) ? 0 : Reader . GetInt32 ( Reader . GetOrdinal ( "gateway_id" ) ) ;
if ( command . Contains ( "radio_gw_id" ) )
veh . Radio_gw_id = Reader . IsDBNull ( Reader . GetOrdinal ( "radio_gw_id" ) ) ? 0 : Reader . GetInt32 ( Reader . GetOrdinal ( "radio_gw_id" ) ) ;
if ( command . Contains ( "type" ) )
veh . Type = Reader . IsDBNull ( Reader . GetOrdinal ( "type" ) ) ? 0 : Reader . GetInt32 ( Reader . GetOrdinal ( "type" ) ) ;
if ( command . Contains ( "active" ) )
veh . Active = Reader . IsDBNull ( Reader . GetOrdinal ( "active" ) ) ? false : Reader . GetBoolean ( Reader . GetOrdinal ( "active" ) ) ;
int ars_interval = Reader . GetInt32 ( 9 ) ;
veh . ArsInterval = ars_interval ;
try
{
veh . IntImei = Convert . ToInt64 ( veh . Imei ) ;
}
catch
{
hasOnlyIntegerValues = false ;
}
vehList . Add ( veh ) ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
}
return vehList ;
}
public List < Vehicles > getAllVehiclesWithSc_ID ( )
{
List < Vehicles > vehList = new List < Vehicles > ( ) ;
Vehicles veh ;
string command = "SELECT veh.id,sub.imei,veh.lp,veh.name,em.di,veh.\"GPS_reporting_interval\",grp.name,veh.driver_id,veh.is_stolen,veh.ars_interval,sub.sc_id,veh.gps_poor,veh.gps_off,veh.made_off"
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) "
+ " INNER JOIN subscriber as sub on (sh.sc_id = sub.sc_id) "
+ " LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id) "
+ " LEFT JOIN "
+ "( SELECT * FROM vehicle_group v_grp1 JOIN groups grp1 ON (grp1.id = v_grp1.grp_ip) WHERE grp1.type = " + ( int ) GroupType . CATEGORY . value + " )"
+ "as v_grp ON (v_grp.sc_id = sub.sc_id)"
+ " LEFT JOIN groups as grp ON (grp.id = v_grp.grp_ip)"
+ " WHERE is_deleted = FALSE"
+ " ORDER BY veh.name" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
while ( Reader . Read ( ) )
{
if ( Reader . IsDBNull ( 4 ) ) veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , 0 , Reader . GetInt32 ( 5 ) ,
( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) , Reader . GetInt32 ( 12 ) , Reader . GetInt32 ( 13 ) , 0 ) ;
else veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , Reader . GetInt32 ( 4 ) ,
Reader . GetInt32 ( 5 ) , ( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) , Reader . GetInt32 ( 12 ) , Reader . GetInt32 ( 13 ) , 0 ) ;
int ars_interval = Reader . GetInt32 ( 9 ) ;
veh . ArsInterval = ars_interval ;
vehList . Add ( veh ) ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
}
return vehList ;
}
public List < Vehicles > getAllVehiclesForCurrentUser ( string _id , bool onlyActive )
{
Vehicles veh ;
List < Vehicles > vehList = new List < Vehicles > ( ) ;
string command = "SELECT DISTINCT veh.id,sub.imei,veh.lp,veh.name,em.di,veh.\"GPS_reporting_interval\",grp.name,veh.driver_id,veh.is_stolen,veh.gps_poor,veh.gps_off,veh.made_off"
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) "
+ " INNER JOIN subscriber as sub on (sh.sc_id = sub.sc_id) "
+ " LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id)"
+ " LEFT JOIN "
+ "( SELECT * FROM vehicle_group v_grp1 JOIN groups grp1 ON (grp1.id = v_grp1.grp_ip) WHERE grp1.type = " + ( int ) GroupType . CATEGORY . value + " )"
+ " as v_grp ON (v_grp.sc_id = sub.sc_id)"
+ " LEFT JOIN groups as grp ON (grp.id = v_grp.grp_ip)"
+ " INNER JOIN vehicle_user as vh on(vh.veh_id=veh.id)"
+ $" WHERE vh.user_id={_id} AND is_deleted = FALSE #allOrOnlyActive#"
+ " ORDER BY sub.imei" ;
if ( onlyActive )
command = command . Replace ( "#allOrOnlyActive#" , " AND active = TRUE " ) ;
else
command = command . Replace ( "#allOrOnlyActive#" , "" ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
while ( Reader . Read ( ) )
{
if ( Reader . IsDBNull ( 4 ) ) veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , 0 , Reader . GetInt32 ( 5 ) ,
( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 9 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) ) ;
else veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) ,
Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , Reader . GetInt32 ( 4 ) ,
Reader . GetInt32 ( 5 ) , ( Reader . IsDBNull ( 6 ) ) ? "" : Reader . GetString ( 6 ) ,
Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) , Reader . GetInt32 ( 9 ) , Reader . GetInt32 ( 10 ) , Reader . GetInt32 ( 11 ) ) ;
vehList . Add ( veh ) ;
}
}
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( ex . ToString ( ) , ConsoleColor . Red ) ;
}
vehList . Sort ( delegate ( Vehicles c1 , Vehicles c2 ) { return c1 . VehName . CompareTo ( c2 . VehName ) ; } ) ;
return vehList ;
}
//get all vehicles for current user ( active and inactive )
public List < Vehicles > getAllVehiclesForCurrentUser ( string _id )
{
return getAllVehiclesForCurrentUser ( _id , false ) ;
}
//get all vehicles that are not assigned to current user
public List < Vehicles > getAllOtherVehiclesForCurrentUser ( string _id )
{
List < Vehicles > vehList = new List < Vehicles > ( ) ;
string command = "SELECT DISTINCT veh.id,sub.imei,veh.lp,veh.name,em.DI,veh.\"GPS_reporting_interval\",veh.gps_poor,veh.gps_off,veh.made_off, veh.driver_id "
+ " FROM vehicle as veh "
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) "
+ " INNER JOIN subscriber as sub on (sh.sc_id = sub.sc_id) "
+ " LEFT JOIN emergdi as em on (sub.sc_id = em.sc_id) "
+ " LEFT JOIN vehicle_user as vh on(vh.veh_id = veh.id) "
+ " WHERE veh.id NOT IN (SELECT veh_id FROM vehicle_user WHERE user_id = " + _id + ") AND is_deleted = FALSE "
+ " ORDER BY sub.imei" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
Vehicles veh ;
while ( Reader . Read ( ) )
{
if ( Reader . IsDBNull ( 4 ) )
veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) , Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , 0 , Reader . GetInt32 ( 5 ) , "" , Reader . GetInt32 ( 9 ) , 0 , Reader . GetInt32 ( 6 ) , Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) ) ;
else
veh = new Vehicles ( Convert . ToInt32 ( Reader . GetValue ( 0 ) ) , Reader . GetValue ( 1 ) . ToString ( ) , Reader . GetValue ( 2 ) . ToString ( ) ,
Reader . GetValue ( 3 ) . ToString ( ) , "" , Reader . GetInt32 ( 4 ) , Reader . GetInt32 ( 5 ) , "" , Reader . GetInt32 ( 9 ) , 0 , Reader . GetInt32 ( 6 ) , Reader . GetInt32 ( 7 ) , Reader . GetInt32 ( 8 ) ) ;
vehList . Add ( veh ) ;
}
}
}
}
}
catch ( Exception ee )
{
SM . Debug ( command ) ;
Console . WriteLine ( $"getAllOtherVehiclesForCurrentUser : {ee.ToString()}" , ConsoleColor . Yellow ) ;
}
vehList . Sort ( delegate ( Vehicles c1 , Vehicles c2 ) { return c1 . VehName . CompareTo ( c2 . VehName ) ; } ) ;
return vehList ;
}
public class VehiclesIDComparer : IComparer
{
public VehiclesIDComparer ( ) : base ( ) { }
int IComparer . Compare ( object x , object y )
{
Vehicles X = x as Vehicles ;
Vehicles Y = y as Vehicles ;
return ( X . VehName . CompareTo ( Y . VehName ) > 0 ) ? 1 : - 1 ;
}
}
// add connection between user and vehicle
public vehResponse addVehicleUserConnection ( string vehId , string userId )
{
vehResponse resp = vehResponse . done ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = $"SELECT count(veh_id) FROM vehicle_user where veh_id='{vehId}' AND user_id ='{userId}'" ;
using ( NpgsqlCommand cmd2 = new NpgsqlCommand ( command , connection ) )
{
object result = cmd2 . ExecuteScalar ( ) ;
if ( result . ToString ( ) = = "0" )
{
command = $"INSERT INTO vehicle_user VALUES({vehId},{userId},{String.Format(" ' { 0 : yyyy - MM - dd } ' ", DateTime.UtcNow)})" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
cmd . ExecuteNonQuery ( ) ;
}
}
}
}
}
catch ( Exception ee )
{
Console . WriteLine ( $"{ee.Message} {ee.StackTrace} {ee.Source}" , ConsoleColor . Yellow ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
// add connection between user and vehicle
public vehResponse assignVehiclesToUser ( List < string > vehIds , string userId )
{
vehResponse resp = vehResponse . done ;
StringBuilder sb = new StringBuilder ( 1024 ) ;
try
{
sb . Append ( "INSERT INTO vehicle_user VALUES " ) ;
for ( int i = 0 ; i < vehIds . Count ; i + + )
{
String vehId = vehIds [ i ] ;
sb . Append ( $"({vehId},{userId},{String.Format(" ' { 0 : yyyy - MM - dd } ' ", DateTime.UtcNow)})" ) ;
if ( i < vehIds . Count - 1 )
sb . Append ( "," ) ;
}
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( sb . ToString ( ) , connection ) )
{
cmd . ExecuteNonQuery ( ) ;
}
}
}
catch ( Exception ee )
{
Console . WriteLine ( $"{ee.Message} {ee.StackTrace} {ee.Source} " ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
// remove connection between user and vehicle
public vehResponse removeVehiclesToUser ( List < string > vehIds , string userId )
{
vehResponse resp = vehResponse . done ;
StringBuilder sb = new StringBuilder ( 1024 ) ;
try
{
sb . Append ( "DELETE FROM vehicle_user WHERE " ) ;
for ( int i = 0 ; i < vehIds . Count ; i + + )
{
String vehId = vehIds [ i ] ;
sb . Append ( $" (veh_id ='{vehId}' AND user_id='{userId}') " ) ;
if ( i < vehIds . Count - 1 )
sb . Append ( " OR " ) ;
}
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( sb . ToString ( ) , connection ) )
{
cmd . ExecuteNonQuery ( ) ;
}
}
}
catch ( Exception ee )
{
Console . WriteLine ( $"{ee.Message} {ee.StackTrace} {ee.Source}" ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
//remove connection between user and vehicle
public vehResponse removeVehicleUserConnection ( string vehId , string userId )
{
vehResponse resp = vehResponse . done ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = $"DELETE FROM vehicle_user WHERE veh_id ='{vehId}' AND user_id ='{userId}'" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
cmd . ExecuteNonQuery ( ) ;
}
}
}
catch ( Exception ee )
{
Console . WriteLine ( $"{ee.Message} {ee.StackTrace} {ee.Source}" , ConsoleColor . Yellow ) ;
resp = vehResponse . SQLerror ;
}
return resp ;
}
public sqlResponse assignUnit2GW ( int radioID , int gwID , string r_gw_ip )
{
sqlResponse resp = sqlResponse . SQLerror ;
NpgsqlTransaction transaction = null ;
try
{
int scid = getSCID ( radioID . ToString ( ) ) ;
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
// open a transaction
transaction = connection . BeginTransaction ( ) ;
//get radioGW ID from it's IP
int r_gwID = - 1 ;
string command = $"SELECT \" ID \ " FROM radio_gw WHERE \"IP\"='{r_gw_ip}' AND \"GW_ID\" = {gwID}" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader Reader = cmd . ExecuteReader ( ) )
{
while ( Reader . Read ( ) )
{
r_gwID = Reader . GetInt32 ( 0 ) ;
}
}
}
if ( r_gwID = = - 1 )
{
resp = sqlResponse . SQLerror ;
SM . Debug ( "radio GW ip = " + r_gw_ip + " not found in DB.Please go in SUM and add this radioGW" ) ;
return resp ;
}
//delete previous entry
using ( NpgsqlCommand cmd = new NpgsqlCommand ( $"DELETE FROM subs_gateway where sc_id = {scid}" , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
//add new entry
string str_id_subs_gateway = string . Empty ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( "SELECT max(id) FROM subs_gateway " , connection ) )
{
str_id_subs_gateway = cmd . ExecuteScalar ( ) . ToString ( ) ;
}
int id_subs_gateway = 0 ;
int . TryParse ( str_id_subs_gateway , out id_subs_gateway ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( $"INSERT INTO subs_gateway (id, sc_id, gateway_id, radio_gw_id) VALUES( {id_subs_gateway + 1},{scid},{(gwID < 0 ? " null " : gwID.ToString())}, {(r_gwID < 0 ? " null " : r_gwID.ToString()) })" , connection , transaction ) )
{
cmd . ExecuteNonQuery ( ) ;
}
transaction . Commit ( ) ;
resp = sqlResponse . done ;
}
}
catch ( Exception o )
{
transaction ? . Rollback ( ) ;
Console . WriteLine ( o . Message . ToString ( ) ) ;
throw new ArgumentException ( o . Message . ToString ( ) ) ;
}
return resp ;
}
/// <summary>
/// gets the radio position in system (gateway ID, radio dateway ID)
/// </summary>
/// <param name="sc_id">unit sc_id</param>
/// <returns>returns null if incorect sc_id</returns>
public UnitSysPosition getSystemPosition ( int sc_id )
{
UnitSysPosition pos = new UnitSysPosition ( 0 , 0 ) ;
try
{
using ( NpgsqlConnection conn = new NpgsqlConnection ( getConnectionString ( ) ) )
{
conn . Open ( ) ;
string command = $"SELECT coalesce(gateway_id, -1) as gateway_id, coalesce(radio_gw_id, -1) radio_gw_id FROM subs_gateway WHERE sc_id = {sc_id}" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , conn ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
int gateway_id = Convert . ToInt32 ( reader [ "gateway_id" ] ) ;
int radio_gw_id = Convert . ToInt32 ( reader [ "radio_gw_id" ] ) ;
pos = new UnitSysPosition ( gateway_id , radio_gw_id ) ;
}
reader . Close ( ) ;
}
}
conn . Close ( ) ;
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "getSystemPosition " + ex . ToString ( ) , ConsoleColor . Red ) ;
}
return pos ;
}
/// <summary>
/// gets the radio position in system (gateway ID, radio dateway ID)
/// </summary>
/// <param name="sc_id">unit sc_id</param>
/// <returns>returns null if incorect sc_id</returns>
public UnitSysPosition getSystemPositionIMEI ( String IMEI )
{
UnitSysPosition pos = null ;
try
{
using ( NpgsqlConnection conn = new NpgsqlConnection ( getConnectionString ( ) ) )
{
conn . Open ( ) ;
string command = "SELECT distinct coalesce(sg.gateway_id, -1) as gateway_id, coalesce(sg.radio_gw_id, -1) as radio_gw_id "
+ " FROM subs_gateway sg "
+ " INNER JOIN subscriber sb ON sb.sc_id = sg.sc_id "
+ $" WHERE sb.imei ='{IMEI}'" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , conn ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
int gateway_id = Convert . ToInt32 ( reader [ "gateway_id" ] ) ;
int radio_gw_id = Convert . ToInt32 ( reader [ "radio_gw_id" ] ) ;
pos = new UnitSysPosition ( gateway_id , radio_gw_id ) ;
}
reader . Close ( ) ;
}
}
conn . Close ( ) ;
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "getSystemPositionIMEI " + ex . ToString ( ) , ConsoleColor . Red ) ;
}
return pos ;
}
/// <summary>
/// gets the radio position in system (gateway ID, radio dateway ID)
/// </summary>
/// <param name="sc_id">unit sc_id</param>
/// <returns>returns null if incorect sc_id</returns>
public Hashtable getSystemPosition_for_all_scid ( )
{
Hashtable ret = new Hashtable ( ) ;
string command = "SELECT coalesce(gateway_id, -1) as gateway_id, coalesce(radio_gw_id, -1) as radio_gw_id, sc_id FROM subs_gateway" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
long sc_id = Convert . ToInt64 ( reader [ "sc_id" ] ) ;
int gateway_id = Convert . ToInt32 ( reader [ "gateway_id" ] ) ;
int radio_gw_id = Convert . ToInt32 ( reader [ "radio_gw_id" ] ) ;
ret . Add ( sc_id , new UnitSysPosition ( gateway_id , radio_gw_id ) ) ;
}
reader . Close ( ) ;
}
}
connection . Close ( ) ;
}
}
catch ( Exception ee )
{
SM . Debug ( command ) ;
Console . WriteLine ( $"getSystemPosition_for_all_scid: {ee.ToString()}" , ConsoleColor . Yellow ) ;
}
return ret ;
}
public UnitSysPosition getSystemPosition_for_group ( string cps_id )
{
UnitSysPosition pos = null ;
//string command = "SELECT DISTINCT coalesce(sub.gateway_id, -1) as gateway_id, coalesce(sub.radio_gw_id, -1) as radio_gw_id "
// + " FROM groups as grp "
// + " INNER JOIN vehicle_group as vgrp ON (grp.id=vgrp.grp_ip) "
// + "INNER JOIN subs_gateway as sub ON (vgrp.sc_id = sub.sc_id) "
// + " WHERE grp.cps_id=" + cps_id.ToString();
string command = "SELECT DISTINCT coalesce(sub.\"GW_ID\", -1) as gateway_id, coalesce(grp.r_gw_id, -1) as radio_gw_id " +
" FROM groups as grp " +
" INNER JOIN radio_gw as sub ON(grp.r_gw_id = sub.\"ID\") " +
$" WHERE grp.cps_id = {cps_id}" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
int gateway_id = Convert . ToInt32 ( reader [ "gateway_id" ] ) ;
int radio_gw_id = Convert . ToInt32 ( reader [ "radio_gw_id" ] ) ;
pos = new UnitSysPosition ( gateway_id , radio_gw_id ) ;
if ( ( gateway_id > 0 ) & & ( radio_gw_id > 0 ) ) break ;
}
reader . Close ( ) ;
}
}
connection . Close ( ) ;
}
}
catch ( Exception ee )
{
SM . Debug ( command ) ;
Console . WriteLine ( $"getSystemPosition_for_group : {ee.ToString()}" , ConsoleColor . Yellow ) ;
}
return pos ;
}
public ArrayList get_all_car_picture ( )
{
ArrayList ret = new ArrayList ( ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = "SELECT name, id, pattern, displayed_name from car ORDER by name" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
Car obj = new Car ( ) ;
obj . Name = reader [ "name" ] . ToString ( ) ;
obj . idx = Convert . ToInt32 ( reader [ "id" ] ) ;
obj . iconPattern = reader [ "pattern" ] . ToString ( ) ;
obj . DisplayedName = reader [ "displayed_name" ] . ToString ( ) ;
ret . Add ( obj ) ;
}
}
}
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"get_all_car_picture : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return ret ;
}
/// <summary>
/// set the unit stolon status(0-ok, 1- stolen)
/// </summary>
/// <param name="radioID">remote radio id</param>
/// <param name="status">0-ok, 1- stolen</param>
/// <returns></returns>
public sqlResponse setStolenStatus ( string radioID , int status )
{
NpgsqlCommand cmd ;
sqlResponse resp = sqlResponse . SQLerror ;
try
{
int scid = getSCID ( radioID . ToString ( ) ) ;
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
cmd = new NpgsqlCommand ( "SELECT veh_id FROM subscriber_history WHERE sc_id=\'" + scid + "\'" , connection ) ;
object tmp_veh_id = cmd . ExecuteScalar ( ) ;
if ( tmp_veh_id ! = null )
{
cmd = new NpgsqlCommand ( "UPDATE vehicle SET is_stolen=" + status + " WHERE id=" + tmp_veh_id , connection ) ;
cmd . ExecuteNonQuery ( ) ;
resp = sqlResponse . done ;
}
}
}
catch ( Exception o )
{
Console . WriteLine ( o . Message . ToString ( ) ) ;
throw new ArgumentException ( o . Message . ToString ( ) ) ;
}
return resp ;
}
public Int32 getActiveVehiclesCount ( int totalUnits , bool isSierraWireless , out int totaldbunits )
{
totaldbunits = 0 ;
if ( totalUnits = = 0 )
return totalUnits ;
Int32 result = 0 ;
NpgsqlCommand cmd ;
try
{
string selectClause = isSierraWireless ?
"SELECT COUNT(id) FROM vehicle v " +
"JOIN subscriber s ON s.sc_id = v.id WHERE active = true " +
"AND length(imei) <= 7" :
"SELECT COUNT(id) FROM vehicle WHERE active = true" ;
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
cmd = new NpgsqlCommand ( selectClause , connection ) ;
int . TryParse ( cmd . ExecuteScalar ( ) . ToString ( ) , out result ) ;
if ( result > totalUnits )
{
//BRAINFUCK
string updateClause = isSierraWireless ?
$"UPDATE vehicle SET active = false WHERE id NOT IN ((SELECT id from vehicle v join subscriber s ON s.sc_id = v.id WHERE active = true and length(imei) <= 7 order by id limit {totalUnits}) UNION SELECT id FROM vehicle v join subscriber s ON s.sc_id = v.id WHERE active = true AND length(imei) > 7 )" :
$"UPDATE vehicle SET active = false WHERE id NOT IN (SELECT id from vehicle where active = true order by id limit {totalUnits} )" ;
cmd = new NpgsqlCommand ( updateClause , connection ) ;
cmd . ExecuteNonQuery ( ) ;
result = totalUnits ;
}
cmd = new NpgsqlCommand ( "SELECT COUNT(id) FROM vehicle v WHERE is_deleted = FALSE" , connection ) ;
int . TryParse ( cmd . ExecuteScalar ( ) . ToString ( ) , out totaldbunits ) ;
connection . Close ( ) ;
}
}
catch ( Exception o )
{
Console . WriteLine ( o . Message . ToString ( ) ) ;
throw new ArgumentException ( o . Message . ToString ( ) ) ;
}
return result ;
}
/// Get all the units that are marked as ON in lastpos_ars table
/// Time is GMT format
/// </summary>
/// <returns>ARSstatus</returns>
public List < ARSstatus > Get_ARS_ON_info_GMT ( )
{
List < ARSstatus > ret = new List < ARSstatus > ( ) ;
string command = "SELECT ars.imei,ars.timegmt,ars.status,veh.ars_interval " +
" FROM lastpos_ars as ars" +
" INNER JOIN subscriber as sub ON (ars.imei = sub.imei)" +
" INNER JOIN subscriber_history as sh ON (sub.sc_id = sh.sc_id)" +
" INNER JOIN vehicle as veh ON (veh.id = sh.veh_id)" +
" WHERE ars.status = 1" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
ARSstatus obj = new ARSstatus ( ) ;
obj . Imei = reader [ "imei" ] . ToString ( ) ;
DateTime dt = new DateTime ( 1970 , 1 , 1 , 0 , 0 , 0 , 0 ) ;
obj . Timegmt = dt . AddSeconds ( Convert . ToDouble ( reader [ "timegmt" ] ) ) ;
obj . Status = Convert . ToInt32 ( reader [ "status" ] ) ;
obj . ArsInterval = Convert . ToInt32 ( reader [ "ars_interval" ] ) ;
ret . Add ( obj ) ;
}
reader . Close ( ) ;
}
}
connection . Close ( ) ;
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"Get_ARS_ON_info_GMT : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return ret ;
}
public List < UnitGpsPos > GetLastPos ( )
{
List < UnitGpsPos > lastPosList = new List < UnitGpsPos > ( ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = "SELECT imei, lat, lng, speed, status, timegmt, address FROM lastpos" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
UnitGpsPos lp = new UnitGpsPos ( ) ;
lp . IMEI = reader [ "imei" ] . ToString ( ) ;
lp . lat = Convert . ToDouble ( reader [ "lat" ] ) . ToString ( ) ;
lp . lng = Convert . ToDouble ( reader [ "lng" ] ) . ToString ( ) ;
lp . speed = Convert . ToInt32 ( reader [ "speed" ] ) ;
lp . status = Convert . ToInt32 ( reader [ "status" ] ) ;
lp . timeGMT = Convert . ToInt32 ( reader [ "timegmt" ] ) ;
lp . adr = reader [ "address" ] . ToString ( ) ;
lastPosList . Add ( lp ) ;
}
reader . Close ( ) ;
}
}
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"GetLastPos : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return lastPosList ;
}
public Dictionary < String , PositionData > getImeiLastPosDictionary ( bool activeUnits )
{
Dictionary < String , PositionData > result = new Dictionary < string , PositionData > ( ) ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
string command = "SELECT veh.id, sub.imei, veh.lp, veh.name, veh.\"GPS_reporting_interval\" as rep,veh.driver_id, lp.imei, lp.lat, lp.lng, lp.speed, lp.status, lp.timegmt "
+ " FROM vehicle as veh"
+ " INNER JOIN subscriber_history as sh ON (veh.id = sh.veh_id) INNER JOIN subscriber as sub "
+ " ON (sh.sc_id = sub.sc_id) "
+ " INNER JOIN lastpos lp on lp.imei = sub.imei"
+ ( activeUnits ? " WHERE veh.active = true" : " " )
+ " ORDER BY lp.imei::int; " ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader dr = cmd . ExecuteReader ( ) )
{
while ( dr . Read ( ) )
{
// read last position value and reporting interval
PositionData pos = new PositionData ( )
{
Lat = dr . GetDouble ( dr . GetOrdinal ( "lat" ) ) ,
Lng = dr . GetDouble ( dr . GetOrdinal ( "lng" ) ) ,
Speed = dr . GetInt32 ( dr . GetOrdinal ( "speed" ) ) ,
TimeGMT = dr . GetInt32 ( dr . GetOrdinal ( "timegmt" ) ) ,
ReportingInterval = dr . GetInt32 ( dr . GetOrdinal ( "rep" ) ) ,
} ;
string imei = dr . GetString ( dr . GetOrdinal ( "imei" ) ) ;
// add imei and position only if not exists
if ( ! result . ContainsKey ( imei ) )
result . Add ( imei , pos ) ;
}
dr . Close ( ) ;
}
}
connection . Close ( ) ;
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"getImeiLastPosDictionary : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return result ;
}
public List < UnitGpsPos > GetLastPosUserID ( Int32 userID )
{
List < UnitGpsPos > lastPosList = new List < UnitGpsPos > ( ) ;
string command = "SELECT l.imei, l.lat, l.lng, l.speed, l.status, l.timegmt, l.address " +
"FROM lastpos l " +
"INNER JOIN subscriber as s ON (l.imei = s.imei) " +
"INNER JOIN subscriber_history as h ON (h.sc_id = s.sc_id) " +
"INNER JOIN vehicle as v on (v.id = h.veh_id) " +
"INNER JOIN vehicle_user as u on (u.veh_id = v.id) " +
$"WHERE u.user_id = {userID}" ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( command , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
UnitGpsPos lp = new UnitGpsPos ( ) ;
lp . IMEI = reader [ "imei" ] . ToString ( ) ;
lp . lat = Convert . ToDouble ( reader [ "lat" ] ) . ToString ( ) ;
lp . lng = Convert . ToDouble ( reader [ "lng" ] ) . ToString ( ) ;
lp . speed = Convert . ToInt32 ( reader [ "speed" ] ) ;
lp . status = Convert . ToInt32 ( reader [ "status" ] ) ;
lp . timeGMT = Convert . ToInt32 ( reader [ "timegmt" ] ) ;
lp . adr = reader [ "address" ] . ToString ( ) ;
lastPosList . Add ( lp ) ;
}
reader . Close ( ) ;
}
}
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"GetLastPosUserID : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return lastPosList ;
}
public Boolean isUnitDeleted ( string id )
{
object temp = null ;
bool isDeleted ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
String query = $"SELECT is_deleted FROM vehicle where id = {id}" ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( query , connection ) )
{
temp = cmd . ExecuteScalar ( ) ;
}
}
}
catch ( Exception ex )
{
Utils . WriteLine ( "isUnitDeleted: " + ex . ToString ( ) , ConsoleColor . Red ) ;
}
if ( temp is bool )
return isDeleted = ( bool ) temp ;
else
return true ;
}
public List < UnitGpsPos > GET_HistoryPositions ( int sc_id , Int32 p_start , Int32 p_stop )
{
List < UnitGpsPos > ret = new List < UnitGpsPos > ( ) ;
Double Stop = 0 , Start = 0 ;
if ( ( p_start = = 0 ) & & ( p_stop = = 0 ) ) p_stop = 2100000000 ;
Start = sc_id * 10000000000 + p_start ;
Stop = sc_id * 10000000000 + p_stop ;
try
{
using ( NpgsqlConnection connection = new NpgsqlConnection ( ) )
{
connection . ConnectionString = getConnectionString ( ) ;
connection . Open ( ) ;
String query = String . Format ( $"SELECT lat, lng, speed, timeGMT, address FROM messages WHERE scevtime>{Start} AND scevtime<{Stop} ORDER BY timeGMT" ) ;
using ( NpgsqlCommand cmd = new NpgsqlCommand ( query , connection ) )
{
using ( NpgsqlDataReader reader = cmd . ExecuteReader ( ) )
{
while ( reader . Read ( ) )
{
UnitGpsPos pos = new UnitGpsPos ( ) ;
pos . IMEI = "NA" ;
pos . lat = Convert . ToDouble ( reader [ "lat" ] ) . ToString ( ) ;
pos . lng = Convert . ToDouble ( reader [ "lng" ] ) . ToString ( ) ;
pos . speed = Convert . ToInt32 ( reader [ "speed" ] ) ;
pos . timeGMT = Convert . ToInt32 ( reader [ "timeGMT" ] ) ;
pos . adr = reader . IsDBNull ( 4 ) ? " " : reader [ "address" ] . ToString ( ) ;
ret . Add ( pos ) ;
}
reader . Close ( ) ;
}
}
}
}
catch ( Exception ex )
{
Console . WriteLine ( $"GET_HistoryPositions : {ex.ToString()}" , ConsoleColor . Yellow ) ;
}
return ret ;
}
}
public enum vehResponse
{
done ,
alreadyInDB ,
SQLerror ,
vehNontInDB
}
public class ContactLinx
{
private int id ;
/// <summary>
/// Radio ID for radio, user id for dispatcher, etc.
/// </summary>
public int Id
{
get { return id ; }
set { id = value ; }
}
private int sipid ;
public int SipId
{
get { return sipid ; }
set { sipid = value ; }
}
private string ip ;
public string IP
{
get { return ip ; }
set { ip = value ; }
}
private string sippwd ;
public string Sippwd
{
get { return sippwd ; }
set { sippwd = value ; }
}
private int imageID ;
public int ImageID
{
get { return imageID ; }
set { imageID = value ; }
}
private string name ;
/// <summary>
/// Friendly name of radio unit, sipid or....
/// </summary>
public string Name
{
get { return name ; }
set { name = value ; }
}
private ContactType type ;
public ContactType Type
{
get { return type ; }
set { type = value ; }
}
private int intType ;
public int IntType
{
get { return intType ; }
set { intType = value ; }
}
private int dispatcherBackup ;
public int DispatcherBackup
{
get { return dispatcherBackup ; }
set { dispatcherBackup = value ; }
}
private string gWandRadioGW ;
/// <summary>
/// GwId + "." + RadioGwID sau "-1.-1"
/// </summary>
public string GWandRadioGW
{
get { return gWandRadioGW ; }
set { gWandRadioGW = value ; }
}
private GatewayType gw_type ;
public GatewayType GWtype
{
get { return gw_type ; }
set { gw_type = value ; }
}
}
public class MobileVehicles
{
private int id ;
public int Id
{
get { return id ; }
set { id = value ; }
}
private string sipLogin ;
public string SipLogin
{
get { return sipLogin ; }
set { sipLogin = value ; }
}
private string unitName ;
public string UnitName
{
get { return unitName ; }
set { unitName = value ; }
}
private string imei ;
public string IMEI
{
get { return imei ; }
set { imei = value ; }
}
private string firstName ;
public string FirstName
{
get { return firstName ; }
set { firstName = value ; }
}
private string lastName ;
public string LastName
{
get { return lastName ; }
set { lastName = value ; }
}
private string company ;
public string Company
{
get { return company ; }
set { company = value ; }
}
private string os ;
public string OS
{
get { return os ; }
set { os = value ; }
}
private string phoneType ;
public string PhoneType
{
get { return phoneType ; }
set { phoneType = value ; }
}
private string sipPswd ;
public string SipPswd
{
get { return sipPswd ; }
set { sipPswd = value ; }
}
private string email ;
public string Email
{
get { return email ; }
set { email = value ; }
}
private bool canUpdate ;
public bool CanUpdate
{
get { return canUpdate ; }
set { canUpdate = value ; }
}
private bool has_gps ;
public bool HasGPS
{
get { return has_gps ; }
set { has_gps = value ; }
}
private bool has_voice ;
public bool HasVoice
{
get { return has_voice ; }
set { has_voice = value ; }
}
private bool has_text ;
public bool HasText
{
get { return has_text ; }
set { has_text = value ; }
}
private bool has_ticketing ;
public bool HasTicketing
{
get { return has_ticketing ; }
set { has_ticketing = value ; }
}
private bool is_lone_worker ;
public bool IsLoneWorker
{
get { return is_lone_worker ; }
set { is_lone_worker = value ; }
}
private int lone_worker_interval ;
public int LoneWorkerInterval
{
get { return lone_worker_interval ; }
set { lone_worker_interval = value ; }
}
private bool has_man_down ;
public bool HasManDown
{
get { return has_man_down ; }
set { has_man_down = value ; }
}
private bool has_emergency ;
public bool HasEmergency
{
get { return has_emergency ; }
set { has_emergency = value ; }
}
public MobileVehicles ( )
{
lone_worker_interval = 1 ;
}
public Dictionary < string , bool > ToggleStateDictionary ;
public bool AddToHashTableThreeState ( string key , bool IsIndeterminate )
{
bool ret = false ;
if ( ! ToggleStateDictionary . ContainsKey ( key ) )
{
ToggleStateDictionary . Add ( key , IsIndeterminate ) ;
ret = true ;
}
return ret ;
}
}
public class Vehicles
{
private int id ;
public int Id
{
get { return id ; }
set { id = value ; }
}
private int di ;
public int Di
{
get { return di ; }
set { di = value ; }
}
private Int64 intImei ;
public Int64 IntImei
{
get { return intImei ; }
set { intImei = value ; }
}
private string imei ;
public string Imei
{
get { return imei ; }
set { imei = value ; }
}
private string serialNumber ;
public string SerialNumber
{
get { return serialNumber ; }
set { serialNumber = value ; }
}
private string vehName ;
public string VehName
{
get { return vehName ; }
set { vehName = value ; }
}
private string userName ;
public string UserName
{
get { return userName ; }
set { userName = value ; }
}
private string phone ;
public string Phone
{
get { return phone ; }
set { phone = value ; }
}
private string email ;
public string Email
{
get { return email ; }
set { email = value ; }
}
private int gpsInterval ;
public int GpsInterval
{
get { return gpsInterval ; }
set { gpsInterval = value ; }
}
private int arsInterval ;
public int ArsInterval
{
get { return arsInterval ; }
set { arsInterval = value ; }
}
private string groupName ;
public string GroupName
{
get { return groupName ; }
set { groupName = value ; }
}
private int isStolen ;
public int IsStolen
{
get { return isStolen ; }
set { isStolen = value ; }
}
private int imgID ;
public int ImgID
{
get { return imgID ; }
set { imgID = value ; }
}
private int enableStatus ;
public int EnableStatus
{
get { return enableStatus ; }
set { enableStatus = value ; }
}
private int sc_id ;
public int Sc_id
{
get { return sc_id ; }
set { sc_id = value ; }
}
private int gps_poor ;
public int Gps_poor
{
get { return gps_poor ; }
set { gps_poor = value ; }
}
private int gps_off ;
public int Gps_off
{
get { return gps_off ; }
set { gps_off = value ; }
}
private int made_off ;
public int Made_off
{
get { return made_off ; }
set { made_off = value ; }
}
private int gw_id ;
public int Gw_id
{
get { return gw_id ; }
set { gw_id = value ; }
}
private int radio_gw_id ;
public int Radio_gw_id
{
get { return radio_gw_id ; }
set { radio_gw_id = value ; }
}
private int type ;
public int Type
{
get { return type ; }
set { type = value ; }
}
private bool active ;
public bool Active
{
get { return active ; }
set { active = value ; }
}
public Vehicles ( int id , string imei , string serialNumber , string name , string user , int DI , int gpsInterval , string groupName , int imgID , int _isStolen , int gps_poor , int gps_off , int made_off , int _arsInterval = 0 )
{
this . id = id ;
this . imei = imei ;
this . serialNumber = serialNumber ;
this . vehName = name ;
this . userName = user ;
this . di = DI ;
this . gpsInterval = gpsInterval ;
this . groupName = groupName ;
this . imgID = imgID ;
this . isStolen = _isStolen ;
this . arsInterval = _arsInterval ;
this . gps_poor = gps_poor ;
this . gps_off = gps_off ;
this . made_off = made_off ;
this . sc_id = 0 ;
}
public Vehicles ( int id , string imei , string serialNumber , string name , string user , int DI , int gpsInterval , string groupName , int imgID , int _isStolen , int _sc_id , int gps_poor , int gps_off , int made_off , int _arsInterval = 0 )
{
this . id = id ;
this . imei = imei ;
this . serialNumber = serialNumber ;
this . vehName = name ;
this . userName = user ;
this . di = DI ;
this . gpsInterval = gpsInterval ;
this . groupName = groupName ;
this . imgID = imgID ;
this . isStolen = _isStolen ;
this . arsInterval = _arsInterval ;
this . gps_poor = gps_poor ;
this . gps_off = gps_off ;
this . made_off = made_off ;
this . sc_id = _sc_id ;
}
public Vehicles ( )
{
// TODO: Complete member initialization
}
}
public class VehicleNameComparer : IComparer
{
public VehicleNameComparer ( ) : base ( ) { }
int IComparer . Compare ( object x , object y )
{
Vehicles X = x as Vehicles ;
Vehicles Y = y as Vehicles ;
return String . Compare ( X . VehName , Y . VehName ) ;
}
}
public class UnitSysPosition
{
private int gw_id ;
public int Gw_id
{
get { return gw_id ; }
set { gw_id = value ; }
}
private int r_gw_id ;
public int R_gw_id
{
get { return r_gw_id ; }
set { r_gw_id = value ; }
}
public UnitSysPosition ( int gwid , int rgwid )
{
gw_id = gwid ;
r_gw_id = rgwid ;
}
}
public class Car
{
private string name ;
public string Name
{
get { return name ; }
set { name = value ; }
}
public string fileName ;
public string desc ;
public Int32 idx ;
public string listFilePath ;
public string iconPattern ;
private string displayedName ;
public string DisplayedName
{
get { return displayedName ; }
set { displayedName = value ; }
}
}
public class SUID_AND_IMEI
{
private int sc_id ;
public int Sc_id
{
get { return sc_id ; }
set { sc_id = value ; }
}
private string imei ;
public string Imei
{
get { return imei ; }
set { imei = value ; }
}
public SUID_AND_IMEI ( int scid , string imei )
{
this . sc_id = scid ;
this . imei = imei ;
}
}
public class Scid_and_Status
{
private int sc_id ;
public int Sc_id
{
get { return sc_id ; }
set { sc_id = value ; }
}
private int status ;
public int Status
{
get { return status ; }
set { status = value ; }
}
public Scid_and_Status ( int scid , int status )
{
this . sc_id = scid ;
this . status = status ;
}
}
public class ARSstatus
{
private int status ;
public int Status
{
get { return status ; }
set { status = value ; }
}
private string imei ;
public string Imei
{
get { return imei ; }
set { imei = value ; }
}
private DateTime timegmt ;
public DateTime Timegmt
{
get { return timegmt ; }
set { timegmt = value ; }
}
private int arsInterval ; //seconds
public int ArsInterval
{
get { return arsInterval ; }
set { arsInterval = value ; }
}
}
public class UnitGpsPos
{
public string IMEI ;
public string lat ;
public string lng ;
public int speed ;
public int status ;
public int timeGMT ;
public string adr ;
public UnitGpsPos ( )
{
}
}
}