Beispiel #1
0
        public async Task <IActionResult> ListRequisitions(IDataTablesRequest request)
        {
            var model = new RequisitionFilterModel();

            await TryUpdateModelAsync(model);

            model.IsCentralAdminOrOrderHandler = User.IsInRole(Roles.CentralAdministrator) || User.IsInRole(Roles.CentralOrderHandler);
            var brokerId = User.TryGetBrokerId();
            var customerOrganisationId = User.TryGetCustomerOrganisationId();

            model.IsBroker = brokerId.HasValue;
            if (model.IsBroker)
            {
                model.BrokerId = brokerId;
            }
            else
            {
                model.CustomerOrganisationId = customerOrganisationId;
                model.UserId        = User.GetUserId();
                model.CustomerUnits = User.TryGetAllCustomerUnits();
            }

            IQueryable <Requisition> requisitions = null;

            if (customerOrganisationId.HasValue)
            {
                requisitions = model.GetRequisitionsFromOrders(_dbContext.Orders.Select(o => o));
            }
            else if (brokerId.HasValue)
            {
                requisitions = model.GetRequisitionsFromRequests(_dbContext.Requests.Select(o => o));
            }
            else
            {
                return(Forbid());
            }
            return(AjaxDataTableHelper.GetData(request, requisitions.Count(), model.Apply(requisitions), x => x.Select(r => new RequisitionListItemModel
            {
                OrderRequestId = customerOrganisationId.HasValue ? r.Request.OrderId : r.RequestId,
                Language = r.Request.Order.OtherLanguage ?? r.Request.Order.Language.Name,
                OrderNumber = r.Request.Order.OrderNumber,
                OrderDateAndTime = $"{r.Request.Order.StartAt.ToSwedishString("yyyy-MM-dd")} {r.Request.Order.StartAt.ToSwedishString("HH\\:mm")}-{r.Request.Order.EndAt.ToSwedishString("HH\\:mm")}",
                Status = r.Status,
                BrokerName = r.Request.Ranking.Broker.Name,
                CustomerName = r.Request.Order.CustomerOrganisation.Name,
            })));
        }