public ActionResult ConviteUsuarioPrincipal() { Usuario usuario = new Usuario() { RazaoSocial = "Teste razao social" }; Evento evento = new Evento() { Descricao = "Evento Teste" }; EnvioConviteEventoViewModel envioconviteViewModel = new EnvioConviteEventoViewModel() { Email = "*****@*****.**", Usuario_Organizador = usuario, Evento = evento }; var viewString = Util.Utilidades.RenderViewToString(new ControllerContext(HttpContext.Request.RequestContext, this), "ConviteUsuarioPrincipal", envioconviteViewModel); return(View(envioconviteViewModel)); }
public async Task <IHttpActionResult> ConviteEventoEnvio(EnvioConviteEventoViewModel envioConviteViewModel) { // Cria Context Request do Controller da View enviada por Email var controller = Util.Utilidades.CreateController <ConviteController>(); var context = controller.ControllerContext.RequestContext; var eventoConvite = Db.Eventos.ToList().SingleOrDefault(e => e.Id == envioConviteViewModel.Id_Evento); var usuarioExist = Db.Users.ToList().Exists(u => u.UserName == envioConviteViewModel.Email); var claimPrincipal = (ClaimsPrincipal)Thread.CurrentPrincipal; var exist = claimPrincipal.Claims.ToList().Exists(c => c.Type == "id_usuario"); var id_usuarioLogado = claimPrincipal.Claims.SingleOrDefault(c => c.Type == "id_usuario").Value; var organizador = bool.Parse(claimPrincipal.Claims.SingleOrDefault(c => c.Type == "organizador").Value); var usuarioLogado = Db.Users.ToList().SingleOrDefault(u => u.Id == id_usuarioLogado); if (!ModelState.IsValid) { return(BadRequest()); } if (eventoConvite == null) { return(BadRequest("Este Evento não existe.")); } if (!organizador) { return(BadRequest("É Necessário ser um Organizador para Enviar um Convite")); } if (usuarioExist) { //Verifica se usuario ja esta vinculado com evento var eventoUsuarioExist = (from eventoUsuario in Db.Evento_Usuarios join evento in Db.Eventos on eventoUsuario.Id_Evento equals evento.Id where eventoUsuario.Id_Usuario == id_usuarioLogado && eventoUsuario.Id_Evento == envioConviteViewModel.Id_Evento && eventoUsuario.Deletado == false && evento.Deletado == false select eventoUsuario).SingleOrDefault(); if (eventoUsuarioExist != null) { return(BadRequest("Este Usuario já esta vinculado com este Evento")); } } var dataExpira = DateTime.Now + TimeSpan.FromDays(7); // Expira em 7 Dias TokenEnvio token = new TokenEnvio() { Token = Guid.NewGuid().ToString(), ExpiraEm = dataExpira, Ativo = true }; var tokenCriado = _tokenEnvioRepository.Criar(token); envioConviteViewModel.Id_Evento = eventoConvite.Id; envioConviteViewModel.Id_usuario_organizador = usuarioLogado.Id; envioConviteViewModel.Usuario_Organizador = usuarioLogado; envioConviteViewModel.Evento = eventoConvite; envioConviteViewModel.Token = tokenCriado.Token; var viewString = Util.Utilidades.RenderViewToString(new ControllerContext(context, controller), "ConviteUsuarioPrincipal", envioConviteViewModel); var message = new MailMessage(); message.To.Add(new MailAddress(envioConviteViewModel.Email)); message.From = (new MailAddress("*****@*****.**")); message.Body = string.Format(viewString, envioConviteViewModel.Email); message.IsBodyHtml = true; message.Subject = "Convite para Particiar de Evento"; using (var smtp = new SmtpClient()) { var credenciais = new NetworkCredential() { UserName = "******", Password = "******" }; smtp.Credentials = credenciais; smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; await smtp.SendMailAsync(message); return(Ok("Convite Enviado")); } }