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");
}
}