namespace VECV_WebApi.Controllers.Tracking
{
#region Namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Net.Http;
using System.Net;
using VECV_WebApi.Models.Tracking;
using VECV_WebApi.Models.Util;
using System.Configuration;
using VECV_WebApi.Models.ServiceEngineer;
using LoggingHelper;
#endregion
///
/// This controller is used for manage tracking details
///
public class TrackingController : ApiController
{
#region Global Variable
///
/// 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 data log file path available to this class
///
string logtf = (ConfigurationManager.AppSettings["Log"]);
///
/// making error log file path available to this class
///
string errorlogtf = (ConfigurationManager.AppSettings["ErrorLog"]);
///
/// making Tracking Repository object available to this class
///
TrackingRepository objTrackingRepository;
///
/// making Tracking status class object available to this class
///
TrackingStatus objTrackingStatus;
///
/// making the Database connection string available to this class
///
private string _connStr = ConfigurationManager.ConnectionStrings["Vecv_Tracking"].ToString();
#endregion
#region APIs
///
/// To insert tracking detail in database user wise
///
/// user tracking detail
/// status, if 1 record inserted successfully else 0
public TrackingStatus Post([FromBody] TrackingModel model)
{
try
{
objTrackingStatus = new TrackingStatus();
objTrackingStatus.status = 0;
objTrackingRepository = new TrackingRepository(_connStr);
try
{
if (string.IsNullOrEmpty(model.DeviceAlias.Trim()))
{
objTrackingStatus.status = 0;
objTrackingStatus.Message = "Tracking Detail is Missing Please Contact your Administrator" + model.DeviceAlias + model.Latitude + model.Longitude;
objLog.AddLogFile("InsertTrackingDetail_Controller_devicealias DeviceAlias null", model.DeviceAlias, DateTime.Now.ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), path, logtf);
}
else
{
try
{
if (string.IsNullOrEmpty(model.Longitude.Trim()))
{
objLog.AddLogFile("InsertTrackingDetail_Controller_latitude Longitude is null", model.DeviceAlias, DateTime.Now.ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), path, logtf);
}
else
{
try
{
if (string.IsNullOrEmpty(model.Latitude.Trim()))
{
objLog.AddLogFile("InsertTrackingDetail_Controller_latitude Latitude is null", model.DeviceAlias, DateTime.Now.ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), path, logtf);
}
else
{
try
{
if (string.IsNullOrEmpty(model.LogTime))
{
objLog.AddLogFile("InsertTrackingDetail_Controller_latitude LogTime is null", model.DeviceAlias, DateTime.Now.ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), path, logtf);
}
else
{
model.Xcordinate = Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Cos(Convert.ToDouble(model.Latitude)) * Math.Cos(Convert.ToDouble(model.Longitude)));
model.Ycordinate = Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Cos(Convert.ToDouble(model.Latitude)) * Math.Sin(Convert.ToDouble(model.Longitude)));
model.Zcordinate = Convert.ToString(Convert.ToInt16(ConfigurationManager.AppSettings["EarthRadius"]) * Math.Sin(Convert.ToDouble(model.Latitude)));
objTrackingStatus = objTrackingRepository.InsertTrackingDetail(model);
}
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("InsertTrackingDetail_Controller_logtime", Ex.Message + model.DeviceAlias + "LogTime" + model.LogTime, path, errorlogtf);
}
}
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("InsertTrackingDetail_Controller_latitude", Ex.Message + model.DeviceAlias + "Latitude" + model.Latitude, path, errorlogtf);
}
}
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("InsertTrackingDetail_Controller_longitude", Ex.Message + model.DeviceAlias + "logitude" + model.Longitude, path, errorlogtf);
}
}
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("InsertTrackingDetail_Controller_devicealias DeviceAlias error", Ex.Message + model.DeviceAlias, path, errorlogtf);
}
return objTrackingStatus;
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("InsertTrackingDetail_Controller", Ex.Message, path, errorlogtf);
objTrackingStatus = new TrackingStatus();
objTrackingStatus.status = 0;
objTrackingStatus.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message + model.DeviceAlias; //added on 04/12/2020
return objTrackingStatus;
}
}
///
/// To insert bulk data into tracking
///
/// extra param to identify the api
/// extra param to identify the api
/// extra param to identify the api
/// bulk tracking data
/// status
public TrackingStatus post([FromUri] string tracking, [FromUri] string tracking1, [FromUri] string tracking2, [FromBody] TrackingModel model)
{
objTrackingStatus = new TrackingStatus();
objTrackingStatus.status = 0;
objTrackingRepository = new TrackingRepository(_connStr);
objTrackingStatus = objTrackingRepository.InsertBulkTrackingDetail(model);
return objTrackingStatus;
}
///
/// To get tracking detail of a device date wise
///
/// extra param to identify the api
/// extra param to identify the api
/// device info
/// status and data
public List