public async Task UpdateAsync()

in src/Relecloud.Web.CallCenter.Api/Controllers/ConcertController.cs [97:141]


        public async Task<IActionResult> UpdateAsync(Concert model)
        {
            try
            {
                var existingConcert = await this.concertRepository.GetConcertByIdAsync(model.Id);
                if (existingConcert == null)
                {
                    return NotFound();
                }
                else if (!ModelState.IsValid)
                {
                    return BadRequest(new UpdateResult
                    {
                        Success = false,
                        ErrorMessages = ModelState.ConvertToErrorMessages()
                    });
                }
                else if (model.IsVisible
                    && model.NumberOfTicketsForSale != await CountAvailableTicketsAsync(model.Id))
                {
                    return BadRequest(new UpdateResult
                    {
                        Success = false,
                        ErrorMessages = ModelState.ServerError("Cannot change count of available tickets while concert is visible")
                    });
                }
                else if (model.IsVisible && !await AreTicketsAvailableAsync(model.Id))
                {
                    return BadRequest(new UpdateResult
                    {
                        Success = false,
                        ErrorMessages = ModelState.ServerError("Cannot make a concert visible if tickets are not available for sale")
                    });
                }

                await this.concertRepository.UpdateConcertAsync(model);

                return Accepted(model);
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, "Unhandled exception from ConcertController.UpdateAsync");
                return Problem("Unable to Update the concert");
            }
        }