public async Task <Result <Unit, ProblemDetails> > MergeAccommodations(AccommodationsMergeRequest accommodationsMergeRequest, CancellationToken cancellationToken = default) { using var requestContent = new StringContent(JsonSerializer.Serialize(accommodationsMergeRequest), Encoding.UTF8, "application/json"); var requestUri = "api/1.0/admin/accommodations/merge"; return(await Post(requestUri, requestContent, cancellationToken : cancellationToken)); }
public async Task <IActionResult> Merge([FromBody] AccommodationsMergeRequest request, CancellationToken cancellationToken = default) { var(_, isFailure, error) = await _accommodationMergingService.Merge(request, cancellationToken); if (isFailure) { return(BadRequestWithProblemDetails(error)); } return(Ok()); }
/// <summary> /// Combines accommodation to the accommodation with baseHtAccommodationId. /// /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <Result> Merge(AccommodationsMergeRequest request, CancellationToken cancellationToken = default) { var baseHtAccommodationId = request.BaseHtAccommodationId; var htAccommodationIdToMerge = request.HtAccommodationIdToMerge; var baseAccommodationIdResult = AccommodationIdRetriever.RetrieveId(baseHtAccommodationId); if (baseAccommodationIdResult.IsFailure) { return(Result.Failure(baseAccommodationIdResult.Error)); } var accommodationIdToMergeResult = AccommodationIdRetriever.RetrieveId(htAccommodationIdToMerge); if (accommodationIdToMergeResult.IsFailure) { return(Result.Failure(accommodationIdToMergeResult.Error)); } var baseAccommodationId = baseAccommodationIdResult.Value; var accommodationIdToMerge = accommodationIdToMergeResult.Value; var(_, isFailure, error) = await Merge(baseAccommodationId, accommodationIdToMerge); if (isFailure) { return(Result.Failure(error)); } await AddOrUpdateMappings(baseAccommodationId, accommodationIdToMerge); var uncertainMatch = await _context.AccommodationUncertainMatches .Where(um => um.IsActive && (um.SourceHtId == baseAccommodationId && um.HtIdToMerge == accommodationIdToMerge || um.HtIdToMerge == baseAccommodationId && um.SourceHtId == accommodationIdToMerge)) .FirstOrDefaultAsync(cancellationToken); if (uncertainMatch != default) { uncertainMatch.IsActive = false; _context.Update(uncertainMatch); } await _context.SaveChangesAsync(cancellationToken); await _accommodationChangePublisher.PublishRemoved(accommodationIdToMerge); await _accommodationChangeLogCollectorService.SaveCollectedEventLogs(cancellationToken); return(Result.Success()); }
public async Task <IActionResult> Merge([FromBody] AccommodationsMergeRequest request, CancellationToken cancellationToken = default) => NoContentOrBadRequest(await _mapperManagementClient.MergeAccommodations(request, cancellationToken));