public Task Set(Guid searchId, Guid resultId, Guid roomContractSetId, DataWithMarkup <RoomContractSetAvailability> availability,
                        Suppliers supplier)
        {
            var key        = BuildKey(searchId, resultId, roomContractSetId);
            var dataToSave = SupplierData.Create(supplier, availability);

            return(_doubleFlow.SetAsync(key, dataToSave, CacheExpirationTime));
        }
Exemplo n.º 2
0
        public async Task <DataWithMarkup <TDetails> > ApplyMarkups <TDetails>(AgentContext agent, TDetails details,
                                                                               Func <TDetails, PriceProcessFunction, ValueTask <TDetails> > priceProcessFunc)
        {
            var markup = await _markupService.Get(agent, MarkupPolicyTarget.AccommodationAvailability);

            var responseWithMarkup = await priceProcessFunc(details, markup.Function);

            var ceiledResponse = await priceProcessFunc(responseWithMarkup, price =>
                                                        new ValueTask <MoneyAmount>(MoneyRounder.Ceil(price)));

            return(DataWithMarkup.Create(ceiledResponse, markup.Policies));
        }
Exemplo n.º 3
0
        public Task Set(Guid searchId, Guid roomContractSetId, string htId, DataWithMarkup <RoomContractSetAvailability> availability, Deadline agentDeadline,
                        Deadline supplierDeadline, CreditCardRequirement?cardRequirement, string supplierAccommodationCode, AvailabilityRequest availabilityRequest)
        {
            var accommodation       = availability.Data.Accommodation;
            var key                 = BuildKey(searchId, htId, roomContractSetId);
            var roomSetAvailability = availability.Data;
            var location            = accommodation.Location;

            var bookingAvailabilityInfo = new BookingAvailabilityInfo(
                accommodationId: supplierAccommodationCode,
                accommodationName: accommodation.Name,
                accommodationInfo: new AccommodationInfo(accommodation.Photo),
                roomContractSet: roomSetAvailability.RoomContractSet,
                zoneName: location.LocalityZone,
                localityName: location.Locality,
                countryName: location.Country,
                countryCode: location.CountryCode,
                address: location.Address,
                coordinates: location.Coordinates,
                checkInDate: roomSetAvailability.CheckInDate,
                checkOutDate: roomSetAvailability.CheckOutDate,
                numberOfNights: roomSetAvailability.NumberOfNights,
                supplier: availability.Data.RoomContractSet.Supplier.Value,
                appliedMarkups: availability.AppliedMarkups,
                convertedSupplierPrice: availability.ConvertedSupplierPrice,
                originalSupplierPrice: availability.OriginalSupplierPrice,
                availabilityId: roomSetAvailability.AvailabilityId,
                htId: htId,
                availablePaymentTypes: roomSetAvailability.AvailablePaymentMethods,
                isDirectContract: roomSetAvailability.RoomContractSet.IsDirectContract,
                agentDeadline: agentDeadline,
                supplierDeadline: supplierDeadline,
                cardRequirement: cardRequirement,
                availabilityRequest: availabilityRequest);

            return(_doubleFlow.SetAsync(key, bookingAvailabilityInfo, CacheExpirationTime));
        }