291 lines
17 KiB
C#
291 lines
17 KiB
C#
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
|
|
|
|
/// <summary>
|
|
/// getting user's utc minutes from session
|
|
/// </summary>
|
|
private static string _timeOffSetMinutes = null;
|
|
//= System.Web.HttpContext.Current.Session["UtcMinute"].ToString();
|
|
|
|
/// <summary>
|
|
/// Global variable for Ticket administration CCE portal repository.
|
|
/// </summary>
|
|
private TicketAdministrationRepository objTicketAdministrationRepository = null;
|
|
|
|
/// <summary>
|
|
/// getting login user's id
|
|
/// </summary>
|
|
//= System.Web.HttpContext.Current.Session["UserId"].ToString();
|
|
|
|
/// <summary>
|
|
/// getting login TimeZone Id
|
|
/// </summary>
|
|
|
|
private static string _UtcMinute = ConfigurationManager.AppSettings["UtcMinute"].ToString();
|
|
|
|
/// <summary>
|
|
/// getting user's utc minutes from session
|
|
/// </summary>
|
|
|
|
|
|
/// <summary>
|
|
/// getting user's utc minutes from session
|
|
/// </summary>
|
|
private static int _UtcMinutes;
|
|
|
|
/// <summary>
|
|
/// getting login user's id
|
|
/// </summary>
|
|
|
|
|
|
/// <summary>
|
|
/// getting login user's name
|
|
/// </summary>
|
|
private static string _LoginUserName = null;
|
|
private static string _LoginUserId = null;
|
|
|
|
private static string _LoginUserRole = null;
|
|
private static string _securityToken = ConfigurationManager.AppSettings["RESTfulSecurityToken"].ToString();
|
|
/// <summary>
|
|
/// getting time zone id from AppSetting in web.config file
|
|
/// </summary>
|
|
private static string _TimeZoneId = ConfigurationManager.AppSettings["TimeZoneId"].ToString();
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// An attribute to allow CORS (Cross-site HTTP requests)
|
|
/// </summary>
|
|
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute
|
|
{
|
|
public override void OnActionExecuting(ActionExecutingContext filterContext)
|
|
{
|
|
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
|
|
base.OnActionExecuting(filterContext);
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// To show main page of Tile Dashboard with date filters.
|
|
/// </summary>
|
|
/// <returns>main page of Tile Dashboard</returns>
|
|
[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<EosOpportunityLoss> oEosOpportunityLoss = oReportRepository.GetDataTableFromCsv(Server.MapPath("~/Downloads/SLA MET.csv"), true);
|
|
List<string> Months = new List<string>();
|
|
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;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// To show main page of Tile Dashboard with date and dealer filters.
|
|
/// </summary>
|
|
/// <returns>main page of Tile Dashboard</returns>
|
|
[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<DealerUserIdList> oDealerListUserIdWise = objTicketAdministrationRepository.GetDealerListUserIdWise();
|
|
List<SelectListItem> oDealerNameList = new List<SelectListItem>();
|
|
|
|
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));
|
|
}
|
|
}
|
|
}
|