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));
        }