public async Task <AdminUserDetailsList> GetUsers()
        {
            AdminUserDetailsList usersList = new AdminUserDetailsList();

            ProfileDetails profileDetails;

            if (ValidateAuthentication(true, out profileDetails))
            {
                IProfileService profileService = DependencyResolver.Current.GetService(typeof(IProfileService)) as IProfileService;
                profileDetails = profileService.GetProfile(profileDetails.PUID);
                if (profileDetails != null)
                {
                    usersList.AdminUsers = new Collection <AdminUserDetails>();
                    usersList.Users      = new Collection <AdminUserDetails>();

                    foreach (var profile in await profileService.GetAllProfiles(profileDetails.ID))
                    {
                        AdminUserDetails user = new AdminUserDetails();
                        Mapper.Map(profile, user);

                        if (profile.UserType == UserTypes.SiteAdmin)
                        {
                            usersList.AdminUsers.Add(user);
                        }
                        else
                        {
                            usersList.Users.Add(user);
                        }
                    }
                }
                else
                {
                    throw new WebFaultException <string>(Resources.UserNotRegisteredMessage, HttpStatusCode.Unauthorized);
                }
            }

            return(usersList);
        }
        //public AdminReportProfileDetailsList GetUsersForReport()
        //{
        //    AdminReportProfileDetailsList usersList = new AdminReportProfileDetailsList();

        //    ProfileDetails profileDetails;

        //    if (ValidateAuthentication(true, out profileDetails))
        //    {
        //        IProfileService profileService = DependencyResolver.Current.GetService(typeof(IProfileService)) as IProfileService;
        //        profileDetails = profileService.GetProfile(profileDetails.PUID);
        //        if (profileDetails != null)
        //        {
        //            usersList.Users = new Collection<AdminReportProfileDetails>();

        //            foreach (var profile in profileService.GetAllProfilesForReport(profileDetails.ID))
        //            {
        //                usersList.Users.Add(profile);
        //            }
        //        }
        //        else
        //        {
        //            throw new WebFaultException<string>(Resources.UserNotRegisteredMessage, HttpStatusCode.Unauthorized);
        //        }
        //    }

        //    return usersList;
        //}

        public async Task <bool> UpdateAdminUsers(Stream adminUsers)
        {
            bool operationStatus = false;

            ProfileDetails profileDetails;

            if (ValidateAuthentication(true, out profileDetails))
            {
                IProfileService profileService = DependencyResolver.Current.GetService(typeof(IProfileService)) as IProfileService;
                profileDetails = profileService.GetProfile(profileDetails.PUID);
                if (profileDetails != null)
                {
                    string input;
                    using (StreamReader sr = new StreamReader(adminUsers))
                    {
                        input = sr.ReadToEnd();
                    }

                    if (!string.IsNullOrWhiteSpace(input))
                    {
                        AdminUserDetailsList usersList = input.DeserializeXML <AdminUserDetailsList>();
                        if (usersList != null)
                        {
                            var status = await profileService.PromoteAsSiteAdmin(usersList.AdminUsers.Select(u => u.UserID), profileDetails.ID);

                            operationStatus = status.Succeeded;
                        }
                    }
                }
                else
                {
                    throw new WebFaultException <string>(Resources.UserNotRegisteredMessage, HttpStatusCode.Unauthorized);
                }
            }

            return(operationStatus);
        }
        public async Task<AdminUserDetailsList> GetUsers()
        {
            AdminUserDetailsList usersList = new AdminUserDetailsList();

            ProfileDetails profileDetails;

            if (ValidateAuthentication(true, out profileDetails))
            {
                IProfileService profileService = DependencyResolver.Current.GetService(typeof(IProfileService)) as IProfileService;
                profileDetails = profileService.GetProfile(profileDetails.PUID);
                if (profileDetails != null)
                {
                    usersList.AdminUsers = new Collection<AdminUserDetails>();
                    usersList.Users = new Collection<AdminUserDetails>();

                    foreach (var profile in await profileService.GetAllProfiles(profileDetails.ID))
                    {
                        AdminUserDetails user = new AdminUserDetails();
                        Mapper.Map(profile, user);

                        if (profile.UserType == UserTypes.SiteAdmin)
                        {
                            usersList.AdminUsers.Add(user);
                        }
                        else
                        {
                            usersList.Users.Add(user);
                        }
                    }
                }
                else
                {
                    throw new WebFaultException<string>(Resources.UserNotRegisteredMessage, HttpStatusCode.Unauthorized);
                }
            }

            return usersList;
        }