public IActionResult CreateEscola([FromBody] EscolaForCreationDto escola)
        {
            if (escola == null)
            {
                return(BadRequest());
            }

            var escolaEntity = Mapper.Map <Escola>(escola);

            _elevaRepository.AddEscola(escolaEntity);

            if (!_elevaRepository.Save())
            {
                throw new Exception("Criar uma escola falhou ao salvar");
            }

            var escolaToReturn = Mapper.Map <EscolaDto>(escolaEntity);

            return(CreatedAtRoute("GetEscola", new { id = escolaToReturn.Id }, escolaToReturn));
        }
        public IActionResult CreateTurmaForEscola(Guid escolaId, [FromBody] TurmaForCreationDto turma)
        {
            if (turma == null)
            {
                return(BadRequest());
            }

            if (turma.Etapa != "Ensino Médio" && turma.Etapa != "Ensino Fundamental")
            {
                ModelState.AddModelError(nameof(TurmaForCreationDto), "A etapa não está correta");
            }

            if (!ModelState.IsValid)
            {
                // return 422
                return(new UnprocessableEntityObjectResult(ModelState));
            }

            if (!_elevaRepository.EscolaExists(escolaId))
            {
                return(NotFound());
            }

            var turmaEntity = Mapper.Map <Turma>(turma);

            _elevaRepository.AddTurmaForEscola(escolaId, turmaEntity);

            if (!_elevaRepository.Save())
            {
                throw new Exception($"Creating a turma for escola {escolaId} failed on save.");
            }

            var turmaToReturn = Mapper.Map <TurmaDto>(turmaEntity);

            return(CreatedAtRoute("GetTurmaForEscola", new { escolaId = escolaId, id = turmaToReturn.Id }, turmaToReturn));
        }