public FolderDetailsDto GetFolderDetails(string securityToken, long?idFolder)
 {
     try
     {
         var session             = CheckSession(securityToken);
         FolderDetailsDto result = new FolderDetailsDto();
         if (idFolder.HasValue)
         {
             result = Mapper.Map <FolderDetailsDto>(_dao.ReadFullFolder(idFolder.Value));
         }
         else
         {
             result.Folders = Mapper.Map <List <FolderDto> >(_dao.GetFoldersInRoot(session.IdUser));
             using (var fileService = new FileServices())
             {
                 result.Files = fileService.GetFilesInRoot(securityToken);
             }
         }
         return(result);
     }
     catch (FileSharingException)
     {
         throw;
     }
     catch (Exception e)
     {
         throw new FileSharingException(FileSharingException.ERROR_FILESHARING_SERVER, e.Message, e);
     }
 }
        public void Delete(string securityToken, string password)
        {
            try
            {
                var session = CheckSession(securityToken);
                var user    = _dao.Read(session.IdUser);
                if (user.Password != EncryptPassword(password))
                {
                    throw new FileSharingException(FileSharingException.INVALID_CREDENTIALS,
                                                   "The password is invalid");
                }

                using (var groupServices = new GroupServices())
                {
                    var groups = groupServices.GetAdministrableGroups(securityToken);
                    if (groups != null && groups.Count > 0)
                    {
                        throw new FileSharingException(FileSharingException.USER_CANNOT_BE_REMOVED,
                                                       "The user cannot be removed because he is group admin");
                    }
                }

                using (var fileService = new FileServices())
                {
                    foreach (var doc in user.Files)
                    {
                        fileService.Delete(securityToken, doc.Id);
                    }
                }

                using (var folderServices = new FolderServices())
                {
                    foreach (var folder in user.Folders)
                    {
                        folderServices.Delete(securityToken, folder.Id);
                    }
                }

                _dao.Delete(user);

                Audit(user.Id, user.Id.ToString(), typeof(User).Name, ActionDto.Delete, "User deleted: " + user);
            }
            catch (Exception e)
            {
                throw new FileSharingException(FileSharingException.ERROR_FILESHARING_SERVER, e.Message, e);
            }
        }