Esempio n. 1
0
        public ActionResult Delete(string id, string uName)
        {
            var uid = _context.AppUsers.Where(u => u.UserName == uName).FirstOrDefault().Id;

            try
            {
                RepairEmpModel repairEmp = _context.RepairEmps.Find(id, uid);
                _context.RepairEmps.Remove(repairEmp);
                _context.SaveChanges();

                // Recount the all repair time, and set value to RepairDtl.
                RepairDtlModel dtl = _context.RepairDtls.Where(d => d.DocId == repairEmp.DocId)
                                     .FirstOrDefault();
                if (dtl != null)
                {
                    int hr = _context.RepairEmps.Where(p => p.DocId == repairEmp.DocId)
                             .Select(p => p.Hour)
                             .DefaultIfEmpty(0).Sum();
                    decimal min = _context.RepairEmps.Where(p => p.DocId == repairEmp.DocId)
                                  .Select(p => p.Minute)
                                  .DefaultIfEmpty(0).Sum();
                    dtl.Hour = hr + Decimal.Round(min / 60m, 2);
                    _context.Entry(dtl).State = EntityState.Modified;
                    _context.SaveChanges();
                }
                return(new JsonResult(repairEmp)
                {
                    Value = new { success = true, error = "" }
                });
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }
Esempio n. 2
0
        public IActionResult Create(RepairEmpModel repairEmp)
        {
            if (ModelState.IsValid)
            {
                _context.BMEDRepairEmps.Add(repairEmp);
                _context.SaveChanges();
                // Recount the all repair time, and set value to RepairDtl.
                RepairDtlModel dtl = _context.BMEDRepairDtls.Where(d => d.DocId == repairEmp.DocId)
                                     .FirstOrDefault();
                if (dtl != null)
                {
                    int hr = _context.BMEDRepairEmps.Where(p => p.DocId == repairEmp.DocId)
                             .Select(p => p.Hour)
                             .DefaultIfEmpty(0).Sum();
                    decimal min = _context.BMEDRepairEmps.Where(p => p.DocId == repairEmp.DocId)
                                  .Select(p => p.Minute)
                                  .DefaultIfEmpty(0).Sum();
                    dtl.Hour = hr + Decimal.Round(min / 60m, 2);
                    _context.BMEDRepairDtls.Update(dtl);
                }
                return(RedirectToAction("Index"));
            }

            return(View(repairEmp));
        }
Esempio n. 3
0
        public async Task <IViewComponentResult> InvokeAsync(string docId)
        {
            var            repairEmps = _context.BMEDRepairEmps.ToList();
            RepairEmpModel emp        = repairEmps.Where(p => p.DocId == docId)
                                        .FirstOrDefault();
            var ur = _userRepo.Find(us => us.UserName == this.User.Identity.Name).FirstOrDefault();

            if (emp == null)
            {
                emp        = new RepairEmpModel();
                emp.DocId  = docId;
                emp.UserId = ur.Id;
            }

            /* Get all engineers by role. */
            var allEngs = roleManager.GetUsersInRole("MedEngineer").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");

            RepairFlowModel rf = _context.BMEDRepairFlows.Where(f => f.DocId == docId)
                                 .Where(f => f.Status == "?").FirstOrDefault();
            var isEngineer = _context.UsersInRoles.Where(u => u.AppRoles.RoleName == "MedEngineer" &&
                                                         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 <RepairEmpModel> emps = repairEmps.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));
        }
Esempio n. 4
0
        public ActionResult Edit(RepairEmpModel repairEmp)
        {
            if (ModelState.IsValid)
            {
                //_context.RepairEmps.Add(repairEmp);
                //_context.SaveChanges();
                var ExistRepairEmp = _context.RepairEmps.Find(repairEmp.DocId, repairEmp.UserId);
                if (ExistRepairEmp != null)
                {
                    return(new JsonResult(repairEmp)
                    {
                        Value = new { isExist = true, error = "資料已存在!" }
                    });
                }
                else
                {
                    _repempRepo.Create(repairEmp);
                }

                // Recount the all repair time, and set value to RepairDtl.
                RepairDtlModel dtl = _context.RepairDtls.Where(d => d.DocId == repairEmp.DocId)
                                     .FirstOrDefault();
                if (dtl != null)
                {
                    int hr = _context.RepairEmps.Where(p => p.DocId == repairEmp.DocId)
                             .Select(p => p.Hour)
                             .DefaultIfEmpty(0).Sum();
                    decimal min = _context.RepairEmps.Where(p => p.DocId == repairEmp.DocId)
                                  .Select(p => p.Minute)
                                  .DefaultIfEmpty(0).Sum();
                    dtl.Hour = hr + Decimal.Round(min / 60m, 2);
                    _context.Entry(dtl).State = EntityState.Modified;
                    _context.SaveChanges();
                }

                // Return ViewComponent for ajax request.
                return(ViewComponent("RepEmpList", new { id = repairEmp.DocId }));
            }
            else
            {
                string msg = "";
                foreach (var error in ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors))
                {
                    msg += error.ErrorMessage + Environment.NewLine;
                }
                throw new Exception(msg);
            }
        }
        public async Task <IViewComponentResult> InvokeAsync(string docId)
        {
            var            repairEmps = _context.RepairEmps.ToList();
            RepairEmpModel emp        = repairEmps.Where(p => p.DocId == docId)
                                        .FirstOrDefault();
            var ur = _userRepo.Find(us => us.UserName == this.User.Identity.Name).FirstOrDefault();

            if (emp == null)
            {
                emp        = new RepairEmpModel();
                emp.DocId  = docId;
                emp.UserId = ur.Id;
            }

            /* Get all engineers. */
            //var engineerList = _context.EngsInDepts.Include(e => e.AppUsers).Include(e => e.Departments)
            //                                       .GroupBy(e => e.EngId).Select(group => group.First()).ToList();
            //List<SelectListItem> uids = new List<SelectListItem>();
            //foreach (var item in engineerList)
            //{
            //    uids.Add(new SelectListItem
            //    {
            //        Text = item.AppUsers.FullName,
            //        Value = item.AppUsers.Id.ToString(),
            //    });
            //}
            //ViewData["EmpList"] = new SelectList(uids, "Value", "Text", 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");

            RepairFlowModel rf = _context.RepairFlows.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 == null)
            {
                /* Role => 工務經辦 or Admin */
                if (userManager.IsInRole(this.UserClaimsPrincipal, "RepToDo") == true ||
                    userManager.IsInRole(this.UserClaimsPrincipal, "Admin") == true)
                {
                    return(View(emp));
                }
            }
            if (!(rf.Cls.Contains("工程師") && rf.UserId == ur.Id))    /* 流程 => 其他 */
            {
                if (rf.Cls.Contains("工程師") && isEngineer != null)   /* 流程 => 工程師,Login User => 非負責之工程師 */
                {
                    return(View(emp));
                }
                AppUserModel          appuser;
                List <RepairEmpModel> emps = repairEmps.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));
        }