private PriceInformationModel GetPriceinformationOrderToDisplay(Request request, List <CompetenceAndSpecialistLevel> requestedCompetenceLevels) { return(new PriceInformationModel { MealBreakIsNotDetucted = request.Order.MealBreakIncluded ?? false, PriceInformationToDisplay = PriceCalculationService.GetPriceInformationToDisplay( _priceCalculationService.GetPrices(request, OrderService.SelectCompetenceLevelForPriceEstimation(requestedCompetenceLevels), null).PriceRows), Header = "Beräknat pris enligt bokningsförfrågan", UseDisplayHideInfo = true }); }
public async Task <RequestDetailsResponse> GetResponseFromRequest(Request request, bool getAttachments = true) { if (request == null) { return(null); } request.RequirementAnswers = await _dbContext.OrderRequirementRequestAnswer.GetRequirementAnswersForRequest(request.RequestId).ToListAsync(); request.PriceRows = await _dbContext.RequestPriceRows.GetPriceRowsForRequest(request.RequestId).ToListAsync(); request.Order.Requirements = await _dbContext.OrderRequirements.GetRequirementsForOrder(request.OrderId).ToListAsync(); request.Order.InterpreterLocations = await _dbContext.OrderInterpreterLocation.GetOrderedInterpreterLocationsForOrder(request.OrderId).ToListAsync(); request.Order.CompetenceRequirements = await _dbContext.OrderCompetenceRequirements.GetOrderedCompetenceRequirementsForOrder(request.OrderId).ToListAsync(); var priceRows = _priceCalculationService.GetPrices(request, (CompetenceAndSpecialistLevel)request.Order.PriceCalculatedFromCompetenceLevel, null).PriceRows.ToList(); var calculationCharges = _dbContext.PriceCalculationCharges.GetPriceCalculationChargesByIds(priceRows.Where(p => p.PriceCalculationChargeId.HasValue).Select(p => p.PriceCalculationChargeId.Value).ToList()); priceRows.Where(p => p.PriceCalculationChargeId.HasValue).ToList().ForEach(p => p.PriceCalculationCharge = new PriceCalculationCharge { ChargePercentage = calculationCharges.Where(c => c.PriceCalculationChargeId == p.PriceCalculationChargeId).FirstOrDefault().ChargePercentage }); var attachments = getAttachments ? GetAttachments(request) : Enumerable.Empty <AttachmentInformationModel>(); return(new RequestDetailsResponse { Status = request.Status.GetCustomName(), StatusMessage = request.DenyMessage ?? request.CancelMessage, CreatedAt = request.CreatedAt, OrderNumber = request.Order.OrderNumber, BrokerReferenceNumber = request.BrokerReferenceNumber, CustomerInformation = new CustomerInformationModel { Name = request.Order.CustomerOrganisation.Name, Key = request.Order.CustomerOrganisation.OrganisationPrefix, OrganisationNumber = request.Order.CustomerOrganisation.OrganisationNumber, PeppolId = request.Order.CustomerOrganisation.PeppolId, ContactName = request.Order.CreatedByUser.FullName, ContactPhone = request.Order.ContactPhone, ContactEmail = request.Order.ContactEmail, InvoiceReference = request.Order.InvoiceReference, PriceListType = request.Order.CustomerOrganisation.PriceListType.GetCustomName(), TravelCostAgreementType = request.Order.CustomerOrganisation.TravelCostAgreementType.GetCustomName(), ReferenceNumber = request.Order.CustomerReferenceNumber, UnitName = request.Order.CustomerUnit?.Name, DepartmentName = request.Order.UnitName, UseSelfInvoicingInterpreter = _cacheService.CustomerSettings.Any(c => c.CustomerOrganisationId == request.Order.CustomerOrganisationId && c.UsedCustomerSettingTypes.Any(cs => cs == CustomerSettingType.UseSelfInvoicingInterpreter)) }, Region = request.Order.Region.Name, ExpiresAt = request.ExpiresAt, Language = new LanguageModel { Key = request.Order.Language?.ISO_639_Code, Description = request.Order.OtherLanguage ?? request.Order.Language.Name, }, StartAt = request.Order.StartAt, EndAt = request.Order.EndAt, Locations = request.Order.InterpreterLocations.Select(l => new LocationModel { OffsiteContactInformation = l.OffSiteContactInformation, Street = l.Street, City = l.City, Rank = l.Rank, Key = l.InterpreterLocation.GetCustomName() }), CompetenceLevels = request.Order.CompetenceRequirements.Select(c => new CompetenceModel { Key = c.CompetenceLevel.GetCustomName(), Rank = c.Rank ?? 0 }), CompetenceLevelsAreRequired = request.Order.SpecificCompetenceLevelRequired, AllowMoreThanTwoHoursTravelTime = request.Order.AllowExceedingTravelCost == AllowExceedingTravelCost.YesShouldBeApproved || request.Order.AllowExceedingTravelCost == AllowExceedingTravelCost.YesShouldNotBeApproved, CreatorIsInterpreterUser = request.Order.CreatorIsInterpreterUser, MealBreakIncluded = request.Order.MealBreakIncluded, Description = request.Order.Description, AssignmentType = request.Order.AssignmentType.GetCustomName(), Attachments = attachments, Requirements = request.Order.Requirements.Select(r => new RequirementModel { Description = r.Description, IsRequired = r.IsRequired, RequirementId = r.OrderRequirementId, RequirementType = r.RequirementType.GetCustomName() }), CalculatedPriceInformationFromRequest = priceRows.GetPriceInformationModel(request.Order.PriceCalculatedFromCompetenceLevel.GetCustomName(), request.Ranking.BrokerFee), CalculatedPriceInformationFromAnswer = request.PriceRows.Any() ? request.PriceRows.GetPriceInformationModel(((CompetenceAndSpecialistLevel)request.CompetenceLevel).GetCustomName(), request.Ranking.BrokerFee) : null, Interpreter = request.Interpreter != null ? new InterpreterModel { InterpreterId = request.Interpreter.InterpreterBrokerId, Email = request.Interpreter.Email, FirstName = request.Interpreter.FirstName, LastName = request.Interpreter.LastName, OfficialInterpreterId = request.Interpreter.OfficialInterpreterId, PhoneNumber = request.Interpreter.PhoneNumber, InterpreterInformationType = EnumHelper.GetCustomName(InterpreterInformationType.ExistingInterpreter) } : null, InterpreterLocation = request.InterpreterLocation.HasValue ? EnumHelper.GetCustomName((InterpreterLocation)request.InterpreterLocation) : null, InterpreterCompetenceLevel = request.CompetenceLevel.HasValue ? EnumHelper.GetCustomName((CompetenceAndSpecialistLevel)request.CompetenceLevel) : null, ExpectedTravelCosts = request.PriceRows.FirstOrDefault(pr => pr.PriceRowType == PriceRowType.TravelCost)?.Price ?? 0, ExpectedTravelCostInfo = request.ExpectedTravelCostInfo, RequirementAnswers = request.RequirementAnswers .Select(r => new RequirementAnswerModel { Answer = r.Answer, CanMeetRequirement = r.CanSatisfyRequirement, RequirementId = r.OrderRequirementId }), }); }