public ActionResult Create(int id) { KickoffCreateViewModel viewModel = new KickoffCreateViewModel(); //判斷是否已開案 Kickoff ki = db.Kickoffs.FirstOrDefault(m => m.ParentID == id); if (ki != null) { return ShowMsgThenRedirect("此單已開案", Url.Action("Index")); } if (ki == null) { //撈RDR主表資料、RDR其他資訊(db.RDRMain join CarMaker join RDRInfomation) viewModel = (from main in db.RDRMains join car in db.CarMakers on main.CarMakerID equals car.ID join infos in db.RDRInformations on main.ID equals infos.ParentID where main.ID == id select new KickoffCreateViewModel { rdrMain = main, rdrInfo = infos, CarMakerName = car.Name }).SingleOrDefault(); //撈RDRModule viewModel.rdrModuleList = db.RDRModules.Where(p => p.ParentID == id).ToList(); } return View(viewModel); }
public ActionResult Create(KickoffCreateViewModel viewModel, FormCollection fc) { bool IsModuleOK = false; bool IsInfoOK = false; bool IsKickoffOK = false; bool IsKickoffDetailsOK = false; int kickoffID=0; IsInfoOK = SaveToRDRInformation(viewModel); IsModuleOK = SaveToRDRModule(viewModel,fc); if (IsInfoOK && IsModuleOK) { try { //儲存 Kickoff Kickoff kick = new Kickoff(); kick.KickoffNumber = viewModel.rdrMain.RDRNumber; kick.ParentID = viewModel.rdrMain.ID; kick.KickoffDate = viewModel.kickoff.KickoffDate; kick.IsReliabilityTest = viewModel.kickoff.IsReliabilityTest; kick.IsPPAP = viewModel.kickoff.IsPPAP; kick.IsCustomerDocForm = viewModel.kickoff.IsCustomerDocForm; kick.IsLiteonDocForm = viewModel.kickoff.IsLiteonDocForm; kick.IsLiteonConFirm = viewModel.kickoff.IsLiteonConFirm; kick.IsCustomerConFirm = viewModel.kickoff.IsCustomerConFirm; kick.CreateTime = DateTime.Now; kick.ModifyTime = DateTime.Now; kick.Level = viewModel.kickoff.Level; db.Kickoffs.Add(kick); db.SaveChanges(); IsKickoffOK = true; kickoffID = kick.ID; } catch (Exception ex) { IsKickoffOK = false; } } if (IsKickoffOK) { try { //儲存 KickoffDetails string[] AllDesignVerify = fc["DDL_DesignVerify"].Split(','); string[] AllRequireDate = fc["RequireDate"].Split(','); string[] AllQuantity = fc["Quantity"].Split(','); string[] AllDescription = fc["Description"].Split(','); for (int i = 0; i < AllDesignVerify.Length; i++) { KickoffDetail kickDetails = new KickoffDetail(); kickDetails.ParentID = kickoffID; kickDetails.CreateTime = DateTime.Now; kickDetails.ModifyTime = DateTime.Now; int designValue = 0; int.TryParse(AllDesignVerify[i], out designValue); kickDetails.Stage = APIS.Tools.EnumMapTool.GetDescription((APIS.Models.EnumDesignVerify)designValue); kickDetails.RequireDate = Convert.ToDateTime(AllRequireDate[i]); int Quantity = 0; int.TryParse(AllQuantity[i], out Quantity); kickDetails.Quantity = Quantity; kickDetails.Description = AllDescription[i]; db.KickoffDetails.Add(kickDetails); db.SaveChanges(); IsKickoffDetailsOK = true; } } catch (Exception ex) { //Delete Kickoff , 保持資訊一致 IsKickoffDetailsOK = false; } } //最後如果全都完成,記得回RDRMain修改 Status=2 (Kickoff) if (IsModuleOK && IsInfoOK && IsKickoffOK && IsKickoffDetailsOK) { return ShowMsgThenRedirect("新增成功", Url.Action("List", "Kickoff", new { id = kickoffID })); } return View(viewModel); }
private bool SaveToRDRModule(KickoffCreateViewModel viewModel, FormCollection fc) { bool IsSaveOK = false; //儲存 RDRModule foreach (var item in viewModel.rdrModuleList) { int idx = viewModel.rdrModuleList.IndexOf(item); RDRModule module = db.RDRModules.Where(m => m.ID == item.ID).FirstOrDefault(); if (module != null) { try { module.IsAwarded = Convert.ToBoolean(fc["AwardedOrFail" + idx]); ; module.Price = item.Price; module.Reason = item.Reason; db.Entry(module).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); IsSaveOK = true; } catch (Exception ex) { IsSaveOK = false; } } else { IsSaveOK = false; } } return IsSaveOK; }
private bool SaveToRDRInformation(KickoffCreateViewModel viewModel) { bool IsSaveOK = false; //儲存 RDRInformation RDRInformation info = db.RDRInformations.Where(m => m.ID == viewModel.rdrInfo.ID).FirstOrDefault(); if (info != null) { try { info.IsSpec = viewModel.rdrInfo.IsSpec; info.IsGERBER = viewModel.rdrInfo.IsGERBER; info.IsWireDwg = viewModel.rdrInfo.IsWireDwg; info.IsSample = viewModel.rdrInfo.IsSample; info.IsBOM = viewModel.rdrInfo.IsBOM; info.IsAssemblyDwg = viewModel.rdrInfo.IsAssemblyDwg; info.IsDChart = viewModel.rdrInfo.IsDChart; info.IsCKT = viewModel.rdrInfo.IsCKT; info.Is2D = viewModel.rdrInfo.Is2D; info.IsROHS = viewModel.rdrInfo.IsROHS; info.IsELV = viewModel.rdrInfo.IsELV; info.IsVLS = viewModel.rdrInfo.IsVLS; info.Is3D = viewModel.rdrInfo.Is3D; db.Entry(info).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); IsSaveOK = true; } catch (Exception ex) { IsSaveOK = false; } } return IsSaveOK; }