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)); }
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)); }
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)); }