public UserViewModel(HrpEmployee employee) { Id = employee.EmpNo; RefNo = employee.EmpNo; Names = employee.Names; NationalId = employee.Idno; Gender = employee.Gender; Nationality = employee.Country; Telno = employee.Cell; County = employee.County; Email = employee.Wemail; Programme = employee.Department; Closed = employee.Terminated; Type = "Lecturer"; }
public ReturnData <string> SaveToWorkFlowCenter(ProcOnlineReq procOnlineReq, HrpEmployee userDetails, string docId, string notes = null) { var wkDocCenter = new WfdocCentre { Type = procOnlineReq.DocType.ToUpper(), DocNo = procOnlineReq.ReqRef, Description = string.IsNullOrEmpty(notes) ? "N/A" : notes, UserRef = userDetails.EmpNo, Names = userDetails.Names, Department = userDetails.Department, Rdate = DateTime.UtcNow, Rtime = DateTime.UtcNow.ToLocalTime(), Personnel = userDetails.EmpNo, FinalStatus = "Pending" }; db.WfdocCentre.Add(wkDocCenter); db.SaveChanges(); var documentCenterId = db.WfdocCentre.FirstOrDefault(d => d.DocNo == procOnlineReq.ReqRef)?.Id; var WFRoutingDetails = db.WfroutingDetails.Where(d => d.Ref == docId).ToList(); var departmentHeadTitle = "HEAD OF DEPARTMENT"; var supervisorTitle = "SUPERVISOR"; var deanTitle = "Dean"; foreach (var detail in WFRoutingDetails) { var approver = db.Wfapprovers.FirstOrDefault(a => a.Title == detail.Approver); var approverId = approver?.Id.ToString(); var approversCodes = db.WfapproversDetails.Join(db.Users, approverDetail => approverDetail.UserCode, users => users.UserCode, (approverDetail, users) => new { approverDetail.Ref, approverDetail.UserCode, users.Department }).Where(u => u.Ref == approverId).Select(u => u.UserCode).Distinct().ToList(); if (detail.Approver.ToLower().Contains(departmentHeadTitle.ToLower())) { approversCodes = db.WfapproversDetails.Join(db.Users, approverDetail => approverDetail.UserCode, users => users.UserCode, (approverDetail, users) => new { approverDetail.Ref, approverDetail.UserCode, users.Department }).Where(u => u.Department == userDetails.Department && u.Ref == approverId).Select(u => u.UserCode).Distinct().ToList(); } if (detail.Approver.ToLower().Contains(supervisorTitle.ToLower())) { var employeeSupervisor = db.HrpEmployee.FirstOrDefault(e => e.EmpNo == userDetails.EmpNo)?.Supervisor; approversCodes = db.Users.Where(u => u.EmpNo == employeeSupervisor).Select(u => u.UserCode).Distinct().ToList(); } if (detail.Approver.ToLower().Contains(deanTitle.ToLower())) { approversCodes = db.Schools.Join(db.Users, schools => schools.DeanUserName, users => users.UserCode, (schools, users) => new { users.UserCode }).Select(u => u.UserCode).Distinct().ToList(); } foreach (var approverCode in approversCodes) { var wkDocCenterDetails = new WfdocCentreDetails { Ref = Convert.ToString(documentCenterId), Approver = detail.Approver, Level = detail.Level, UserCode = approverCode, Action = "Approval", Reason = null, Rdate = DateTime.UtcNow, ActionSelected = null, Station = null }; db.WfdocCentreDetails.Add(wkDocCenterDetails); } } db.SaveChanges(); return(new ReturnData <string> { Success = true, Data = "" }); }
public JsonResult Apply(StudClearance clearance, Role role) { try { if (role == Role.Student) { var cleared = _context.StudClearances.FirstOrDefault(c => c.AdmnNo.ToUpper().Equals(clearance.AdmnNo.ToUpper())); if (cleared != null) { var message = cleared.Status.ToLower().Equals("approved") ? "You have already cleared" : $"Your clearance is {cleared.Status.ToLower()}"; return(Json(new ReturnData <string> { Success = false, Message = message })); } } if (role == Role.Staff) { var cleared = _context.HrpStaffClearance.FirstOrDefault(c => c.EmpNo.ToUpper().Equals(clearance.AdmnNo.ToUpper())); if (cleared != null) { var message = cleared.Status.ToLower().Equals("approved") ? "You have already cleared" : $"Your clearance is {cleared.Status.ToLower()}"; return(Json(new ReturnData <string> { Success = false, Message = message })); } } var docType = role == Role.Student ? "STUDENT CLEARANCE" : "STAFF CLEARANCE"; var procOnlineReq = new ProcOnlineReq { ReqRef = clearance.AdmnNo, DocType = docType.ToUpper(), Rdate = DateTime.Today, Rtime = DateTime.UtcNow, Usercode = clearance.AdmnNo, Status = "Pending" }; var docId = _context.Wfrouting .FirstOrDefault(r => r.Document.ToUpper() == procOnlineReq.DocType.ToUpper()) ?.Id.ToString(); if (string.IsNullOrEmpty(docId)) { return(Json(new ReturnData <string> { Success = false, Message = "Sorry, " + procOnlineReq.DocType.ToUpper() + " " + "Not supported at the moment. Please contact the admin" })); } var user = new HrpEmployee(); if (role == Role.Staff) { user = _context.HrpEmployee.FirstOrDefault(u => u.EmpNo.ToUpper().Equals(clearance.AdmnNo.ToUpper())); } else { user = _context.Register.Join(_context.Programme, r => r.Programme, p => p.Names, (r, p) => new HrpEmployee { EmpNo = r.AdmnNo, Names = r.Names, Department = p.Department }).FirstOrDefault(r => r.EmpNo.Equals(clearance.AdmnNo)); } var workFlowStatus = _utils.SaveToWorkFlowCenter(procOnlineReq, user, docId, clearance.Notes); if (!workFlowStatus.Success) { return(Json(workFlowStatus)); } if (role == Role.Student) { _context.StudClearances.Add(clearance); } if (role == Role.Staff) { _context.HrpStaffClearance.Add(new HrpStaffClearance { EmpNo = clearance.AdmnNo, Status = clearance.Status, Personnel = clearance.Personnel, Notes = clearance.Notes }); } _context.SaveChanges(); var msg = $"Your clearance application {clearance.AdmnNo} submited succesfully."; return(Json(new ReturnData <string> { Success = true, Message = msg, Data = clearance.AdmnNo })); } catch (Exception e) { return(Json(new ReturnData <string> { Success = false, Message = "There was a problem while trying to apply for clearance.", Error = new Error(e) })); } }