1
1
import { ChangePassword , UpdateAccount } from '@devmx/account-domain' ;
2
2
import { State } from '@devmx/shared-data-access' ;
3
+ import { FilterAccount } from '../dtos' ;
3
4
import { take } from 'rxjs' ;
4
5
import {
5
6
Page ,
@@ -14,13 +15,15 @@ import {
14
15
ChangePasswordUseCase ,
15
16
UploadPhotoUseCase ,
16
17
FindAccountByUsernameUseCase ,
18
+ FindAccountsUseCase ,
17
19
} from '@devmx/account-domain/client' ;
18
20
19
21
interface AccountState {
20
22
presentations : Page < PresentationOut > ;
21
23
accounts : Page < AccountOut > ;
22
24
account : AccountOut | null ;
23
25
username : boolean | null ;
26
+ filter : FilterAccount ;
24
27
}
25
28
26
29
export class AccountFacade extends State < AccountState > {
@@ -33,6 +36,7 @@ export class AccountFacade extends State<AccountState> {
33
36
username$ = this . select ( ( state ) => state . username ) ;
34
37
35
38
constructor (
39
+ private findAccountsUseCase : FindAccountsUseCase ,
36
40
private findAccountByIDUseCase : FindAccountByIDUseCase ,
37
41
private findAccountByUsernameUseCase : FindAccountByUsernameUseCase ,
38
42
private findAccountPresentationsUseCase : FindAccountPresentationsUseCase ,
@@ -44,11 +48,33 @@ export class AccountFacade extends State<AccountState> {
44
48
super ( {
45
49
accounts : { data : [ ] , items : 0 , pages : 0 } ,
46
50
presentations : { data : [ ] , items : 0 , pages : 0 } ,
51
+ filter : { name : '' , username : '' } ,
47
52
account : null ,
48
53
username : null ,
49
54
} ) ;
50
55
}
51
56
57
+ setFilter ( filter : FilterAccount ) {
58
+ this . setState ( { filter } ) ;
59
+ }
60
+
61
+ clearFilter ( ) {
62
+ this . setState ( { filter : { name : '' , username : '' } } ) ;
63
+ }
64
+
65
+ load ( page = 0 , size = 10 ) {
66
+ const filter = this . state . filter ;
67
+ const params = { filter, page, size } ;
68
+
69
+ const request$ = this . findAccountsUseCase . execute ( params ) ;
70
+
71
+ const onAccounts = ( accounts : Page < AccountOut > ) => {
72
+ this . setState ( { accounts } ) ;
73
+ } ;
74
+
75
+ request$ . pipe ( take ( 1 ) ) . subscribe ( onAccounts ) ;
76
+ }
77
+
52
78
loadOne ( id : string ) {
53
79
const request$ = this . findAccountByIDUseCase . execute ( id ) ;
54
80
0 commit comments