Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
            });
        }