public object logout(int id)
        {
            var staff = _context.Staffs.Include(i => i.User).Where(w => w.ID == id).FirstOrDefault();

            if (staff == null)
            {
                return(CreatedAtAction(nameof(logout), new { result = ResultCode.DataHasNotFound, message = ResultMessage.DataHasNotFound }));
            }

            var log = new LoginStaffHistory();

            log.StaffID   = staff.ID;
            log.UserID    = staff.UserID;
            log.AuthType  = AuthType.Logout;
            log.Create_On = DateUtil.Now();
            log.Create_By = staff.User.UserName;
            log.Update_On = DateUtil.Now();
            log.Update_By = staff.User.UserName;
            _context.LoginStaffHistorys.Add(log);
            _context.SaveChanges();

            return(CreatedAtAction(nameof(loginstudent), new { result = ResultCode.Success, message = ResultMessage.Success }));
        }
        public object login(string username, string password)
        {
            var user = _context.Users.Where(w => w.UserName == username).FirstOrDefault();

            if (user == null)
            {
                return(CreatedAtAction(nameof(login), new { result = ResultCode.WrongAccountorPassword, message = ResultMessage.WrongAccountorPassword }));
            }

            var dpassword = DataEncryptor.Decrypt(user.Password);

            if (password == dpassword)
            {
                var token = CreateToken(user);
                var staff = _context.Staffs.Where(w => w.UserID == user.ID);

                if (staff.FirstOrDefault() == null)
                {
                    return(CreatedAtAction(nameof(login), new { result = ResultCode.DataHasNotFound, message = ResultMessage.DataHasNotFound }));
                }

                if (staff.FirstOrDefault().Status == StatusType.InActive)
                {
                    return(CreatedAtAction(nameof(login), new { result = ResultCode.InactiveAccount, message = ResultMessage.InactiveAccount }));
                }

                var s = staff.Select(s => new
                {
                    username             = s.User.UserName,
                    id                   = s.UserID,
                    staffid              = s.ID,
                    firstname            = s.FirstName,
                    lastname             = s.LastName,
                    profileImg           = "",
                    isAdmin              = s.isAdmin,
                    isMasterAdmin        = s.isMasterAdmin,
                    isQuestionAppr       = s.isQuestionAppr,
                    isMasterQuestionAppr = s.isMasterQuestionAppr,
                    isTestAppr           = s.isTestAppr,
                    isMasterTestAppr     = s.isMasterTestAppr,
                }).FirstOrDefault();

                if (s == null)
                {
                    return(CreatedAtAction(nameof(login), new { result = ResultCode.DataHasNotFound, message = ResultMessage.DataHasNotFound }));
                }

                var log = new LoginStaffHistory();
                log.StaffID   = s.staffid;
                log.UserID    = s.id;
                log.AuthType  = AuthType.Login;
                log.Create_On = DateUtil.Now();
                log.Create_By = s.username;
                log.Update_On = DateUtil.Now();
                log.Update_By = s.username;
                _context.LoginStaffHistorys.Add(log);


                _context.SaveChanges();
                return(CreatedAtAction(nameof(login), new { result = ResultCode.Success, message = ResultMessage.Success, token = token, user = s }));
            }
            return(CreatedAtAction(nameof(login), new { result = ResultCode.WrongAccountorPassword, message = ResultMessage.WrongAccountorPassword }));
        }