@@ -13,9 +13,8 @@ public class DeleteAccountViewModel<TAccount> : DeleteAccountViewModel where TAc
1313 public DeleteAccountViewModel (
1414 TAccount accountToDelete ,
1515 User currentUser ,
16- IPackageService packageService ,
17- Func < ListPackageItemViewModel , bool > packageIsOrphaned )
18- : base ( accountToDelete , currentUser , packageService , packageIsOrphaned )
16+ IPackageService packageService )
17+ : base ( accountToDelete , currentUser , packageService )
1918 {
2019 Account = accountToDelete ;
2120 }
@@ -25,43 +24,49 @@ public DeleteAccountViewModel(
2524
2625 public class DeleteAccountViewModel : IDeleteAccountViewModel
2726 {
28- private Lazy < bool > _hasOrphanPackages ;
29-
3027 public DeleteAccountViewModel (
3128 User userToDelete ,
3229 User currentUser ,
33- IPackageService packageService ,
34- Func < ListPackageItemViewModel , bool > packageIsOrphaned )
30+ IPackageService packageService )
3531 {
3632 User = userToDelete ;
3733
3834 Packages = packageService
3935 . FindPackagesByAnyMatchingOwner ( User , includeUnlisted : true )
40- . Select ( p => new ListPackageItemViewModel ( p , currentUser ) )
36+ . Select ( p => new DeleteAccountListPackageItemViewModel ( p , userToDelete , currentUser , packageService ) )
4137 . ToList ( ) ;
4238
43- _hasOrphanPackages = new Lazy < bool > ( ( ) => Packages . Any ( packageIsOrphaned ) ) ;
39+ HasPackagesThatWillBeOrphaned = Packages . Any ( p => p . WillBeOrphaned ) ;
4440 }
4541
46- public List < ListPackageItemViewModel > Packages { get ; }
42+ public List < DeleteAccountListPackageItemViewModel > Packages { get ; }
4743
4844 public User User { get ; }
4945
5046 public string AccountName => User . Username ;
5147
52- public bool HasOrphanPackages
48+ public bool HasPackagesThatWillBeOrphaned { get ; }
49+ }
50+
51+ public class DeleteAccountListPackageItemViewModel : ListPackageItemViewModel
52+ {
53+ public DeleteAccountListPackageItemViewModel (
54+ Package package ,
55+ User userToDelete ,
56+ User currentUser ,
57+ IPackageService packageService )
58+ : base ( package , currentUser )
5359 {
54- get
55- {
56- return Packages == null ? false : _hasOrphanPackages . Value ;
57- }
60+ WillBeOrphaned = packageService . WillPackageBeOrphanedIfOwnerRemoved ( package . PackageRegistration , userToDelete ) ;
5861 }
62+
63+ public bool WillBeOrphaned { get ; }
5964 }
6065
6166 public interface IDeleteAccountViewModel
6267 {
6368 string AccountName { get ; }
6469
65- bool HasOrphanPackages { get ; }
70+ bool HasPackagesThatWillBeOrphaned { get ; }
6671 }
6772}
0 commit comments