Exemplo n.º 1
0
        //[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));
        }
Exemplo n.º 2
0
        //[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));
        }