internal void ValidateToken(InvitacionPedido invitacionPedido, int idUsuario)
 {
     if (invitacionPedido.IdUsuario != idUsuario)
     {
         throw new AuthenticationException("Token inválido");
     }
 }
예제 #2
0
        /*
         * 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\">&nbsp;</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\">&nbsp;</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);
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        internal void Complete(InvitacionPedido Invitation)
        {
            InvitacionPedido InvitationFromDb = FindOneById(Invitation.IdInvitacionPedido);

            InvitationFromDb.Completado = true;
            Db.SaveChanges();
        }
예제 #6
0
        internal InvitacionPedido Create(InvitacionPedido Invitation)
        {
            Db.InvitacionPedido.Add(Invitation);
            Db.SaveChanges();

            return(Invitation);
        }
예제 #7
0
        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();
        }
예제 #10
0
        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);
        }
예제 #12
0
        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));
        }
예제 #13
0
        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;
            }
        }
예제 #14
0
        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();
            }
        }
예제 #15
0
        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);
            }
        }
예제 #16
0
 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);
                }
            }
        }
예제 #18
0
        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));
        }
예제 #20
0
        /// <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 }));
        }
예제 #21
0
        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));
                }
            }
        }
예제 #23
0
        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();
            }
        }
예제 #24
0
        //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);
        }
예제 #25
0
        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();
        }
예제 #26
0
        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);
            }
        }
예제 #27
0
 public ActionResult Elegir(InvitacionPedido invitacionCompletada)
 {
     InvitacionPedidoService.CompletarInvitacion(invitacionCompletada.Token);
     return(RedirectToAction("Lista", new { idUser = invitacionCompletada.IdUsuario }));
 }
예제 #28
0
        // 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);
        }
예제 #29
0
 internal void Delete(InvitacionPedido Invitation)
 {
     Db.InvitacionPedido.Remove(Invitation);
     Db.SaveChanges();
 }
예제 #30
0
        //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);
            }
        }