public IHttpActionResult GetResetLink(ForgotPassword resetter)
        {
            using (PsiogEntities PE = new PsiogEntities())
            {
                string VerificationCode = Guid.NewGuid().ToString();
                string encodedId        = Hasher.EncodeId(resetter.employeeId);
                var    link             = "http://localhost:4200/verify-employee/" + Hasher.EncodeId(resetter.employeeId);

                var result = PE.Users.Where(u => u.EmployeeId == resetter.employeeId).FirstOrDefault();

                if (result != null)
                {
                    if (string.Compare(result.Answer, resetter.answer) == 0)
                    {
                        var employee = PE.Employees.Where(u => u.EmployeeId == resetter.employeeId).FirstOrDefault();
                        result.VerificationCode = VerificationCode;
                        try
                        {
                            PE.SaveChanges();
                        }
                        catch (Exception E)
                        {
                            ExceptionLog.Logger(E);
                            return(Ok("Unable to get reset link"));
                        }
                        var mail = ComposeMail.SendResetLink(employee.Email, out SmtpClient messenger);

                        mail.Body += link + ">Click here to reset password</a>";
                        messenger.Send(mail);
                        messenger.Dispose();
                        return(Ok("Reset link has been sent to your registered email ID"));
                    }

                    else
                    {
                        return(Ok("Incorrect answer for security question"));
                    }
                }

                else
                {
                    return(Ok("Employee Id does not exist!"));
                }
            }
        }
        public HttpResponseMessage ChangeStatus(Approveleaves l)
        {
            using (PsiogEntities PE = new PsiogEntities())
            {
                var appl = PE.LeaveApplications.Where(u => u.LeaveApplicationId == l.id).FirstOrDefault();
                appl.Status = l.status;
                string msg = "";

                if (l.status == "Rejected")
                {
                    var rollback = (from avail in PE.EmployeeLeaveAvaliabilities
                                    join leaveapp in PE.LeaveApplications
                                    on avail.LeaveTypeId equals leaveapp.LeaveId
                                    where leaveapp.LeaveApplicationId == l.id
                                    select new
                    {
                        avail.AllocatedDays,
                        leaveapp.FromDate,
                        leaveapp.ToDate,
                        leaveapp.FromSession,
                        leaveapp.ToSession,
                        avail.Id
                    }).FirstOrDefault();
                    int     rollbackdays    = (rollback.ToDate - rollback.FromDate).Days;
                    decimal rollbacksession = 0M;
                    if (rollback.FromSession == rollback.ToSession)
                    {
                        rollbacksession = 0.5M;
                    }

                    else if (rollback.FromSession > rollback.ToSession)
                    {
                        rollbacksession = 0M;
                    }
                    else
                    {
                        rollbacksession = 1M;
                    }

                    decimal updatedRollback         = rollbackdays + rollbacksession;
                    var     updateLeaveAvailability = PE.EmployeeLeaveAvaliabilities.Where(e => e.Id == rollback.Id).FirstOrDefault();
                    updateLeaveAvailability.AvailedDays = updatedRollback;
                }
                else if (l.status == "Approved")
                {
                    appl.Status = "Approved";
                }
                try
                {
                    PE.SaveChanges();
                    msg = "Done!";
                }
                catch (Exception E)
                {
                    ExceptionLog.Logger(E);
                    msg = "Unable to process request";
                }
                HttpResponseMessage response;
                response = Request.CreateResponse(HttpStatusCode.OK, msg);
                return(response);
            }
        }