Exemple #1
0
        // GET: MasterProcess/Create
        /// <summary>
        /// Fungsi Create ini merupakan fungsi yang digunakan untuk menampilkan form untuk menambahkan data Master Process yang baru untuk sebuah product
        /// </summary>
        /// <param name="productID">Merupakan sebuah bilangan integer</param>
        /// <returns>Mengembalikan sebuah action result yang memanggil halaman create</returns>
        public ActionResult Create(int productID)
        {
            ViewBag.ProductID      = Convert.ToString(productID);
            ViewBag.ProcessGroupID = new SelectList(db.ProcessGroups, "ID", "Name");
            var masterProcessList = GetMasterProcessList(productID);
            var viewModel         = new MasterProcessViewModel
            {
                MasterProcessCollections = masterProcessList
            };

            ViewBag.currentProcessOrder = 1;

            if (masterProcessList.LastOrDefault() != null)
            {
                ViewBag.currentProcessOrder = Convert.ToInt32(masterProcessList.LastOrDefault().ProcessOrder) + 1;
            }

            return(View(viewModel));
        }
Exemple #2
0
        // GET: MasterProcess/Edit/5
        /// <summary>
        /// Fungsi Edit ini merupakan fungsi yang digunakan untuk menampilkan form untuk mengubah data Master Process yang telah ditentukan
        /// </summary>
        /// <param name="id">Merupakan sebuah bilangan integer yang berarti id Master Process yang akan diubah</param>
        /// <returns>Mengembalikan sebuah action result yang memanggil halaman edit</returns>
        public ActionResult Edit(int id)
        {
            var masterProcessData = db.MasterProcesses.Find(id);
            var masterProcessList = GetMasterProcessListThatCreatedBeforeItProcess(masterProcessData.ProductID, masterProcessData.ID);

            ViewBag.MasterProcessID = id;

            var viewModel = new MasterProcessViewModel
            {
                MasterProcessCollections = masterProcessList,
                SelectedProcess          = masterProcessData.ProcessDependencies.Select(x => (int)x.PredecessorProcessID).ToList(),
                ID             = masterProcessData.ID,
                ProductID      = masterProcessData.ProductID,
                ProcessGroupID = masterProcessData.ProcessGroupID,
                Name           = masterProcessData.Name,
                ProcessOrder   = masterProcessData.ProcessOrder,
                ManHour        = masterProcessData.ManHour,
                ManPower       = masterProcessData.ManPower,
                CycleTime      = masterProcessData.CycleTime
            };

            ViewBag.ProcessGroupID = new SelectList(db.ProcessGroups, "ID", "Name", masterProcessData.ProcessGroupID);
            return(View(viewModel));
        }
Exemple #3
0
        public ActionResult Create(int productID, MasterProcessViewModel masterProcess)
        {
            var masterProcessList = GetMasterProcessList(productID);

            ViewBag.ProcessGroupID = new SelectList(db.ProcessGroups, "ID", "Name");
            ViewBag.ProductID      = Convert.ToString(productID);
            var viewModel = new MasterProcessViewModel
            {
                MasterProcessCollections = masterProcessList
            };

            int currentProcessOrder = 1;

            if (masterProcessList.LastOrDefault() != null)
            {
                currentProcessOrder = Convert.ToInt32(masterProcessList.LastOrDefault().ProcessOrder) + 1;
            }

            try
            {
                var username = User.Identity.Name;

                Products currentProduct = db.Products.Find(productID);
                // TODO: Add master process
                var newMasterProcess = new MasterProcess
                {
                    ProductID      = productID,
                    ProcessGroupID = masterProcess.ProcessGroupID,
                    Name           = masterProcess.Name,
                    ProcessOrder   = currentProcessOrder,//masterProcess.ProcessOrder,
                    ManHour        = masterProcess.ManHour,
                    ManPower       = masterProcess.ManPower,
                    CycleTime      = masterProcess.CycleTime,
                    Created        = DateTime.Now,
                    CreatedBy      = username,
                    LastModified   = DateTime.Now,
                    LastModifiedBy = username
                };
                currentProduct.IsTotalDayCalculated = false;
                currentProduct.TotalDay             = currentProduct.TotalDay == null ? 0 : currentProduct.TotalDay;
                currentProduct.MasterProcess.Add(newMasterProcess);
                //db.MasterProcesses.Add(newMasterProcess);
                db.SaveChanges();

                #region Add Master Process Dependency
                //this region have function to add dependency of masterProcess
                var newMasterProcessId = newMasterProcess.ID;
                foreach (int processID in masterProcess.SelectedProcess)
                {
                    var newProcessDependency = new ProcessDependency
                    {
                        MasterProcessID      = newMasterProcessId,
                        PredecessorProcessID = processID,
                        Created        = DateTime.Now,
                        CreatedBy      = username,
                        LastModified   = DateTime.Now,
                        LastModifiedBy = username
                    };

                    db.ProcessDependencies.Add(newProcessDependency);
                }
                db.SaveChanges();
                #endregion

                ViewBag.Message = "Success";
                return(View(viewModel));
            }
            catch (Exception ex)
            {
                ViewBag.Exception = ex;
            }
            return(View("Error"));
        }
Exemple #4
0
        public ActionResult Edit(int id, MasterProcessViewModel masterProcess)
        {
            bool     needCleanDailySchedule = false;
            var      masterProcessData      = db.MasterProcesses.Find(id);
            var      username          = User.Identity.Name;
            Products currentProduct    = db.Products.Find(masterProcessData.ProductID);
            var      masterProcessList = GetMasterProcessListThatCreatedBeforeItProcess(masterProcessData.ProductID, masterProcessData.ID);

            ViewBag.ProcessGroupID = new SelectList(db.ProcessGroups, "ID", "Name", masterProcessData.ProcessGroupID);
            ViewBag.ProductID      = Convert.ToString(currentProduct.ID);

            var viewModel = new MasterProcessViewModel
            {
                MasterProcessCollections = masterProcessList
            };

            try
            {
                // TODO: Edit master Proses

                masterProcessData.ProcessGroupID = masterProcess.ProcessGroupID;
                masterProcessData.Name           = masterProcess.Name;
                masterProcessData.ManHour        = masterProcess.ManHour;
                masterProcessData.ManPower       = masterProcess.ManPower;

                if (masterProcessData.CycleTime != masterProcess.CycleTime)
                {
                    currentProduct.IsTotalDayCalculated = false;
                    currentProduct.LastModified         = DateTime.Now;
                    currentProduct.LastModifiedBy       = username;
                    needCleanDailySchedule = true;
                }

                masterProcessData.CycleTime      = masterProcess.CycleTime;
                masterProcessData.LastModified   = DateTime.Now;
                masterProcessData.LastModifiedBy = username;
                db.SaveChanges();

                List <int> processPredecessorIDList = masterProcessData.ProcessDependencies.Select(x => (int)x.PredecessorProcessID).ToList();
                List <int> distinct1 = processPredecessorIDList.Except(masterProcess.SelectedProcess).ToList();
                List <int> distinct2 = masterProcess.SelectedProcess.Except(processPredecessorIDList).ToList();

                if (distinct2.Count > 0 || distinct1.Count > 0)
                {
                    #region Add Master Process Dependency
                    //this region have function to add dependency of masterProcess
                    if (distinct2.Count > 0)
                    {
                        foreach (int processID in distinct2)
                        {
                            var newProcessDependency = new ProcessDependency
                            {
                                MasterProcessID      = masterProcessData.ID,
                                PredecessorProcessID = processID,
                                Created        = DateTime.Now,
                                CreatedBy      = username,
                                LastModified   = DateTime.Now,
                                LastModifiedBy = username
                            };

                            db.ProcessDependencies.Add(newProcessDependency);
                        }
                    }

                    if (distinct1.Count > 0)
                    {
                        foreach (int processID in distinct1)
                        {
                            List <ProcessDependency> processDependenciesList = db.ProcessDependencies.Where(x => x.MasterProcessID == masterProcessData.ID && x.PredecessorProcessID == processID).ToList();

                            db.ProcessDependencies.RemoveRange(processDependenciesList);
                        }
                    }

                    currentProduct.IsTotalDayCalculated = false;
                    currentProduct.LastModified         = DateTime.Now;
                    currentProduct.LastModifiedBy       = username;

                    if (db.SaveChanges() > 0)
                    {
                        needCleanDailySchedule = true;
                    }

                    if (needCleanDailySchedule)
                    {
                        foreach (MasterProcess mp in currentProduct.MasterProcess)
                        {
                            db.ProcessDailySchedules.RemoveRange(mp.ProcessDailySchedules);
                        }
                        db.SaveChanges();
                    }
                    #endregion
                }

                ViewBag.Message = "Success";
                return(View(viewModel));
            }
            catch (Exception ex)
            {
                ViewBag.Exception = ex;
            }
            return(View(viewModel));
        }