public async Task <IActionResult> UpdatePeople(int id, [FromBody] SavePeopleResource savePeopleResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var people = await context.Peoples.Include(p => p.Phones).Include(p => p.State).SingleOrDefaultAsync(p => p.Id == id); if (people == null) { return(NotFound()); } var state = await context.States.FindAsync(savePeopleResource.StateId); if (state == null) { ModelState.AddModelError("StateId", "Invalid StateId."); return(BadRequest(ModelState)); } if (state.RequireRG && (savePeopleResource.Rg == null)) { ModelState.AddModelError("RG", "State require RG."); return(BadRequest(ModelState)); } if (state.MinimumAge > 0) { var today = DateTime.Today; var age = today.Year - savePeopleResource.BirthDate.Year; if (savePeopleResource.BirthDate > today.AddYears(-age)) { age--; } if (age < state.MinimumAge) { ModelState.AddModelError("Age", "State require a minimum age of " + state.MinimumAge + " years."); return(BadRequest(ModelState)); } } people.LastUpdate = DateTime.Now; mapper.Map <SavePeopleResource, People>(savePeopleResource, people); await context.SaveChangesAsync(); var result = mapper.Map <People, PeopleResource>(people); return(Ok(result)); }
public async Task <IActionResult> CreatePeople([FromBody] SavePeopleResource savePeopleResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var state = await context.States.FindAsync(savePeopleResource.StateId); if (state == null) { ModelState.AddModelError("StateId", "Invalid StateId."); return(BadRequest(ModelState)); } if (state.RequireRG && (savePeopleResource.Rg == null)) { ModelState.AddModelError("RG", "State require RG."); return(BadRequest(ModelState)); } if (state.MinimumAge > 0) { var today = DateTime.Today; var age = today.Year - savePeopleResource.BirthDate.Year; if (savePeopleResource.BirthDate > today.AddYears(-age)) { age--; } if (age < state.MinimumAge) { ModelState.AddModelError("Age", "State require a minimum age of " + state.MinimumAge + " years."); return(BadRequest(ModelState)); } } var people = mapper.Map <SavePeopleResource, People>(savePeopleResource); people.RegistrationDate = DateTime.Now; people.LastUpdate = people.RegistrationDate; context.Peoples.Add(people); await context.SaveChangesAsync(); var result = mapper.Map <People, PeopleResource>(people); return(Ok(result)); }