public async Task <IActionResult> Post([FromBody] Goal goal) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var exiting = _context.Goals.FirstOrDefault(x => x.Id == goal.Id); if (exiting == null) { if (!HelperExtensions.CheckGoalCreateValues(goal)) { return(BadRequest(new MissingFieldException("CreateUserId value required"))); } //ADD GOAL HelperExtensions.ClearNullableInts(goal); _context.Goals.Add(goal); await _context.SaveChangesAsync(); return(Created(goal)); } else { if (!HelperExtensions.CheckGoalUpdateValues(goal)) { return(BadRequest(new MissingFieldException("LastUpdateUserId value required"))); } //UPDATE goal.CreateDate = exiting.CreateDate; goal.CreateUser = exiting.CreateUser; _context.Entry(exiting).CurrentValues.SetValues(goal); await _context.SaveChangesAsync(); //ADD/UPDATE QUESTIONS var qc = new QuestionsController(_context); foreach (var question in goal.Questions) { question.Goal = exiting; await qc.Post(question); } return(Updated(exiting)); } }