public void ProcessOrder(int direccion) { var persona = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name); // Cuando llega "Nueva" significa que se utilizó un cupón en la orden var orderFind = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.NombreCustomer == "Nueva"); var datosCustomer = DbModel.Direcciones.FirstOrDefault(x => x.Id == direccion); int idOrder = 0; // Todo el siguiente bloque es usado para generar un detalle de la orden, dando a conoce productos y precios que el usaurio comprara using (this.DbModel = new ApplicationDbContext()) { var model = new CarritoComprasViewModel { CarritoCollection = DbModel.CarritoCompras.Where(x => x.idPersona == persona.idPersona).ToList(), }; model.CantidadesProductos = new List <CarritoCompra>(); int j = 0, i = 0; ////return RedirectToAction("PagoProducto", new { dire = direccion, subtotal = subtotal, total = total, cupon = cupon, ship = ship }) ; // Si llega diferente a null significa que se va actualizar el orden que ya existe gracias al cupon if (orderFind != null) { idOrder = orderFind.IdOrder; MerxProject.Models.Order.Orders order = new Models.Order.Orders() { IdOrder = orderFind.IdOrder, NombreCustomer = datosCustomer.NombreCompleto, NumeroCustomer = datosCustomer.NumTelefono, DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento, EmailCustomer = User.Identity.Name, idPersona = persona.idPersona, idDireccion = datosCustomer.Id, DiaOrden = DateTime.Now, TipoPago = "Pago Online", Estatus = "Procesando" }; DbModel.Orders.AddOrUpdate(order); DbModel.SaveChanges(); } else { var orderUpdate = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.Estatus == "Procesando"); if (orderUpdate != null) { MerxProject.Models.Order.Orders order = new Models.Order.Orders() { IdOrder = orderUpdate.IdOrder, NombreCustomer = datosCustomer.NombreCompleto, NumeroCustomer = datosCustomer.NumTelefono, DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento, EmailCustomer = User.Identity.Name, idPersona = persona.idPersona, DiaOrden = DateTime.Now, idDireccion = datosCustomer.Id, TipoPago = "Pago Online", Estatus = "Procesando" }; DbModel.Orders.AddOrUpdate(order); DbModel.SaveChanges(); idOrder = orderUpdate.IdOrder; } else { MerxProject.Models.Order.Orders order = new Models.Order.Orders() { NombreCustomer = datosCustomer.NombreCompleto, NumeroCustomer = datosCustomer.NumTelefono, DireccionCustomer = datosCustomer.DirCalle + ", " + datosCustomer.CodigoPostal + ", " + datosCustomer.Estado + ", " + datosCustomer.Ciudad + ", " + datosCustomer.Asentamiento, EmailCustomer = User.Identity.Name, idPersona = persona.idPersona, DiaOrden = DateTime.Now, idDireccion = datosCustomer.Id, TipoPago = "Pago Online", Estatus = "Procesando" }; DbModel.Orders.Add(order); DbModel.SaveChanges(); idOrder = order.IdOrder; } } var orderDetails = DbModel.OrdersDetails.Where(x => x.idOrder == idOrder).ToList(); foreach (var item in orderDetails) { DbModel.OrdersDetails.Remove(item); DbModel.SaveChanges(); } i = 0; foreach (var item in model.CarritoCollection) { OrdersDetails ordersDetails = new OrdersDetails() { idOrder = idOrder, idProducto = item.idProducto, idColor = item.idColor, Cantidad = item.Cantidad, Precio = item.Precio }; i++; DbModel.OrdersDetails.Add(ordersDetails); DbModel.SaveChanges(); } } }
public async Task <ActionResult> IndexTienda(string cupon, string ship, int subtotal) { var persona = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name); var ordenesCompra = DbModel.Orders.FirstOrDefault(x => x.idPersona == persona.idPersona && x.Estatus == "Procesando"); var cupons = DbModel.Cupon.FirstOrDefault(x => x.CodigoCupon == cupon); if (cupons != null) { if (cupons.Utilizado) { ViewBag.CupNotExit = 2; IndexTienda(null); return(View()); } } else { ViewBag.CupNotExit = 1; IndexTienda(null); return(View()); } if (cupons != null) { double descuento = (cupons.Descuento / 100.00); descuento *= subtotal; var idPersona = DbModel.Personas.FirstOrDefault(x => x.Correo == User.Identity.Name); using (this.DbModel = new ApplicationDbContext()) { // En caso de que haya generado uan Orden sin cupo pero luego regreso para asignarle un decuento a la compra, procedemos a editar el Orden Actual. if (ordenesCompra != null) { cupons.IdPersona = idPersona.idPersona; cupons.Utilizado = true; cupons.idOrder = ordenesCompra.IdOrder; DbModel.Cupon.AddOrUpdate(cupons); DbModel.SaveChanges(); } else { cupons.IdPersona = idPersona.idPersona; cupons.Utilizado = true; MerxProject.Models.Order.Orders order = new Models.Order.Orders() { NombreCustomer = "Nueva", NumeroCustomer = "", DireccionCustomer = "", EmailCustomer = "", idPersona = idPersona.idPersona, DiaOrden = DateTime.Now, TipoPago = "", Estatus = "" }; DbModel.Orders.Add(order); DbModel.SaveChanges(); cupons.idOrder = order.IdOrder; DbModel.Cupon.AddOrUpdate(cupons); DbModel.SaveChanges(); } } ViewBag.radioBtn = ship; ViewBag.subTotalDesc = subtotal - descuento; IndexTienda(null); return(View()); } else { ViewBag.CupNotExit = 1; IndexTienda(null); return(View()); } }