Example #1
0
        public CalculatePriceResponseDto CalculatePrice(CalculatePriceRequestDto request)
        {
            var response = apiClient.Post <CalculatePriceResponseDto>("Pricing", null, request);

            //TODO: maybe it should return Task<CalculatePriceResponseDto> or use async/await
            return(response.Result);
        }
Example #2
0
        public PolicyPrice CalculatePolicyPrice(CalculatePriceRequestDto request)
        {
            var tariffVersion = TariffVersions.FirstOrDefault(x => x.CoverFrom <= request.PolicyStartDate && x.CoverTo >= request.PolicyStartDate);

            if (tariffVersion == null)
            {
                throw new NoValidTariffForProductAndDateException(request.ProductCode, request.PolicyStartDate);
            }

            var coverPrices = new List <CoverPrice>();


            foreach (var selectedCover in request.SelectedCovers)
            {
                var coverPrice = tariffVersion.GetCoverPrice(selectedCover, request.PolicyHolderAge);

                if (coverPrice == null)
                {
                    throw new NoPriceForGivenAgeException(selectedCover, request.PolicyHolderAge);
                }

                coverPrices.Add(coverPrice);
            }

            return(new PolicyPrice(Code, coverPrices));
        }
Example #3
0
        public Task <CreateOfferResponseDto> Handle(CreateOfferRequestDto request, CancellationToken cancellationToken)
        {
            //TODO: add request validtion

            var calculatePriceRequest = new CalculatePriceRequestDto()
            {
                PolicyHolderAge = AgeUtils.CalculateAgeFromPesel(request.PolicyHolder.Pesel),
                PolicyStartDate = request.PolicyFrom,
                ProductCode     = request.ProductCode,
                SelectedCovers  = request.SelectedCovers
            };

            var calculatePriceResponse = pricingApiFacade.CalculatePrice(calculatePriceRequest);

            var offer = new Offer(request, calculatePriceResponse);

            dbContext.Offer.Add(offer);

            dbContext.SaveChanges();

            var response = new CreateOfferResponseDto()
            {
                OfferNumber      = offer.OfferNumber,
                OfferValidityEnd = offer.ValidTo,
                TotalPrice       = offer.TotalPrice
            };

            return(Task.FromResult(response));
        }
        public async Task <CalculatePriceResponseDto> CalculatePrice([FromBody] CalculatePriceRequestDto request)
        {
            CalculatePriceResponseDto response = await mediator.Send(request);

            return(response);
        }