// 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)); }
// 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)); }
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")); }
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)); }