Beispiel #1
0
        public ActionResult FinalizarCompra()
        {
            using (var db = new EventorDbContext())
            {
                var items = (List <Item>)Session["Items"];

                if (items != null)
                {
                    decimal total = 0;
                    foreach (var item in items)
                    {
                        total += item.Subtotal;
                    }

                    var pedido = new Pedido()
                    {
                        FechaHora = DateTime.Now,
                        UserName  = User.Identity.GetUserName(),
                        Total     = total
                    };

                    db.Pedidos.Add(pedido);
                    db.SaveChanges();

                    db.Entry(pedido).State = EntityState.Detached;

                    int id = int.Parse(db.Pedidos
                                       .OrderByDescending(p => p.FechaHora)
                                       .Select(r => r.PedidoId)
                                       .First().ToString());

                    var          pedidoAgregado = db.Pedidos.Find(id);
                    Participante participante   = null;
                    var          user           = User.Identity.GetUserName();

                    foreach (var item in items)
                    {
                        pedidoAgregado.Items.Add(new Item
                        {
                            Cantidad  = item.Cantidad,
                            EntradaId = item.EntradaId,
                            PedidoId  = id,
                            Subtotal  = item.Subtotal,
                            Precio    = item.Precio
                        });

                        participante                 = db.Participantes.Where(p => p.EventoId == item.Entrada.EventoId && p.Correo == user).Single();
                        participante.Estado          = Estado.Confirmado;
                        db.Entry(participante).State = EntityState.Modified;
                    }
                    db.SaveChanges();
                }
                return(RedirectToAction("Index"));
            }
        }