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