コード例 #1
0
        private async Task <Result> SaveAccommodationManualCorrection(string htAccommodationId,
                                                                      AccommodationManualCorrectionRequest accommodationManualCorrectionRequest, CancellationToken cancellationToken)
        {
            var(_, isFailure, accommodationId, error) = AccommodationIdRetriever.RetrieveId(htAccommodationId);
            if (isFailure)
            {
                return(Result.Failure(error));
            }

            var accommodation = await _context.Accommodations.SingleOrDefaultAsync(ac => ac.Id == accommodationId, cancellationToken);

            if (accommodation == default)
            {
                return(Result.Failure($"Accommodation with {nameof(htAccommodationId)} {htAccommodationId} does not exist."));
            }

            accommodation.AccommodationWithManualCorrections = MultilingualAccommodationConverter.Convert(accommodationManualCorrectionRequest);
            accommodation.Modified    = DateTimeOffset.UtcNow;
            accommodation.IsCorrected = false;

            _context.Update(accommodation);
            await _context.SaveChangesAsync(cancellationToken);

            return(Result.Success());
        }
コード例 #2
0
    public static MultilingualAccommodation Convert(AccommodationManualCorrectionRequest manualCorrectionRequest)
    {
        var photos = manualCorrectionRequest.Photos
                     .Select(p => new EdoContracts.Accommodations.Internals.ImageInfo(p.SourceUrl, p.Caption))
                     .ToList();

        var textualDescriptions = manualCorrectionRequest.TextualDescriptions
                                  .Select(t => new EdoContracts.Accommodations.Internals.MultilingualTextualDescription(
                                              (EdoContracts.Accommodations.Enums.TextualDescriptionTypes)Enum.Parse(typeof(TextualDescriptionTypes),
                                                                                                                    t.Type.ToString()), t.Description))
                                  .ToList();

        var rating = (EdoContracts.Accommodations.Enums.AccommodationRatings)Enum.Parse(typeof(AccommodationRatings),
                                                                                        manualCorrectionRequest.Rating.ToString());

        return(new(
                   supplierCode : string.Empty,
                   name : manualCorrectionRequest.Name,
                   accommodationAmenities : manualCorrectionRequest.AccommodationAmenities,
                   additionalInfo : manualCorrectionRequest.AdditionalInfo,
                   category : manualCorrectionRequest.Category,
                   contacts : GetContactInfo(manualCorrectionRequest.Contacts),
                   location : GetLocationInfo(manualCorrectionRequest.Location),
                   photos : photos,
                   rating : rating,
                   schedule : GetScheduleInfo(manualCorrectionRequest.Schedule),
                   textualDescriptions : textualDescriptions,
                   // Default value will change when will be changed Data format (AA- 1410)
                   type : PropertyTypes.Hotels,
                   // Default value will change when will be changed Data format (AA- 1410)
                   isActive : default,
コード例 #3
0
 public Task <Result> AddManualCorrection(string htAccommodationId, AccommodationManualCorrectionRequest accommodationManualCorrectionRequest,
                                          CancellationToken cancellationToken)
 {
     return(Result.Success()
            .BindWithTransaction(_context, ()
                                 => SaveAccommodationManualCorrection(htAccommodationId, accommodationManualCorrectionRequest, cancellationToken)
                                 .Tap(() => _context.DetachAll())
                                 .Bind(() => _accommodationDataCorrectionService.Correct(htAccommodationId))));
 }
コード例 #4
0
        public async Task <IActionResult> AddManualCorrectionToAccommodation(string htAccommodationId, AccommodationManualCorrectionRequest accommodationManualCorrectionRequest,
                                                                             CancellationToken cancellationToken)
        {
            var(_, isFailure, error) =
                await _manualCorrectionService.AddManualCorrection(htAccommodationId, accommodationManualCorrectionRequest, cancellationToken);

            if (isFailure)
            {
                return(BadRequestWithProblemDetails(error));
            }

            return(NoContent());
        }