public RedirectToRouteResult CompleteConsignment(int?id)
        {
            Consignment consi = wde.Consignments.Find(id);


            WorkerLogs           wl     = new WorkerLogs();
            Worker               worker = wde.Workers.Find(Convert.ToInt32(Session["WorkerID"]));
            JavaScriptSerializer jss    = new JavaScriptSerializer();

            if (worker.workerLogs != null)
            {
                List <WorkerLogs> workerlogs = Newtonsoft.Json.JsonConvert.DeserializeObject <List <WorkerLogs> >(worker.workerLogs);
                wl.date        = DateTime.Now.ToShortDateString();
                wl.time        = DateTime.Now.ToShortTimeString();
                wl.description = "Completed Consignment of " + consi.supplier;
                workerlogs.Add(wl);
                string jsObj = jss.Serialize(workerlogs);
                worker.workerLogs = jsObj;
                wde.SaveChanges();
            }



            consi.consignmentStatus = "Completed";
            wde.Entry(consi).State  = EntityState.Modified;
            wde.SaveChanges();


            return(RedirectToAction("ConsignmentsSlotted"));
        }
 public ActionResult Edit([Bind(Include = "id,itemName,Manufacturer,Country,itemCode,Category")] Item item)
 {
     if (ModelState.IsValid)
     {
         db.Entry(item).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(item));
 }
        public void UpdateOrderCancel(string status)
        {
            int orderId             = Convert.ToInt32(status);
            WarehouseDBEntities wdm = new WarehouseDBEntities();
            Order Oldorder          = wdm.Orders.FirstOrDefault(a => a.orderId == orderId);
            Order orderCopy         = Oldorder;

            orderCopy.orderStatus = "Canceled";

            wdm.Entry(Oldorder).CurrentValues.SetValues(orderCopy);
            wdm.SaveChanges();
            wdm.Dispose();
        }
        public RedirectToRouteResult SaveEditWorker(string userid, string fullname, string email, string number, string username, string password, string[] shelfs)
        {
            WarehouseDBEntities wde     = new WarehouseDBEntities();
            UserAccount         useracc = wde.UserAccounts.Find(Convert.ToInt32(userid));


            useracc.Name                  = fullname;
            useracc.Email                 = email;
            useracc.UserName              = username;
            useracc.Contact               = number;
            useracc.Password              = password;
            useracc.ConfirmPassword       = password;
            useracc.Worker.assignedShelfs = JsonConvert.SerializeObject(shelfs);

            wde.Entry(useracc).State = EntityState.Modified;

            try
            {
                wde.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);
                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }

            return(RedirectToAction("ViewWorkers"));
        }
 /// <summary>
 /// 新增一个实体
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public int Add(T entity)
 {
     context.Entry <T>(entity).State = EntityState.Added;
     return(context.SaveChanges());
 }
        public ActionResult CompleteOrder()
        {
            if (Session["customerRecord"] != null && Session["orderRecord"] != null)
            {
                WarehouseDBEntities wdb      = new WarehouseDBEntities();
                Customer            customer = (Customer)Session["customerRecord"];
                List <Item>         items    = (List <Item>)Session["orderRecord"];
                int customerId;

                try { customerId = wdb.Customers.Max(i => i.id) + 1; }
                catch (Exception ex) { customerId = 1; }
                customer.id = customerId;

                int warehouseId = Convert.ToInt32(customer.selectedWarehouse);


                int orderId;

                try { orderId = wdb.Orders.Max(i => i.orderId) + 1; }
                catch (Exception ex) { orderId = 1; }
                wdb.Customers.Add(customer);
                wdb.SaveChanges();
                wdb.Dispose();

                wdb = new WarehouseDBEntities();
                Order order = new Order();
                order.orderId             = orderId;
                order.customerId          = customerId;
                order.orderDate           = System.DateTime.Now.Date;
                order.orderStatus         = "Unseen";
                order.warehouseId         = warehouseId;
                order.totalOrderQuanitity = 0;
                foreach (Item item in items)
                {
                    order.totalOrderQuanitity = order.totalOrderQuanitity + Convert.ToInt32(item.Manufacturer);
                }


                wdb.Orders.Add(order);
                wdb.SaveChanges();
                wdb.Dispose();


                wdb = new WarehouseDBEntities();
                List <item_Order> item_OrderList = new List <item_Order>();
                foreach (Item item in items)
                {
                    item_Order itemOrder = new item_Order();
                    itemOrder.itemId   = item.id;
                    itemOrder.orderId  = orderId;
                    itemOrder.quantity = Convert.ToInt32(item.Manufacturer);
                    item_OrderList.Add(itemOrder);

                    Item_Warehouse original = wdb.Item_Warehouse.FirstOrDefault(a => a.itemId == item.id && a.warehouseId == warehouseId);
                    Item_Warehouse copy     = original;
                    copy.orders  += 1;
                    copy.quantity = copy.quantity - itemOrder.quantity;
                    if (original != null)
                    {
                        wdb.Entry(original).CurrentValues.SetValues(copy);
                        wdb.SaveChanges();
                        wdb.Dispose();
                        wdb = new WarehouseDBEntities();
                    }
                }
                wdb.item_Order.AddRange(item_OrderList);
                wdb.SaveChanges();
                wdb.Dispose();


                Session.Clear();
                Session.Abandon();
            }
            else
            {
                RedirectToAction("Register", "Account");
            }

            return(View());
        }
        public void generateOrderIntruction(Order order)
        {
            List <String>        instruction    = new List <string>();
            JavaScriptSerializer jsonSerialiser = new JavaScriptSerializer();
            WarehouseDBEntities  wdb            = new WarehouseDBEntities();
            OrderBusinessLayer   wbl            = new OrderBusinessLayer();
            string instructionString            = "";

            /**
             *
             * Go to Shelf "shelf id" and pick "item name" from slots "start slot" to "end slot" and send them to depot
             **/
            foreach (var inst in dispatchInstructions.Distinct())
            {
                Shelf shelf = wdb.Shelves.Find(inst.shelfid);

                string[] shelveName = shelf.shelfName.Split('s');
                string   shelves    = "s" + shelveName[1];
                shelfRetrieval.Add(shelves);

                instructionString = "Go to shelf " + shelves + " and pick " + inst.itemname + " from slots " + inst.startslot + " to " + inst.endslot + " and send them to depot";
                instruction.Add(instructionString);



                Slotting s = new Slotting();

                List <ShelfItems> shelfItems     = s.covert_to_object(shelf.shelfItems);
                List <ShelfItems> copyShelfItems = new List <ShelfItems>();
                copyShelfItems.AddRange(shelfItems);

                bool with = false;
                int  i    = 0;
                foreach (ShelfItems shelve in shelfItems)
                {
                    if (shelve.slot_id == inst.startslot || with == true)
                    {
                        with = true;
                        copyShelfItems[i].item_id     = -1;
                        copyShelfItems[i].status      = 0;
                        copyShelfItems[i].item_name   = "";
                        copyShelfItems[i].expiry_date = "";


                        if (shelve.slot_id == inst.endslot)
                        {
                            with = false;
                        }
                    }
                    i++;
                }


                string updatedString = jsonSerialiser.Serialize(copyShelfItems);
                wbl.updateShelf(inst.shelfid, updatedString);
            }



            string json = jsonSerialiser.Serialize(instruction);

            int maxDispatchId = 1;

            try
            {
                maxDispatchId = wdb.Orders.Max(a => a.dispatchNo).Value + 1;
            }
            catch (Exception ex)
            {
                maxDispatchId = 1;
            }


            wbl.updateOrder(order.orderId, json, maxDispatchId);
            WarehouseDBEntities wde = new WarehouseDBEntities();
            Order orders            = wde.Orders.Find(order.orderId);

            orders.shelfRetrieval   = jsonSerialiser.Serialize(shelfRetrieval.Distinct().ToList());
            wde.Entry(orders).State = System.Data.Entity.EntityState.Modified;
            wde.SaveChanges();
        }
Exemple #8
0
        public ActionResult Save(List <Item> ware, List <Item_Consignment> itemcon, List <Consignment> con)
        {
            int conid = -1;
            List <ItemsSlotter> isl = new List <ItemsSlotter>();

            foreach (Consignment conn in con)
            {
                WarehouseBusinessLayer wbl = new WarehouseBusinessLayer();
                int warehouseIdd           = wbl.getWarehouseId(Convert.ToInt32(Session["UserID"]));
                conn.warehouseId       = warehouseIdd;
                conn.consignmentStatus = "Added";
                try
                {
                    conid = db.Consignments.Max(u => u.id) + 1;
                }
                catch (Exception ex) { conid = 1; }
                conn.id = conid;
                cbl.addConsignment(conn);


                int index = 0;
                foreach (Item_Consignment ic in itemcon)
                {
                    Item items = ware.ElementAt(index);
                    ic.itemId = getNewOrOldId(items);

                    ItemsSlotter itemslot = new ItemsSlotter();

                    itemslot.item_id  = ic.itemId;
                    itemslot.quantity = (int)ic.quantity;
                    //   itemslot.expiry_date = ic.expiry.Value.ToShortDateString();

                    Item it = db.Items.FirstOrDefault(a => a.id == itemslot.item_id);
                    itemslot.item_name = it.itemName;



                    bool val = db.Item_Warehouse.Any(o => o.itemId == ic.itemId && o.warehouseId == warehouseIdd);
                    if (val == true)
                    {
                        Item_Warehouse iw = db.Item_Warehouse.FirstOrDefault(a => a.itemId == ic.itemId && a.warehouseId == warehouseIdd);
                        iw.quantity += ic.quantity;
                        cbl.updateItemWarehouse(iw);
                        itemslot.quantity = (int)iw.quantity;
                        // found = true;
                        //TODO: ADO.NET CODE
                    }
                    else
                    {
                        Item_Warehouse iw = new Item_Warehouse();
                        iw.warehouseId = warehouseIdd;
                        iw.itemId      = ic.itemId;
                        iw.quantity    = ic.quantity;
                        iw.orders      = 0;
                        cbl.addItemWarehouse(iw);
                        itemslot.quantity = (int)iw.quantity;
                    }

                    ic.consignmentId = conid;
                    cbl.addItem_Consignment(ic);

                    isl.Add(itemslot);
                    index++;
                }


                //Yaha pe SLotting Horae ha
                List <Shelf> newShelf = db.Shelves.Where(a => a.warehouse_id == warehouseIdd).ToList();
                Slotting     slotting = new Slotting();
                bool         isError  = slotting.slotting(newShelf, isl);
                if (isError)
                {
                    ViewBag.throwError = "Unfortunately, there is no space in warehouse for the new items";
                }
                List <String>        instructionList = slotting.instructionsList;
                JavaScriptSerializer jss             = new JavaScriptSerializer();
                string inst = jss.Serialize(instructionList);
                SlottingBusinessLayer sbl = new SlottingBusinessLayer();
                sbl.UpdateConsignmentInstruction(conid, inst);
                List <String> shelfInserted     = slotting.shelfInserted.Distinct().ToList();
                string        insertedShelfJSON = jss.Serialize(shelfInserted);

                WarehouseDBEntities wdb         = new WarehouseDBEntities();
                Consignment         consignment = wdb.Consignments.Find(conid);
                consignment.consignmentStatus = "Added";
                consignment.shelfInserted     = insertedShelfJSON;
                wdb.Entry(consignment).State  = EntityState.Modified;
                wdb.SaveChanges();

                Session["consignmentID"] = conid;

                break;
            }


            return(RedirectToAction("LoggedIn", "Account"));
        }