public async Task <IActionResult> CreateUser( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function 'CreateUser' processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); UserModel user = UserModelFactory.CreateUserModel(data); if (!user.DataIsValid) { var result = new ObjectResult(user.InvalidReason); //according to https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm //if data is formattede correct but not valid a 422 is the correct answer result.StatusCode = StatusCodes.Status422UnprocessableEntity; return(result); } await _context.Users.AddAsync(user); await _context.SaveChangesAsync(); string responseMessage = "User: "******" " + user.LastName + " created"; return(new OkObjectResult(responseMessage)); }
public async Task <IActionResult> UpdateUser( [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function 'UpdateUser' processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); dynamic data = JsonConvert.DeserializeObject(requestBody); if (String.IsNullOrEmpty(requestBody)) { var result = new ObjectResult("Empty requestbody recieved"); //according to https://www.bennadel.com/blog/2434-http-status-codes-for-invalid-data-400-vs-422.htm //if data is formattede correct but not valid a 422 is the correct answer result.StatusCode = StatusCodes.Status404NotFound; return(result); } //UserModel user = UserModelFactory.UpdateUserModel(data); int id = (int)data.id; var user = _context.Users.First(c => c.Id == id); if (user == null) { user = new UserModel() { Id = id }; _context.Users.Attach(user); } else { UserModelFactory.UpdateUserModel(data, ref user); } _context.Users.Update(user); await _context.SaveChangesAsync(); string responseMessage = "User updated"; return(new OkObjectResult(responseMessage)); }