using System.Collections.Generic; using System.Web.Mvc; using System.Web.Routing; using ApacKernel.Date; using ApacKernel.Extensions; using ApacKernel.Web; using ApacKernel.Web.MVC; using ApacSale.Web.MVC; using Now.Business; using Now.Business.WorkFlows; using Now.Entities; using Now.Web.Models; using Now.Web.Services; namespace Now.Web.Controllers { [Compress] [ServerStamp] [HandleError] [HttpsRequired] [RoutePrefix("revenue")] public class DashboardsController : BaseController { [AllowAnonymous] public ActionResult BrowserRedirect(string returnUrl) { var controller = RouteData.Values["redirectToController"] as string; return new RedirectToRouteResult("Default", new RouteValueDictionary(new { controller, action = MvcHelper.LandingPage, returnUrl })); } [Route("now")] [Permission(DashboardPermissions.RevenueNow)] public ActionResult Now() { ViewBag.DefaultPage = "Revenue"; ViewBag.DefaultController = "Dashboards"; return View(DashboardsWorkflow.Instance.GetNowModel()); } [Route("invoices")] [Permission(DashboardPermissions.RevenueNow)] public ActionResult Invoices() { ViewBag.DefaultPage = "Revenue"; ViewBag.DefaultController = "Dashboards"; ViewBag.FilterOptions = new List { new SwitcherModel("Today", "/revenue/for/yesterday", "today"), new SwitcherModel("This" + SpecialSymbols.NBSP + "Month", "/revenue/for/thisMonth", "thisMonth"), new SwitcherModel("Last" + SpecialSymbols.NBSP + "Month", "/revenue/for/lastMonth", "lastMonth"), }; return View(RevenueWorkflow.Instance.GetRevenues()); } [Route("~/")] [Route("sales")] [Permission(DashboardPermissions.RevenueSales)] public ActionResult Sales() { ViewBag.DefaultPage = "Revenue"; ViewBag.DefaultController = "Dashboards"; return View(); } [Route("{country?}")] [Permission(DashboardPermissions.RevenueWeekly)] public ActionResult Revenue(string country) { if (country != null) { string countryID = country; ViewBag.CurrentCountryID = countryID; } return View(); } [Route("for/{rangeName}")] [Permission(DashboardPermissions.RevenueNow)] public ActionResult Historical(string rangeName) { var periodType = PeriodsHelper.GetPeriodTypeByRangeName(rangeName); ViewBag.Title = periodType.GetDisplayName(); ViewBag.Mode = periodType.ToString(); var period = Period.GetPeriod(periodType); var model = RevenueWorkflow.Instance.GetHistorical(period); model.Now.PerHour = model.Now.PerDay/(decimal) period.Length.TotalHours; model.Now.PerMinute = model.Now.PerDay/(decimal) period.Length.TotalMinutes; return View(model); } [Route("overview/{period?}")] [Permission(DashboardPermissions.RevenueOverview)] public ActionResult Overview(string period, string cohort) { ViewBag.DefaultPage = MvcHelper.LandingPage; ViewBag.DefaultController = MvcHelper.LandingController; ViewBag.Cohort = cohort ?? ""; ViewBag.Period = (period ?? "today"); ViewBag.FilterOptions = new List { new SwitcherModel("Today", "/revenue/overview", "today"), new SwitcherModel("Yesterday", "/revenue/overview/Yesterday", "yesterday"), new SwitcherModel("This Month", "/revenue/overview/ThisMonth", "thismonth") }; return View(); } } }