public async Task <AppUser> Register(RegisterRequest request, string role)
        {
            using (var dbContext = new OMRSDbContext())
            {
                if (request.Password.Equals(request.ConfirmPassword))
                {
                    var u = dbContext.AppUsers.FirstOrDefault(x => x.Username == request.UserName && x.Role == role);
                    if (u != null)
                    {
                        return(null);
                    }

                    var pwd  = request.Password.CreateMD5();
                    var user = new AppUser()
                    {
                        Username  = request.UserName,
                        FirstName = request.FirstName,
                        LastName  = request.LastName,
                        Password  = pwd,
                        Address   = request.Address,
                        Email     = request.Email,
                        Role      = role,
                    };
                    Console.WriteLine(user);
                    dbContext.AppUsers.Add(user);
                    await dbContext.SaveChangesAsync();

                    return(user);
                }
                return(null);
            }
        }
        public async Task <string> ChangePassword(int id, ChangePassword user)
        {
            using (var dbContext = new OMRSDbContext())
            {
                var appUser = await dbContext.AppUsers.AsNoTracking().Where(x => x.Password == user.Password.CreateMD5() && x.Id == id).FirstOrDefaultAsync();

                if (appUser == null)
                {
                    return(null);
                }
                if (user.NewPassword.Equals(user.ConfirmPassword))
                {
                    appUser.Password = user.NewPassword.CreateMD5();

                    dbContext.AppUsers.Update(appUser);

                    await dbContext.SaveChangesAsync();

                    return(user.NewPassword);
                }


                return("");
            }
        }
        public async Task <bool> DeleteUserById(int id)
        {
            using (var dbContext = new OMRSDbContext())
            {
                var appUser = await dbContext.AppUsers.FindAsync(id);

                if (appUser == null)
                {
                    return(false);
                }

                dbContext.AppUsers.Remove(appUser);
                await dbContext.SaveChangesAsync();

                return(true);
            }
        }
        public async Task <AppUser> UpdateById(int id, AppUser user)
        {
            using (var dbContext = new OMRSDbContext())
            {
                var appUser = dbContext.AppUsers.AsNoTracking().Where(t => t.Id == id).FirstOrDefault();
                if (appUser == null)
                {
                    return(null);
                }

                appUser.FirstName = user.FirstName;
                appUser.LastName  = user.LastName;
                appUser.Email     = user.Email;
                appUser.Address   = user.Address;

                dbContext.AppUsers.Update(appUser);

                await dbContext.SaveChangesAsync();

                return(user);
            }
        }