Exemplo n.º 1
0
        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());
        }
Exemplo n.º 3
0
        /// <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());
        }
Exemplo n.º 4
0
 public async Task <IActionResult> Merge([FromBody] AccommodationsMergeRequest request, CancellationToken cancellationToken = default)
 => NoContentOrBadRequest(await _mapperManagementClient.MergeAccommodations(request, cancellationToken));