namespace VECV_WebApi.Controllers.Sync
{
using ExcelHelper;
#region Namespaces
using LoggingHelper;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using VECV_WebApi.Models.EmailServices;
using VECV_WebApi.Models.Sync;
using VECV_WebApi.Models.Ticket;
#endregion
///
/// This controller contain apis releted to offline syncing
///
public class SyncController : 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 Global Repository object available to this class
///
GlobalRepository objGlobalRepository = new GlobalRepository("");
///
/// making Sync Repository object available to this class
///
SyncRepository objSyncRepository;
///
/// making the Database connection string available to this class
///
private string _connStr = ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString();
#endregion
#region APIs
///
/// To get synced open tickets details device alias wise
///
/// open ticket sync info
/// synced open tickets details device alias wise
public List Post([FromBody] SyncOpenModel model)
{
SyncOpenModel objModel = new SyncOpenModel();
List objList = new List();
try
{
objSyncRepository = new SyncRepository(_connStr);
objList = objSyncRepository.GetSyncOpenTicketDetail(model);
return objList;
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("GetSyncOpenTicketDetail_Controller", Ex.Message, path, errorlogtf);
objList.Add(new SyncOpenModel
{
Status = "0",
Message = Ex.Message
});
return objList;
}
}
///
/// To get close tickets detail device alias wise
///
/// extra param to identify the api
/// close ticket sync info
/// close tickets detail device alias wise
public List Post([FromUri] string Close, [FromBody] SyncCloseModel model)
{
SyncCloseModel objModel = new SyncCloseModel();
List objList = new List();
try
{
objSyncRepository = new SyncRepository(_connStr);
objList = objSyncRepository.GetSyncCloseTicketDetail(model);
return objList;
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("GetSyncCloseTicketDetail_Controller", Ex.Message, path, errorlogtf);
objList.Add(new SyncCloseModel
{
Status = "0",
Message = Ex.Message
});
return objList;
}
}
///
/// To get all tickets detail device alias wise
///
/// extra param to identify the api
/// open + close ticket sync info
/// all tickets detail device alias wise
public List Post([FromUri] string Sync, [FromBody] SyncModel model)
{
SyncModel objModel = new SyncModel();
List objList = new List();
try
{
objSyncRepository = new SyncRepository(_connStr);
objList = objSyncRepository.GetSyncTicketDetail(model);
return objList;
}
catch (Exception Ex)
{
// write error log into file
objLog.ErrorLogFile("GetSyncTicketDetail_Controller", Ex.Message, path, errorlogtf);
objList.Add(new SyncModel
{
Status = "0",
Message = Ex.Message
});
return objList;
}
}
///
/// To get dealer open/close tickets for syncing
///
/// extra param to identify the api
/// extra param to identify the api
/// open + close ticket sync info
/// all tickets detail device alias wise
public List Post([FromUri] string Sync, [FromUri] string Dealer, [FromBody] SyncModel model)
{
SyncModel objModel = new SyncModel();
List objList = new List();
try
{
objSyncRepository = new SyncRepository(_connStr);
objList = objSyncRepository.GetSyncTicketDetail_Dealer(model);
return objList;
}
catch (Exception Ex)
{
objList.Add(new SyncModel
{
Status = "0",
Message = Ex.Message
});
return objList;
}
}
///
/// To get KAM open/close tickets for syncing
///
/// extra param to identify th4444e api
/// open + close ticket sync info
/// all tickets detail device alias wise
public List Post([FromUri] string Sync, [FromUri] string Kam, [FromUri] string Customer, [FromBody] SyncModel model)
{
SyncModel objModel = new SyncModel();
List objList = new List();
try
{
objSyncRepository = new SyncRepository(_connStr);
objList = objSyncRepository.GetSyncTicketDetail_Kam(model);
return objList;
}
catch (Exception Ex)
{
objList.Add(new SyncModel
{
Status = "0",
Message = Ex.Message
});
return objList;
}
}
public TicketStatusModel Get([FromUri] string TicketId, [FromUri] string strTicketStatus )
{
TicketStatusModel objticket = new TicketStatusModel();
objSyncRepository = new SyncRepository(_connStr);
objticket = objSyncRepository.GetSyncTicketDetail(TicketId, strTicketStatus);
return objticket;
}
public List Get([FromUri] string dtccodes)
{
List objDTCcode = new List();
objSyncRepository = new SyncRepository(_connStr);
string[] strings = dtccodes.Split(',');
// int[] ints = Array.ConvertAll(strings, s => int.Parse(s));
objDTCcode = objSyncRepository.GetAllDtcDescriptionListDataSet(strings);
return objDTCcode;
}
public TechModel Post([FromUri] string Sync, [FromUri] string techinician, [FromUri] string techinician_number, [FromUri] string Customer, [FromBody] TechModel model)
{
TechModel objModel = new TechModel();
List objList = new List();
string strmsg = "";
// objLog.ErrorLogFile("Sync Mobile number",model.Tech_Number, path, errorlogtf);
string istrue = "";
try
{
objSyncRepository = new SyncRepository(_connStr);
bool isValid = IsValidMobileNumber(model.Tech_Number);
if (isValid == true)
{
if (model.Tech_Number.Length == 10)
{
istrue = "true";
}
else
{
istrue = "false";
strmsg = "Please enter 10 digit mobile number";
}
}
else
{
strmsg = "Please enter 10 digit mobile number";
istrue = "false";
}
if (istrue == "false")
{
}
else
{
strmsg = objSyncRepository.insertTechnicianNumber(model.TicketId, model.Tech_Number);
}
objModel.Message = strmsg;
objModel.TicketId = model.TicketId;
objModel.Tech_Number = model.Tech_Number;
return objModel;
}
catch (Exception Ex)
{
objLog.ErrorLogFile("insertTechnicianNumber", Ex.Message, path, errorlogtf);
objList.Add(new SyncModel
{
Status = "0",
Message = Ex.Message
});
}
return objModel;
}
public VECV_WebApi.Models.Sync.CustomerOpenTicketDetail Post([FromUri] string Sync, [FromUri] string tikcetdetails, [FromUri] string latest, [FromUri] string ticketid, [FromUri] string getdetails, [FromBody] SyncModel model)
{
// SyncModel objModel = new SyncModel();
// List objList = new List();
VECV_WebApi.Models.Sync.CustomerOpenTicketDetail objModel = new VECV_WebApi.Models.Sync.CustomerOpenTicketDetail();
try
{
objSyncRepository = new SyncRepository(_connStr);
objModel = objSyncRepository.getTicketDetailLatestUpdate(model);
}
catch (Exception Ex)
{
objLog.ErrorLogFile("insertTechnicianNumber", Ex.Message, path, errorlogtf);
}
return objModel;
}
static bool IsValidMobileNumber(string number)
{
string pattern = @"^\+?[0-9\s\-]*$"; // Adjust the regex pattern to match your requirements
Regex regex = new Regex(pattern);
return regex.IsMatch(number);
}
#endregion
}
}