public async Task CreateConcertAsync()

in src/Relecloud.Web.CallCenter/Services/RelecloudApiServices/RelecloudApiConcertService.cs [31:62]


        public async Task<CreateResult> CreateConcertAsync(Concert newConcert)
        {
            await PrepareAuthenticatedClient();
            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "api/Concert");
            httpRequestMessage.Content = JsonContent.Create(newConcert);

            var httpResponseMessage = await this.httpClient.SendAsync(httpRequestMessage);
            var responseMessage = await httpResponseMessage.Content.ReadAsStringAsync();

            if (httpResponseMessage.StatusCode == HttpStatusCode.BadRequest)
            {
                var failedCreateOperation = JsonSerializer.Deserialize<CreateResult>(responseMessage, RelecloudApiConfiguration.GetSerializerOptions());
                return failedCreateOperation ?? throw new InvalidOperationException("Failed to parse response");
            }
            else if (httpResponseMessage.StatusCode != HttpStatusCode.Created)
            {
                throw new InvalidOperationException(nameof(CreateConcertAsync), new WebException(responseMessage));
            }

            var returnedConcert = JsonSerializer.Deserialize<Concert>(responseMessage, RelecloudApiConfiguration.GetSerializerOptions());

            if (returnedConcert == null)
            {
                throw new InvalidOperationException("Concert was not created successfully");
            }

            return new CreateResult
            {
                Success = true,
                NewId = returnedConcert.Id
            };
        }