internal void ValidateToken(InvitacionPedido invitacionPedido, int idUsuario) { if (invitacionPedido.IdUsuario != idUsuario) { throw new AuthenticationException("Token inválido"); } }
/* * public void EnviarEmailResponsable(Pedido pedido) * { * //MailMessage email = new MailMessage("*****@*****.**", "*****@*****.**"); * MailMessage email = new MailMessage("*****@*****.**", pedido.Usuario.Email); * email.Subject = pedido.Usuario.Email + " sos el responsable de este pedido: " + pedido.NombreNegocio.ToString(); * * string listaInvitados = ""; * string listaGustos = ""; * * foreach (var invitado in info.Invitados) * { * string inv = invitado.Email + " : $" + invitado.Precio.ToString() + " <br>"; * listaInvitados += inv; * } * * foreach (var gusto in pedido.) * { * string gus = gusto.Gusto + " : " + gusto.Cantidad.ToString() + "<br>"; * listaGustos += gus; * } * * email.Body = "<h2>Precio Total: $" + info.PrecioTotal.ToString() + "</h2>" + * "<h2>Detalle Recaudacion:</h2>" + * "<div>" + * " <h3>Invitados:</h3>" + * " <div>" + * listaInvitados + * " </div>" + * "</div>" + * "<br>" + * "<div >" + * " <h3>Detalle Pedido:</h3>" + * " <div>" + * listaGustos + * " </div>" + * "</div>"; * * email.IsBodyHtml = true; * SmtpClient smtp = new SmtpClient(); * smtp.Send(email); * } */ public static void EnviarEmailInvitados(InvitacionPedido invitacion) { MailMessage email = new MailMessage("*****@*****.**", invitacion.Usuario.Email); //MailMessage email = new MailMessage("*****@*****.**", invitacion.Usuario.Email); email.Subject = "Te invitó " + invitacion.Pedido.Usuario.Email + " para pedir empanadas"; //email.Body = "Has sido invitado para realizar un pedido de empanadas http://localhost:59120/Pedidos/ElegirToken/" + invitacion.Token; email.Body = "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\"><head> <title>Empanadas de la abuela</title> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"> <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0 \"> <meta name=\"format-detection\" content=\"telephone=no\"> <link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800\" rel=\"stylesheet\"> <style type=\"text/css\"> body { margin: 0 !important; padding: 0 !important; -webkit-text-size-adjust: 100% !important; -ms-text-size-adjust: 100% !important; -webkit-font-smoothing: antialiased !important; } img { border: 0 !important; outline: none !important; } p { Margin: 0px !important; Padding: 0px !important; } table { border-collapse: collapse; mso-table-lspace: 0px; mso-table-rspace: 0px; } td, a, span { border-collapse: collapse; mso-line-height-rule: exactly; } .ExternalClass * { line-height: 100%; } .em_defaultlink a { color: inherit !important; text-decoration: none !important; } span.MsoHyperlink { mso-style-priority: 99; color: inherit; } span.MsoHyperlinkFollowed { mso-style-priority: 99; color: inherit; } @media only screen and (min-width:481px) and (max-width:699px) { .em_main_table { width: 100% !important; } .em_wrapper { width: 100% !important; } .em_hide { display: none !important; } .em_img { width: 100% !important; height: auto !important; } .em_h20 { height: 20px !important; } .em_padd { padding: 20px 10px !important; } } @media screen and (max-width: 480px) { .em_main_table { width: 100% !important; } .em_wrapper { width: 100% !important; } .em_hide { display: none !important; } .em_img { width: 100% !important; height: auto !important; } .em_h20 { height: 20px !important; } .em_padd { padding: 20px 10px !important; } .em_text1 { font-size: 16px !important; line-height: 24px !important; } u + .em_body .em_full_wrap { width: 100% !important; width: 100vw !important; } } </style> </head> <body class=\"em_body\" style=\"margin:0px; padding:0px;\" bgcolor=\"#efefef\"> <table class=\"em_full_wrap\" valign=\"top\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" bgcolor=\"#efefef\" align=\"center\"> <tbody><tr> <td valign=\"top\" align=\"center\"><table class=\"em_main_table\" style=\"width:700px;\" width=\"700\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"> <tbody> <tr> <td valign=\"top\" align=\"center\"><table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"> <tbody><tr> <td valign=\"top\" align=\"center\"><img class=\"em_img\" alt=\"merry Christmas\" style=\"display:block; font-family:Arial, sans-serif; font-size:30px; line-height:34px; color:#000000; max-width:700px;\" src=\"https://github.com/lucasmiharu/ProgramacionWeb3/blob/master/ProgramacionWeb3Tp/images/fondo.jpg?raw=true\" width=\"700\" border=\"0\" height=\"345\"></td> </tr> </tbody></table></td> </tr> <tr> <td style=\"padding:35px 70px 30px;\" class=\"em_padd\" valign=\"top\" bgcolor=\"#0d1121\" align=\"center\"><table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" align=\"center\"> <tbody><tr> <td style=\"font-family:'Open Sans', Arial, sans-serif; font-size:16px; line-height:30px; color:#ffffff;\" valign=\"top\" align=\"center\">El usuario "+ invitacion.Pedido.Usuario.Email + " te invito a completar su pedido.</td> </tr> <tr> <td style=\"font-size:0px; line-height:0px; height:15px;\" height=\"15\"> </td> </tr> <tr> <td style=\"font-family:'Open Sans', Arial, sans-serif; font-size:18px; line-height:22px; color:#fbeb59; letter-spacing:2px; padding-bottom:12px;\" valign=\"top\" align=\"center\">Ingresa y completa el pedido para poder continuar!</td> </tr> <tr> <td class=\"em_h20\" style=\"font-size:0px; line-height:0px; height:25px;\" height=\"25\"> </td> </tr> <tr> <td style=\"font-family:'Open Sans', Arial, sans-serif; font-size:18px; line-height:22px; color:#fbeb59; text-transform:uppercase; letter-spacing:2px; padding-bottom:12px;\" valign=\"top\" align=\"center\"><a href=\"http://*****:*****@gmail.com", "empanadadelaabuelaprogra123"), Timeout = 20000 }; smtp.Send(email); }
internal void Create(Pedido Order) { foreach (string Email in Order.EmailsInvitados) { InvitacionPedido Invitation = new InvitacionPedido { Completado = false, Token = Guid.NewGuid(), IdUsuario = UsuarioSvc.GetIdFromEmail(Email), IdPedido = Order.IdPedido }; InvitacionPedidoRepo.Create(Invitation); EmailSvc.SendEmail(Email, Invitation.Token); } InvitacionPedido Responsible = new InvitacionPedido { Completado = false, Token = Guid.NewGuid(), IdUsuario = Order.IdUsuarioResponsable, IdPedido = Order.IdPedido }; InvitacionPedidoRepo.Create(Responsible); }
public void EnviarCorreo(InvitacionPedido invitacion, string MensajeNotificacion) { var fromAddress = new MailAddress("*****@*****.**", "Diego"); Usuario usuario = Context.Usuario.Where(u => u.IdUsuario == invitacion.IdUsuario).First(); var toAddress = new MailAddress(usuario.Email, usuario.Email); string fromPassword = "******"; string subject = MensajeNotificacion; string body = "<h1>Risotto Empanadas</h1><br> Invitacion: Http://" + HttpContext.Current.Request.Url.Authority + "/pedidos/elegir/" + invitacion.Token; var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body, IsBodyHtml = true }) { smtp.Send(message); } }
internal void Complete(InvitacionPedido Invitation) { InvitacionPedido InvitationFromDb = FindOneById(Invitation.IdInvitacionPedido); InvitationFromDb.Completado = true; Db.SaveChanges(); }
internal InvitacionPedido Create(InvitacionPedido Invitation) { Db.InvitacionPedido.Add(Invitation); Db.SaveChanges(); return(Invitation); }
internal string ConfirmarGustos(InvitacionPedido ip, ConfirmarcionGustoDTO c) { Pedido p = FindOneById(ip.IdPedido); List <InvitacionPedidoGustoEmpanadaUsuario> i = InvitacionPedidoGustoEmpanadaUsuarioSvc.FindAllByPedidoAndUser(p.IdPedido, c.IdUsuario); String mensaje = ""; if (c.GustosEmpanadasCantidad != null) { foreach (GustosEmpanadasCantidad g in c.GustosEmpanadasCantidad) { GustoEmpanada GustoEmpanada = GustoEmpanadaSvc.FindById(g.IdGustoEmpanada); if (p.GustoEmpanada.Contains(GustoEmpanada)) { if (i != null && i.Count != 0) { InvitacionPedidoGustoEmpanadaUsuario gustoEncontrado = i.Find(x => x.IdGustoEmpanada == g.IdGustoEmpanada); if (gustoEncontrado != null) { gustoEncontrado.Cantidad = g.Cantidad; Db.SaveChanges(); } else { InvitacionPedidoGustoEmpanadaUsuario gusto = new InvitacionPedidoGustoEmpanadaUsuario { IdGustoEmpanada = g.IdGustoEmpanada, IdPedido = p.IdPedido, IdUsuario = c.IdUsuario, Cantidad = g.Cantidad }; InvitacionPedidoGustoEmpanadaUsuarioSvc.Save(gusto); } } else { InvitacionPedidoGustoEmpanadaUsuario gusto = new InvitacionPedidoGustoEmpanadaUsuario { IdGustoEmpanada = g.IdGustoEmpanada, IdPedido = p.IdPedido, IdUsuario = c.IdUsuario, Cantidad = g.Cantidad }; InvitacionPedidoGustoEmpanadaUsuarioSvc.Save(gusto); } } else { mensaje = "El gusto de id: " + g.IdGustoEmpanada + " no está disponible."; } } } else { mensaje = "No se han seleccionado gustos."; } return(mensaje); }
public void SetInvitados(Pedido pedido, String[] Invitados) { int idUsr; InvitacionPedido Invitacion; for (int i = 0; i < Invitados.Count(); i++) { int.TryParse(Invitados[i], out idUsr); Invitacion = new InvitacionPedido(); Invitacion.IdUsuario = idUsr; Invitacion.IdPedido = pedido.IdPedido; Invitacion.Token = new Guid(new Md5Hash().GetMD5((idUsr.ToString() + pedido.FechaCreacion))); Invitacion.Completado = false; //pedido.InvitacionPedido.Add(Invitacion); //ctx.InvitacionPedido.Add(Invitacion); //ctx.SaveChanges(); var entry = ctx.Entry(Invitacion); entry.State = EntityState.Added; ctx.SaveChanges(); } }
internal void CompletarInvitacion(System.Guid token) { InvitacionPedido pedidoCompletado = InvitacionPedidoRepo.FindOneByToken(token); pedidoCompletado.Completado = true; db.SaveChanges(); }
public InvitacionPedidoGustoEmpanadaUsuario OpenInvitation(InvitacionPedido miInvitacion) { InvitacionPedidoGustoEmpanadaUsuario invAEditar = new InvitacionPedidoGustoEmpanadaUsuario(); invAEditar.IdPedido = miInvitacion.IdPedido; invAEditar.IdUsuario = miInvitacion.IdUsuario; return(invAEditar); }
public InvitacionPedido Crear(Pedido pedido, int idUsuario) { InvitacionPedido nuevaInvitacion = new InvitacionPedido(); Pedido p = Contexto.Pedido.Find(pedido.IdPedido); nuevaInvitacion.IdPedido = p.IdPedido; nuevaInvitacion.IdUsuario = idUsuario; nuevaInvitacion.Completado = false; nuevaInvitacion.Token = Guid.NewGuid(); Contexto.InvitacionPedido.Add(nuevaInvitacion); Contexto.SaveChanges(); return(nuevaInvitacion); }
public ActionResult Elegir(int id) { var usuarioLogueado = Session["Usuario"] as Usuario; ViewBag.UsuarioLog = usuarioLogueado; Pedido p = servicioPedido.ObtenerPorId(id); InvitacionPedido token = servicioInvitacion.GetInvitacionPedidoPorPedido(id, usuarioLogueado.IdUsuario); ViewBag.Token = token.Token; List <GustoEmpanada> InitGustos = servicioPedido.ObtenerGustosPorPedido(id); ViewBag.Lista = new MultiSelectList(InitGustos, "IdGustoEmpanada", "Nombre"); return(View(p)); }
internal void ResendEmails(PedidoCompletoDTO Pedido) { List <Usuario> usuarios = new List <Usuario>(); foreach (InvitacionPedido inv in Pedido.invitaciones) { usuarios.Add(inv.Usuario); } switch (Pedido.Reenviar) { case 2: foreach (Usuario u in usuarios) { InvitacionPedido i = Pedido.invitaciones.Find(x => x.IdPedido == Pedido.IdPedido); SendEmail(u.Email, i.Token); } if (Pedido.UsuariosNuevosString != null) { foreach (string u in Pedido.UsuariosNuevosString) { InvitacionPedido i = Pedido.invitaciones.Find(x => x.IdPedido == Pedido.IdPedido); SendEmail(u, i.Token); } } break; case 3: if (Pedido.UsuariosNuevosString != null) { foreach (string u in Pedido.UsuariosNuevosString) { InvitacionPedido i = Pedido.invitaciones.Find(x => x.IdPedido == Pedido.IdPedido); SendEmail(u, i.Token); } } break; case 4: foreach (Usuario u in usuarios) { InvitacionPedido i = Pedido.invitaciones.Find(x => x.IdPedido == Pedido.IdPedido); if (i.Completado == false) { SendEmail(u.Email, i.Token); } } break; } }
public void SetInvitados(Pedido pedido, String[] Invitados) { int idUsr; InvitacionPedido Invitacion = new InvitacionPedido(); for (int i = 0; i < Invitados.Count(); i++) { int.TryParse(Invitados[i], out idUsr); Invitacion.IdUsuario = idUsr; Invitacion.IdPedido = pedido.IdPedido; ctx.InvitacionPedido.Add(Invitacion); ctx.SaveChanges(); } }
public void enviarEmail(InvitacionPedido inv, Usuario usu, Guid?responsable) { MailMessage mail = new MailMessage(); mail.From = new MailAddress("*****@*****.**"); if (responsable != null) { mail.To.Add((string)HttpContext.Current.Session["email"]); } else { mail.To.Add(usu.Email); } mail.Subject = "Pedido en TresEmpanadas"; var link = ""; if (responsable != null) { link = HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/Pedidos/ElegirGusto/" + responsable; } else { link = HttpContext.Current.Request.Url.Host + ":" + HttpContext.Current.Request.Url.Port + "/Pedidos/ElegirGusto/?token=" + inv.Token; } mail.Body = "<h2>Recibiste una invitación para ver un pedido!</h2>" + "<a href=" + link + ">" + link + "</a>"; mail.IsBodyHtml = true; SmtpClient smtp = new SmtpClient("mail.fragua.com.ar", 26); smtp.UseDefaultCredentials = false; smtp.Credentials = new NetworkCredential("*****@*****.**", "mailerloco"); smtp.EnableSsl = false; try { smtp.Send(mail); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } }
public void EnviarInvitacionesDesdeUnaListaDeUsuarios(List <Usuario> usuarios, Pedido pedido) { foreach (Usuario invitado in usuarios) { Usuario usuarioEncontrado = ctx.Usuario.SingleOrDefault(x => x.IdUsuario == invitado.IdUsuario); Pedido pedidoEncontrado = ctx.Pedido.SingleOrDefault(p => p.IdPedido == pedido.IdPedido); InvitacionPedido invitacionPedido = new InvitacionPedido { Pedido = pedidoEncontrado, Usuario = usuarioEncontrado, Token = new Guid(new Md5Hash().GetMD5((usuarioEncontrado.Email + pedidoEncontrado.FechaCreacion))), Completado = false, }; ctx.InvitacionPedido.Add(invitacionPedido); ctx.SaveChanges(); EmailService.EnviarEmailInvitados(invitacionPedido); } }
internal void AddEmails(PedidoCompletoDTO Pedido) { if (Pedido.UsuariosNuevosString != null) { foreach (string Email in Pedido.UsuariosNuevosString) { InvitacionPedido Invitation = new InvitacionPedido { Completado = false, Token = Guid.NewGuid(), IdUsuario = UsuarioSvc.GetIdFromEmail(Email), IdPedido = Pedido.IdPedido }; InvitacionPedidoRepo.Create(Invitation); } } }
public void Agregar(Pedido p, Usuario idUsuarioReponsable) { Pedido nuevoPedido = p; nuevoPedido.IdUsuarioResponsable = idUsuarioReponsable.IdUsuario; nuevoPedido.IdEstadoPedido = 1;//al crearlos estado uno nuevoPedido.FechaCreacion = DateTime.Now; MiBD.Pedido.Add(nuevoPedido); MiBD.SaveChanges(); //ADD GustoEmpanada AL PEDIDO (GustoEmpanadaDisponiblePedido) foreach (var idGusto in nuevoPedido.IdGustosSeleccionados) { GustoEmpanada gustoEmpanadaDisponible = MiBD.GustoEmpanada.Find(idGusto); nuevoPedido.GustoEmpanada.Add(gustoEmpanadaDisponible); MiBD.SaveChanges(); } //verifico q seleccione usuarios if (p.IdUsuariosInvitados != null) { foreach (var idUsuario in nuevoPedido.IdUsuariosInvitados) { InvitacionPedido nuevaInvitacionPedido = new InvitacionPedido(); nuevaInvitacionPedido.IdPedido = nuevoPedido.IdPedido; nuevaInvitacionPedido.Completado = false; nuevaInvitacionPedido.Token = Guid.NewGuid(); nuevaInvitacionPedido.IdUsuario = idUsuario; MiBD.InvitacionPedido.Add(nuevaInvitacionPedido); MiBD.SaveChanges(); EnviarEmailInvitados(nuevaInvitacionPedido); } } //AGREGO AL USUARIO RESPONSABLE EN LA INVITACION PEDIDO InvitacionPedido invitacionPedidoDelUsuarioResponsable = new InvitacionPedido(); invitacionPedidoDelUsuarioResponsable.IdPedido = nuevoPedido.IdPedido; invitacionPedidoDelUsuarioResponsable.Completado = false; invitacionPedidoDelUsuarioResponsable.Token = Guid.NewGuid(); invitacionPedidoDelUsuarioResponsable.IdUsuario = idUsuarioReponsable.IdUsuario; MiBD.InvitacionPedido.Add(invitacionPedidoDelUsuarioResponsable); MiBD.SaveChanges(); EnviarEmailInvitados(invitacionPedidoDelUsuarioResponsable); }
public ActionResult Elegir(int id) { if (SessionManager.UsuarioSession == null) { string url = Url.Content(Request.Url.PathAndQuery); return(RedirectToAction("Login", "Home", new { url })); } Pedido pedido = _servicioPedido.ObtenerPorId(id); InvitacionPedido token = _servicioInvitacionPedido.GetInvitacionPedidoPorPedido(id, SessionManager.UsuarioSession.IdUsuario); List <GustoEmpanada> InitGustos = _servicioPedido.ObtenerGustosPorPedido(id); //List<int> lista = new List<int>(); //ViewBag.ListaNueva = lista; ViewBag.Token = token.Token; ViewBag.Lista = new MultiSelectList(InitGustos, "IdGustoEmpanada", "Nombre"); return(View(pedido)); }
/// <summary> /// TODO: Tengo que pasar todo el choclo a un servicio /// </summary> /// <param name="token"></param> /// <returns></returns> public ActionResult Elegir(System.Guid token) { if (Session["loggedUser"] == null) { return(RedirectToAction("Login", "Home")); } int idUser = int.Parse(Session["idUser"].ToString()); if (InvitacionPedidoService.CheckUsuarioValidoByTokenInvitacion(idUser, token)) { InvitacionPedido miInvitacion = InvitacionPedidoService.GetInvitationByToken(token); Pedido PedidoAEditar = PedidoSvc.GetPedidoById(miInvitacion.IdPedido); PedidoAEditar.GustoEmpanada = PedidoSvc.GetGustosDisponibles(miInvitacion.IdPedido); InvitacionPedidoGustoEmpanadaUsuario invitacionAUtilizar = InvPedidoGustoSvc.OpenInvitation(miInvitacion); invitacionAUtilizar.Pedido = PedidoAEditar; return(View(invitacionAUtilizar)); } return(RedirectToAction("Lista", new { idUser = idUser })); }
public Pedido CrearPedidoDesdeCero(Pedido p) { var pedido = p; pedido.FechaCreacion = DateTime.Now; pedido.IdUsuarioResponsable = SessionManager.UsuarioSession.IdUsuario; pedido.IdEstadoPedido = 1; List <GustoEmpanada> gustosSeleccionados = new List <GustoEmpanada>(); foreach (var gusto in p.GustoDeEmpanadaSeleccionados) { gustosSeleccionados.Add(Context.GustoEmpanada.FirstOrDefault(ge => ge.IdGustoEmpanada == gusto)); } pedido.GustoEmpanada = gustosSeleccionados; Context.Pedido.Add(pedido); if (p.UsuariosSeleccionados != null) { foreach (var id in pedido.UsuariosSeleccionados) { InvitacionPedido invitacion = new InvitacionPedido(); invitacion.IdPedido = pedido.IdPedido; invitacion.Completado = false; invitacion.Token = Guid.NewGuid(); invitacion.IdUsuario = id; Context.InvitacionPedido.Add(invitacion); EnviarCorreo(invitacion, "Notificación de invitación"); } } InvitacionPedido invitacionResponsable = new InvitacionPedido(); invitacionResponsable.IdPedido = pedido.IdPedido; invitacionResponsable.Completado = false; invitacionResponsable.Token = Guid.NewGuid(); invitacionResponsable.IdUsuario = pedido.IdUsuarioResponsable; Context.InvitacionPedido.Add(invitacionResponsable); Context.SaveChanges(); EnviarCorreo(invitacionResponsable, "Notificación de Pedido"); return(pedido); }
public String ConfirmarGustos(JObject jsonResult) { ConfirmarcionGustoDTO c = JsonConvert.DeserializeObject <ConfirmarcionGustoDTO>(jsonResult.ToString()); InvitacionPedido ip = InvitacionPedidoService.FindOneByToken(c.Token); String message = ""; if (ip.Completado) { JSONResponseDTO response = new JSONResponseDTO { status = "ERROR", message = "El pedido ya ha sido completado anteriormente." }; return(JsonConvert.SerializeObject(response)); } else { if (c.PedidoCerrado == true) { InvitacionPedidoService.CompletarInvitacion(c.Token); } message = PedidoService.ConfirmarGustos(ip, c); if (message != "") { JSONResponseDTO response = new JSONResponseDTO { status = "ERROR", message = message }; return(JsonConvert.SerializeObject(response)); } else { JSONResponseDTO response = new JSONResponseDTO { status = "OK", message = "Gustos confirmados" }; return(JsonConvert.SerializeObject(response)); } } }
public void ConfirmarGustos(ConfirmarGustosModel datos) { int idpedido = MiBD.InvitacionPedido .Where(p => p.Token == datos.Token) .Select(p => p.IdPedido).First(); foreach (InvitacionPedidoGustoEmpanadaUsuario item in datos.GustosEmpanadasCantidad) { item.IdPedido = idpedido; item.IdUsuario = datos.IdUsuario; MiBD.InvitacionPedidoGustoEmpanadaUsuario.Add(item); MiBD.SaveChanges(); //InvitacionPedido pedCompletado = MiBD.InvitacionPedido.FirstOrDefault(i => i.IdPedido == item.IdPedido ); //InvitacionPedido pedCompleto = MiBD.InvitacionPedido.Where(i => i.IdPedido == item.IdPedido && i.IdUsuario == item.IdUsuario).FirstOrDefault(); InvitacionPedido pedCompleto = MiBD.InvitacionPedido.FirstOrDefault(y => y.Token == datos.Token); pedCompleto.Completado = true; MiBD.SaveChanges(); } }
//Envio de mail cuando se inicia el pedido public void EnviarEmailInvitados(InvitacionPedido invitacion) { Usuario usuario = MiBD.Usuario.Find(invitacion.IdUsuario); MailMessage msg = new MailMessage(); msg.To.Add(new MailAddress(usuario.Email)); msg.From = new MailAddress("*****@*****.**"); msg.Subject = "Bienvenido a Empanadas YA!"; //msg.Body = "Recibiste una invitacion de" + invitacion.Usuario.Email + "Invitacion: " + HttpContext.Current.Request.Url.Authority + " /Pedidos/Elegir/" + invitacion.Token; //msg.Body = "Recibiste una invitacion para elegir gustos..... Ingresa aqui--> " + HttpContext.Current.Request.Url.Authority + " /Pedidos/Elegir/" + invitacion.IdPedido; msg.Body = "Recibiste una invitacion para elegir gustos del pedido: " + invitacion.IdPedido + " Ingresa aqui--> " + HttpContext.Current.Request.Url.Authority + "/Pedidos/Elegir/" + invitacion.IdPedido; SmtpClient clienteSmtp = new SmtpClient(); clienteSmtp.Host = "smtp.gmail.com"; clienteSmtp.Port = 587; clienteSmtp.UseDefaultCredentials = false; clienteSmtp.DeliveryMethod = SmtpDeliveryMethod.Network; clienteSmtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "empanadas2018"); clienteSmtp.EnableSsl = true; clienteSmtp.Send(msg); }
internal void EliminarPedido(int idPedido) { // Trae las invitaciones que tiene un pedido var listaInvitacionesPedido = Contexto.InvitacionPedido.Where(inv => inv.IdPedido == idPedido).ToList(); foreach (var item in listaInvitacionesPedido) { InvitacionPedido invitacionEliminar = Contexto.InvitacionPedido.Find(item.IdInvitacionPedido); if (invitacionEliminar != null) { Contexto.InvitacionPedido.Remove(invitacionEliminar); Contexto.SaveChanges(); } } // Trae las invitaciones con gustos de empanada por usuario var listaInvitacionGustoEmpanadaPedido = Contexto.InvitacionPedidoGustoEmpanadaUsuario .Where(invUsuPed => invUsuPed.IdPedido == idPedido).ToList(); foreach (var item in listaInvitacionGustoEmpanadaPedido) { InvitacionPedido invitacionGustoUsuarioEliminar = Contexto.InvitacionPedido.Find(item.IdInvitacionPedidoGustoEmpanadaUsuario); if (invitacionGustoUsuarioEliminar != null) { Contexto.InvitacionPedido.Remove(invitacionGustoUsuarioEliminar); Contexto.SaveChanges(); } } //Traigo el pedido que voy a eliminar Pedido pedidoEliminar = Contexto.Pedido.Find(idPedido); // Borra todos los registros de gustos de empanadas de ese pedido pedidoEliminar.GustoEmpanada.Clear(); //Borra el pedido y guarda los cambios Contexto.Pedido.Remove(pedidoEliminar); Contexto.SaveChanges(); //throw new NotImplementedException(); }
public void EnviarMailCerrado(InvitacionPedido invitacionPedido, Pedido pedido) { Usuario usuario = MiBD.Usuario.Find(invitacionPedido.IdUsuario); int cantidadTotal = invitacionPedido.Pedido.InvitacionPedidoGustoEmpanadaUsuario.Sum(m => m.Cantidad); int docenasTotales = cantidadTotal / 12; int resto = cantidadTotal - (docenasTotales * 12); int TotalPorDocenas = docenasTotales * invitacionPedido.Pedido.PrecioDocena; int precioResto = resto * invitacionPedido.Pedido.PrecioUnidad; int Total = TotalPorDocenas + precioResto; List <String> usuarioPrecioPorAbonar = new List <String>(); foreach (var item in pedido.IdUsuariosInvitados) { Usuario user = MiBD.Usuario.Find(item); int cantidadTotalesPorUsuario = user.InvitacionPedidoGustoEmpanadaUsuario .Where(m => m.IdUsuario == item) .Where(m => m.IdPedido == invitacionPedido.IdPedido) .Sum(m => m.Cantidad); int docenasTotalesPorUsuario = cantidadTotalesPorUsuario / 12; int restoPorUsuario = cantidadTotalesPorUsuario - (docenasTotalesPorUsuario * 12); int RestoPorUsuario = restoPorUsuario * invitacionPedido.Pedido.PrecioUnidad; int TotalPorDocenasDeUsuario = docenasTotalesPorUsuario * invitacionPedido.Pedido.PrecioDocena; int TotalPorUsuario = TotalPorDocenasDeUsuario + RestoPorUsuario; usuarioPrecioPorAbonar.Add("Invitado: " + user.Email + " Precio a abonar: $" + Convert.ToString(RestoPorUsuario)); } List <string> detalle = new List <string>(); var newlist = invitacionPedido.Pedido.InvitacionPedidoGustoEmpanadaUsuario.GroupBy(d => d.IdGustoEmpanada) .Select(g => new { Key = g.Key, Value = g.Sum(s => s.Cantidad), Category = g.First().GustoEmpanada, Name = g.First().GustoEmpanada.Nombre }); foreach (var item in newlist.ToList()) { detalle.Add(item.Name + ": " + item.Value); } var fromAddress = new MailAddress("*****@*****.**", "Empanadas YA!"); var toAddress = new MailAddress(usuario.Email); string fromPassword = "******"; string subject = "Resumen"; string body = ""; //mail para el responsable if (invitacionPedido.IdUsuario == invitacionPedido.Pedido.IdUsuarioResponsable) { body = "<h1>Empanadas Ya</h1>Precio Total:</b> $" + Total + "<br><b>Invitados:</b><br> " + String.Join(",<br>", usuarioPrecioPorAbonar.ToArray()) + "<br><b>Detalle:</b><br>" + String.Join(",<br>", detalle.ToArray()) + "<br><b>Total de empanadas: </b>" + cantidadTotal; } else {//mail para el resto List <string> datosInvitados = new List <string>(); foreach (var item in invitacionPedido.Pedido.InvitacionPedidoGustoEmpanadaUsuario.Where(m => m.IdUsuario == invitacionPedido.IdUsuario)) { GustoEmpanada empanadas = MiBD.GustoEmpanada.Find(item.IdGustoEmpanada); datosInvitados.Add("Gusto: " + empanadas.Nombre + ", Cantidad: " + item.Cantidad); } body = "<h1>Empanadas Ya</h1>Total de empanadas del pedido: " + cantidadTotal + "<br>" + String.Join(",<br>", datosInvitados.ToArray()) + "<br>Precio Total: $" + Total + "</b>"; } var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body, IsBodyHtml = true }) { smtp.Send(message); } }
public ActionResult Elegir(InvitacionPedido invitacionCompletada) { InvitacionPedidoService.CompletarInvitacion(invitacionCompletada.Token); return(RedirectToAction("Lista", new { idUser = invitacionCompletada.IdUsuario })); }
// Guardar Pedido public int GuardarPedido(Pedido pedido, int?[] gustos, string[] usuariosInvitados) { var valor = HttpContext.Current.Session["IdUsuario"] as int?; pedido.IdUsuarioResponsable = (int)valor; pedido.IdEstadoPedido = 1; pedido.FechaCreacion = DateTime.Now; foreach (var item in gustos) { GustoEmpanada gustoEmpanada = Contexto.GustoEmpanada.Find(item); pedido.GustoEmpanada.Add(gustoEmpanada); } Contexto.Pedido.Add(pedido); Contexto.SaveChanges(); foreach (var invitados in usuariosInvitados) { Boolean crearUsuario = true; foreach (var usuario in Contexto.Usuario) { if (usuario.Email.Equals(invitados)) { crearUsuario = false; } } if (crearUsuario) { Usuario usuarioCrear = new Usuario(); usuarioCrear.Email = invitados; usuarioCrear.Password = "******"; Contexto.Usuario.Add(usuarioCrear); Contexto.SaveChanges(); } } // Guardo una invitacion para el usuario responsable InvitacionPedido miInvitacion = new InvitacionPedido(); var guid1 = Guid.NewGuid(); miInvitacion.IdPedido = pedido.IdPedido; miInvitacion.IdUsuario = (int)valor; miInvitacion.Token = guid1; miInvitacion.Completado = false; Contexto.InvitacionPedido.Add(miInvitacion); Contexto.SaveChanges(); foreach (var item in usuariosInvitados) { InvitacionPedido invitacion = new InvitacionPedido(); var guid = Guid.NewGuid(); invitacion.IdPedido = pedido.IdPedido; var usu = Contexto.Usuario.Where(emailUsu => emailUsu.Email.Equals(item)).First(); if (usu.IdUsuario == valor) { break; } invitacion.IdUsuario = usu.IdUsuario; invitacion.Token = guid; invitacion.Completado = false; this.enviarEmail(invitacion, usu, null); Contexto.InvitacionPedido.Add(invitacion); Contexto.SaveChanges(); } var responsable = Contexto.InvitacionPedido.Where(i => i.IdUsuario == valor && i.IdPedido == pedido.IdPedido).Select(i => i.Token).FirstOrDefault(); this.enviarEmail(null, null, responsable); int idGenerado = pedido.IdPedido; return(idGenerado); }
internal void Delete(InvitacionPedido Invitation) { Db.InvitacionPedido.Remove(Invitation); Db.SaveChanges(); }
//TODO: Elegir service por json public MensajeAppi ElegirGustos(UsuarioGustos GustosUsuario) { MensajeAppi msj = new MensajeAppi(); try { InvitacionPedido invitado = GetInvitacionPedidoPorToken(GustosUsuario.Token.ToString(), GustosUsuario.IdUsuario); Pedido pedido = ObtenerPedidoPorId(invitado.IdPedido); // Pedido pedido = ObtenerPedidoPorId(ctx.InvitacionPedido.Where(t => t.Token == GustosUsuario.Token && t.IdUsuario == GustosUsuario.IdUsuario).FirstOrDefault().IdPedido); foreach (var gustoSolicitados in GustosUsuario.GustosEmpanadasCantidad) { if (pedido.GustoEmpanada.Where(g => g.IdGustoEmpanada == gustoSolicitados.IdGustoEmpanada).Count() == 0) { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque uno o mas pedidos no estan disponibles"; return(msj); } } if (pedido.EstadoPedido.Nombre == "Cerrado") { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque el pedido se encuentra cerrado"; return(msj); } foreach (var gusto in pedido.GustoEmpanada) { try { if (pedido.InvitacionPedidoGustoEmpanadaUsuario.Where(p => p.IdUsuario == GustosUsuario.IdUsuario && p.IdGustoEmpanada == gusto.IdGustoEmpanada).Count() > 0) { ctx.InvitacionPedidoGustoEmpanadaUsuario.Remove(ctx.InvitacionPedidoGustoEmpanadaUsuario.Where(i => i.GustoEmpanada.IdGustoEmpanada == gusto.IdGustoEmpanada && i.IdUsuario == GustosUsuario.IdUsuario && i.IdPedido == pedido.IdPedido).FirstOrDefault()); } var cantidadEmpanada = GustosUsuario.GustosEmpanadasCantidad.Where(c => c.IdGustoEmpanada == gusto.IdGustoEmpanada).FirstOrDefault().Cantidad; if (cantidadEmpanada != 0) { InvitacionPedidoGustoEmpanadaUsuario ipgeu = new InvitacionPedidoGustoEmpanadaUsuario { Cantidad = cantidadEmpanada, GustoEmpanada = gusto, IdUsuario = GustosUsuario.IdUsuario, }; pedido.InvitacionPedidoGustoEmpanadaUsuario.Add(ipgeu); } } catch (Exception e) { if (pedido.InvitacionPedidoGustoEmpanadaUsuario.Where(p => p.IdUsuario == GustosUsuario.IdUsuario && p.IdGustoEmpanada == gusto.IdGustoEmpanada).Count() > 0) { ctx.InvitacionPedidoGustoEmpanadaUsuario.Remove(ctx.InvitacionPedidoGustoEmpanadaUsuario.Where(i => i.GustoEmpanada.IdGustoEmpanada == gusto.IdGustoEmpanada && i.IdUsuario == GustosUsuario.IdUsuario && i.IdPedido == pedido.IdPedido).FirstOrDefault()); } msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque " + e.ToString(); return(msj); } } var invitacion = ctx.InvitacionPedido.Where(i => i.IdPedido == pedido.IdPedido && i.IdUsuario == GustosUsuario.IdUsuario).FirstOrDefault(); invitacion.Completado = true; ctx.SaveChanges(); msj.Resultado = "OK"; msj.Mensaje = "Gustos elegidos satisfactoriamente"; return(msj); } catch (NullReferenceException) { msj.Resultado = "ERROR"; msj.Mensaje = "No se pudo efectuar la operacion porque el usuario es invalido"; return(msj); } }