public ActionResult Delete(string id, string uName) { var uid = _context.AppUsers.Where(u => u.UserName == uName).FirstOrDefault().Id; try { KeepEmpModel keepEmp = _context.BMEDKeepEmps.Find(id, uid); _context.BMEDKeepEmps.Remove(keepEmp); _context.SaveChanges(); // Recount the all keep time, and set value to KeepDtl. KeepDtlModel dtl = _context.BMEDKeepDtls.Where(d => d.DocId == keepEmp.DocId) .FirstOrDefault(); if (dtl != null) { int hr = _context.BMEDKeepEmps.Where(p => p.DocId == keepEmp.DocId) .Select(p => p.Hour) .DefaultIfEmpty(0).Sum(); decimal min = _context.BMEDKeepEmps.Where(p => p.DocId == keepEmp.DocId) .Select(p => p.Minute) .DefaultIfEmpty(0).Sum(); dtl.Hours = hr + Decimal.Round(min / 60m, 2); _context.Entry(dtl).State = EntityState.Modified; _context.SaveChanges(); } return(new JsonResult(keepEmp) { Value = new { success = true, error = "" } }); } catch (Exception e) { throw new Exception(e.Message); } }
public async Task <IViewComponentResult> InvokeAsync(string docId) { var keepEmps = _context.KeepEmps.ToList(); KeepEmpModel emp = keepEmps.Where(p => p.DocId == docId).FirstOrDefault(); var ur = _userRepo.Find(us => us.UserName == this.User.Identity.Name).FirstOrDefault(); if (emp == null) { emp = new KeepEmpModel(); emp.DocId = docId; emp.UserId = ur.Id; } /* Get all engineers by role. */ var allEngs = roleManager.GetUsersInRole("RepEngineer").ToList(); List <SelectListItem> list = new List <SelectListItem>(); SelectListItem li = new SelectListItem(); foreach (string l in allEngs) { var u = _context.AppUsers.Where(a => a.UserName == l).FirstOrDefault(); if (u != null) { li = new SelectListItem(); li.Text = u.FullName; li.Value = u.Id.ToString(); list.Add(li); } } ViewData["EmpList"] = new SelectList(list, "Value", "Text"); KeepFlowModel rf = _context.KeepFlows.Where(f => f.DocId == docId) .Where(f => f.Status == "?").FirstOrDefault(); var isEngineer = _context.UsersInRoles.Where(u => u.AppRoles.RoleName == "RepEngineer" && u.UserId == ur.Id).FirstOrDefault(); if (!(rf.Cls.Contains("工程師") && rf.UserId == ur.Id)) /* 流程 => 其他 */ { if (rf.Cls.Contains("工程師") && isEngineer != null) /* 流程 => 工程師,Login User => 非負責之工程師 */ { return(View(emp)); } AppUserModel appuser; List <KeepEmpModel> emps = keepEmps.Where(p => p.DocId == docId).ToList(); emps.ForEach(rp => { rp.UserName = (appuser = _context.AppUsers.Find(rp.UserId)) == null ? "" : appuser.UserName; rp.FullName = (appuser = _context.AppUsers.Find(rp.UserId)) == null ? "" : appuser.FullName; }); return(View("Details", emps)); } /* 流程 => 工程師,Login User => 負責之工程師 */ return(View(emp)); }
public ActionResult Edit(KeepEmpModel keepEmp) { if (ModelState.IsValid) { var ExistKeepEmp = _context.BMEDKeepEmps.Find(keepEmp.DocId, keepEmp.UserId); if (ExistKeepEmp != null) { return(new JsonResult(keepEmp) { Value = new { isExist = true, error = "資料已存在!" } }); } else { _context.BMEDKeepEmps.Add(keepEmp); _context.SaveChanges(); } // Recount the all keep time, and set value to KeepDtl. KeepDtlModel dtl = _context.BMEDKeepDtls.Where(d => d.DocId == keepEmp.DocId) .FirstOrDefault(); if (dtl != null) { int hr = _context.BMEDKeepEmps.Where(p => p.DocId == keepEmp.DocId) .Select(p => p.Hour) .DefaultIfEmpty(0).Sum(); decimal min = _context.BMEDKeepEmps.Where(p => p.DocId == keepEmp.DocId) .Select(p => p.Minute) .DefaultIfEmpty(0).Sum(); dtl.Hours = hr + Decimal.Round(min / 60m, 2); _context.Entry(dtl).State = EntityState.Modified; _context.SaveChanges(); } // Return ViewComponent for ajax request. return(ViewComponent("BMEDKeepEmpList", new { id = keepEmp.DocId, viewType = "Edit" })); } else { string msg = ""; foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors)) { msg += error.ErrorMessage + Environment.NewLine; } throw new Exception(msg); } }
// GET: Keep/PrintKeepDoc/5 public IActionResult PrintKeepDoc(string DocId, int printType) { /* Get all print details according to the DocId. */ KeepModel keep = _context.Keeps.Find(DocId); KeepDtlModel dtl = _context.KeepDtls.Find(DocId); KeepEmpModel emp = _context.KeepEmps.Where(ep => ep.DocId == DocId).FirstOrDefault(); /* Get the last flow. */ string[] s = new string[] { "?", "2" }; KeepFlowModel flow = _context.KeepFlows.Where(f => f.DocId == DocId) .Where(f => s.Contains(f.Status)).FirstOrDefault(); KeepPrintVModel vm = new KeepPrintVModel(); if (keep == null) { return(StatusCode(404)); } else { vm.Docid = DocId; vm.UserId = keep.UserId; vm.UserName = keep.UserName; vm.UserAccount = _context.AppUsers.Find(keep.UserId).UserName; vm.AccDpt = keep.AccDpt; vm.SentDate = keep.SentDate; vm.AssetNo = keep.AssetNo; vm.AssetNam = keep.AssetName; vm.Company = _context.Departments.Find(keep.DptId).Name_C; vm.Amt = 1; vm.Cycle = keep.Cycle; vm.Contact = keep.Ext; vm.PlaceLoc = keep.PlaceLoc; if (dtl != null) { vm.Result = dtl.Result == null ? "" : _context.KeepResults.Find(dtl.Result).Title; vm.Memo = dtl.Memo; vm.EndDate = dtl.EndDate; } // vm.AccDptNam = _context.Departments.Find(keep.AccDpt).Name_C; vm.Hour = dtl.Hours == null ? 0 : dtl.Hours.Value; vm.InOut = dtl.InOut == "0" ? "自行" : dtl.InOut == "1" ? "委外" : dtl.InOut == "2" ? "租賃" : dtl.InOut == "3" ? "保固" : ""; //vm.EngName = emp == null ? "" : _context.AppUsers.Find(emp.UserId).FullName; var lastFlowEng = _context.KeepFlows.Where(rf => rf.DocId == DocId) .Where(rf => rf.Cls.Contains("工程師")) .OrderByDescending(rf => rf.StepId).FirstOrDefault(); AppUserModel EngTemp = _context.AppUsers.Find(lastFlowEng.UserId); if (EngTemp != null) { vm.EngName = EngTemp.FullName + " (" + EngTemp.UserName + ")"; } else { vm.EngName = ""; } var engMgr = _context.KeepFlows.Where(r => r.DocId == DocId) .Where(r => r.Cls.Contains("工務主管") || r.Cls.Contains("營建主管")) .Where(r => r.Opinions.Contains("[同意]")).ToList(); if (engMgr.Count() != 0) { engMgr = engMgr.GroupBy(e => e.UserId).Select(group => group.FirstOrDefault()).ToList(); foreach (var item in engMgr) { vm.EngMgr += item == null ? "" : _context.AppUsers.Find(item.UserId).FullName + " "; } } var engDirector = _context.KeepFlows.Where(r => r.DocId == DocId) .Where(r => r.Cls.Contains("工務主任") || r.Cls.Contains("營建主任")) .Where(r => r.Opinions.Contains("[同意]")).LastOrDefault(); string firstString = ""; if (engDirector != null) { if (engDirector.Opinions != null) { var firstBracketIndex = engDirector.Opinions.IndexOf("]"); firstString = engDirector.Opinions.Substring(0, firstBracketIndex); } } vm.EngDirector = engDirector == null ? "" : firstString + "]" + _context.AppUsers.Find(engDirector.UserId).FullName; var delivMgr = _context.RepairFlows.Where(r => r.DocId == DocId) .Where(r => r.Cls.Contains("單位主管")) .Where(r => r.Opinions.Contains("[同意]")).ToList(); if (delivMgr.Count() != 0) { delivMgr = delivMgr.GroupBy(e => e.UserId).Select(group => group.FirstOrDefault()).ToList(); foreach (var item in delivMgr) { vm.DelivMgr += item == null ? "" : _context.AppUsers.Find(item.UserId).FullName + " "; } } var delivDirector = _context.RepairFlows.Where(r => r.DocId == DocId) .Where(r => r.Cls.Contains("單位主任")) .Where(r => r.Opinions.Contains("[同意]")).LastOrDefault(); vm.DelivDirector = delivDirector == null ? "" : _context.AppUsers.Find(delivDirector.UserId).FullName; var ViceSI = _context.RepairFlows.Where(r => r.DocId == DocId) .Where(r => r.Cls.Contains("院長室主管") || r.Cls.Contains("副院長")) .Where(r => r.Opinions.Contains("[同意]")).LastOrDefault(); vm.ViceSuperintendent = ViceSI == null ? "" : _context.AppUsers.Find(ViceSI.UserId).FullName; if (flow != null) { if (flow.Status == "2") { vm.CloseDate = flow.Rtt; AppUserModel u = _context.AppUsers.Find(flow.UserId); if (u != null) { vm.DelivEmp = u.UserName; vm.DelivEmpName = u.FullName; } } } } //if (printType != 0) //{ // return View("PrintRepairDoc2", vm); //} return(View(vm)); }