Esempio n. 1
0
 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";
 }
Esempio n. 2
0
        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 = ""
            });
        }
Esempio n. 3
0
        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)
                }));
            }
        }