public static bool SetCurrentNetDiskUser(this IAcceleriderUser @this, INetDiskUser value)
        {
            Guards.ThrowIfNull(@this);

            if (EqualityComparer <INetDiskUser> .Default.Equals(@this.GetExtendedMembers().CurrentNetDiskUser, value))
            {
                return(false);
            }

            @this.GetExtendedMembers().CurrentNetDiskUser = value;
            RaisePropertyChanged();
            return(true);
        }
        public static bool RemoveNetDiskUser(this IAcceleriderUser @this, INetDiskUser value)
        {
            Guards.ThrowIfNull(@this);

            var result = @this.GetExtendedMembers().NetDiskUsers.RemoveAll(item => item.Id == value.Id) > 0;

            if (result)
            {
                @this.SaveToLocalDisk();
                RaisePropertyChanged();
            }
            return(result);
        }
        public static async Task <bool> UpdateAsync(this IAcceleriderUser @this)
        {
            Guards.ThrowIfNull(@this);

            var result = await @this.RefreshAsync();

            var extendedMembers = @this.GetExtendedMembers();

            if (extendedMembers.NetDiskUsers != null)
            {
                foreach (var user in extendedMembers.NetDiskUsers)
                {
                    await user.RefreshAsync();
                }
            }

            extendedMembers.CurrentNetDiskUser = extendedMembers.NetDiskUsers?.FirstOrDefault();

            return(result);
        }
        public static bool AddNetDiskUser(this IAcceleriderUser @this, INetDiskUser value)
        {
            Guards.ThrowIfNull(@this);

            var extendedMembers = @this.GetExtendedMembers();

            if (extendedMembers.NetDiskUsers.Any(v => v.Id == value.Id))
            {
                return(false);
            }

            extendedMembers.NetDiskUsers.Add(value);
            @this.SaveToLocalDisk();

            if (@this.GetCurrentNetDiskUser() == null)
            {
                @this.SetCurrentNetDiskUser(value);
            }

            RaisePropertyChanged();
            return(true);
        }
        public static INetDiskUser GetCurrentNetDiskUser(this IAcceleriderUser @this)
        {
            Guards.ThrowIfNull(@this);

            return(@this.GetExtendedMembers().CurrentNetDiskUser);
        }
        public static IEnumerable <INetDiskUser> GetNetDiskUsers(this IAcceleriderUser @this)
        {
            Guards.ThrowIfNull(@this);

            return(@this.GetExtendedMembers().NetDiskUsers);
        }
 public static void SaveToLocalDisk(this IAcceleriderUser @this)
 {
     @this.GetExtendedMembers().Save(string.Format(UsersFilePathFormat, @this.Email));
 }