// GET: CenterProducts public ActionResult Details(int id) { CenterProductStockViewModel stockvm = new CenterProductStockViewModel(); stockvm.ProductStockViewModels = new List <ProductStockViewModel>(); stockvm.CenterId = id; Usuario usuario = db.Usuarios.Find(SessionHelper.GetUser()); ViewBag.Title = "Stock del Centro " + usuario.Center?.Descripcion; ViewBag.isAdmin = usuario.Rol.IsAdmin; List <Product> products = db.Products.Where(p => p.Enable).ToList(); List <CenterProduct> centerProducts = db.CenterProducts.Where(x => x.CenterId == id).ToList(); foreach (var item in products) { ProductStockViewModel productStockViewModel = new ProductStockViewModel(); CenterProduct centerProduct = centerProducts.Where(x => x.ProductId == item.Id).FirstOrDefault(); if (centerProducts.Any(x => x.ProductId == item.Id)) { productStockViewModel.Stock = centerProduct.Stock; } else { productStockViewModel.Stock = 0; } productStockViewModel.ProductId = item.Id; productStockViewModel.Product = item; stockvm.ProductStockViewModels.Add(productStockViewModel); } return(View(stockvm)); }
private void CambiarEstadoLogic(CambiarEstaudoViewModel viewModel) { Order order = db.Orders.Where(x => x.Id == viewModel.Id).Include(x => x.OrderProducts).FirstOrDefault(); int oldStatudId = order.StatusId; order.StatusId = viewModel.StatusId; bool esValidoElCambio = false; //Verifico si el cambio de estado es correcto switch (oldStatudId) { case (int)StatusOrder.Solicitado: //El solicitado Puede pasar a Aceptado, rechazado esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado || order.StatusId == (int)StatusOrder.Rechazado); break; case (int)StatusOrder.Aceptado: //El entregado Puede pasar a Solicitado, Entregado o rechazado esValidoElCambio = (order.StatusId == (int)StatusOrder.Solicitado || order.StatusId == (int)StatusOrder.Entregado || order.StatusId == (int)StatusOrder.Rechazado); break; case (int)StatusOrder.Rechazado: //El solicitado Puede pasar a Aceptado esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado); break; case (int)StatusOrder.Entregado: //El solicitado Puede pasar a Aceptado esValidoElCambio = (order.StatusId == (int)StatusOrder.Aceptado); break; default: esValidoElCambio = false; break; } //if (esValidoElCambio == false) // return Json(new { responseCode = "-10" }); //Si el estado es Entregado hace una actualizacion automatica del stock if (order.StatusId == (int)StatusOrder.Entregado) { //Recupero los que productos que tiene dados de alta var centerProducts = db.CenterProducts.Where(x => x.CenterId == order.CenterId).ToList(); foreach (var item in order.OrderProducts) { var prod = centerProducts.Where(x => x.ProductId == item.ProductId).FirstOrDefault(); if (prod != null) { //Ya axiste prod.Stock = prod.Stock + item.QuantityDelivered; //products_upd.Add(prod); db.Entry(prod).State = EntityState.Modified; } else { //Si no existe, lo impacto CenterProduct centerProduct = new CenterProduct { CenterId = item.Order.CenterId, ProductId = item.ProductId, Stock = item.QuantityDelivered }; db.CenterProducts.Add(centerProduct); } } } db.Entry(order).State = EntityState.Modified; OrderTracking tracking = new OrderTracking { Fecha = DateTime.Now, OrderId = viewModel.Id, ToStatusId = oldStatudId, SinceStatusId = viewModel.StatusId, UsuarioId = SessionHelper.GetUser(), Observation = viewModel.Observation }; db.OrderTrackings.Add(tracking); db.SaveChanges(); AuditHelper.Auditar("Modificacion", order.Id.ToString(), className, ModuleDescription, WindowDescription); }
public JsonResult Create(CenterProductStockViewModel order) { var responseObject = new { responseCode = -1 }; if (order == null) { return(Json(new { responseCode = "-10" })); } try { int centerId = order.CenterId; List <CenterProduct> centerProducts_add = new List <CenterProduct>(); List <CenterProduct> centerProducts_upd = new List <CenterProduct>(); List <CenterProduct> centerProducts_dtl = new List <CenterProduct>(); List <CenterProduct> centerProductsDB = db.CenterProducts.Where(c => c.CenterId == centerId).ToList(); //Estos son los que se modificaron o agregaron foreach (var item in order.ProductStockViewModels) { var centerProductoDB = centerProductsDB.Where(x => x.ProductId == item.ProductId).FirstOrDefault(); CenterProduct centerProduct = new CenterProduct { CenterId = centerId, ProductId = item.ProductId, Stock = item.Stock }; //Si el producto ya estaba dado de alta lo modifico if (centerProductoDB != null) { centerProduct.Id = centerProductoDB.Id; centerProducts_upd.Add(centerProduct); } else { //Sino lo doy de alta centerProducts_add.Add(centerProduct); } } //Ahora faltan los que ya no vienieron List <int> tempIdList = centerProducts_upd.Select(x => x.Id).ToList(); centerProducts_dtl = centerProductsDB.Where(q => !tempIdList.Contains(q.Id)).ToList(); foreach (var item in centerProducts_dtl) { CenterProduct centerProduct = new CenterProduct { CenterId = centerId, ProductId = item.ProductId, Stock = 0, Id = item.Id }; centerProducts_upd.Add(centerProduct); } db.CenterProducts.AddRange(centerProducts_add); foreach (var model in centerProducts_upd) { CenterProduct centerProduct = db.CenterProducts.Find(model.Id); centerProduct.Stock = model.Stock; db.Entry(centerProduct).State = EntityState.Modified; } db.SaveChanges(); AuditHelper.Auditar("Modificacion", order.CenterId.ToString(), className, ModuleDescription, WindowDescription); responseObject = new { responseCode = 0 }; } catch (Exception e) { responseObject = new { responseCode = -1 }; } return(Json(responseObject)); }