public ActionResult SearchForm(OrdersSearchValuesModel model, bool isExpanding, bool isCollapsed, int? userId = null, int? statusId = null, int? supplierId = null, bool hideUserField = false, bool hideStatusField = false, bool hideSupplierField = false) { if (model == null) model = new OrdersSearchValuesModel(); using (UsersRepository usersRep = new UsersRepository(CurrentUser.CompanyId)) using (BudgetsRepository budgetsRep = new BudgetsRepository(CurrentUser.CompanyId)) using (SuppliersRepository suppliersRep = new SuppliersRepository(CurrentUser.CompanyId)) using (OrderStatusesRepository statusesRep = new OrderStatusesRepository()) using (AllocationRepository allocationsRep = new AllocationRepository(CurrentUser.CompanyId)) { List<SelectListItemDB> usersAsSelectItems = new List<SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.AllUsersOption } }; usersAsSelectItems.AddRange(usersRep.GetList().Select(x => new SelectListItemDB() { Id = x.Id, Name = x.FirstName + " " + x.LastName })); model.UsersList = new SelectList(usersAsSelectItems, "Id", "Name"); List<SelectListItemDB> budgetsAsSelectItems = new List<SelectListItemDB>() { new SelectListItemDB() { Id = -1, Name = Loc.Dic.AllBudgetsOption } }; budgetsAsSelectItems.AddRange(budgetsRep.GetList().AsEnumerable().Select(x => new SelectListItemDB() { Id = x.Id, Name = "(" + x.Year + ") " + x.Name })); model.BudgetsList = new SelectList(budgetsAsSelectItems, "Id", "Name"); List<Supplier> suppliersSelectList = new List<Supplier>() { new Supplier() { Id = -1, Name = Loc.Dic.AllSuppliersOption } }; suppliersSelectList.AddRange(suppliersRep.GetList().OrderByDescending(x => x.Name).ToList()); model.SuppliersList = new SelectList(suppliersSelectList, "Id", "Name"); List<Orders_Statuses> statusesSelectList = new List<Orders_Statuses>() { new Orders_Statuses() { Id = -1, Name = Loc.Dic.AllStatusesOption } }; statusesSelectList.AddRange(statusesRep.GetList().ToList()); model.StatusesList = new SelectList(statusesSelectList, "Id", "Name"); List<SelectListStringItem> allocationsSelectList = new List<SelectListStringItem>() { new SelectListStringItem() { Id = "-1", Name = Loc.Dic.AllAllocationsOption } }; allocationsSelectList.AddRange(allocationsRep.GetList().GroupBy(x => x.ExternalId).AsEnumerable().Select(x => new SelectListStringItem() { Id = x.First().ExternalId, Name = x.First().DisplayName }).ToList()); model.AllocationsList = new SelectList(allocationsSelectList, "Id", "Name"); } ViewBag.IsExpanding = isExpanding; ViewBag.IsCollapsed = isCollapsed; ViewBag.UserId = userId; ViewBag.StatusId = statusId; ViewBag.SupplierId = supplierId; ViewBag.HideUserField = hideUserField; ViewBag.HideStatusField = hideStatusField; ViewBag.HideSupplierField = hideSupplierField; return PartialView(model); }
public RetrieveResponse <OrdersPerStatusResponse> OrdersPerStatus(IDbConnection connection) { var response = new OrdersPerStatusResponse(); for (int i = 0; i < 12; i++) { response.labels.Add(DateTime.Now.AddMonths(-i).ToString("MMMM")); } var orderStatuses = new OrderStatusesRepository().List(connection, new ListRequest()).Entities; foreach (var orderStatus in orderStatuses) { var dataset = new OrdersPerStatusResponse.Dataset(); dataset.backgroundColor = orderStatus.BackgroundColor; dataset.borderColor = orderStatus.BackgroundColor; dataset.label = orderStatus.Name; for (int j = 0; j < 12; j++) { var firstDayOfMonth = new DateTime(DateTime.Now.AddMonths(-j).Year, DateTime.Now.AddMonths(-j).Month, 1); var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1); var orderFields = OrdersRow.Fields; var ordersRequest = new OrderListRequest(); ordersRequest.ColumnSelection = ColumnSelection.KeyOnly; ordersRequest.Criteria = (new Criteria(orderFields.OrderDate.Name) >= firstDayOfMonth & new Criteria(orderFields.OrderDate.Name) <= lastDayOfMonth & new Criteria(orderFields.OrderStatusId.Name) == orderStatus.OrderStatusId.Value & new Criteria(orderFields.IsActive.Name) == 1 & new Criteria(orderFields.NotReal.Name) == 0 ); var orders = new OrdersRepository().List(connection, ordersRequest).Entities; if (!orders.Any()) { dataset.data.Add(Decimal.Zero); continue; } var orderDetailsFields = OrderDetailsRow.Fields; var orderDetailsListRequest = new ListRequest(); orderDetailsListRequest.ColumnSelection = ColumnSelection.Details; orderDetailsListRequest.Criteria = (new Criteria(orderDetailsFields.OrderId.Name).In(orders.Select(o => o.OrderId))); var orderDetails = new OrderDetailsRepository().List(connection, orderDetailsListRequest) .Entities; var totalForMonth = Decimal.Zero; if (orderDetails.Any()) { totalForMonth = orderDetails.Select(od => od.LineTotal).Aggregate((a, b) => a + b) ?? Decimal.Zero; } dataset.data.Add(totalForMonth); } response.datasets.Add(dataset); } return(new RetrieveResponse <OrdersPerStatusResponse> { Entity = response }); }