public IActionResult Post([FromBody] CandidatoViewModel candidatos)
        {
            if (candidatos == null)
            {
                return(BadRequest());
            }

            candidatos.CanditadoId = 0;

            try
            {
                _service.Add(candidatos);
                return(new OkObjectResult(candidatos));
            }
            catch (System.Exception)
            {
                return(BadRequest());
            }
        }
示例#2
0
        public async Task <IActionResult> RegistrarCandidato(NovoCandidatoRequest novoCandidatoDto)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var user = new ApplicationUser
            {
                DataNascimento       = novoCandidatoDto.DataNascimento,
                Email                = novoCandidatoDto.Email,
                EmailConfirmed       = true,
                LinkGithub           = novoCandidatoDto.LinkGithub,
                LinkLinkedin         = novoCandidatoDto.LinkLinkedin,
                Nome                 = novoCandidatoDto.Nome,
                PhoneNumber          = novoCandidatoDto.Celular,
                PhoneNumberConfirmed = true,
                UserName             = novoCandidatoDto.Email
            };

            var result = await _userManager.CreateAsync(user, novoCandidatoDto.Senha);

            if (result.Succeeded)
            {
                await _candidatoService.Add(new Candidato
                {
                    ApplicationUserId = user.Id,
                    Profissao         = novoCandidatoDto.Profissao,
                    Endereco          = _mapper.Map <Endereco>(novoCandidatoDto.Endereco)
                });

                await _userManager.AddToRoleAsync(user, "Candidato");

                return(CustomResponse(await GeraJWT(user.Email)));
            }

            foreach (var erro in result.Errors)
            {
                NotificarErro(erro.Description);
            }

            return(CustomResponse());
        }
示例#3
0
        public IActionResult Post([FromBody] CandidatoDto dto)
        {
            try
            {
                CandidatoDto novoCandidato = candidatoService.Add(dto);

                if (novoCandidato != null)
                {
                    return(Ok(novoCandidato));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception ex)
            {
                _logger.LogCritical(ex, string.Format("Houve um erro ao cadastrar um Candidato {0}.", dto));
                return(StatusCode(500));
            }
        }
示例#4
0
        public async Task <IActionResult> Criar(Guid idDesafio, InscricaoRequest inscricaoRequest)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var desafio = await _desafioService.FindAsNoTracking(idDesafio);

            if (desafio == null)
            {
                return(NotFound("Desafio não encontrado."));
            }

            if (desafio.Id != inscricaoRequest.DesafioId)
            {
                return(BadRequest("O id do desafio informado no payload é diferende do informado na rota."));
            }

            if (desafio.LimiteInscricao.HasValue)
            {
                var inscricoes = await _inscricaoService.ObterInscricoesDesafioCandidato(idDesafio);

                if (inscricoes.Count() >= desafio.LimiteInscricao)
                {
                    return(BadRequest("Este desafio já atingiu seu limite de inscrições."));
                }
            }

            if (desafio.DataFechamento.HasValue)
            {
                if (desafio.DataFechamento.Value <= DateTime.Now)
                {
                    return(BadRequest("Este desafio já foi fechado e não permite novas inscrições."));
                }
            }

            var user = new ApplicationUser
            {
                DataNascimento = inscricaoRequest.DataNascimento,
                Email          = inscricaoRequest.Email,
                LinkGithub     = inscricaoRequest.LinkGithub,
                LinkLinkedin   = inscricaoRequest.LinkLinkedin,
                Nome           = inscricaoRequest.Nome,
                PhoneNumber    = inscricaoRequest.Celular,
                UserName       = inscricaoRequest.Email
            };

            var result = await _userManager.CreateAsync(user, "Senhapadrao#1234");

            if (!result.Succeeded)
            {
                foreach (var erro in result.Errors)
                {
                    NotificarErro(erro.Description);
                }

                return(CustomResponse());
            }

            var candidato = new Candidato
            {
                ApplicationUserId = user.Id,
                Profissao         = inscricaoRequest.Profissao,
                Endereco          = _mapper.Map <Endereco>(inscricaoRequest.Endereco)
            };
            await _candidatoService.Add(candidato);

            await _userManager.AddToRoleAsync(user, "Candidato");

            var inscricao = new Inscricao
            {
                DesafioId         = idDesafio,
                CandidatoId       = candidato.Id,
                DataInscricao     = DateTime.Now,
                DataInicializacao = DateTime.Now,
                DataFinalizacao   = DateTime.Now
            };
            await _inscricaoService.Add(inscricao);

            foreach (var resposta in inscricaoRequest.Respostas)
            {
                await _respostaService.Add(new Resposta
                {
                    InscricaoId = inscricao.Id,
                    QuestaoId   = resposta.QuestaoId,
                    Descricao   = resposta.Descricao
                });
            }

            return(CustomResponse(new InscricaoCreateResponse
            {
                IdInscricao = inscricao.Id,
                Message = "Inscrição realizada com sucesso!"
            }));
        }