public async Task <IActionResult> Create([FromBody] JObject jsonObject) { var requestId = Guid.NewGuid().ToString(); _logger.LogInformation($"RequestID:{requestId} - Template_Create called."); try { if (jsonObject == null) { _logger.LogError($"RequestID:{requestId} - Template_Create error: null"); var errorResponse = JsonErrorResponse.BadRequest($"Template_Create error: null", requestId); return(BadRequest(errorResponse)); } var modelObject = JsonConvert.DeserializeObject <TemplateViewModel>(jsonObject.ToString(), new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }); if (!(_templateService.ProcessCheckAsync(modelObject.ProcessList, requestId))) { _logger.LogError($"RequestID:{requestId} - Create error: Duplicate Process Types"); var errorResponse = JsonErrorResponse.BadRequest($"Create error: Duplicate Process Types", requestId); return(BadRequest(errorResponse)); } //TODO: P2 Refactor into Guard if (String.IsNullOrEmpty(modelObject.TemplateName)) { _logger.LogError($"RequestID:{requestId} - Template_Create error: invalid name"); var errorResponse = JsonErrorResponse.BadRequest($"Template_Create error: invalid name", requestId); return(BadRequest(errorResponse)); } var resultCode = await _templateService.CreateItemAsync(modelObject, requestId); if (resultCode != ApplicationCore.StatusCodes.Status201Created) { _logger.LogError($"RequestID:{requestId} - Template_Create error: {resultCode.Name}"); var errorResponse = JsonErrorResponse.BadRequest($"Template_Create error: {resultCode.Name}", requestId); return(BadRequest(errorResponse)); } var location = "/Template/Create/new"; // TODO: Get the id from the results but need to wire from factory to here return(Created(location, $"RequestId: {requestId} - Template created.")); } catch (Exception ex) { _logger.LogError($"RequestID:{requestId} Template_Create error: {ex.Message}"); var errorResponse = JsonErrorResponse.BadRequest($"Template_Create error: {ex} ", requestId); return(BadRequest(errorResponse)); } }