namespace VECV_WebApi.Models.Tracking { #region Namespaces using DBHelper; using LoggingHelper; using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Web; using VECV_WebApi.Models.Authorization; using VECV_WebApi.Models.ServiceEngineer; #endregion #region Repository Class /// /// This class contain methods releted to tracking /// public class TrackingRepository { #region Global Variables /// /// making object of LoggingUtility class available to this class /// LoggingUtility objLog = new LoggingUtility(); /// /// making the data-log file path available to this class /// string path = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["PathLog"]); /// /// making error log file path available to this class /// string errorlogtf = (ConfigurationManager.AppSettings["ErrorLog"]); /// /// making the Database connection string available to this class /// private string _connStr; /// /// making TrackingStatus model object available to this class /// TrackingStatus objTrackingStatus; /// /// making Authentication Repository object available to this class /// AuthenticationRepository objAuthorization; #endregion #region Contructors /// /// Default constructor intialize connection string of tracking database /// public TrackingRepository(string connString) { this._connStr = connString; } #endregion #region API Methods /// /// To get tracking detail of particular device /// /// device info /// status and tracking detail of particular device public List GetCurrentTrackingDetailDeviceAliaseWise(TrackingGetModel model) { List listTracking = new List(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[1]; nSqlParam[0] = new NpgsqlParameter("indevicealias ", model.DeviceAlias); // get all device current log. if (model.DeviceAlias == null) { ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_all_device"]); } // get a device current log. else { ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_device_wise"], nSqlParam); } if (ds.Tables[0].Rows.Count > 0) { listTracking = ds.Tables[0].AsEnumerable().Select(s => new TrackingModel { LogId = s.Field("_log_id"), DeviceAlias = s.Field("_device_alias"), Latitude = s.Field("_latitude"), Longitude = s.Field("_longitude"), LogTime = s.Field("_log_time") != null ? Convert.ToDateTime(s.Field("_log_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_log_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), Xcordinate = s.Field("_x_coordinate"), Ycordinate = s.Field("_y_coordinate"), Zcordinate = s.Field("_z_coordinate"), CreationTime = s.Field("_creation_time") != null ? Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_creation_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) }).ToList(); } } else { TrackingModel objModel = new TrackingModel(); objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); listTracking.Add(objModel); } return listTracking; } catch (Exception Ex) { TrackingModel objModel = new TrackingModel(); objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString(); listTracking.Add(objModel); objLog.ErrorLogFile("GetCurrentTrackingDetailDeviceAliaseWise", Ex.Message, path, errorlogtf); return listTracking; } } /// /// To get tracking detail of particular device(log history) /// /// device info /// Status and tracking detail of particular device(log history) public List GetTrackingDetailDeviceAliasWise(TrackingGetModel model) { List listTracking = new List(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { if (model.ToDate == "") { } else { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[3]; nSqlParam[0] = new NpgsqlParameter("indevicealias ", model.DeviceAlias.ToString()); nSqlParam[1] = new NpgsqlParameter("instartdate ", Convert.ToDateTime(model.FromDate).AddMinutes(-model.UtcMinute)); nSqlParam[2] = new NpgsqlParameter("inenddate ", Convert.ToDateTime(model.ToDate).AddMinutes(-model.UtcMinute)); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_log_history"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { listTracking = ds.Tables[0].AsEnumerable().Select(s => new TrackingModel { LogId = s.Field("_log_id"), DeviceAlias = s.Field("_device_alias"), Latitude = s.Field("_latitude"), Longitude = s.Field("_longitude"), LogTime = s.Field("_log_time") != null ? Convert.ToDateTime(s.Field("_log_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_log_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), Xcordinate = s.Field("_x_coordinate"), Ycordinate = s.Field("_y_coordinate"), Zcordinate = s.Field("_z_coordinate") // CreationTime = s.Field("_creation_time") != null ? Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_creation_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) }).ToList(); } } } else { TrackingModel objModel = new TrackingModel(); objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); listTracking.Add(objModel); } return listTracking; } catch (Exception Ex) { TrackingModel objModel = new TrackingModel(); objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString(); listTracking.Add(objModel); // write error log. objLog.ErrorLogFile("GetTrackingDetailDeviceAliasWise", Ex.Message, path, errorlogtf); return listTracking; } } /// /// To insert tracking detail of particular device /// /// tracking detail of particular device /// contain status 0 or 1 public TrackingStatus InsertTrackingDetail(TrackingModel model) { try { objTrackingStatus = new TrackingStatus(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { //string newLogTime = Convert.ToDateTime(model.LogTime, System.Globalization.CultureInfo.GetCultureInfo("en-IN")).ToString("MM/dd/yyyy hh:MM:ss"); //commented condition on (08-12-2020) NpgsqlParameter[] nSqlParam = new NpgsqlParameter[11]; nSqlParam[0] = new NpgsqlParameter("indevicealias ", model.DeviceAlias.ToString()); nSqlParam[1] = new NpgsqlParameter("inlatitude", model.Latitude); nSqlParam[2] = new NpgsqlParameter("inlongitude ", model.Longitude); nSqlParam[3] = new NpgsqlParameter("inlogtime ", model.LogTime); //uncommented original condition on (08-12-2020) //nSqlParam[3] = new NpgsqlParameter("inlogtime ", (newLogTime)); //commented condition on (08-12-2020) nSqlParam[4] = new NpgsqlParameter("inX_coordinate", model.Xcordinate); nSqlParam[5] = new NpgsqlParameter("inY_coordinate", model.Ycordinate); nSqlParam[6] = new NpgsqlParameter("inZ_coordinate", model.Zcordinate); nSqlParam[7] = new NpgsqlParameter("inbattery_status", model.BatteryStatus); nSqlParam[8] = new NpgsqlParameter("ingps_status", model.GpsStatus); nSqlParam[9] = new NpgsqlParameter("inis_charging", model.IsCharging); nSqlParam[10] = new NpgsqlParameter("inis_power_saving", model.IsPowerSaving); NpgSqlHelper.ExecuteNonQuery(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_insert_update_log"], nSqlParam); objTrackingStatus.status = 1; } else { objTrackingStatus.status = 0; objTrackingStatus.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objTrackingStatus; } catch (Exception Ex) { TrackingStatus objTrackingStatus = new TrackingStatus(); objTrackingStatus.status = 0; objTrackingStatus.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString(); objLog.ErrorLogFile("InsertTrackingDetail", Ex.Message, path, errorlogtf); return objTrackingStatus; } } /// /// To insert bulk tracking details /// /// bulk tracking details /// contain status o or 1 public TrackingStatus InsertBulkTrackingDetail(TrackingModel model) { try { objTrackingStatus = new TrackingStatus(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataTable dt = new DataTable(); dt.Columns.Add("DeviceAlias"); dt.Columns.Add("Latitude"); dt.Columns.Add("Longitude"); dt.Columns.Add("LogTime", typeof(DateTime)); dt.Columns.Add("Xcordinate"); dt.Columns.Add("Ycordinate"); dt.Columns.Add("Zcordinate"); dt.Columns.Add("BatteryStatus"); dt.Columns.Add("GpsStatus"); dt.Columns.Add("IsCharging"); dt.Columns.Add("IsPowerSaving"); for (int i = 0; i < model.BulkTrackngDetail.Count; i++) { string[] arr = model.BulkTrackngDetail[i].Split(','); dt.Rows.Add(arr[0].ToString(), arr[1].ToString(), arr[2].ToString(), arr[3].ToString(), Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Cos(Convert.ToDouble(arr[1].ToString())) * Math.Cos(Convert.ToDouble(arr[2].ToString()))), Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Cos(Convert.ToDouble(arr[1].ToString())) * Math.Sin(Convert.ToDouble(arr[2].ToString()))), Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Sin(Convert.ToDouble(arr[1].ToString()))), arr[4].ToString(), arr[5].ToString(), arr[6].ToString(), arr[7].ToString() ); } string insertQuery = "Insert Into vecv_log.log_history (device_alias,latitude,longitude,log_time,x_coordinate,y_coordinate,z_coordinate,battery_status,gps_status,is_charging,is_power_saving) " + "values"; string insertValue = ""; for (int i = 0; i < dt.Rows.Count; i++) { if (i == dt.Rows.Count - 1) { insertValue = "('" + dt.Rows[i]["DeviceAlias"].ToString() + "','" + dt.Rows[i]["Latitude"].ToString() + "','" + dt.Rows[i]["Longitude"].ToString() + "','" + dt.Rows[i]["LogTime"].ToString() + "','" + dt.Rows[i]["Xcordinate"].ToString() + "','" + dt.Rows[i]["Ycordinate"].ToString() + "','" + dt.Rows[i]["Zcordinate"].ToString() + "','" + dt.Rows[i]["BatteryStatus"].ToString() + "','" + dt.Rows[i]["GpsStatus"].ToString() + "','" + dt.Rows[i]["IsCharging"].ToString() + "','" + dt.Rows[i]["IsPowerSaving"].ToString() + "')"; } else { insertValue = "('" + dt.Rows[i]["DeviceAlias"].ToString() + "','" + dt.Rows[i]["Latitude"].ToString() + "','" + dt.Rows[i]["Longitude"].ToString() + "','" + dt.Rows[i]["LogTime"].ToString() + "','" + dt.Rows[i]["Xcordinate"].ToString() + "','" + dt.Rows[i]["Ycordinate"].ToString() + "','" + dt.Rows[i]["Zcordinate"].ToString() + "','" + dt.Rows[i]["BatteryStatus"].ToString() + "','" + dt.Rows[i]["GpsStatus"].ToString() + "','" + dt.Rows[i]["IsCharging"].ToString() + "','" + dt.Rows[i]["IsPowerSaving"].ToString() + "'),"; } insertQuery = insertQuery + insertValue; } NpgSqlHelper.ExecuteNonQuery(_connStr, CommandType.Text, insertQuery); objTrackingStatus.status = 1; } else { objTrackingStatus.status = 0; objTrackingStatus.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objTrackingStatus; } catch (Exception Ex) { objLog.ErrorLogFile("InsertBulkTrackingDetail", Ex.Message, path, errorlogtf); throw Ex; } } /// /// To get detail of dealer,van city and van state /// /// dealer/van info /// status and detail of dealer,van city and van state public DealerVanModel GetDealerVanDetail(VanModel model) { DealerVanModel objModel = new DealerVanModel(); try { objAuthorization = new AuthenticationRepository(); List objlistVanCity = new List(); List objlistVanSate = new List(); List objlistdealer = new List(); if (objAuthorization.AuthenticateDevice(model.Token)) { ServiceEngineerRepository objServiceRepository = new ServiceEngineerRepository(ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString()); DataSet ds = new DataSet(); ds = objServiceRepository.GetVanDetailUserIdWise(model); //get dealer. objlistdealer = ds.Tables[0].AsEnumerable().Select(s => new DealerModel { DealerID = s.Field("dealer_id"), DealerName = s.Field("dealer_dealer_name") }).ToList(); //get van and city objlistVanCity = ds.Tables[0].AsEnumerable().Select(s => new VanCityModel { VanID = s.Field("van_id"), VanCity = s.Field("van_city") }).ToList(); //get van and state. objlistVanSate = ds.Tables[0].AsEnumerable().Select(s => new VanstateModel { VanID = s.Field("van_id"), VanState = s.Field("van_state") }).ToList(); objModel.status = "1"; } else { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); return objModel; } //get dealer group by dealer objlistdealer = objlistdealer.GroupBy(d => d.DealerID).Select(d => d.FirstOrDefault()).ToList(); //get van group by city. objlistVanCity = objlistVanCity.GroupBy(d => d.VanCity).Select(d => d.FirstOrDefault()).ToList(); //get van group by state. objlistVanSate = objlistVanSate.GroupBy(d => d.VanState).Select(d => d.FirstOrDefault()).ToList(); objModel.ListDealer = objlistdealer; objModel.ListVanCity = objlistVanCity; objModel.ListVanState = objlistVanSate; return objModel; } catch (Exception Ex) { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString() + Ex.Message; objLog.ErrorLogFile("GetCurrentTrackingDetailUserIdWIse", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get current tracking details, user id wise /// /// van/user info /// status and current tracking details, user id wise public CurrentTracking GetCurrentTrackingDetailUserIdWIse(VanModel model) { CurrentTracking objModel = new CurrentTracking(); try { DataSet dsTracking = new DataSet(); objAuthorization = new AuthenticationRepository(); List listVan = new List(); List listVanFiltered; List listTracking = new List(); if (objAuthorization.AuthenticateDevice(model.Token)) { ServiceEngineerRepository objServiceRepository = new ServiceEngineerRepository(ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString()); DataSet dsUser = new DataSet(); dsUser = objServiceRepository.GetVanDetailUserIdWise(model); listVan = dsUser.Tables[0].AsEnumerable().Select(s => new VanModel { DealerId = s.Field("dealer_id"), DealerOrganizationId = s.Field("dealer_organization_id"), DealerDealerName = s.Field("dealer_dealer_name"), DealerCity = s.Field("dealer_city"), DealerState = s.Field("dealer_state"), DealerDealerDefaultLattitude = s.Field("dealer_dealer_default_lattitude"), DealerDealerDefaultLongitude = s.Field("dealer_dealer_default_longitude"), VanId = s.Field("van_id"), VanAlias = s.Field("van_alias"), VanVanDefaultLattitude = s.Field("van_van_default_lattitude"), VanVanDefaultLongitude = s.Field("van_van_default_longitude"), VanCity = s.Field("van_city"), VanState = s.Field("van_state"), VanVanModel = s.Field("van_van_model"), VanRegistrationNumber = s.Field("van_registration_number"), VanVanRegisteredAs = s.Field("van_van_registered_as"), OrganizationName = s.Field("_organization_name"), OrganizationOrganizationAlias = s.Field("_organization_organization_alias"), OrganizationOrganizationCity = s.Field("_organization_organization_city"), OrganizationOrganizationState = s.Field("_organization_organization_state"), OrganizationOrganizationCountry = s.Field("_organization_organization_country"), OrganizationOrganizationDescription = s.Field("_organization_organization_description"), OrganizationOrganizationPath = s.Field("_organization_organization_path"), OrganizationOrganizationDepth = s.Field("_organization_organization_depth"), OrganizationOrganizationColor = s.Field("_organization_organization_color"), OrganizationOrganizationRegion = s.Field("_organization_organization_region"), ServiceEngineerId = s.Field("service_engineer_id"), ServiceEngineerName = s.Field("_service_engineer_name"), ServiceEngineerAlias = s.Field("service_engineer_alias"), ServiceEngineerImeiNumber = s.Field("service_engineer_imei_number"), ServiceEngineerContactNumber = s.Field("service_engineer_contact_number"), ServiceEngineerApplicationLicenseKey = s.Field("service_engineer_application_license_key"), ServiceEngineerMobileApplicationBlocked = s.Field("service_engineer_mobile_application_blocked"), ServiceEngineerDeviceAlias = s.Field("service_engineer_device_alias"), ServiceEngineerPinPassword = s.Field("service_engineer_pin_password"), ServiceEngineerVanVanId = s.Field("service_engineer_van_van_id"), ServiceEngineerVanServiceEngineerId = s.Field("service_engineer_van_service_engineer_id"), //Token = s.Field(""), Status = "1", current_latitude = s.Field("current_latitude"), current_longitude = s.Field("current_longitude"), van_start_working_hours = s.Field("_van_starting_working_hours"), van_end_working_hours = s.Field("_van_ending_working_hours"), //Message = s.Field("") }).ToList(); listVan.RemoveAll(item => String.IsNullOrEmpty(item.ServiceEngineerImeiNumber)); listVanFiltered = new List(listVan.ToList()); if (listVan.Count > 0) { //get all van details if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL") { listVanFiltered = new List(listVan.Select(s => s).ToList()); } // filter van dealer wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim())).ToList()); } // filter van city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim())).ToList()); } // filter van state wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim())).ToList()); } // filter van dealer and city wise if (model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } // filter van state and city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer and state wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer,state and city wise if (model.VanCityParam.ToUpper().Trim() != "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } } //get all device alias in a comma seprated string. string deviceAlias = ""; if (listVanFiltered.Count > 0) { for (int i = 0; i < listVanFiltered.Count; i++) { if (i == 0) { deviceAlias = listVanFiltered[i].ServiceEngineerDeviceAlias.ToString(); } else { deviceAlias = deviceAlias + "," + listVanFiltered[i].ServiceEngineerDeviceAlias; } } } //Get current log device alias wise. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[1]; nSqlParam[0] = new NpgsqlParameter("indevice_alias", deviceAlias); dsTracking = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_devices_user_wise"], nSqlParam); listTracking = dsTracking.Tables[0].AsEnumerable().Select(s => new TrackingModel { // DeviceAlias = s.Field(""), LogId = s.Field("_log_id"), DeviceAlias = s.Field("_device_alias"), Latitude = s.Field("_latitude"), Longitude = s.Field("_longitude"), LogTime = s.Field("_log_time") != null ? Convert.ToDateTime(s.Field("_log_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_log_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), //Token = s.Field(""), //TrackingDetail = s.Field>(""), IsConnected = s.Field("_device_status"), Xcordinate = s.Field("_x_coordinate"), Ycordinate = s.Field("_y_coordinate"), Zcordinate = s.Field("_z_coordinate"), CreationTime = s.Field("_creation_time") != null ? Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_creation_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), BatteryStatus = s.Field("_battery_status") != null ? s.Field("_battery_status") : "0", GpsStatus = s.Field("_gps_status"), IsCharging = s.Field("_is_charging"), IsPowerSaving = s.Field("_is_power_saving") //Message = s.Field(""), //status = s.Field(""), }).ToList(); objModel.status = "1"; if (listTracking.Count != listVanFiltered.Count && listTracking.Count < listVanFiltered.Count) { for (int i = listTracking.Count; i < listVanFiltered.Count; i++) { TrackingModel objTrack = new TrackingModel(); objTrack.BatteryStatus = "0"; listTracking.Add(objTrack); } } } else { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); return objModel; } objModel.ListUsers = listVanFiltered; objModel.ListTracking = listTracking; return objModel; } catch (Exception Ex) { objModel.status = "0"; objModel.Message = Ex.Message; objLog.ErrorLogFile("GetCurrentTrackingDetailUserIdWIse", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get detail of dealer,van city and van state /// /// dealer/van info /// status and detail of dealer,van city and van state public DealerVanModel SaveVanWorkingHours(VanModel model) { DealerVanModel objModel = new DealerVanModel(); try { objAuthorization = new AuthenticationRepository(); DataSet dsRemoveServiceDeiceCredential = new DataSet(); if (objAuthorization.AuthenticateDevice(model.Token)) { NpgsqlParameter[] nSqlParamServiceDeiceCredential = new NpgsqlParameter[4]; nSqlParamServiceDeiceCredential[0] = new NpgsqlParameter("invan_id", model.VanId); nSqlParamServiceDeiceCredential[1] = new NpgsqlParameter("invan_starting_working_hours", model.van_start_working_hours); nSqlParamServiceDeiceCredential[2] = new NpgsqlParameter("invan_ending_working_hours", model.van_end_working_hours); nSqlParamServiceDeiceCredential[3] = new NpgsqlParameter("invan_last_modified_by", model.UserId.ToString()); dsRemoveServiceDeiceCredential = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_insert_or_update_van_working_hours"], nSqlParamServiceDeiceCredential); objModel.status = "1"; } else { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); return objModel; } //get dealer group by dealer return objModel; } catch (Exception Ex) { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString() + Ex.Message; objLog.ErrorLogFile("GetCurrentTrackingDetailUserIdWIse", Ex.Message, path, errorlogtf); return objModel; } } public CurrentTracking GetCurrentTrackingDetailUserIdWIseVECV(VanModel model) { CurrentTracking objModel = new CurrentTracking(); try { DataSet dsTracking = new DataSet(); objAuthorization = new AuthenticationRepository(); List listVan = new List(); List listVanFiltered; List listTracking = new List(); if (objAuthorization.AuthenticateDevice(model.Token)) { ServiceEngineerRepository objServiceRepository = new ServiceEngineerRepository(ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString()); DataSet dsUser = new DataSet(); dsUser = objServiceRepository.GetVanDetailUserIdWiseVECVUser(model); listVan = dsUser.Tables[0].AsEnumerable().Select(s => new VanModel { DealerId = s.Field("dealer_id"), DealerOrganizationId = s.Field("dealer_organization_id"), DealerDealerName = s.Field("dealer_dealer_name"), DealerCity = s.Field("dealer_city"), DealerState = s.Field("dealer_state"), DealerDealerDefaultLattitude = s.Field("dealer_dealer_default_lattitude"), DealerDealerDefaultLongitude = s.Field("dealer_dealer_default_longitude"), VanId = s.Field("van_id"), VanAlias = s.Field("van_alias"), VanVanDefaultLattitude = s.Field("van_van_default_lattitude"), VanVanDefaultLongitude = s.Field("van_van_default_longitude"), VanCity = s.Field("van_city"), VanState = s.Field("van_state"), VanVanModel = s.Field("van_van_model"), VanRegistrationNumber = s.Field("van_registration_number"), VanVanRegisteredAs = s.Field("van_van_registered_as"), OrganizationName = s.Field("_organization_name"), OrganizationOrganizationAlias = s.Field("_organization_organization_alias"), OrganizationOrganizationCity = s.Field("_organization_organization_city"), OrganizationOrganizationState = s.Field("_organization_organization_state"), OrganizationOrganizationCountry = s.Field("_organization_organization_country"), OrganizationOrganizationDescription = s.Field("_organization_organization_description"), OrganizationOrganizationPath = s.Field("_organization_organization_path"), OrganizationOrganizationDepth = s.Field("_organization_organization_depth"), OrganizationOrganizationColor = s.Field("_organization_organization_color"), OrganizationOrganizationRegion = s.Field("_organization_organization_region"), ServiceEngineerId = s.Field("service_engineer_id"), ServiceEngineerName = s.Field("_service_engineer_name"), ServiceEngineerAlias = s.Field("service_engineer_alias"), ServiceEngineerImeiNumber = s.Field("service_engineer_imei_number"), ServiceEngineerContactNumber = s.Field("service_engineer_contact_number"), ServiceEngineerApplicationLicenseKey = s.Field("service_engineer_application_license_key"), ServiceEngineerMobileApplicationBlocked = s.Field("service_engineer_mobile_application_blocked"), ServiceEngineerDeviceAlias = s.Field("service_engineer_device_alias"), ServiceEngineerPinPassword = s.Field("service_engineer_pin_password"), ServiceEngineerVanVanId = s.Field("service_engineer_van_van_id"), ServiceEngineerVanServiceEngineerId = s.Field("service_engineer_van_service_engineer_id"), //Token = s.Field(""), Status = "1", current_latitude = s.Field("current_latitude"), current_longitude = s.Field("current_longitude"), van_start_working_hours = s.Field("_van_starting_working_hours"), van_end_working_hours = s.Field("_van_ending_working_hours"), //Message = s.Field("") }).ToList(); listVan.RemoveAll(item => String.IsNullOrEmpty(item.ServiceEngineerImeiNumber)); listVanFiltered = new List(listVan.ToList()); if (listVan.Count > 0) { //get all van details if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL") { listVanFiltered = new List(listVan.Select(s => s).ToList()); } // filter van dealer wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim())).ToList()); } // filter van city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim())).ToList()); } // filter van state wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim())).ToList()); } // filter van dealer and city wise if (model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } // filter van state and city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer and state wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer,state and city wise if (model.VanCityParam.ToUpper().Trim() != "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } } //get all device alias in a comma seprated string. string deviceAlias = ""; if (listVanFiltered.Count > 0) { for (int i = 0; i < listVanFiltered.Count; i++) { if (i == 0) { deviceAlias = listVanFiltered[i].ServiceEngineerDeviceAlias.ToString(); } else { deviceAlias = deviceAlias + "," + listVanFiltered[i].ServiceEngineerDeviceAlias; } } } //Get current log device alias wise. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[1]; nSqlParam[0] = new NpgsqlParameter("indevice_alias", deviceAlias); dsTracking = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_devices_user_wise"], nSqlParam); listTracking = dsTracking.Tables[0].AsEnumerable().Select(s => new TrackingModel { // DeviceAlias = s.Field(""), LogId = s.Field("_log_id"), DeviceAlias = s.Field("_device_alias"), Latitude = s.Field("_latitude"), Longitude = s.Field("_longitude"), LogTime = s.Field("_log_time") != null ? Convert.ToDateTime(s.Field("_log_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_log_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), //Token = s.Field(""), //TrackingDetail = s.Field>(""), IsConnected = s.Field("_device_status"), Xcordinate = s.Field("_x_coordinate"), Ycordinate = s.Field("_y_coordinate"), Zcordinate = s.Field("_z_coordinate"), CreationTime = s.Field("_creation_time") != null ? Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_creation_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), BatteryStatus = s.Field("_battery_status") != null ? s.Field("_battery_status") : "0", GpsStatus = s.Field("_gps_status"), IsCharging = s.Field("_is_charging"), IsPowerSaving = s.Field("_is_power_saving") //Message = s.Field(""), //status = s.Field(""), }).ToList(); objModel.status = "1"; if (listTracking.Count != listVanFiltered.Count && listTracking.Count < listVanFiltered.Count) { for (int i = listTracking.Count; i < listVanFiltered.Count; i++) { TrackingModel objTrack = new TrackingModel(); objTrack.BatteryStatus = "0"; listTracking.Add(objTrack); } } } else { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); return objModel; } objModel.ListUsers = listVanFiltered; objModel.ListTracking = listTracking; return objModel; } catch (Exception Ex) { objModel.status = "0"; objModel.Message = Ex.Message; objLog.ErrorLogFile("GetCurrentTrackingDetailUserIdWIse", Ex.Message, path, errorlogtf); return objModel; } } public CurrentTracking GetCurrentTrackingDetailWMWIse(VanModel model) { CurrentTracking objModel = new CurrentTracking(); try { DataSet dsTracking = new DataSet(); objAuthorization = new AuthenticationRepository(); List listVan = new List(); List listVanFiltered; List listTracking = new List(); if (objAuthorization.AuthenticateDevice(model.Token)) { ServiceEngineerRepository objServiceRepository = new ServiceEngineerRepository(ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString()); DataSet dsUser = new DataSet(); dsUser = objServiceRepository.GetVanDetailWMWise(model); listVan = dsUser.Tables[0].AsEnumerable().Select(s => new VanModel { DealerId = s.Field("dealer_id"), DealerOrganizationId = s.Field("dealer_organization_id"), DealerDealerName = s.Field("dealer_dealer_name"), DealerCity = s.Field("dealer_city"), DealerState = s.Field("dealer_state"), DealerDealerDefaultLattitude = s.Field("dealer_dealer_default_lattitude"), DealerDealerDefaultLongitude = s.Field("dealer_dealer_default_longitude"), VanId = s.Field("van_id"), VanAlias = s.Field("van_alias"), VanVanDefaultLattitude = s.Field("van_van_default_lattitude"), VanVanDefaultLongitude = s.Field("van_van_default_longitude"), VanCity = s.Field("van_city"), VanState = s.Field("van_state"), VanVanModel = s.Field("van_van_model"), VanRegistrationNumber = s.Field("van_registration_number"), VanVanRegisteredAs = s.Field("van_van_registered_as"), OrganizationName = s.Field("_organization_name"), OrganizationOrganizationAlias = s.Field("_organization_organization_alias"), OrganizationOrganizationCity = s.Field("_organization_organization_city"), OrganizationOrganizationState = s.Field("_organization_organization_state"), OrganizationOrganizationCountry = s.Field("_organization_organization_country"), OrganizationOrganizationDescription = s.Field("_organization_organization_description"), OrganizationOrganizationPath = s.Field("_organization_organization_path"), OrganizationOrganizationDepth = s.Field("_organization_organization_depth"), OrganizationOrganizationColor = s.Field("_organization_organization_color"), OrganizationOrganizationRegion = s.Field("_organization_organization_region"), ServiceEngineerId = s.Field("service_engineer_id"), ServiceEngineerName = s.Field("_service_engineer_name"), ServiceEngineerAlias = s.Field("service_engineer_alias"), ServiceEngineerImeiNumber = s.Field("service_engineer_imei_number"), ServiceEngineerContactNumber = s.Field("service_engineer_contact_number"), ServiceEngineerApplicationLicenseKey = s.Field("service_engineer_application_license_key"), ServiceEngineerMobileApplicationBlocked = s.Field("service_engineer_mobile_application_blocked"), ServiceEngineerDeviceAlias = s.Field("service_engineer_device_alias"), ServiceEngineerPinPassword = s.Field("service_engineer_pin_password"), ServiceEngineerVanVanId = s.Field("service_engineer_van_van_id"), ServiceEngineerVanServiceEngineerId = s.Field("service_engineer_van_service_engineer_id"), //Token = s.Field(""), Status = "1", current_latitude = s.Field("current_latitude"), current_longitude = s.Field("current_longitude"), van_start_working_hours = s.Field("_van_starting_working_hours"), van_end_working_hours = s.Field("_van_ending_working_hours"), //Message = s.Field("") }).ToList(); listVan.RemoveAll(item => String.IsNullOrEmpty(item.ServiceEngineerImeiNumber)); listVanFiltered = new List(listVan.ToList()); if (listVan.Count > 0) { //get all van details if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL") { listVanFiltered = new List(listVan.Select(s => s).ToList()); } // filter van dealer wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim())).ToList()); } // filter van city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim())).ToList()); } // filter van state wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() == "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim())).ToList()); } // filter van dealer and city wise if (model.VanStateParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } // filter van state and city wise if (model.DealerNameParam.ToUpper().Trim() == "ALL" && model.VanCityParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer and state wise if (model.VanCityParam.ToUpper().Trim() == "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) ).ToList()); } // filter van dealer,state and city wise if (model.VanCityParam.ToUpper().Trim() != "ALL" && model.DealerNameParam.ToUpper().Trim() != "ALL" && model.VanStateParam.ToUpper().Trim() != "ALL") { listVanFiltered = new List(listVan.Where(s => s.DealerDealerName.ToUpper().Trim() == (model.DealerNameParam.ToUpper().Trim()) && s.DealerState.ToUpper().Trim() == (model.VanStateParam.ToUpper().Trim()) && s.DealerCity.ToUpper().Trim() == (model.VanCityParam.ToUpper().Trim()) ).ToList()); } } //get all device alias in a comma seprated string. string deviceAlias = ""; if (listVanFiltered.Count > 0) { for (int i = 0; i < listVanFiltered.Count; i++) { if (i == 0) { deviceAlias = listVanFiltered[i].ServiceEngineerDeviceAlias.ToString(); } else { deviceAlias = deviceAlias + "," + listVanFiltered[i].ServiceEngineerDeviceAlias; } } } //Get current log device alias wise. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[1]; //nSqlParam[0] = new NpgsqlParameter("indevice_alias", deviceAlias); //dsTracking = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_devices_user_wise"], nSqlParam); // nSqlParam = new NpgsqlParameter[1]; nSqlParam[0] = new NpgsqlParameter("indevice_alias", deviceAlias); dsTracking = NpgSqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["Vecv_Tracking"].ToString(), CommandType.StoredProcedure, ConfigurationManager.AppSettings["vecv_log_sp_get_current_log_devices_user_wise"], nSqlParam); listTracking = dsTracking.Tables[0].AsEnumerable().Select(s => new TrackingModel { // DeviceAlias = s.Field(""), LogId = s.Field("_log_id"), DeviceAlias = s.Field("_device_alias"), Latitude = s.Field("_latitude"), Longitude = s.Field("_longitude"), LogTime = s.Field("_log_time") != null ? Convert.ToDateTime(s.Field("_log_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_log_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), //Token = s.Field(""), //TrackingDetail = s.Field>(""), IsConnected = s.Field("_device_status"), Xcordinate = s.Field("_x_coordinate"), Ycordinate = s.Field("_y_coordinate"), Zcordinate = s.Field("_z_coordinate"), CreationTime = s.Field("_creation_time") != null ? Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_creation_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), BatteryStatus = s.Field("_battery_status") != null ? s.Field("_battery_status") : "0", GpsStatus = s.Field("_gps_status"), IsCharging = s.Field("_is_charging"), IsPowerSaving = s.Field("_is_power_saving") //Message = s.Field(""), //status = s.Field(""), }).ToList(); objModel.status = "1"; if (listTracking.Count != listVanFiltered.Count && listTracking.Count < listVanFiltered.Count) { for (int i = listTracking.Count; i < listVanFiltered.Count; i++) { TrackingModel objTrack = new TrackingModel(); objTrack.BatteryStatus = "0"; listTracking.Add(objTrack); } } } else { objModel.status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); return objModel; } objModel.ListUsers = listVanFiltered; objModel.ListTracking = listTracking; return objModel; } catch (Exception Ex) { objModel.status = "0"; objModel.Message = Ex.Message; objLog.ErrorLogFile("GetCurrentTrackingDetailUserIdWIse", Ex.Message, path, errorlogtf); return objModel; } } #endregion } #endregion }