Example #1
0
        public static SingleAccommodationAvailability Process(SingleAccommodationAvailability accommodationAvailability, CancellationPolicyProcessSettings settings)
        {
            var processedRoomContractSets = RoomContractSetPolicyProcessor.Process(accommodationAvailability.RoomContractSets,
                                                                                   accommodationAvailability.CheckInDate,
                                                                                   settings);

            return(SetRoomContractSets(accommodationAvailability, processedRoomContractSets));
        public SingleAccommodationAvailability AlignPrices(SingleAccommodationAvailability source)
        {
            var roomContractSets = RoomContractSetPriceProcessor.AlignPrices(source.RoomContractSets);

            return(new SingleAccommodationAvailability(availabilityId: source.AvailabilityId,
                                                       checkInDate: source.CheckInDate,
                                                       roomContractSets: roomContractSets,
                                                       htId: source.HtId,
                                                       countryHtId: source.CountryHtId,
                                                       localityHtId: source.LocalityHtId));
        }
        public async Task <SingleAccommodationAvailability> ApplyMarkups(SingleAccommodationAvailability response, AgentContext agent)
        {
            var convertedRoomContractSets = new List <RoomContractSet>(response.RoomContractSets.Count);
            var subjectInfo = agent.ToMarkupSubjectInfo();

            foreach (var roomContractSet in response.RoomContractSets)
            {
                var convertedRoomContractSet = await _priceProcessor.ApplyMarkups(subjectInfo,
                                                                                  roomContractSet,
                                                                                  async (rcs, function) => await RoomContractSetPriceProcessor.ProcessPrices(rcs, function),
                                                                                  _ => GetMarkupDestinationInfo(response));

                convertedRoomContractSets.Add(convertedRoomContractSet);
            }

            return(new SingleAccommodationAvailability(availabilityId: response.AvailabilityId,
                                                       checkInDate: response.CheckInDate,
                                                       roomContractSets: convertedRoomContractSets,
                                                       htId: response.HtId,
                                                       countryHtId: response.CountryHtId,
                                                       localityHtId: response.LocalityHtId));
        }
 private static MarkupDestinationInfo GetMarkupDestinationInfo(SingleAccommodationAvailability availability)
 => new()
        public async Task <Result <SingleAccommodationAvailability, ProblemDetails> > ConvertCurrencies(SingleAccommodationAvailability availabilityDetails)
        {
            var convertedRoomContractSets = new List <RoomContractSet>(availabilityDetails.RoomContractSets.Count);

            foreach (var roomContractSet in availabilityDetails.RoomContractSets)
            {
                var(_, isFailure, convertedRoomContractSet, error) = await _priceProcessor.ConvertCurrencies(roomContractSet,
                                                                                                             async (rcs, function) => await RoomContractSetPriceProcessor.ProcessPrices(rcs, function),
                                                                                                             GetCurrency);

                if (isFailure)
                {
                    return(Result.Failure <SingleAccommodationAvailability, ProblemDetails>(error));
                }

                convertedRoomContractSets.Add(convertedRoomContractSet);
            }

            return(new SingleAccommodationAvailability(availabilityId: availabilityDetails.AvailabilityId,
                                                       checkInDate: availabilityDetails.CheckInDate,
                                                       roomContractSets: convertedRoomContractSets,
                                                       htId: availabilityDetails.HtId,
                                                       countryHtId: availabilityDetails.CountryHtId,
                                                       localityHtId: availabilityDetails.LocalityHtId));
        }
Example #6
0
        public Task SaveResult(Guid searchId, string htId, SingleAccommodationAvailability details, Suppliers supplier)
        {
            var keyPrefix = BuildKeyPrefix(searchId, htId);

            return(_storage.Save(keyPrefix, details, supplier));
        }