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