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));
}
}
}