예제 #1
0
        public RespostaViewModel Add(RespostaViewModel obj)
        {
            var resposta = Mapper.Map <RespostaViewModel, Resposta>(obj);

            BeginTransaction();
            _respostaService.Add(resposta);
            Commit();
            return(obj);
        }
        public RespostaViewModel Add(RespostaViewModel respostaViewModel)
        {
            var respostaAdicionada = _respostaService.Add(Mapper.Map <RespostaViewModel, Resposta>(respostaViewModel));

            return(Mapper.Map <Resposta, RespostaViewModel>(respostaAdicionada));
        }
예제 #3
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!"
            }));
        }