//[ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,IsManual,AccessCardID,DeletedFlag,ShipmentStatusID,OrderID,BayID,BayName,CustomerName,VehicleCode,DriverName,DriverCNIC,CarrierName,ProductID")] Shipment shipment, FormCollection formCollection) { #region update bays queue #endregion #region access card update if (shipment.AccessCardID != null && shipment.ShipmentStatusID == 1) { ///////////////////////////////////////////////////update order status/////////////////////////////////////////////////// Order odr = db.Orders.Where(x => x.OrderID == shipment.OrderID).FirstOrDefault <Order>(); odr.OrderStatusID = 3; odr.ModifiedDate = DateTime.Now; odr.ModifiedBy = User.Identity.Name; db.Orders.Attach(odr); db.Entry(odr).Property(x => x.ModifiedDate).IsModified = true; db.Entry(odr).Property(x => x.ModifiedBy).IsModified = true; db.Entry(odr).Property(x => x.OrderStatusID).IsModified = true; db.SaveChanges(); /////////////////////////////////////////////////assign access card/////////////////////////////////////////////// AccessCard accessCard = db.AccessCards.Where(x => x.CardID == shipment.AccessCardID).FirstOrDefault <AccessCard>(); accessCard.IsAssigned = true; accessCard.ModifiedDate = DateTime.Now; accessCard.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCard); db.Entry(accessCard).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCard).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCard).Property(x => x.IsAssigned).IsModified = true; db.Entry(accessCard).State = EntityState.Modified; db.SaveChanges(); //db.Entry(accessCard).State = EntityState.Detached; } else if (shipment.AccessCardID != null && shipment.ShipmentStatusID != 1 && shipment.ShipmentStatusID != 5) { ////////////////////////////////////unassign card if any//////////////////////// int?expectedID = db.Shipments.AsNoTracking().Where(x => x.ID == shipment.ID).FirstOrDefault().AccessCardID; if (expectedID != null && expectedID != shipment.AccessCardID) { /////////////////////////////////////////access card old/////////////////////// AccessCard accessCardOld = db.AccessCards.Where(x => x.CardID == expectedID).FirstOrDefault <AccessCard>(); accessCardOld.IsAssigned = false; accessCardOld.ModifiedDate = DateTime.Now; accessCardOld.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCardOld); db.Entry(accessCardOld).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCardOld).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCardOld).Property(x => x.IsAssigned).IsModified = true; //////////////////////////access card New/////////////////////////////////////// AccessCard accessCardNew = db.AccessCards.Where(x => x.CardID == shipment.AccessCardID).FirstOrDefault <AccessCard>(); accessCardNew.CardID = (int)shipment.AccessCardID; accessCardNew.IsAssigned = true; accessCardNew.ModifiedDate = DateTime.Now; accessCardNew.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCardNew); db.Entry(accessCardNew).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCardNew).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCardNew).Property(x => x.IsAssigned).IsModified = true; ///////////////////////////finally save data///////////////////////////////////// db.Entry(accessCardOld).State = EntityState.Modified; db.Entry(accessCardNew).State = EntityState.Modified; db.SaveChanges(); } else { ///////////////////////////////////////////////////update order status/////////////////////////////////////////////////// Order odr = db.Orders.Where(x => x.OrderID == shipment.OrderID).FirstOrDefault <Order>(); odr.OrderStatusID = 3; odr.ModifiedDate = DateTime.Now; odr.ModifiedBy = User.Identity.Name; db.Orders.Attach(odr); db.Entry(odr).Property(x => x.ModifiedDate).IsModified = true; db.Entry(odr).Property(x => x.ModifiedBy).IsModified = true; db.Entry(odr).Property(x => x.OrderStatusID).IsModified = true; db.SaveChanges(); ////////////////////////////////////////////////assign Access card/////////////////////////////////////////////////////// AccessCard accessCard = db.AccessCards.Where(x => x.CardID == shipment.AccessCardID).FirstOrDefault <AccessCard>(); accessCard.CardID = (int)shipment.AccessCardID; accessCard.IsAssigned = true; accessCard.ModifiedDate = DateTime.Now; accessCard.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCard); db.Entry(accessCard).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCard).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCard).Property(x => x.IsAssigned).IsModified = true; db.Entry(accessCard).State = EntityState.Modified; //commneted by ahad for performance db.SaveChanges(); } } else if (shipment.ShipmentStatusID == 5) { Order odr = db.Orders.Where(x => x.OrderID == shipment.OrderID).FirstOrDefault <Order>(); odr.OrderStatusID = 3; odr.OrderDeliveryDT = DateTime.Now; odr.ModifiedDate = DateTime.Now; odr.ModifiedBy = User.Identity.Name; db.Orders.Attach(odr); db.Entry(odr).Property(x => x.ModifiedDate).IsModified = true; db.Entry(odr).Property(x => x.ModifiedBy).IsModified = true; db.Entry(odr).Property(x => x.OrderStatusID).IsModified = true; db.Entry(odr).Property(x => x.OrderDeliveryDT).IsModified = true; db.SaveChanges(); ////////////////////////////// int bayidfrmDb = db.Shipments.AsNoTracking().Where(x => x.ID == shipment.ID).FirstOrDefault().BayID.Value; bayFrequency(bayidfrmDb); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int accessCardidfrmDb = db.Shipments.AsNoTracking().Where(x => x.ID == shipment.ID).FirstOrDefault().AccessCardID.Value; AccessCard accessCard = db.AccessCards.Where(x => x.CardID == accessCardidfrmDb).FirstOrDefault <AccessCard>(); accessCard.IsAssigned = false; accessCard.ModifiedDate = DateTime.Now; accessCard.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCard); db.Entry(accessCard).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCard).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCard).Property(x => x.IsAssigned).IsModified = true; db.Entry(accessCard).State = EntityState.Modified; //commneted by ahad for performance db.SaveChanges(); //db.Entry(accessCard).State = EntityState.Detached; } #endregion #region shipment compartment int compCountTempDataUpdate = Convert.ToInt32(TempData["CompCountUpdate"].ToString()); if (compCountTempDataUpdate != 0) { for (int i = 0; i < compCountTempDataUpdate; i++) { int compIDConverted = Convert.ToInt32(formCollection["compId" + i]); ShipmentCompartment shipmentComp = db.ShipmentCompartments.Where(x => x.ID == compIDConverted).FirstOrDefault <ShipmentCompartment>(); //shipmentComp.ID = Convert.ToInt32(formCollection["compId" + i]); shipmentComp.OrderedQuantity = Convert.ToInt32(formCollection["Order.OrderQty"]); int compPlannedQty; if (Int32.TryParse(formCollection["compPlannedQty" + i], out compPlannedQty)) { shipmentComp.PlannedQuantity = compPlannedQty; } else { shipmentComp.PlannedQuantity = null; } if (shipment.ShipmentStatusID == 3 || shipment.ShipmentStatusID == 5) // Either Close or checkedIn { int compManualPreDip; if (Int32.TryParse(formCollection["compManualPreDip" + i], out compManualPreDip)) { shipmentComp.PreDip = compManualPreDip; } else { shipmentComp.PreDip = null; } int compManualPostDip; if (Int32.TryParse(formCollection["compManualPostDip" + i], out compManualPostDip)) { shipmentComp.PostDip = compManualPostDip; } else { shipmentComp.PostDip = null; } int compDelta; if (Int32.TryParse(formCollection["compDelta" + i], out compDelta)) { shipmentComp.Delta = compDelta; } else { shipmentComp.Delta = null; } } shipmentComp.AccessCardKey = shipment.AccessCardID.ToString(); shipmentComp.BayID = Convert.ToInt32(shipment.BayID); shipmentComp.Product = shipment.ProductID.ToString(); shipmentComp.ShipmentID = shipment.ID; //shipmentComp.CreatedDate = DateTime.Now; shipmentComp.ModifiedDate = DateTime.Now; shipmentComp.ModifiedBy = User.Identity.Name; shipmentComp.CompartmentCode = Convert.ToInt32(formCollection["compCode" + i]); shipmentComp.Capacity = Convert.ToInt32(formCollection["compCapacity" + i]); db.ShipmentCompartments.Attach(shipmentComp); db.Entry(shipmentComp).State = EntityState.Modified; db.SaveChanges(); //db.Entry(shipmentComp).State = EntityState.Detached; } } else { int compCountTempDataNew = Convert.ToInt32(TempData["CompCountNew"].ToString()); for (int i = 0; i < compCountTempDataNew; i++) { try { if (shipment.ShipmentStatusID != 4) { shipment.ShipmentStatusID = 2; // shipment status id is set to queued. } ShipmentCompartment shipmentComp = new ShipmentCompartment(); shipmentComp.OrderedQuantity = Convert.ToInt32(formCollection["Order.OrderQty"]); int compPlannedQty; if (Int32.TryParse(formCollection["compPlannedQty" + i], out compPlannedQty)) { shipmentComp.PlannedQuantity = compPlannedQty; } else { shipmentComp.PlannedQuantity = null; } shipmentComp.AccessCardKey = shipment.AccessCardID.ToString(); shipmentComp.BayID = Convert.ToInt32(shipment.BayID); shipmentComp.Product = shipment.ProductID.ToString(); shipmentComp.ShipmentID = shipment.ID; shipmentComp.CreatedDate = DateTime.Now; shipmentComp.CreatedBy = User.Identity.Name; shipmentComp.ModifiedDate = DateTime.Now; shipmentComp.ModifiedBy = User.Identity.Name; shipmentComp.CompartmentCode = Convert.ToInt32(formCollection["compCode" + i]); shipmentComp.Capacity = Convert.ToInt32(formCollection["compCapacity" + i]); db.ShipmentCompartments.Add(shipmentComp); db.SaveChanges(); } catch (Exception e) { e.ToString(); } } } #endregion if (ModelState.IsValid) { //Shipment ship = db.Shipments.Where(x => x.ID == shipment.ID).FirstOrDefault<Shipment>(); shipment.ShipmentDate = DateTime.Now; shipment.ModifiedDate = DateTime.Now; shipment.ModifiedBy = User.Identity.Name; db.Entry(shipment).State = EntityState.Modified; db.Entry(shipment).Property(x => x.CreatedDate).IsModified = false; db.Entry(shipment).Property(x => x.CreatedBy).IsModified = false; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.AccessCardID = new SelectList(db.AccessCards, "CardID", "Remarks", shipment.AccessCardID); ViewBag.BayID = new SelectList(db.Bays, "BayID", "Remarks", shipment.BayID); ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderCode", shipment.OrderID); ViewBag.ShipmentStatusID = new SelectList(db.ShipmentStatus, "ID", "Status", shipment.ShipmentStatusID); ViewBag.ID = new SelectList(db.WeighBridges, "ShipmentID", "Status", shipment.ID); return(View(shipment)); }
//[ValidateAntiForgeryToken] public ActionResult Create([Bind(Include = "ID,AccessCardID,DeletedFlag,ShipmentStatusID,OrderID,BayID,BayName,CustomerName,VehicleCode,DriverName,DriverCNIC,CarrierName,ShipmentDate,ProductID")] Shipment shipment, FormCollection formCollection) { #region shipment compartment int compCountTempDataUpdate = Convert.ToInt32(TempData["CompCountUpdate"].ToString()); if (compCountTempDataUpdate != 0) { for (int i = 0; i < compCountTempDataUpdate; i++) { int compID = Convert.ToInt32(formCollection["compId" + i]); ShipmentCompartment shipmentComp = db.ShipmentCompartments.AsNoTracking().Where(x => x.ID == compID).FirstOrDefault <ShipmentCompartment>(); //shipmentComp.ID = Convert.ToInt32(formCollection["compId" + i]); shipmentComp.OrderedQuantity = Convert.ToInt32(formCollection["Order.OrderQty"]); int compActualQty; if (Int32.TryParse(formCollection["compPlannedQty" + i], out compActualQty)) { shipmentComp.ActualBCUQuantity = compActualQty; } else { shipmentComp.ActualBCUQuantity = null; } //shipmentComp.AccessCardKey = shipment.AccessCardID.ToString(); //shipmentComp.BayID = Convert.ToInt32(shipment.BayID); shipmentComp.Product = shipment.ProductID.ToString(); shipmentComp.ShipmentID = shipment.ID; //shipmentComp.CreatedDate = DateTime.Now; shipmentComp.ModifiedDate = DateTime.Now; shipmentComp.ModifiedBy = User.Identity.Name; shipmentComp.CompartmentCode = Convert.ToInt32(formCollection["compCode" + i]); shipmentComp.Capacity = Convert.ToInt32(formCollection["compCapacity" + i]); db.ShipmentCompartments.Attach(shipmentComp); db.Entry(shipmentComp).Property(x => x.OrderedQuantity).IsModified = true; db.Entry(shipmentComp).Property(x => x.ActualBCUQuantity).IsModified = true; db.Entry(shipmentComp).Property(x => x.Product).IsModified = true; db.Entry(shipmentComp).Property(x => x.ShipmentID).IsModified = true; db.Entry(shipmentComp).Property(x => x.ModifiedDate).IsModified = true; db.Entry(shipmentComp).Property(x => x.ModifiedBy).IsModified = true; db.Entry(shipmentComp).Property(x => x.CompartmentCode).IsModified = true; db.Entry(shipmentComp).Property(x => x.Capacity).IsModified = true; db.Entry(shipmentComp).State = EntityState.Modified; db.SaveChanges(); //db.Entry(shipmentComp).State = EntityState.Detached; } } else { int compCountTempDataNew = Convert.ToInt32(TempData["CompCountNew"].ToString()); for (int i = 0; i < compCountTempDataNew; i++) { try { //shipment.ShipmentStatusID = 2; // shipment status id is set to queued. ShipmentCompartment shipmentComp = new ShipmentCompartment(); shipmentComp.OrderedQuantity = Convert.ToInt32(formCollection["Order.OrderQty"]); int compPlannedQty; if (Int32.TryParse(formCollection["compPlannedQty" + i], out compPlannedQty)) { shipmentComp.PlannedQuantity = compPlannedQty; } else { shipmentComp.PlannedQuantity = null; } shipmentComp.AccessCardKey = shipment.AccessCardID.ToString(); shipmentComp.BayID = Convert.ToInt32(shipment.BayID); shipmentComp.Product = shipment.ProductID.ToString(); shipmentComp.ShipmentID = shipment.ID; shipmentComp.CreatedDate = DateTime.Now; shipmentComp.CreatedBy = User.Identity.Name; shipmentComp.ModifiedDate = DateTime.Now; shipmentComp.ModifiedBy = User.Identity.Name; shipmentComp.CompartmentCode = Convert.ToInt32(formCollection["compCode" + i]); shipmentComp.Capacity = Convert.ToInt32(formCollection["compCapacity" + i]); db.ShipmentCompartments.Add(shipmentComp); db.SaveChanges(); } catch (Exception e) { e.ToString(); } } } #endregion if (shipment.ShipmentStatusID == 5) { Order odr = db.Orders.Where(x => x.OrderID == shipment.OrderID).FirstOrDefault <Order>(); odr.OrderStatusID = 3; odr.OrderDeliveryDT = DateTime.Now; odr.ModifiedDate = DateTime.Now; odr.ModifiedBy = User.Identity.Name; db.Orders.Attach(odr); db.Entry(odr).Property(x => x.ModifiedDate).IsModified = true; db.Entry(odr).Property(x => x.ModifiedBy).IsModified = true; db.Entry(odr).Property(x => x.OrderStatusID).IsModified = true; db.Entry(odr).Property(x => x.OrderDeliveryDT).IsModified = true; db.SaveChanges(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// AccessCard accessCard = db.AccessCards.Where(x => x.CardID == shipment.AccessCardID).FirstOrDefault <AccessCard>(); accessCard.CardID = (int)shipment.AccessCardID; accessCard.IsAssigned = false; accessCard.ModifiedDate = DateTime.Now; accessCard.ModifiedBy = User.Identity.Name; db.AccessCards.Attach(accessCard); db.Entry(accessCard).Property(x => x.ModifiedDate).IsModified = true; db.Entry(accessCard).Property(x => x.ModifiedBy).IsModified = true; db.Entry(accessCard).Property(x => x.IsAssigned).IsModified = true; db.Entry(accessCard).State = EntityState.Modified; //commneted by ahad for performance db.SaveChanges(); //db.Entry(accessCard).State = EntityState.Detached; } if (ModelState.IsValid) { shipment.ModifiedDate = DateTime.Now; shipment.ModifiedBy = User.Identity.Name; db.Shipments.Attach(shipment); db.Entry(shipment).Property(x => x.ModifiedDate).IsModified = true; db.Entry(shipment).Property(x => x.ModifiedBy).IsModified = true; db.Entry(shipment).Property(x => x.ShipmentStatusID).IsModified = true; //db.Entry(shipment).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.AccessCardID = new SelectList(db.AccessCards, "CardID", "Remarks", shipment.AccessCardID); ViewBag.BayID = new SelectList(db.Bays, "BayID", "Remarks", shipment.BayID); ViewBag.OrderID = new SelectList(db.Orders, "OrderID", "OrderCode", shipment.OrderID); ViewBag.ShipmentStatusID = new SelectList(db.ShipmentStatus, "ID", "Status", shipment.ShipmentStatusID); ViewBag.ID = new SelectList(db.WeighBridges, "ShipmentID", "Status", shipment.ID); return(View(shipment)); }