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() }); }