namespace VECV_WebApi.Models.Reports { #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.Tracking; using VECV_WebApi.Models.ServiceEngineer; #endregion #region Repository Class /// /// This clas contain reports releted method /// public class ReportsRepository { #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 = ConfigurationManager.ConnectionStrings["Vecv_GoData"].ToString(); /// /// making Authentication Repository object available to this class /// AuthenticationRepository objAuthorization; #endregion #region Contructors /// /// Default constructor intialize connection string of tracking database /// public ReportsRepository(string connString) { this._connStr = connString; } #endregion #region API Methods /// /// To get EOS call count report data /// /// date range and user info /// status and EOS call count report data public EosallCountRequestModel GetEosCallCountDetail(EosallCountRequestModel model) { List objList = new List(); EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_eos_call_count"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { objList = ds.Tables[0].AsEnumerable().Select(s => new EosCallCountModel { MonthName = s.Field("_month_name").Trim(), NoOfCalls = s.Field("total_record_count"), Top23Reach2Hrs = s.Field("top_23_toatal_record_reach_within_2hrs"), NonTop23Reach2Hrs = s.Field("non_top_23_toatal_record_reach_within_2hrs"), ArtTop23 = s.Field("top_23_avg_time"), ArtNonTop23 = s.Field("non_top_23_avg_time"), Top23CallsClosed24Hrs = s.Field("top_23_closer_less_then_24hrs"), NonTop23CallsClosed24Hrs = s.Field("non_top_23_closer_less_then_24hrs") }).ToList(); } objModel.Status = "1"; objModel.EosList = objList; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetEosCallCountDetail", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get hd lmd bus contribution report data /// /// date range and user info /// hd lmd bus contribution report data public EosallCountRequestModel GetHdLmdBusContributionDetail(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_hd_lmd_and_bus_contribution"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get Hd,LMD,BUS call contribution list. objModel.HdLmdBusContributionList = ds.Tables[0].AsEnumerable().Select(s => new HdLmdBusContribution { MonthName = s.Field("_month_name").Trim(), BusCalls = s.Field("_bus_ticket_count"), BusPer = s.Field("_bus_percent"), HDCalls = s.Field("_hd_ticket_count"), HdPer = s.Field("_hd_percent"), LMDCalls = s.Field("_lmd_ticket_count"), LmdPer = s.Field("_lmd_percent"), TotalCalls = s.Field("total_record_count"), BusPer_ = s.Field("_bus_ticket_count") > 0 ? s.Field("_bus_percent").ToString() : "-", HdPer_ = s.Field("_hd_ticket_count") > 0 ? s.Field("_hd_percent").ToString() : "-", LmdPer_ = s.Field("_lmd_ticket_count") > 0 ? s.Field("_lmd_percent").ToString() : "-" }).ToList(); //Get HD,LMD,BUS Call Closed List. objModel.HdLmdBusclosedList = ds.Tables[0].AsEnumerable().Select(s => new HdLmdBusCallClosedPercentage { MonthName = s.Field("_month_name").Trim(), BusBeyond24Hrs = s.Field("_bus_closer_greater_then_24hrs_count"), BusTotal = s.Field("_bus_closer_greater_then_24hrs_count") //== null // ? 0 : s.Field("_bus_closer_greater_then_24hrs_count") + s.Field("_bus_closer_less_then_24hrs_count"),//== null ? 0 : s.Field("_bus_closer_less_then_24hrs_count"), BusWithIn24Hrs = s.Field("_bus_closer_less_then_24hrs_count"), BusWithIn24HrsPer = s.Field("_bus_percent_closer_less_then_24hrs"), HdBeyond24Hrs = s.Field("_hd_closer_greater_then_24hrs_count"), HdTotal = s.Field("_hd_closer_greater_then_24hrs_count")// == null //? 0 : s.Field("_hd_closer_greater_then_24hrs_count") + s.Field("_hd_closer_less_then_24hrs_count"),//== null ? 0 : s.Field("_hd_closer_less_then_24hrs_count"), HdWithIn24Hrs = s.Field("_hd_closer_less_then_24hrs_count"), HdWithIn24HrsPer = s.Field("_hd_percent_closer_less_then_24hrs"), LmdBeyond24Hrs = s.Field("_lmd_closer_greater_then_24hrs_count"), LmdTotal = s.Field("_lmd_closer_greater_then_24hrs_count") //== null //? 0 : s.Field("_lmd_closer_greater_then_24hrs_count") + s.Field("_lmd_closer_less_then_24hrs_count"),//== null ? 0 : s.Field("_lmd_closer_less_then_24hrs_count"), LmdWithIn24Hrs = s.Field("_lmd_closer_less_then_24hrs_count"), LmdWithIn24HrsPer = s.Field("_lmd_percent_closer_less_then_24hrs"), BusWithIn24HrsPer_ = s.Field("_bus_closer_less_then_24hrs_count") > 0 ? s.Field("_bus_percent_closer_less_then_24hrs").ToString() : "-", HdWithIn24HrsPer_ = s.Field("_hd_closer_less_then_24hrs_count") > 0 ? s.Field("_hd_percent_closer_less_then_24hrs").ToString() : "-", LmdWithIn24HrsPer_ = s.Field("_lmd_closer_less_then_24hrs_count") > 0 ? s.Field("_lmd_percent_closer_less_then_24hrs").ToString() : "-" }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetHdLmdBusContributionDetail", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Dealer wise call detail report data /// /// date range and user info /// Dealer wise call detail report data public EosallCountRequestModel GetDealerWiseCallDetail(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity_name", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_dealer_wise_call_details"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get Dealer Wise call Details list. objModel.DealerWiseCallDetailList = ds.Tables[0].AsEnumerable().Select(s => new DealerWiseCallDetail { BusCall = s.Field("_bus_ticket_count"), BusCallWithIn24Hrs = s.Field("_bus_closer_less_then_24hrs_count"), BusCallWithIn24HrsPer = s.Field("_bus_percent_closer_less_then_24hrs"), DealerName = s.Field("dealer_dealer_name").Trim(), HdCall = s.Field("_hd_ticket_count"), HdCallWithIn24Hrs = s.Field("_hd_closer_less_then_24hrs_count"), HdCallWithIn24HrsPer = s.Field("_hd_percent_closer_less_then_24hrs"), LmdCall = s.Field("_lmd_ticket_count"), LmdCallWithIn24Hrs = s.Field("_lmd_closer_less_then_24hrs_count"), LmdCallWithIn24HrsPer = s.Field("_lmd_percent_closer_less_then_24hrs"), TotalCall = s.Field("total_record_count"), TotalCallWithIn24Hrs = s.Field("_total_closer_less_then_24hrs"), TotalCallWithIn24HrsPer = s.Field("_total_percent_closer_less_then_24hrs"), BusCallWithIn24HrsPer_ = s.Field("_bus_closer_less_then_24hrs_count") > 0 ? s.Field("_bus_percent_closer_less_then_24hrs").ToString() : "-", HdCallWithIn24HrsPer_ = s.Field("_hd_closer_less_then_24hrs_count") > 0 ? s.Field("_hd_percent_closer_less_then_24hrs").ToString() : "-", LmdCallWithIn24HrsPer_ = s.Field("_lmd_closer_less_then_24hrs_count") > 0 ? s.Field("_lmd_percent_closer_less_then_24hrs").ToString() : "-", TotalCallWithIn24HrsPer_ = s.Field("_total_closer_less_then_24hrs") > 0 ? s.Field("_total_percent_closer_less_then_24hrs").ToString() : "-", }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetDealerWiseCallDetail", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Time Slot Clouser detail report data /// /// date range and user info /// Time Slot Clouser detail report data public EosallCountRequestModel GetTimeSlotClouserDetail(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_time_slot_wise"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { objModel.TimeSlotClouserDetailList = ds.Tables[0].AsEnumerable().Select(s => new TimeSlotClouser { TimeSlot = s.Field("_time_slot_wise").Trim(), Less24Hrs = s.Field("_less_then_24hrs"), Less24HrsPer = s.Field("_less_then_24hrs_percent"), Calls24HrsTo48Hrs = s.Field("_between_24_to_48hrs"), Calls24HrsTo48HrsPer = s.Field("_between_24_to_48hrs_percent"), Calls48HrsTo72Hrs = s.Field("_between_48_to_72hrs"), Calls48HrsTo72HrsPer = s.Field("_between_48_to_72hrs_percent"), Calls72HrsTo96Hrs = s.Field("_between_72_to_96hrs"), Calls72HrsTo96HrsPer = s.Field("_between_72_to_96hrs_percent"), Greater96Hrs = s.Field("_greater_then_96hrs"), Greater96HrsPer = s.Field("_greater_then_96hrs_percent"), GrandTotal = s.Field("_record_count1"), }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetTimeSlotClouserDetail", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Reason for Call closed > 24hrs report data /// /// date rabge and user info /// status and Reason for Call closed > 24hrs report data public EosallCountRequestModel GetReasonCallCloseBeyond24HrsDetail(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_greater_then_24hrs_closer_reason"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get Reason Call Closed Beyond 24Hrs List objModel.ReasonCallClosedBeyond24HrsList = ds.Tables[0].AsEnumerable().Select(s => new ReasonCallClosedBeyond24Hrs { DealerName = s.Field("dealer_dealer_name").Trim(), FIP = s.Field("FIP"), GearBoxProblem = s.Field("Gear Box Problem"), Major = s.Field("Major"), MajorDiffrentialProblem = s.Field("Major Differential Problem"), MajorEngineProblem = s.Field("Major Engine Problem"), Other = s.Field("Other"), PaymentApproaval = s.Field("Payment Approval"), SparePartsNotAvailable = s.Field("Spare Parts Not Available"), TechnicianNotAvailable = s.Field("Technician Not Available"), Total = s.Field("FIP") + s.Field("Gear Box Problem") + s.Field("Major") + s.Field("Major Differential Problem") + s.Field("Major Engine Problem") + s.Field("Payment Approval") + s.Field("Spare Parts Not Available") + s.Field("Technician Not Available") + s.Field("Other") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetReasonCallCloseBeyond24HrsDetail", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Opportunity loss report /// /// date range and user info /// Opportunity loss report public EosallCountRequestModel GetOpportunityLossReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_opportunity_loss_reason"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get Eos Opportunity Loss objModel.EosOpportunityLoss = ds.Tables[0].AsEnumerable().Select(s => new EosOpportunityLoss { DealerTakingTooMuchTime = s.Field("dealer_taking_too_much_time"), EosChargesHigh = s.Field("eos_charges_is_high"), GrandTotal = s.Field("_total_count"), LocalTechCome = s.Field("local_tech_came_himself_and_repair_the_vehicle"), Other = s.Field("other"), Region = s.Field("region").Trim(), }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetOpportunityLossReport", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Toll Free no Source report /// /// date range and user info /// status and Toll Free no Source report public EosallCountRequestModel GetTollFreeNoSourceReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_toll_free_no_source"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { // Get Eos Toll Free Call Source report. objModel.EosTollFreeCallSource = ds.Tables[0].AsEnumerable().Select(s => new EosTollFreeCallSource { AlreadyAware = s.Field("already_aware"), CoDriver = s.Field("co_driver"), Dealer = s.Field("_dealer"), GrandTotal = s.Field("_total_count"), Internet = s.Field("_internet"), Maanger = s.Field("_manage"), MonthName = s.Field("month").Trim(), Other = s.Field("_other"), Owner = s.Field("_owner"), ServiceBook = s.Field("service_book"), SMS = s.Field("_sms"), VehicleSticker = s.Field("vehicle_sticker"), }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetTollFreeNoSourceReport", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get LMD & HD - Call Closure % report /// /// date range and user info /// status and LMD & HD - Call Closure % report public EosallCountRequestModel GetHdLmdBusCallCloserReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_hd_lmd_bus_call_closer"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get Hd Lmd Bus Call CLoser details objModel.HdLmdBusCallCLoser = ds.Tables[0].AsEnumerable().Select(s => new HdLmdBusCallCLoser { CallCountBeyond24Hrs = s.Field("_closer_greater_then_24hrs_count"), CallCountLess24Hrs = s.Field("_closer_less_then_24hrs_count"), CallPercentageBeyond24Hrs_ = s.Field("_closer_greater_then_24hrs_count_bus_percent") > 0 ? s.Field("_closer_greater_then_24hrs_count_bus_percent").ToString() : "-", CallPercentageBeyond24Hrs = s.Field("_closer_greater_then_24hrs_count_bus_percent"), CallPercentageLess24Hrs = s.Field("_closer_less_then_24hrs_count_precent"), CallPercentageLess24Hrs_ = s.Field("_closer_less_then_24hrs_count_precent") > 0 ? s.Field("_closer_less_then_24hrs_count_precent").ToString() : "-", Product = s.Field("_vehicle_type").Trim(), TotalCallCount = s.Field("_total_count") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetHdLmdBusCallCloserReport", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Reason for Call closed beyond 24hrs report /// /// date range and user info /// status and Reason for Call closed beyond 24hrs report public EosallCountRequestModel GetReasonWiseCallClosedBeyond24Hrs(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_reason_call_closed_beyond_24hrs"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { // get Reason Wise Call Closed Beyond 24 Hrs. objModel.ReasonWiseCallClosedBeyond24Hrs = ds.Tables[0].AsEnumerable().Select(s => new ReasonWiseCallClosedBeyond24Hrs { Buses = s.Field("bus"), HD = s.Field("hd"), LMD = s.Field("lmd"), Reason = s.Field("reason_name").Trim(), }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetReasonWiseCallClosedBeyond24Hrs", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Eos call Count details. /// /// date range and user info /// status and Eos call Count details public EosallCountRequestModel GetEosFeedBackCallFeedBackParameter(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet dsCurrent = new DataSet(); DataSet dsPreviouse = new DataSet(); DataSet dsCurrentEos = new DataSet(); DataSet dsPreviouseEos = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); dsCurrent = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_call_feedback_rating"], nSqlParam); dsCurrentEos = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_call_feedback_rating_percentage"], nSqlParam); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute)).AddYears(-1)); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute)).AddYears(-1)); dsPreviouse = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_call_feedback_rating"], nSqlParam); dsPreviouseEos = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_call_feedback_rating_percentage"], nSqlParam); if (dsCurrent.Tables[0].Rows.Count > 0) { //get Current Year Eos Feedback details objModel.CurrentYearEosFeedback = dsCurrent.Tables[0].AsEnumerable().Select(s => new EosCallFeedBackParameter { Category = "EOS", EasyGettingCall = s.Field("_feedback_ease_of_getting_call"), EosCharges = s.Field("_feedback_eos_charges"), MonthName = s.Field("_month_name").Trim(), OverAllExperience = s.Field("_feedback_over_all_experience"), RepairTime = s.Field("_feedback_total_repair_time"), ResponseOfCall = s.Field("_feedback_response_of_call_center"), TimelyUpdation = s.Field("_feedback_timely_updation_by_dealer") }).ToList(); } //get Previous Year Eos Feedback details if (dsPreviouse.Tables[0].Rows.Count > 0) { objModel.PreviousYearEosFeedback = dsPreviouse.Tables[0].AsEnumerable().Select(s => new EosCallFeedBackParameter { Category = "EOS", EasyGettingCall = s.Field("_feedback_ease_of_getting_call"), EosCharges = s.Field("_feedback_eos_charges"), MonthName = s.Field("_month_name").Trim(), OverAllExperience = s.Field("_feedback_over_all_experience"), RepairTime = s.Field("_feedback_total_repair_time"), ResponseOfCall = s.Field("_feedback_response_of_call_center"), TimelyUpdation = s.Field("_feedback_timely_updation_by_dealer") }).ToList(); } //get Current Year Eos Feedback Rating details if (dsCurrentEos.Tables[0].Rows.Count > 0) { objModel.CurrentYearEosFeedbackRating = dsCurrentEos.Tables[0].AsEnumerable().Select(s => new EosCallFeedBackRating { MonthName = s.Field("_month_name").Trim(), Eos = s.Field("month_feedback_percentage") }).ToList(); } //get Previous Year Eos Feedback Rating details if (dsPreviouseEos.Tables[0].Rows.Count > 0) { objModel.PreviousYearEosFeedbackRating = dsPreviouseEos.Tables[0].AsEnumerable().Select(s => new EosCallFeedBackRating { MonthName = s.Field("_month_name").Trim(), Eos = s.Field("month_feedback_percentage") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetReasonWiseCallClosedBeyond24Hrs", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get data for Geo Analysis Report. /// /// date range and user info /// status and data for Geo Analysis Report public EosallCountRequestModel GeoAnalysis(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); ServiceEngineerRepository objDealerVan = new ServiceEngineerRepository(_connStr); VanModel objModelVan = new VanModel(); Analysis objAnalysis = new Analysis(); List objAnalysisModel = new List(); try { DataSet dsOpenTickets = new DataSet(); DataSet dsClosedTickets = new DataSet(); DataSet dsDealerVan = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { objModelVan.UserId = (Int64)model.UserId; // Get Dealer Details for geo analysis report. if (model.IsDealer.Trim().ToUpper() == "TRUE") { dsDealerVan = objDealerVan.GetVanDetailUserIdWise(objModelVan); objAnalysisModel = dsDealerVan.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { Id = s.Field("dealer_id"), DealerName = s.Field("dealer_dealer_name"), City = s.Field("dealer_city"), State = s.Field("dealer_state"), DefaultLattitude = s.Field("dealer_dealer_default_lattitude"), DefaultLongitude = s.Field("dealer_dealer_default_longitude"), OrganizationName = s.Field("_organization_name"), DealerContact = s.Field("dealer_contact_number1") }).ToList(); objAnalysisModel.RemoveAll(item => String.IsNullOrEmpty(item.DealerName)); objAnalysis.lsDealerDetl = objAnalysisModel; } // Get VAN Details for geo analysis report. if (model.IsVan.Trim().ToUpper() == "TRUE") { dsDealerVan = objDealerVan.GetVanDetailUserIdWise(objModelVan); objAnalysisModel = dsDealerVan.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { Id = s.Field("van_id"), DefaultLattitude = s.Field("van_van_default_lattitude"), DefaultLongitude = s.Field("van_van_default_longitude"), City = s.Field("van_city"), State = s.Field("van_state"), VanVanModelNo = s.Field("van_van_model"), VanRegistrationNumber = s.Field("van_registration_number"), VanVanRegisteredAs = s.Field("van_van_registered_as"), OrganizationName = s.Field("_organization_name"), ServiceEnggName = s.Field("_service_engineer_name"), ServiceEnggContactNumber = s.Field("service_engineer_contact_number"), DealerName = s.Field("dealer_dealer_name"), DealerContact = s.Field("dealer_contact_number1") }).ToList(); objAnalysisModel.RemoveAll(item => String.IsNullOrEmpty(item.ServiceEnggName)); objAnalysis.lsEOSVAN = objAnalysisModel; } NpgsqlParameter[] nSqlParam = new NpgsqlParameter[4]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate", model.State); // Get OpenTicket Details for geo analysis report. if (model.IsOpenTicket.Trim().ToUpper() == "TRUE") { dsOpenTickets = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_geo_open_tickets"], nSqlParam); objAnalysisModel = dsOpenTickets.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { Id = s.Field("_ticket_id"), CustomerName = s.Field("_customer_name"), CustomerContactNumber = s.Field("_customer_contact_no"), 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"]), DealerName = s.Field("_dealer_name"), AssignTo = s.Field("_assigned_to"), SlaMet = s.Field("sla_met").ToString(), ServiceEnggName = s.Field("_van_dealer_name"), DealerContact = s.Field("_dealer_contact_number1"), TicketStatusAlias = s.Field("_ticket_status_alias"), VehicleModelTagging = s.Field("_customer_vehicle_model_tagging"), DefaultLattitude = s.Field("_breakdown_lattitude"), DefaultLongitude = s.Field("_breakdown_longitude"), State = s.Field("_state_name"), TicketIdAlias = s.Field("_ticket_id_alias") }).ToList(); objAnalysis.lsOpenTicket = objAnalysisModel; } // Get Closed Tickets Details for geo analysis report. if (model.IsClosedTickets.Trim().ToUpper() == "TRUE") { dsClosedTickets = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_geo_closed_tickets"], nSqlParam); objAnalysisModel = dsClosedTickets.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { Id = s.Field("_ticket_id"), CustomerName = s.Field("_customer_name"), CustomerContactNumber = s.Field("_customer_contact_no"), 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"]), DealerName = s.Field("_dealer_name"), AssignTo = s.Field("_assigned_to"), SlaMet = s.Field("sla_met").ToString(), ServiceEnggName = s.Field("_van_dealer_name"), DealerContact = s.Field("_dealer_contact_number1"), TicketStatusAlias = s.Field("_ticket_status_alias"), VehicleModelTagging = s.Field("_customer_vehicle_model_tagging"), DefaultLattitude = s.Field("_breakdown_lattitude"), DefaultLongitude = s.Field("_breakdown_longitude"), State = s.Field("_state_name"), TicketIdAlias = s.Field("_ticket_id_alias") }).ToList(); objAnalysis.lsCloseTicket = objAnalysisModel; } objModel.GeoAnalysisModelReport = objAnalysis; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("GetOpenCloseTicketDetail", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get data for Geo Analysis Report Route Wise. /// /// date range and Route Id /// status and data for Geo Analysis Report public EosallCountRequestModel GeoRouteAnalysis(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); ServiceEngineerRepository objDealerVan = new ServiceEngineerRepository(_connStr); VanModel objModelVan = new VanModel(); Analysis objAnalysis = new Analysis(); List objAnalysisModel = new List(); try { DataSet dsClosedTickets = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { NpgsqlParameter[] nSqlParam = new NpgsqlParameter[4]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("inroute_id", model.RouteId); // Get Closed Tickets Details for geo analysis report. dsClosedTickets = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_geo_closed_tickets_by_route_wise"], nSqlParam); objAnalysisModel = dsClosedTickets.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { TicketIdAlias = s.Field("_ticket_id_alias"), AssignTo = s.Field("_assigned_to"), 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"]), Route = s.Field("_route_alias"), VanRegistrationNumber = s.Field("_van_dealer_name"), State = s.Field("_state_name"), City = s.Field("_city_name"), CustomerName = s.Field("_customer_name"), CustomerContactNumber = s.Field("_customer_contact_no"), DealerName = s.Field("_dealer_name"), DealerContact = s.Field("_dealer_contact_number1"), VehicleModelTagging = s.Field("_customer_vehicle_model_tagging"), SlaMet = s.Field("sla_met").ToString(), ServiceEnggName = s.Field("_van_dealer_name"), TicketStatusAlias = s.Field("_ticket_status_alias"), DefaultLattitude = s.Field("_breakdown_lattitude"), DefaultLongitude = s.Field("_breakdown_longitude"), Id = s.Field("_ticket_id"), }).ToList(); objAnalysis.lsCloseTicket = objAnalysisModel; objModel.GeoAnalysisModelReport = objAnalysis; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("GetCloseTicketDetailByRouteWise", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get data for Average Response Time / Average Closure Time For Geo Analysis Report. /// /// date range and Route Id /// status and data for Geo Analysis Report public EosallCountRequestModel CountGeoRouteAnalysis(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); ServiceEngineerRepository objDealerVan = new ServiceEngineerRepository(_connStr); VanModel objModelVan = new VanModel(); Analysis objAnalysis = new Analysis(); List objAnalysisModel = new List(); try { DataSet dsClosedTickets = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { NpgsqlParameter[] nSqlParam = new NpgsqlParameter[4]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("inroute_id", model.RouteId); // Get Closed Tickets Details for geo analysis report. dsClosedTickets = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_geo_analysis_kpi_count"], nSqlParam); objAnalysisModel = dsClosedTickets.Tables[0].AsEnumerable().Select(s => new GeoAnalysisTicketModel { Key = s.Field("_key"), KeyName = s.Field("_key_name"), KeyValue = s.Field("_key_value"), }).ToList(); objAnalysis.lsCloseTicket = objAnalysisModel; objModel.GeoAnalysisModelReport = objAnalysis; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("CountGeoRouteAnalysis", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get dealer wise decline report. /// /// date range and user info /// status and dealer wise decline report public EosallCountRequestModel GetDeclinedReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_dealer_wise_declined_ticket"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { objModel.DeclinedReportsDealerWise = ds.Tables[0].AsEnumerable().Select(s => new DeclinedReports { DealerName = s.Field("_dealer_name"), TicketId = s.Field("_tickets_closed_id"), CreationDate = s.Field("_ticket_creation_date") != null ? Convert.ToDateTime(s.Field("_ticket_creation_date")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateFormat"]) : Convert.ToDateTime(s.Field("_ticket_creation_date")).ToString(ConfigurationManager.AppSettings["DateFormat"]), CreationTime = s.Field("_ticket_creation_date") != null ? Convert.ToDateTime(s.Field("_ticket_creation_date")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["TimeFormat"]) : Convert.ToDateTime(s.Field("_ticket_creation_date")).ToString(ConfigurationManager.AppSettings["TimeFormat"]), VehicleRegNo = s.Field("_vehicle_registration_number"), DealerId = s.Field("_dealer_dealer_id"), ServiceEngg = s.Field("_dealer_van_name"), VehicleModelTag = s.Field("_vehicle_model_tagging"), DeclinedReason = s.Field("_remarks"), VanRegNo = s.Field("_registration_number"), Organization = s.Field("_organization_organization_region"), TicketIdAlias = s.Field("_ticket_id_alias") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetReasonWiseCallClosedBeyond24Hrs", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get eicher promise report. /// /// date range and user info /// status and eicher promise report public EosallCountRequestModel GetPromiseReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[8]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incity ", model.City); nSqlParam[5] = new NpgsqlParameter("indealer_id ", model.DealerId); nSqlParam[6] = new NpgsqlParameter("inlimit ", model.Limit); nSqlParam[7] = new NpgsqlParameter("inoff_set ", model.Offset); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_eicher_promise"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { //Get eicher promise report. objModel.PromiseReportsList = ds.Tables[0].AsEnumerable().Select(s => new PromiseReports { DealerName = s.Field("_dealer_name"), TicketId = s.Field("_tickets_closed_id"), CreationDate = 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"]), ClosedTime = s.Field("_last_modified_time") != null ? Convert.ToDateTime(s.Field("_last_modified_time")).AddMinutes(model.UtcMinute).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]) : Convert.ToDateTime(s.Field("_last_modified_time")).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), VehicleRegNo = s.Field("_vehicle_registration_number"), ServiceEngg = s.Field("dealer_dealer_name"), VehicleModelTag = s.Field("customer_vehicle_model_tagging"), DeclinedReason = s.Field("_reason_for_more_then_24hours"), VanRegNo = s.Field("van_registration_number"), Organization = s.Field("_organization_region"), Description = s.Field("_description"), TicketIdAlias = s.Field("_ticket_id_alias") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("PromiseReport", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get Customer report. /// /// date range and user info /// status and Customer report public EosallCountRequestModel GetCustomerReport(EosallCountRequestModel model) { EosallCountRequestModel objModel = new EosallCountRequestModel(); try { objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { DataSet ds = new DataSet(); NpgsqlParameter[] nSqlParam = new NpgsqlParameter[6]; nSqlParam[0] = new NpgsqlParameter("inuser_id ", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date ", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date ", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("instate ", model.State); nSqlParam[4] = new NpgsqlParameter("incustomer_id ", model.CustomerId); nSqlParam[5] = new NpgsqlParameter("incondition ", model.Condition); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_report_eicher_customer"], nSqlParam); if (ds.Tables[0].Rows.Count > 0) { objModel.CustomerReportsList = ds.Tables[0].AsEnumerable().Select(s => new CustomerReports { // get customer report. DealerName = s.Field("dealer"), TicketId = s.Field("_tickets_closed_id"), CreationDate = 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"]), VehicleRegNo = s.Field("_vehicle_reg_number"), ServiceEngg = s.Field("eos_member"), VehicleModelTag = s.Field("_model_tagging"), Organization = s.Field("_organization_region"), Description = s.Field("_description"), BreakdownLocation = s.Field("_breakdown_location"), City = s.Field("_breakdown_city_name"), State = s.Field("_breakdown_state_name"), TicketLifeCycleTime = s.Field("ticket_lifecycle_time"), DefaultSlaTime = s.Field("_default_sla_time"), DealerContact = s.Field("_dealer_contact"), CustomerName = s.Field("_owner_name"), CustomerContact = s.Field("_owner_contact"), DriverName = s.Field("_customer_name"), ModelNo = s.Field("vehicle_model_number"), ResponseSlaTime = s.Field("_response"), TicketIdAlias = s.Field("_ticket_id_alias") }).ToList(); } objModel.Status = "1"; } else { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); } return objModel; } catch (Exception Ex) { objModel.Status = "0"; objModel.Message = ConfigurationManager.AppSettings["PwdErrorMsg"].ToString() + Ex.Message; objLog.ErrorLogFile("GetCustomerReport", Ex.Message, path, errorlogtf); return objModel; } } /// /// To get close ticket detail user id wise /// /// ticket info /// status and open and close ticket detail user id wise public TicketRequestModel GetCloseTicketDetail(TicketRequestModel model) { TicketRequestModel objModel = new TicketRequestModel(); List objList = new List(); try { DataSet ds = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { // Get Open ticket report details. if (model.TicketType.Trim().ToLower() == "close") { // Get closed ticket report details. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[6]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("inlimit", model.Limit); nSqlParam[4] = new NpgsqlParameter("inoff_set", model.OffSet); nSqlParam[5] = new NpgsqlParameter("incondition", model.Condition); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["usp_get_closed_tickets_user_wise"], nSqlParam); } if (model.TicketType.Trim().ToLower() == "close") { objList = ds.Tables[0].AsEnumerable().Select(s => new TicketListForScore { Id = s.Field("_ticket_id"), DefaultSlaTime = s.Field("_default_sla_time"), CustomeContact_no = s.Field("_customer_contact_no"), TotalTicketLifeCycleTimeSlab = s.Field("_total_ticket_lifecycle_time_sla") == null || s.Field("_total_ticket_lifecycle_time_sla") <= 0 ? 0 : s.Field("_total_ticket_lifecycle_time_sla"), ServiceEngineerName = s.Field("_van_dealer_name"), DealerDealerName = s.Field("_dealer_name"), ServiceEngineerContactNumber = s.Field("_dealer_contact_number1"), TicketStatusAlias = s.Field("_ticket_status_alias"), VehicleTagging = s.Field("_customer_vehicle_model_tagging"), CustomerName = s.Field("_customer_name"), CreationTime = Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(Convert.ToInt16(model.UtcMinute)).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), LastModifiedTime = Convert.ToDateTime(s.Field("_lastmodifytime")).AddMinutes(Convert.ToInt16(model.UtcMinute)).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), AssignedTo = s.Field("_assignedto"), EstimatedTimeForJobComplition = s.Field("_estimatedtimeforjobcompletion"), Age = Convert.ToDouble(s.Field("_age")), DefaultCol2 = model.TicketType.Trim().ToLower() == "close" ? s.Field("_feedbackagent") : null, DefaultCol3 = model.TicketType.Trim().ToLower() == "close" ? s.Field("_reasonformorethen24hours") : null, CallStatus = s.Field("_call_status"), VehicleRegistrationNo = s.Field("_vehicle_registration_number"), ticketid_alias = s.Field("_ticket_id_alias"), caller_language = s.Field("_caller_language"), feedback_call_status = s.Field("_feedback_status"), total_count = Convert.ToString(s.Field("_feedback_count")), Score = s.Field("_score") }).ToList(); } objModel.TicketScoreList = objList; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("GetCloseTicketDetail", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get close ticket detail user id wise /// /// ticket info /// status and open and close ticket detail user id wise public TicketRequestModel GetCloseTicketScoresDetail(TicketRequestModel model) { TicketRequestModel objModel = new TicketRequestModel(); List objList = new List(); try { DataSet ds = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { // Get Open ticket report details. if (model.TicketType.Trim().ToLower() == "close") { // Get closed ticket report details. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[6]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("inlimit", model.Limit); nSqlParam[4] = new NpgsqlParameter("inoff_set", model.OffSet); nSqlParam[5] = new NpgsqlParameter("incondition", model.Condition); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_closed_tickets_user_wise"], nSqlParam); } else if (model.TicketType.Trim().ToLower() == "count") { // Get closed ticket record count. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[6]; nSqlParam[0] = new NpgsqlParameter("inuser_id", model.UserId); nSqlParam[1] = new NpgsqlParameter("instart_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("inend_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[3] = new NpgsqlParameter("inlimit", model.Limit); nSqlParam[4] = new NpgsqlParameter("inoff_set", model.OffSet); nSqlParam[5] = new NpgsqlParameter("incondition", model.Condition); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_closed_tickets_count_user_wise"], nSqlParam); } if (model.TicketType.Trim().ToLower() == "close") { objList = ds.Tables[0].AsEnumerable().Select(s => new TicketListForScore { Id = s.Field("_ticket_id"), DefaultSlaTime = s.Field("_default_sla_time"), CustomeContact_no = s.Field("_customer_contact_no"), TotalTicketLifeCycleTimeSlab = s.Field("_total_ticket_lifecycle_time_sla") == null || s.Field("_total_ticket_lifecycle_time_sla") <= 0 ? 0 : s.Field("_total_ticket_lifecycle_time_sla"), ServiceEngineerName = s.Field("_van_dealer_name"), DealerDealerName = s.Field("_dealer_name"), ServiceEngineerContactNumber = s.Field("_dealer_contact_number1"), TicketStatusAlias = s.Field("_ticket_status_alias"), VehicleTagging = s.Field("_customer_vehicle_model_tagging"), CustomerName = s.Field("_customer_name"), CreationTime = Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(Convert.ToInt16(model.UtcMinute)).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), LastModifiedTime = Convert.ToDateTime(s.Field("_lastmodifytime")).AddMinutes(Convert.ToInt16(model.UtcMinute)).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), AssignedTo = s.Field("_assignedto"), EstimatedTimeForJobComplition = s.Field("_estimatedtimeforjobcompletion"), Age = Convert.ToDouble(s.Field("_age")), DefaultCol2 = model.TicketType.Trim().ToLower() == "close" ? s.Field("_feedbackagent") : null, DefaultCol3 = model.TicketType.Trim().ToLower() == "close" ? s.Field("_reasonformorethen24hours") : null, CallStatus = s.Field("_call_status"), VehicleRegistrationNo = s.Field("_vehicle_registration_number"), ticketid_alias = s.Field("_ticket_id_alias"), caller_language = s.Field("_caller_language"), feedback_call_status = s.Field("_feedback_status"), total_count = Convert.ToString(s.Field("_feedback_count")), Score = s.Field("_score") }).ToList(); } if (model.TicketType.Trim().ToLower() == "count") { objModel.TicketCount = Convert.ToInt64(ds.Tables[0].Rows[0][0]); } objModel.TicketScoreList = objList; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("GetCloseTicketDetail", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get close ticket detail user id wise /// /// ticket info /// status and open and close ticket detail user id wise public TicketRequestModel GetCloseTicketList(TicketRequestModel model) { TicketRequestModel objModel = new TicketRequestModel(); List objList = new List(); try { DataSet ds = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { // Get closed ticket report details. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[3]; nSqlParam[0] = new NpgsqlParameter("inticket_alias", model.TicketAlias); nSqlParam[1] = new NpgsqlParameter("infrom_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("into_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_close_tickets_by_ticket_id"], nSqlParam); objList = ds.Tables[0].AsEnumerable().Select(s => new EosScoreCardModel { TicketId = s.Field("_id"), TicketAlias = s.Field("_ticketid_alias"), Description = s.Field("_description"), AssignedTo = s.Field("_assigned_to"), CreationTime = Convert.ToDateTime(s.Field("_creation_time")).AddMinutes(Convert.ToInt16(model.UtcMinute)).ToString(ConfigurationManager.AppSettings["DateTimeFormat"]), BreakdownLocation = s.Field("_breakdown_location"), AssignedToUserId = s.Field("_assigned_to_user_id"), RegistrationNumber = s.Field("_vehicle_registration_number"), BreakdownLocationLandmark = s.Field("_breakdown_location_landmark"), CustomerContactNumber = s.Field("_customer_contact_no") }).ToList(); } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } objModel.ClosedTicketList = objList; objModel.Status = "1"; } catch (Exception Ex) { objLog.ErrorLogFile("GetCloseTicketList", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } /// /// To get close ticket detail user id wise /// /// ticket info /// status and open and close ticket detail user id wise public ScoreRequestModel GetScoreCardReport(ScoreRequestModel model) { ScoreRequestModel objModel = new ScoreRequestModel(); List objList = new List(); try { DataSet ds = new DataSet(); objAuthorization = new AuthenticationRepository(); if (objAuthorization.AuthenticateDevice(model.Token)) { // Get Open ticket report details. if (model.ReportType.Trim().ToLower() == "dealerscore") { // Get closed ticket report details. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[3]; nSqlParam[0] = new NpgsqlParameter("indealer_id", model.DealerId); nSqlParam[1] = new NpgsqlParameter("infrom_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("into_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_dealers_current_score_by_dealer_wise"], nSqlParam); } else if (model.ReportType.Trim().ToLower() == "vanscore") { // Get closed ticket report details. NpgsqlParameter[] nSqlParam = new NpgsqlParameter[3]; nSqlParam[0] = new NpgsqlParameter("invan_id", model.VanId); nSqlParam[1] = new NpgsqlParameter("infrom_date", model.FromDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); nSqlParam[2] = new NpgsqlParameter("into_date", model.ToDate.AddMinutes(Convert.ToInt32(-model.UtcMinute))); ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_vans_current_score_by_van_wise"], nSqlParam); } else if (model.ReportType.Trim().ToLower() == "allvanscore") { ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_vans_list_with_current_score"]); } else if (model.ReportType.Trim().ToLower() == "alldealerscore") { ds = NpgSqlHelper.ExecuteDataset(_connStr, CommandType.StoredProcedure, ConfigurationManager.AppSettings["uanalytics_data_sp_get_dealers_list_with_current_score"]); } if (model.ReportType.Trim().ToLower() == "dealerscore") { List> score = new List>(); List date = new List(); objList = ds.Tables[0].AsEnumerable().Select(s => new EosScoreCardModel { DealerId = s.Field("_dealer_id"), OrganizationId = s.Field("_organization_id"), OrganizationName=s.Field("_organization_name"), DealerName = s.Field("_dealer_name"), DealerCity = s.Field("_dealer_city"), DealerState = s.Field("_dealer_state"), DealerContactNumber = s.Field("_contact_number"), Score = s.Field("_score"), RecordDate = s.Field("_record_date"), }).ToList(); List ListEosScoreCardDateModel = objList.GroupBy(p => p.RecordDate).Select(p => p.First()).ToList(); List ListEosScoreCardDealerModel = objList.GroupBy(p => p.DealerId).Select(p => p.First()).ToList(); foreach (EosScoreCardModel objScoreCardDealerModel in ListEosScoreCardDealerModel) { List tempscore = new List(); foreach (EosScoreCardModel objScoreCardDateModel in ListEosScoreCardDateModel) { EosScoreCardModel EosScoreCardModelresult = objList.Where(p => p.DealerId == objScoreCardDealerModel.DealerId && p.RecordDate == objScoreCardDateModel.RecordDate).SingleOrDefault(); if (EosScoreCardModelresult == null) tempscore.Add(null); else tempscore.Add(EosScoreCardModelresult.Score); if (date.Count > 0) { if (!date.Contains(objScoreCardDateModel.RecordDate)) { date.Add(objScoreCardDateModel.RecordDate); } } else { date.Add(objScoreCardDateModel.RecordDate); } } score.Add(tempscore); } objModel.score = score; objModel.dates = date; objModel.EosScoreCardModel = ListEosScoreCardDealerModel; } else if (model.ReportType.Trim().ToLower() == "alldealerscore") { objList = ds.Tables[0].AsEnumerable().Select(s => new EosScoreCardModel { DealerId = s.Field("_dealer_id"), OrganizationId = s.Field("_organization_id"), OrganizationName = s.Field("_organization_name"), DealerName = s.Field("_dealer_name"), DealerCity = s.Field("_dealer_city"), DealerState = s.Field("_dealer_state"), DealerContactNumber = s.Field("_contact_number"), Score = s.Field("_score"), RecordDate = s.Field("_record_date"), }).ToList(); } else if (model.ReportType.Trim().ToLower() == "vanscore") { List> score = new List>(); List date = new List(); objList = ds.Tables[0].AsEnumerable().Select(s => new EosScoreCardModel { VanId = s.Field("_van_id"), DealerId = s.Field("_dealer_id"), OrganizationId = s.Field("_organization_id"), OrganizationName = s.Field("_organization_name"), DealerName = s.Field("_dealer_name"), VanAlias = s.Field("_van_alias"), VanCity = s.Field("_van_city"), VanState = s.Field("_van_state"), VanModel = s.Field("_van_model"), RegistrationNumber = s.Field("_registration_number"), VanRegisteredAs = s.Field("_van_registered_as"), Score = s.Field("_score"), RecordDate = s.Field("_record_date"), ServiceEngineerName = s.Field("_service_engineer_name"), ServiceEngineerAlias = s.Field("_service_engineer_alias"), ServiceEngineerContactNumber = s.Field("_service_engineer_contact"), }).ToList(); List ListEosScoreCardDateModel = objList.GroupBy(p => p.RecordDate).Select(p => p.First()).ToList(); List ListEosScoreCardVanModel = objList.GroupBy(p => p.VanId).Select(p => p.First()).ToList(); foreach (EosScoreCardModel objScoreCardVanModel in ListEosScoreCardVanModel) { List tempscore = new List(); foreach (EosScoreCardModel objScoreCardDateModel in ListEosScoreCardDateModel) { EosScoreCardModel EosScoreCardModelresult = objList.Where(p => p.VanId == objScoreCardVanModel.VanId && p.RecordDate == objScoreCardDateModel.RecordDate).SingleOrDefault(); if (EosScoreCardModelresult == null) tempscore.Add(null); else tempscore.Add(EosScoreCardModelresult.Score); if (date.Count > 0) { if (!date.Contains(objScoreCardDateModel.RecordDate)) { date.Add(objScoreCardDateModel.RecordDate); } } else { date.Add(objScoreCardDateModel.RecordDate); } } score.Add(tempscore); } objModel.score = score; objModel.dates = date; objModel.EosScoreCardModel = ListEosScoreCardVanModel; } else if (model.ReportType.Trim().ToLower() == "allvanscore") { objList = ds.Tables[0].AsEnumerable().Select(s => new EosScoreCardModel { VanId = s.Field("_van_id"), DealerId = s.Field("_dealer_id"), OrganizationId = s.Field("_organization_id"), OrganizationName = s.Field("_organization_name"), DealerName = s.Field("_dealer_name"), VanAlias = s.Field("_van_alias"), VanCity = s.Field("_van_city"), VanState = s.Field("_van_state"), VanModel = s.Field("_van_model"), RegistrationNumber = s.Field("_registration_number"), VanRegisteredAs = s.Field("_van_registered_as"), Score = s.Field("_score"), RecordDate = s.Field("_record_date"), ServiceEngineerName = s.Field("_service_engineer_name"), ServiceEngineerAlias = s.Field("_service_engineer_alias"), ServiceEngineerContactNumber = s.Field("_service_engineer_contact"), }).ToList(); } objModel.ClosedTicketList = objList; objModel.Status = "1"; } else { objModel.Message = ConfigurationManager.AppSettings["DeviceConfigurationTokenMessage"].ToString(); objModel.Status = "0"; } } catch (Exception Ex) { objLog.ErrorLogFile("GetScoreCardReport", Ex.Message, path, errorlogtf); objModel.Message = Ex.Message; objModel.Status = "0"; } return objModel; } #endregion } #endregion }