Exemplo n.º 1
0
        private OrderGridViewModel GetOrderGridViewModel()
        {
            var orders = UserItem.Role.Code == RoleCode.ADMIN ?
                         UnitOfWork.OrderRepository.GetAll()
                         .Include(o => o.OrderDetails)
                         .Where(o => !o.IsArchived)
                         .OrderByDescending(o => o.CreateTime)
                         .AsNoTracking()
                         .ToList() :
                         UnitOfWork.OrderRepository.GetAll()
                         .Include(o => o.OrderDetails)
                         .Include(o => o.Status)
                         .Where(o => o.UserID == UserItem.ID && !o.IsArchived)
                         .OrderByDescending(o => o.CreateTime)
                         .AsNoTracking()
                         .ToList();


            return(new OrderGridViewModel
            {
                ListUrl = Url.RouteUrl("OrderGrid"),
                DeleteUrl = Url.RouteUrl("OrdersDelete"),
                ShowUserColumn = UserItem.Role.Code == RoleCode.ADMIN,
                IsAllowedToChangeStatus = UserItem.Role.Code == RoleCode.ADMIN,
                IsAllowedToDeleteOrder = UserItem.HasUserPermission(Url.RouteUrl("OrdersDelete")),
                GridItems = orders.Select(o => new OrderGridItem
                {
                    ID = o.ID,
                    Firstname = o.Firstname,
                    Lastname = o.Lastname,
                    Address = o.Address,
                    Mobile = o.Mobile,
                    StatusID = o.StatusID,
                    UserID = o.UserID,
                    TotalPrice = $"{o.OrderDetails.Sum(od => od.Price):0.00}",
                    Note = o.Note,
                    DeliveryTime = o.DeliveryTime?.ToString(Resources.FormatDate),
                    CreateTime = o.CreateTime?.ToString(Resources.FormatDate),

                    IsAllowedToEditOrder = (UserItem.Role.Code == RoleCode.ADMIN) || UserItem.Role.Code != RoleCode.ADMIN && o.Status.IntCode == OrderStatus.PENDING,

                    EdutUrl = Url.RouteUrl("OrdersEdit", new { ID = o.ID }),
                    PaperUrl = Url.RouteUrl("OrderPaper", new { orderID = o.ID }),
                    StatusUpdateUrl = Url.RouteUrl("OrderStatusUpdate", new { orderID = o.ID })
                }).ToList(),

                Users = UnitOfWork.UserRepository.GetAll().ToList().Select(u => new SimpleKeyValue <int?, string>
                {
                    Key = u.ID,
                    Value = $"{u.Firstname} {u.Lastname}"
                }).ToList(),
                Statuses = UnitOfWork.DictionaryRepository.GetAll(1, 1).Select(s => new SimpleKeyValue <int?, string>
                {
                    Key = s.ID,
                    Value = s.Caption
                }).ToList()
            });
        }