using GODATA.Models.Report; using GODATA.Models.Ticket; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; using System.Web.Mvc; //using GODATA.Models.AuditLog; namespace GODATA.Controllers { [GODATA.MvcApplication.SessionExpire] public class HomeController : Controller { #region Global Variables /// /// getting user's utc minutes from session /// private static string _timeOffSetMinutes = null; //= System.Web.HttpContext.Current.Session["UtcMinute"].ToString(); /// /// Global variable for Ticket administration CCE portal repository. /// private TicketAdministrationRepository objTicketAdministrationRepository = null; /// /// getting login user's id /// //= System.Web.HttpContext.Current.Session["UserId"].ToString(); /// /// getting login TimeZone Id /// private static string _UtcMinute = ConfigurationManager.AppSettings["UtcMinute"].ToString(); /// /// getting user's utc minutes from session /// /// /// getting user's utc minutes from session /// private static int _UtcMinutes; /// /// getting login user's id /// /// /// getting login user's name /// private static string _LoginUserName = null; private static string _LoginUserId = null; private static string _LoginUserRole = null; private static string _securityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); /// /// getting time zone id from AppSetting in web.config file /// private static string _TimeZoneId = ConfigurationManager.AppSettings["TimeZoneId"].ToString(); #endregion /// /// An attribute to allow CORS (Cross-site HTTP requests) /// public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); base.OnActionExecuting(filterContext); } } /// /// To show main page of Tile Dashboard with date filters. /// /// main page of Tile Dashboard [AllowCrossSiteJson] public ActionResult Index() { _LoginUserId = Session["UserId"].ToString(); _timeOffSetMinutes = Session["UtcMinute"].ToString(); ViewBag.SecurityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); ViewBag.UtcMinutes = _timeOffSetMinutes; ViewBag.Userid = _LoginUserId; ViewBag.UserRole = Session["UserRole"].ToString(); return View(); } public ActionResult Dashboard() { _LoginUserId = Session["UserId"].ToString(); _timeOffSetMinutes = Session["UtcMinute"].ToString(); ViewBag.SecurityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); ViewBag.UtcMinutes = _timeOffSetMinutes; ViewBag.Userid = _LoginUserId; ViewBag.UserRole = Session["UserRole"].ToString(); return View(); } //priya public ActionResult newDashboard() { _LoginUserId = Session["UserId"].ToString(); _timeOffSetMinutes = Session["UtcMinute"].ToString(); ViewBag.SecurityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); ViewBag.UtcMinutes = _timeOffSetMinutes; ViewBag.Userid = _LoginUserId; ViewBag.UserRole = Session["UserRole"].ToString(); return View(); } public ActionResult StateDashboard() { _LoginUserId = Session["UserId"].ToString(); _timeOffSetMinutes = Session["UtcMinute"].ToString(); ViewBag.SecurityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); ViewBag.UtcMinutes = _timeOffSetMinutes; ViewBag.Userid = _LoginUserId; ViewBag.UserRole = Session["UserRole"].ToString(); return View(); } [HttpPost] public ActionResult STATEWiseSLA(int fromDate, int toDate, string state, string city, string dealerId) { try { //Getting login user's id, name and utc minutes from session _LoginUserId = Session["UserId"].ToString(); _LoginUserName = Session["UserName"].ToString(); _UtcMinutes = Convert.ToInt16(Session["UtcMinute"].ToString()); int SLAMetTotalTicket = 0; int SLANotMetTotalTicket = 0; int TotalTickets = 0; int SLANOTMetPer = 0; int SLAMetPer = 0; // getting first and last date of a year DateTime firstDayyear = new DateTime(fromDate, 1, 1); DateTime lastDayyear = new DateTime(fromDate, 12, 31); ReportRepository oReportRepository = new ReportRepository(); TollFreeCallAndOpportunityLoss model = new TollFreeCallAndOpportunityLoss(); //model.OpportunityLoss = oReportRepository.GetOpportunityLoss(_securityToken, _UtcMinutes, _LoginUserId, firstDayyear, lastDayyear, state, city, dealerId); //model.TollFreeCall = oReportRepository.GetTollFreeNo(_securityToken, _UtcMinutes, _LoginUserId, firstDayyear, lastDayyear, state, city, dealerId); List oEosOpportunityLoss = oReportRepository.GetDataTableFromCsv(Server.MapPath("~/Downloads/SLA MET.csv"), true); List Months = new List(); model.OpportunityLoss = new OpportunityLoss(); Months.Add("June"); Months.Add("July"); Months.Add("August"); Months.Add("September"); Months.Add("October"); Months.Add("November"); oEosOpportunityLoss = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && Months.Contains(p.month_name)).ToList(); int REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "June").Count()); REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "July").Count()); REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "August").Count()); REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "September").Count()); REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "October").Count()); REsult = (oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count()); REsult = REsult / oEosOpportunityLoss.Count; model.OpportunityLoss.StateSLAMet.Add(new EosOpportunityLoss { June = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "June").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "June").Count() * 100) / oEosOpportunityLoss.Count), July = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "July").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "July").Count() * 100) / oEosOpportunityLoss.Count), Aug = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "August").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "August").Count() * 100) / oEosOpportunityLoss.Count), Sep = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "September").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "September").Count() * 100) / oEosOpportunityLoss.Count), Oct = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "October").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "October").Count() * 100) / oEosOpportunityLoss.Count), Nov = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count() * 100) / oEosOpportunityLoss.Count), }); var test12 = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim()).GroupBy(l => l.DealerName).Select(group => new { Metric = group.Key, Count = group.Count(), Items = group.ToList() }).ToList(); foreach (var test13 in test12) { model.OpportunityLoss.DealerSLAMet.Add(new EosOpportunityLoss { DealerName = test13.Metric, GrandTotal = test13.Count == 0 ? 0 : Convert.ToDouble((double)(test13.Count * 100) / oEosOpportunityLoss.Count) }); } SLAMetTotalTicket = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count(); oEosOpportunityLoss = oReportRepository.GetDataTableFromCsv(Server.MapPath("~/Downloads/SLA NOT MET.csv"), true); oEosOpportunityLoss = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && Months.Contains(p.month_name)).ToList(); model.OpportunityLoss.StateSLAMissed.Add(new EosOpportunityLoss { June = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "June").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "June").Count() * 100) / oEosOpportunityLoss.Count), July = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "July").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "July").Count() * 100) / oEosOpportunityLoss.Count), Aug = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "August").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "August").Count() * 100) / oEosOpportunityLoss.Count), Sep = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "September").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "September").Count() * 100) / oEosOpportunityLoss.Count), Oct = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "October").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "October").Count() * 100) / oEosOpportunityLoss.Count), Nov = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count() == 0 ? 0 : Convert.ToDouble((double)(oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count() * 100) / oEosOpportunityLoss.Count), }); SLANotMetTotalTicket = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim() && p.month_name.ToString().Trim() == "November").Count(); var test = oEosOpportunityLoss.Where(p => p.StateId.ToString().Trim() == state.Trim()).GroupBy(l => l.DealerName).Select(group => new { Metric = group.Key, Count = group.Count(), Items = group.ToList() }).ToList(); foreach (var test1 in test) { model.OpportunityLoss.DealerSLAMissed.Add(new EosOpportunityLoss { DealerName = test1.Metric, GrandTotal = test1.Count == 0 ? 0 : Convert.ToDouble((double)(test1.Count * 100) / oEosOpportunityLoss.Count) }); } TotalTickets = SLAMetTotalTicket + SLANotMetTotalTicket; SLANOTMetPer = (SLANotMetTotalTicket * 100) / TotalTickets; if (SLANOTMetPer > 15 && SLANOTMetPer < 25) { model.RequireVan = 1; model.RequireVanText = "No. of Extra Van Requireds"; } else if (SLANOTMetPer >= 25) { model.RequireVan = 2; model.RequireVanText = "No. of Extra Van Requireds"; } SLAMetPer = (SLAMetTotalTicket * 100) / TotalTickets; if (SLAMetPer >= 90) { model.RequireVan = 1; model.RequireVanText = "No. of Van to be Removed"; } return PartialView(model); } catch (Exception ex) { //objLog.ErrorLogFile("Report_ShowTollFreeAndOpportunityLoss", ex.Message, path, errorlogtf); throw ex; } } /// /// To show main page of Tile Dashboard with date and dealer filters. /// /// main page of Tile Dashboard [AllowCrossSiteJson] public ActionResult DealerWiseDashboard() { objTicketAdministrationRepository = new TicketAdministrationRepository(); _LoginUserId = Session["UserId"].ToString(); _timeOffSetMinutes = Session["UtcMinute"].ToString(); ViewBag.SecurityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString(); ViewBag.UtcMinutes = _timeOffSetMinutes; ViewBag.Userid = _LoginUserId; ViewBag.UserRole = Session["UserRole"].ToString(); //Get dealer list with dealer user id List oDealerListUserIdWise = objTicketAdministrationRepository.GetDealerListUserIdWise(); List oDealerNameList = new List(); foreach (DealerUserIdList items in oDealerListUserIdWise) { oDealerNameList.Add(new SelectListItem { Text = items.sDlrNamewithDealerId, Value = items.dealer_user_id.ToString() }); } return View(oDealerNameList.OrderBy(o => o.Text)); } } }