public PartialViewResult Indicar(IndicacaoModel model) { ViewBag.Estabelecimentos = Context.Estabelecimentos .ToList() .OrderBy(e => e.Nome) .Select(e => new SelectListItem() { Text = e.Nome, Value = e.Id.ToString() }); if (ModelState.IsValid) { try { var pessoa = GetUsuario(); var usuario = Context.Pessoas.FirstOrDefault(e => e.Usuario == model.Email); if (pessoa.Usuario == model.Email || usuario != null) { ModelState.AddModelError("Email", "Não foi possível indicar esse e-mail"); return(PartialView(model)); } var indicacao = new Indicacao() { EmailDestino = model.Email, PessoaId = pessoa.Id, EstabelecimentoId = model.EstabelecimentoSelecionado.Value }; Context.Indicacoes.Add(indicacao); Context.SaveChanges(); var estabelecimento = Context.Estabelecimentos.Find(model.EstabelecimentoSelecionado.Value); var usuarioEmail = ConfigurationManager.AppSettings["SendgridAccount"]; var senhaEmail = ConfigurationManager.AppSettings["SendgridKey"]; var email = new SendGrid.SendGridMessage( new MailAddress("*****@*****.**"), new MailAddress[] { new MailAddress(model.Email) }, "Indicação de posto", "<p>Você foi indicado para abastecer no posto " + estabelecimento.Nome + ", clique <a href=\"" + Url.Action("Cadastro", "Conta", new { email = model.Email }, Request.Url.Scheme) + "\">aqui</a> para se cadastrar</p>", "Você foi indicado para abastecer no posto " + estabelecimento.Nome); var client = new SendGrid.Web(new System.Net.NetworkCredential(usuarioEmail, senhaEmail)); client.Deliver(email); } catch (DbUpdateException) { ModelState.AddModelError("Email", "Não foi possível indicar esse e-mail"); return(PartialView(model)); } catch (Exception) { } } return(PartialView()); }
public PartialViewResult Indicar() { var model = new IndicacaoModel(); ViewBag.Estabelecimentos = Context.Estabelecimentos .ToList() .OrderBy(e => e.Nome) .Select(e => new SelectListItem() { Text = e.Nome, Value = e.Id.ToString() }); return(PartialView(model)); }