internal async Task <OrderBaseModel> AddInformationFromListsToModel(OrderBaseModel model, int orderGroupId) { model.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForOrderGroup(orderGroupId), "Bifogade filer"); OrderCompetenceRequirement competenceFirst = null; OrderCompetenceRequirement competenceSecond = null; var competenceRequirements = _dbContext.OrderGroupCompetenceRequirements.GetOrderedCompetenceRequirementsForOrderGroup(orderGroupId).Select(r => new OrderCompetenceRequirement { CompetenceLevel = r.CompetenceLevel, Rank = r.Rank, }).ToList(); competenceRequirements = competenceRequirements.OrderBy(r => r.Rank).ToList(); competenceFirst = competenceRequirements.Count > 0 ? competenceRequirements[0] : null; competenceSecond = competenceRequirements.Count > 1 ? competenceRequirements[1] : null; model.RequestedCompetenceLevelFirst = competenceFirst?.CompetenceLevel; model.RequestedCompetenceLevelSecond = competenceSecond?.CompetenceLevel; model.OrderRequirements = _dbContext.OrderGroupRequirements.GetRequirementsForOrderGroup(orderGroupId).Select(r => new OrderRequirementModel { OrderRequirementId = r.OrderGroupRequirementId, RequirementDescription = r.Description, RequirementIsRequired = r.IsRequired, RequirementType = r.RequirementType }).ToList(); return(model); }
internal async Task <RequestGroupProcessModel> AddInformationFromListsToModel(RequestGroupProcessModel model, int userId) { int requestGroupId = model.RequestGroupId; var orderGroup = await _dbContext.OrderGroups.GetOrderGroupById(model.OrderGroupId); orderGroup.Requirements = await _dbContext.OrderGroupRequirements.GetRequirementsForOrderGroup(orderGroup.OrderGroupId).ToListAsync(); orderGroup.CompetenceRequirements = await _dbContext.OrderGroupCompetenceRequirements.GetOrderedCompetenceRequirementsForOrderGroup(orderGroup.OrderGroupId).ToListAsync(); model.RequestedCompetenceLevelFirst = orderGroup.CompetenceRequirements.SingleOrDefault(l => l.Rank == 1 || l.Rank == null)?.CompetenceLevel; model.RequestedCompetenceLevelSecond = orderGroup.CompetenceRequirements.SingleOrDefault(l => l.Rank == 2)?.CompetenceLevel; model.InterpreterAnswerModel = new InterpreterAnswerModel { RequiredRequirementAnswers = orderGroup.Requirements.Where(r => r.IsRequired).Select(r => new RequestRequirementAnswerModel { OrderRequirementId = r.OrderGroupRequirementId, IsRequired = true, Description = r.Description, RequirementType = r.RequirementType, }).ToList(), DesiredRequirementAnswers = orderGroup.Requirements.Where(r => !r.IsRequired).Select(r => new RequestRequirementAnswerModel { OrderRequirementId = r.OrderGroupRequirementId, IsRequired = false, Description = r.Description, RequirementType = r.RequirementType, }).ToList(), }; model.ExtraInterpreterAnswerModel = model.HasExtraInterpreter ? new InterpreterAnswerModel { RequiredRequirementAnswers = orderGroup.Requirements.Where(r => r.IsRequired).Select(r => new RequestRequirementAnswerModel { OrderRequirementId = r.OrderGroupRequirementId, IsRequired = true, Description = r.Description, RequirementType = r.RequirementType, }).ToList(), DesiredRequirementAnswers = orderGroup.Requirements.Where(r => !r.IsRequired).Select(r => new RequestRequirementAnswerModel { OrderRequirementId = r.OrderGroupRequirementId, IsRequired = false, Description = r.Description, RequirementType = r.RequirementType, }).ToList(), } : null; model.Dialect = orderGroup.Requirements.Any(r => r.RequirementType == RequirementType.Dialect) ? orderGroup.Requirements.Single(r => r.RequirementType == RequirementType.Dialect)?.Description : string.Empty; var views = await _dbContext.RequestGroupViews.GetActiveViewsForRequestGroup(requestGroupId).ToListAsync(); model.ViewedByUser = views.Any(rv => rv.ViewedBy != userId) ? views.First(rv => rv.ViewedBy != userId).ViewedByUser.FullName + " håller också på med denna förfrågan" : string.Empty; model.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForOrderGroup(orderGroup.OrderGroupId), "Bifogade filer"); return(model); }
internal async Task <ReplaceOrderModel> AddInformationFromListsToModel(ReplaceOrderModel model) { int id = model.ReplacingOrderId; //LISTS await GetOrderBaseLists(model, await _dbContext.OrderInterpreterLocation.GetOrderedInterpreterLocationsForOrder(id).ToListAsync(), id); model.AttachmentListModel = await AttachmentListModel.GetEditableModelFromList(_dbContext.Attachments.GetAttachmentsForOrder(model.ReplacingOrderId), string.Empty, "Möjlighet att bifoga filer som kan vara relevanta vid tillsättning av tolk"); model.Files = model.AttachmentListModel.Files.Any() ? model.AttachmentListModel.Files : null; return(model); }
internal async Task <RequisitionViewModel> AddInformationFromListsToModel(RequisitionViewModel model) { var requisitions = await _dbContext.Requisitions.GetRequisitionsForRequest(model.RequestId).ToListAsync(); var viewedRequisition = requisitions.SingleOrDefault(r => r.RequisitionId == model.RequisitionId); viewedRequisition.RequisitionStatusConfirmations = await _dbContext.RequisitionStatusConfirmations.GetRequisitionStatusConfirmationsForRequisition(viewedRequisition.RequisitionId).ToListAsync(); model.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForRequisition(viewedRequisition.RequisitionId), "Bifogade filer"); model.CanProcess = viewedRequisition.ProcessAllowed; model.CanConfirmNoReview = viewedRequisition.CofirmNoReviewAllowed; model.CanReplaceRequisition = requisitions.All(r => r.Status == RequisitionStatus.Commented) && requisitions.OrderBy(r => r.CreatedAt).Last().RequisitionId == viewedRequisition.RequisitionId; viewedRequisition.PriceRows = await _dbContext.RequisitionPriceRows.GetPriceRowsForRequisition(viewedRequisition.RequisitionId).ToListAsync(); viewedRequisition.MealBreaks = await _dbContext.MealBreaks.GetMealBreksForRequisition(viewedRequisition.RequisitionId).ToListAsync(); model.ResultPriceInformationModel = PriceInformationModel.GetPriceinformationToDisplayForRequisition(viewedRequisition, false); model.RequestPriceInformationModel = PriceInformationModel.GetPriceinformationToDisplay(await _dbContext.RequestPriceRows.GetPriceRowsForRequest(model.RequestId).ToListAsync(), PriceInformationType.Request, mealBreakIncluded: model.MealBreakIncluded ?? false, description: "Om rekvisitionen innehåller ersättning för bilersättning och traktamente kan förmedlingen komma att debitera påslag för sociala avgifter för de tolkar som inte är registrerade för F-skatt"); if (requisitions.Count < 2) { return(null); } var previousRequisition = requisitions .Where(r => r.Status == RequisitionStatus.Commented || r.Status == RequisitionStatus.DeniedByCustomer) .OrderByDescending(r => r.CreatedAt) .First(); model.PreviousRequisitionView = RequisitionViewModel.GetPreviousRequisitionView(previousRequisition.Request); model.PreviousRequisitionView.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForRequisition(previousRequisition.RequisitionId), "Bifogade filer"); previousRequisition.PriceRows = await _dbContext.RequisitionPriceRows.GetPriceRowsForRequisition(previousRequisition.RequisitionId).ToListAsync(); previousRequisition.MealBreaks = await _dbContext.MealBreaks.GetMealBreksForRequisition(previousRequisition.RequisitionId).ToListAsync(); model.PreviousRequisitionView.ResultPriceInformationModel = PriceInformationModel.GetPriceinformationToDisplayForRequisition(previousRequisition, false); model.PreviousRequisitionView.RequestPriceInformationModel = model.RequestPriceInformationModel; model.RelatedRequisitions = requisitions .OrderBy(r => r.CreatedAt) .Select(r => r.RequisitionId) .ToList(); return(model); }
public async Task <IActionResult> View(int id) { var request = await _dbContext.Requests.GetRequestForInterpretertById(id); request.Requisitions = await _dbContext.Requisitions.GetRequisitionsForRequest(request.RequestId).ToListAsync(); request.Order.InterpreterLocations = await _dbContext.OrderInterpreterLocation.GetOrderedInterpreterLocationsForOrder(request.OrderId).ToListAsync(); request.PriceRows = await _dbContext.RequestPriceRows.GetPriceRowsForRequest(request.RequestId).ToListAsync(); var model = AssignmentModel.GetModelFromRequest(request, _clock.SwedenNow); model.RequestAttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForRequest(request.RequestId, request.RequestGroupId), "Bifogade filer från förmedling"); model.OrderAttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForOrderAndGroup(request.OrderId, request.Order.OrderGroupId), "Bifogade filer från myndighet"); if ((await _authorizationService.AuthorizeAsync(User, request, Policies.View)).Succeeded) { return(View(AssignmentModel.GetModelFromRequest(request, _clock.SwedenNow))); } return(Forbid()); }
internal async Task <OrderViewModel> AddInformationFromListsToModel(OrderViewModel model) { int id = model.OrderId.Value; //Lists var orderStatusConfirmations = await _dbContext.OrderStatusConfirmation.GetStatusConfirmationsForOrder(id).ToListAsync(); model.HasNoBrokerAcceptedConfirmation = orderStatusConfirmations.Any(os => os.OrderStatus == OrderStatus.NoBrokerAcceptedOrder); model.HasResponseNotAnsweredByCreatorConfirmation = orderStatusConfirmations.Any(os => os.OrderStatus == OrderStatus.ResponseNotAnsweredByCreator); //Locations var interpreterLocations = await _dbContext.OrderInterpreterLocation.GetOrderedInterpreterLocationsForOrder(id).ToListAsync(); await GetOrderBaseLists(model, interpreterLocations, id); if (model.UseAttachments) { model.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForOrderAndGroup(id, model.OrderGroupId), "Bifogade filer från myndighet"); } model.PreviousRequests = await BrokerListModel.GetFromList(_dbContext.Requests.GetLostRequestsForOrder(id)); model.OrderCalculatedPriceInformationModel = PriceInformationModel.GetPriceinformationToDisplay(await _dbContext.OrderPriceRows.GetPriceRowsForOrder(id).ToListAsync(), PriceInformationType.Order, mealBreakIncluded: model.MealbreakIncluded); model.Dialect = model.OrderRequirements.SingleOrDefault(r => r.RequirementType == RequirementType.Dialect)?.RequirementDescription; if (model.RequestId.HasValue) { var requestStatusConfirmations = await _dbContext.RequestStatusConfirmation.GetStatusConfirmationsForRequest(model.RequestId.Value).ToListAsync(); model.HasCancelledByBrokerConfirmation = requestStatusConfirmations.Any(rs => rs.RequestStatus == RequestStatus.CancelledByBroker); model.HasNoRequisitionConfirmation = requestStatusConfirmations.Any(rs => rs.RequestStatus == RequestStatus.Approved); model.HasDeniedByCreatorConfirmation = requestStatusConfirmations.Any(rs => rs.RequestStatus == RequestStatus.DeniedByCreator); model.HasResponseNotAnsweredByCreatorBrokerConfirmation = requestStatusConfirmations.Any(rs => rs.RequestStatus == RequestStatus.ResponseNotAnsweredByCreator); model.HasCancelledByCreatorWhenApprovedConfirmation = requestStatusConfirmations.Any(rs => rs.RequestStatus == RequestStatus.CancelledByCreatorWhenApproved); model.ActiveRequestPriceInformationModel = PriceInformationModel.GetPriceinformationToDisplay(await _dbContext.RequestPriceRows.GetPriceRowsForRequest(model.RequestId.Value).ToListAsync(), PriceInformationType.Request, mealBreakIncluded: model.MealbreakIncluded); model.RequestAttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForRequest(model.RequestId.Value, model.RequestGroupId), "Bifogade filer från förmedling"); var requestChecks = await _dbContext.Requests .Where(r => r.RequestId == model.RequestId.Value) .Select(r => new { LatestComplaintId = r.Complaints.Max(c => (int?)c.ComplaintId), LatestRequisitionId = r.Requisitions.Max(req => (int?)req.RequisitionId), HasActiveRequisitions = r.Requisitions.Any(req => req.Status == RequisitionStatus.Reviewed || req.Status == RequisitionStatus.Created), HasComplaints = r.Complaints.Any(), }).SingleAsync(); model.HasComplaints = requestChecks.HasComplaints; model.ComplaintId = requestChecks.LatestComplaintId; model.RequisitionId = requestChecks.LatestRequisitionId; model.HasActiveRequisitions = requestChecks.HasActiveRequisitions; model.ActiveRequest.RequirementAnswers = await RequestRequirementAnswerModel.GetFromList(_dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForRequest(model.RequestId.Value)); //just for broker var orderChanges = await _dbContext.OrderChangeLogEntries.GetOrderChangeLogEntitesForOrder(id).Where(oc => oc.BrokerId == model.ActiveRequest.BrokerId && oc.OrderChangeLogType != OrderChangeLogType.ContactPerson && oc.OrderChangeConfirmation == null).ToListAsync(); model.ConfirmedOrderChangeLogEntries = orderChanges.Select(oc => oc.OrderChangeLogEntryId).ToList(); if (orderChanges.Any() && (model.ActiveRequest.Status == RequestStatus.Approved || model.ActiveRequest.Status == RequestStatus.AcceptedNewInterpreterAppointed) && model.StartAtIsInFuture) { model.DisplayOrderChangeText = await GetOrderChangeTextToDisplay(model.ActiveRequest.BrokerId, interpreterLocations, model.InterpreterLocationAnswer, orderChanges, model.Description, model.UnitName, model.InvoiceReference, model.CustomerReferenceNumber); } if (model.ReplacedByOrderId.HasValue) { var request = await _dbContext.Requests.GetLastRequestWithRankingForOrder(model.ReplacedByOrderId.Value); if (request.Ranking.BrokerId == model.ActiveRequest.BrokerId) { model.ActiveRequest.ReplacedByOrderRequestId = request.RequestId; } } if (model.ReplacingOrderId.HasValue) { model.ActiveRequest.ReplacingOrderRequestId = (await _dbContext.Requests.GetLastRequestForOrder(model.ReplacingOrderId.Value)).RequestId; } //end just for broker } return(model); }
internal async Task <RequestGroupViewModel> AddInformationFromListsToModel(RequestGroupViewModel model) { model.AttachmentListModel = await AttachmentListModel.GetReadOnlyModelFromList(_dbContext.Attachments.GetAttachmentsForRequestGroup(model.RequestGroupId), "Bifogade filer"); return(model); }