public Responser GetAll([FromBody] AM_Employee employee)
        {
            try
            {
                PayRollDB = new PayRollDB_();

                responser_ = this.ValidateAuthorization(employee.Token.ToString());

                if (responser_.Data.Get <bool>())
                {
                    responser_.Data          = PayRollDB.Employees_Tab.ToList().MapTo <Employees_Tab, AM_Employee>().ToList();
                    responser_.Status        = 0;
                    responser_.StatusMessage = "Operation Get successfully";
                }

                return(responser_);
            }
            catch (Exception e)
            {
                responser_.Data          = null;
                responser_.Status        = -1;
                responser_.StatusMessage = e.Message.ToString();

                return(responser_);
            }
        }
        /// <summary>
        /// Updates an employee within Employee PayRoll
        /// </summary>
        /// <param name="employee">Employee Model</param>
        /// <returns></returns>
        public Responser Put([FromBody] AM_Employee employee)
        {
            try
            {
                PayRollDB = new PayRollDB_();

                responser_ = this.ValidateAuthorization(employee.Token.ToString());

                if (responser_.Data.Get <bool>())
                {
                    Employees_Tab employees = PayRollDB.Employees_Tab.Where(bt => bt.EmployeeID == employee.EmployeeID).FirstOrDefault();

                    if (employees != null)
                    {
                        employees.Name          = employee.Name;
                        employees.LastNames     = employee.LastNames;
                        employees.Email         = employee.Email;
                        employees.Password      = employee.Password;
                        employees.RoleID        = employee.RoleID;
                        employees.Active        = employee.Active;
                        employees.AdmissionDate = DateTime.Now;

                        PayRollDB.Employees_Tab.Add(employees);
                        PayRollDB.SaveChanges();

                        string lastInserted = PayRollDB.Employees_Tab.OrderByDescending(bt => bt.EmployeeID).Take(1).Select(bt => bt.EmployeeID).FirstOrDefault().ToString();

                        responser_.Data          = lastInserted;
                        responser_.StatusMessage = "Operation Put for Employee successfully.";
                    }
                }
                else
                {
                    responser_.Data          = employee.EmployeeID;
                    responser_.StatusMessage = "Employee ID not found: Operation Put for Employee successfully.";
                }

                responser_.Status = 0;

                return(responser_);
            }
            catch (Exception e)
            {
                responser_.Data          = null;
                responser_.Status        = -1;
                responser_.StatusMessage = e.Message.ToString();

                return(responser_);
            }
        }
        public Responser Login([FromBody] AM_LoginEntity loginEntity_)
        {
            try
            {
                List <AM_Employee> employees = PayRollDB.Employees_Tab.ToList().MapTo <Employees_Tab, AM_Employee>();

                employees = employees.Where(item => item.Email == loginEntity_.UserName && item.Password == loginEntity_.Password && item.Active == true).ToList();

                if (employees.Count > 0)
                {
                    //Get logged user
                    AM_User userLogged = new AM_User();

                    AM_Employee employee = employees.FirstOrDefault();
                    userLogged.UserID   = employee.EmployeeID;
                    userLogged.Name     = string.Format("{0} {1}", employee.Name, employee.LastNames);
                    userLogged.UserName = employee.Email;
                    userLogged.Password = employee.Password;
                    userLogged.RoleName = PayRollDB.Role_Cat.Where(item => item.RoleID == (int)employee.RoleID).FirstOrDefault().Name;

                    //Generate a Token
                    AuthController authController = new AuthController();
                    userLogged.Token = authController.CreateTokenAuth(userLogged.UserID.ToString()).Data as string;

                    //Get response
                    responser_.Status        = 0;
                    responser_.StatusMessage = "Login Successfully";
                    responser_.Data          = userLogged;
                }
                else
                {
                    responser_.Status        = -2;
                    responser_.StatusMessage = "Login failed: User or password is incorrect.";
                    responser_.Data          = null;
                }

                return(responser_);
            }
            catch (Exception e)
            {
                responser_.Status        = -1;
                responser_.StatusMessage = e.Message.ToString();
                responser_.Data          = null;

                return(responser_);
            }
        }
        /// <summary>
        /// Deletes an employee within Employee PayRoll
        /// </summary>
        /// <param name="employee">Employee Model</param>
        /// <returns></returns>
        public Responser Delete([FromBody] AM_Employee employee)
        {
            try
            {
                PayRollDB = new PayRollDB_();

                responser_ = this.ValidateAuthorization(employee.Token.ToString());

                if (responser_.Data.Get <bool>())
                {
                    Employees_Tab employees = PayRollDB.Employees_Tab.Where(bt => bt.EmployeeID == employee.EmployeeID).FirstOrDefault();

                    if (employees != null)
                    {
                        PayRollDB.Employees_Tab.Remove(employees);
                        PayRollDB.SaveChanges();

                        responser_.Data          = employee.EmployeeID;
                        responser_.StatusMessage = "Operation Delete for Employee successfully.";
                    }
                }
                else
                {
                    responser_.Data          = employee.EmployeeID;
                    responser_.StatusMessage = "Employee ID not found: Operation Delete for Employee successfully.";
                }

                responser_.Status = 0;

                return(responser_);
            }
            catch (Exception e)
            {
                responser_.Data          = null;
                responser_.Status        = -1;
                responser_.StatusMessage = e.Message.ToString();

                return(responser_);
            }
        }
        public Responser LogOff(string id = "")
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(id))
                {
                    List <AM_Employee> employees = PayRollDB.Employees_Tab.ToList().MapTo <Employees_Tab, AM_Employee>();

                    employees = employees.Where(item => item.EmployeeID == int.Parse(id)).ToList();

                    if (employees.Count > 0)
                    {
                        //Get logged user
                        AM_Employee employee = employees.FirstOrDefault();

                        //Disable Token
                        AuthController authController = new AuthController();
                        responser_ = authController.DisableTokenAuth(employee.EmployeeID.ToString());
                    }
                    else
                    {
                        responser_.Status        = -2;
                        responser_.StatusMessage = "LogOff failed";
                        responser_.Data          = null;
                    }
                }

                return(responser_);
            }
            catch (Exception e)
            {
                responser_.Status        = -1;
                responser_.StatusMessage = e.Message.ToString();
                responser_.Data          = null;

                return(responser_);
            }
        }