public ActionResult SignIn(SignInViewModel signInViewModel)
        {
            if (ModelState.IsValid)
            {
                signInViewModel.Password = SHA256HashGenerator.GenerateHash(signInViewModel.Password);
                AdminProfileViewModel obj = employeeService.GetEmployeeByEmailAndPassword(signInViewModel.EmailID, signInViewModel.Password);

                if (obj != null)
                {
                    var designation = designationService.GetDesignationByDesignationID(obj.DesignationID);
                    obj.DesignationName        = designation.DesignationName;
                    Session["EmployeeObj"]     = obj;
                    Session["EmployeeEmail"]   = obj.EmailID;
                    Session["DesignationName"] = designation.DesignationName;
                    if (obj.IsVirtualTeamHead == true)
                    {
                        Session["VirtualHead"] = "VirtualHead";
                    }
                    if (obj.IsSpecialPermission == true)
                    {
                        Session["HR"] = "HR";
                    }
                    FormsAuthentication.SetAuthCookie(Convert.ToString(Session["EmployeeEmail"]), false);

                    return(RedirectToAction("home"));
                }
                else
                {
                    ModelState.AddModelError("signin", "Invalid email or password");
                    return(View("SignIn", signInViewModel));
                }
            }
            else
            {
                ModelState.AddModelError("signin", "Invalid email or password");
                return(View("SignIn", signInViewModel));
            }
        }
        public ActionResult VerifyLeave()
        {
            var profile = (AdminProfileViewModel)(Session["EmployeeObj"]);

            if (profile.IsSpecialPermission == true)
            {
                List <RequestVacationViewModel> leaveRequest = new List <RequestVacationViewModel>();

                leaveRequest = leaveRequestService.GetAllRequestVacation();

                List <RequestVacationViewModel> leaveRequestForHR = new List <RequestVacationViewModel>();

                foreach (var item in  leaveRequest)
                {
                    if (item.LeaveStatus == "Pending")
                    {
                        leaveRequestForHR.Add(item);
                    }
                }
                foreach (var item in leaveRequestForHR)
                {
                    var employee = employeeService.GetEmployeeByID(item.CreatedBy);
                    item.RequesterName = employee.FirstName + " " + employee.MiddleName + " " + employee.LastName;
                    var vacationType = vacationTypeService.GetVacationTypeByVacationId(item.VacationTypeID);
                    item.VacationName = vacationType.VacationName;
                    int designationId = employee.DesignationID;
                    var designation   = designationService.GetDesignationByDesignationID(designationId);
                    item.RequesterDesignation = designation.DesignationName;
                    var departmentObj = departmentService.GetDepartmentByDepartmentID(employee.DepartmentID);
                    item.RequesterDepartment = departmentObj.DepartmentName;
                    //item.ApproverID = profile.EmployeeID;
                }
                return(View(leaveRequestForHR));
            }
            if (profile.IsVirtualTeamHead == true)
            {
                List <RequestVacationViewModel> leaveRequestForVT = new List <RequestVacationViewModel>();

                var leaveRequest = leaveRequestService.GetAllRequestVacation();
                foreach (var item in leaveRequest)
                {
                    int requesterEmpId  = item.CreatedBy;
                    var employeeDetails = employeeService.GetEmployeeByID(requesterEmpId);
                    if (employeeDetails.DepartmentID == profile.DepartmentID && item.LeaveStatus == "Pending")
                    {
                        leaveRequestForVT.Add(item);
                    }
                }
                foreach (var item in leaveRequestForVT)
                {
                    var employee = employeeService.GetEmployeeByID(item.CreatedBy);
                    item.RequesterName = employee.FirstName + " " + employee.MiddleName + " " + employee.LastName;
                    var vacationType = vacationTypeService.GetVacationTypeByVacationId(item.VacationTypeID);
                    item.VacationName = vacationType.VacationName;
                    int designationId = employee.DesignationID;
                    var designation   = designationService.GetDesignationByDesignationID(designationId);
                    item.RequesterDesignation = designation.DesignationName;
                    var departmentObj = departmentService.GetDepartmentByDepartmentID(employee.DepartmentID);
                    item.RequesterDepartment = departmentObj.DepartmentName;
                    //item.ApproverID = profile.EmployeeID;
                }
                return(View(leaveRequestForVT));
            }
            else
            {
                int employeeId = profile.EmployeeID;
                List <RequestVacationViewModel> requestVacation = leaveRequestService.GetLeaveRequestByApproveId(employeeId);

                foreach (var item in requestVacation)
                {
                    AdminProfileViewModel profileViewModel = employeeService.GetEmployeeByID(item.CreatedBy);

                    item.RequesterName = profileViewModel.FirstName + " " + profileViewModel.MiddleName + " " + profileViewModel.LastName;

                    DesignationViewModel designation = designationService.GetDesignationByDesignationID(profileViewModel.DesignationID);

                    item.RequesterDesignation = designation.DesignationName;

                    DepartmentViewModel departmentViewModel = departmentService.GetDepartmentByDepartmentID(profileViewModel.DepartmentID);

                    item.RequesterDepartment = departmentViewModel.DepartmentName;

                    VacationTypeViewModel vacationTypeViewModel = vacationTypeService.GetVacationTypeByVacationId(item.VacationTypeID);

                    item.VacationName = vacationTypeViewModel.VacationName;
                }
                TempData["RequestVacation"] = requestVacation;

                return(View(requestVacation));
            }
        }