Example #1
0
        /// <inheritdoc/>
        public async Task PublishAreaAsync(AreaMatch areaMatch, CancellationToken cancellationToken = default)
        {
            // Validate inputs
            if (areaMatch == null)
            {
                throw new ArgumentNullException(nameof(areaMatch));
            }

            RequestValidationResult validationResult = areaMatch.Validate();

            if (validationResult.Passed)
            {
                // Build a MatchMessage containing the submitted areas
                MatchMessage message = new MatchMessage();
                message.AreaMatches.Add(areaMatch);

                // Define a regions for the published message
                IEnumerable <Region> messageRegions = RegionHelper.GetRegionsCoverage(areaMatch.Areas, this.RegionPrecision);

                // Publish
                await this._messageRepo.InsertAsync(message, messageRegions, cancellationToken);
            }
            else
            {
                throw new RequestValidationFailedException(validationResult);
            }
        }