public UserDTO FindUserByID(UserDTO user)
        {
            ObjectMapper    mapper  = new ObjectMapper();
            ApplicationUser appUser = _appUserManager.FindById(user.Id);

            if (appUser != null)
            {
                return(mapper.ConvertIdentityUserToDomain(appUser));
            }
            return(null);
        }
        public async Task <Tuple <UserDTO, string[], List <string> > > FindUserRolesPermissions(UserDTO user)
        {
            try
            {
                var existingUser = await _context.Users.Include(u => u.Roles).Where(u => u.Id == user.Id).FirstOrDefaultAsync();

                if (existingUser == null)
                {
                    return(null);
                }

                var userRolesIds = existingUser.Roles.Select(r => r.RoleId).ToList();

                var roles = await _context.Roles.Where(r => userRolesIds.Contains(r.Id)).Select(r => r.Name).ToArrayAsync();

                var permissionIds = await _context.RolePermissionMaps.Where(r => userRolesIds.Contains(r.RoleId)).Select(p => p.PermissionId).ToArrayAsync();

                var permissions = new List <string> {
                };

                for (int i = 0; i < permissionIds.Length; i++)
                {
                    var permissionId = permissionIds[i];
                    var permission   = _context.Permissions.Where(p => p.Id == permissionId).Select(p => p.Name).FirstOrDefault().ToString();
                    permissions.Add(permission);
                }

                ObjectMapper mapper = new ObjectMapper();

                return(Tuple.Create(mapper.ConvertIdentityUserToDomain(existingUser), roles, permissions));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }