public IActionResult Post([FromBody] PopulateTemplate populateTemplate) { var currentUser = CurrentUser(); try { // Attempt to find an existing template to replace. var existingTemplate = _context.PopulateTemplates .Where(t => t.OrganizationId == currentUser.OrganizationId) .Where(t => t.RateType == populateTemplate.RateType) .Where(t => t.Name == populateTemplate.Name) .FirstOrDefault(); if (existingTemplate != null) { // Update the existing template. existingTemplate.Template = populateTemplate.Template; // Validate the model. ModelState.ClearValidationState(nameof(existingTemplate)); if (!TryValidateModel(existingTemplate, nameof(existingTemplate))) { return(BadRequest()); } _context.SaveChanges(); return(Ok(existingTemplate)); } else { // Set defaults for the new template. populateTemplate.CreatedAt = DateTime.UtcNow; populateTemplate.OrganizationId = currentUser.OrganizationId; // Validate the model. ModelState.ClearValidationState(nameof(populateTemplate)); if (!TryValidateModel(populateTemplate, nameof(populateTemplate))) { return(BadRequest()); } _context.PopulateTemplates.Add(populateTemplate); _context.SaveChanges(); return(Ok(populateTemplate)); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <PopulateTemplate> SavePopulateTemplateAsync(PopulateTemplate populateTemplate) { using (var request = new HttpRequestMessage(HttpMethod.Post, "api/PopulateTemplates")) { var payload = new Dictionary <string, object>() { { "Name", populateTemplate.Name }, { "Template", populateTemplate.Template }, { "RateType", populateTemplate.RateType } }; var json = JsonSerializer.Serialize(payload, options); using (var stringContent = new StringContent(json, Encoding.UTF8, "application/json")) { request.Content = stringContent; using (var response = await _apiService .GetHttpClient() .SendAsync(request, HttpCompletionOption.ResponseHeadersRead) .ConfigureAwait(false)) { if (response.IsSuccessStatusCode) { using var responseContent = await response.Content.ReadAsStreamAsync(); if (response.StatusCode == HttpStatusCode.NoContent) { return(null); } else { var deserialized = await JsonSerializer.DeserializeAsync <PopulateTemplate>(responseContent, options); return(deserialized); } } else { return(null); } } } } }