protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); //Есть ли у сайта доступ к модулю if (!_Repository.ModuleAllowed(ControllerName)) { Response.Redirect("/page/error/451"); } //Шаблон ViewName = _Repository.GetModuleView(ControllerName, ActionName); if (string.IsNullOrEmpty(ViewName)) { throw new Exception("Не указан шаблон представления для данного контроллера и метода"); } model = new StatisticsFrontModel() { LayoutInfo = _layoutData, Breadcrumbs = _breadcrumb, PageName = _pageName, User = CurrentUser }; }
/// <summary> /// Дебит кредит баланс /// </summary> /// <returns></returns> public ActionResult DebitCredit() { if (!_Repository.ModuleAllowed(ControllerName)) { Response.Redirect("/page/error/451"); } //Шаблон ViewName = _Repository.GetModuleView(ControllerName, ActionName); if (string.IsNullOrEmpty(ViewName)) { throw new Exception("Не указан шаблон представления для данного контроллера и метода"); } var filter = GetFilter(); //if (!filter.Date.HasValue) // filter.Date = new DateTime(DateTime.Now.Year, 1, 1, 0, 0, 0); //if (!filter.DateEnd.HasValue) // filter.DateEnd = DateTime.Now; var model = new StatisticsFrontModel(); ViewName = _Repository.GetModuleView(ControllerName, ActionName); model.Filter = filter; var userId = CurrentUser.UserId; var userSubscr = _Repository.GetUserSubscrDefault(userId); if (userSubscr != null) { var pFilter = FilterModel.Extend <LkFilter>(filter); pFilter.Size = 10; var subscrBalances = _Repository.GetSubscrSaldoInfo(userId); model.Balance = (subscrBalances != null) ? subscrBalances.SingleOrDefault(s => s.Default == true) : null; model.DebitCreditData = _Repository.GetDebitCreditData(userSubscr.Id, pFilter); //if (model.DebitCreditData != null && model.DebitCreditData.Items != null && model.DebitCreditData.Items.Count() > 0) //{ // foreach (var balance in model.DebitCreditData.Items) // { // if (balance.PeriodId.HasValue) // { // var str = balance.PeriodId.Value.ToString(); // var year = str.Substring(0, 4); // var month = str.Substring(4, 1) == "0" ? str.Substring(5, 1) : str.Substring(4, 2); // balance.Period = new DateTime(int.Parse(year), int.Parse(month), 1, 0, 0, 0); // } // } //} } return(PartialView(ViewName, model)); }
/// <summary> /// Графики - ключевые показатели /// </summary> /// <returns></returns> public ActionResult Chart() { if (!_Repository.ModuleAllowed(ControllerName)) { Response.Redirect("/page/error/451"); } //Шаблон ViewName = _Repository.GetModuleView(ControllerName, ActionName); if (string.IsNullOrEmpty(ViewName)) { throw new Exception("Не указан шаблон представления для данного контроллера и метода"); } var filter = GetFilter(); if (!filter.Date.HasValue) { filter.Date = new DateTime(DateTime.Now.Year, 1, 1, 0, 0, 0); } if (!filter.DateEnd.HasValue) { filter.DateEnd = DateTime.Now; } var model = new StatisticsFrontModel(); ViewName = _Repository.GetModuleView(ControllerName, ActionName); model.Filter = filter; var userId = CurrentUser.UserId; var userSubscr = _Repository.GetUserSubscrDefault(userId); if (userSubscr != null) { var pFilter = FilterModel.Extend <LkFilter>(filter); //Для двойного графика (начисления, платежи) var balances = _Repository.GetDebitCreditStatisticsList(userSubscr.Id, pFilter); if (balances != null && balances.Count() > 0) { //foreach (var balance in balances) //{ // if (balance.PeriodId.HasValue) // { // var str = balance.PeriodId.Value.ToString(); // var year = str.Substring(0, 4); // var month = str.Substring(4, 1) == "0" ? str.Substring(5, 1) : str.Substring(4, 2); // balance.Period = new DateTime(int.Parse(year), int.Parse(month), 1, 0, 0, 0); // } //} var data = balances.Reverse(); model.InvoicesAndPaymentsByDateJson = "[['Месяц','Начисления, ₽','Платежи, ₽']," + string.Join(",", data.Select(s => string.Format("['{0}',{1}, {2}]", s.Period.Value.ToString("MMM"), s.InvoiceAmount.Value.ToString("0.00").Replace(",", "."), s.PaymentAmount.Value.ToString("0.00").Replace(",", ".")))) + "]"; model.InvoicesSumByPeriod = data.Sum(i => i.InvoiceAmount) ?? 0.0m; model.PaymentsSumByPeriod = data.Sum(p => p.PaymentAmount) ?? 0.0m; } #region Графики по отдельности (закоментировано) //Для графика (начисления) //var invoices = _Repository.GetInvoicesList(userSubscr.Id, pFilter); //if(invoices!= null && invoices.Count()>0) //{ // var data = invoices.Where(i => i.DocTypeId == 39) // .GroupBy(p => p.Period) // .Select(p => new InvoiceModel() // { // Date = new DateTime(p.First().Date.Year, p.First().Date.Month, 1, 0, 0, 0, 0), // Period = p.First().Period, // Amount = p.Sum(c => c.Amount), // }).ToArray(); // model.PaymentsByDateJson = "[['Месяц','руб']," + string.Join(",", data.Where(s => s.Amount != null).Select(s => string.Format("['{0}',{1}]", s.Date.ToString("MMM"), s.Amount.Value.ToString("0.00").Replace(",", ".")))) + "]"; //} //Для графика (платежи) //var payments = _Repository.GetPaymentsList(userSubscr.Id, pFilter); //if (payments != null && payments.Count() > 0) //{ // var data = payments // .GroupBy(p => p.Period) // .Select(p => new PaymentModel() // { // Date = new DateTime(p.First().Date.Year, p.First().Date.Month, 1, 0, 0, 0, 0), // Period = p.First().Period, // Amount = p.Sum(c => c.Amount), // }).ToArray(); // model.InvoicesByDateJson = "[['Месяц','руб']," + string.Join(",", data.Where(s => s.Amount != null).Select(s => string.Format("['{0}',{1}]", s.Date.ToString("MMM"), s.Amount.Value.ToString("0.00").Replace(",", ".")))) + "]"; //} #endregion } return(PartialView(ViewName, model)); }