22q-btn-group( rounded flat )
33 q-btn( flat icon ="mdi-eye" color ="primary" rounded @click ="goToIdentity(selected[0])" size ="md" : disable= "selected.length === 0 || selected.length !== 1" )
44 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Afficher les identités sélectionnées
5- q-btn( flat icon ="mdi-merge" color ="primary" rounded @click ="merge" size ="md" : disable= "true ||selected.length === 0 || selected.length === 1" )
6- q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Fusionner les identités sélectionnées
7- q-btn( flat icon ="mdi-lock" color ="primary" rounded @click ="updateLifestep(LifeStep.CLOSED)" size ="md" : disable= "selected.length === 0" )
5+ //- q-btn(flat icon="mdi-merge" color="primary" rounded @click="merge" size="md" :disable="true ||selected.length === 0 || selected.length === 1")
6+ //- q-tooltip.text-body2(transition-show="scale" transition-hide="scale") Fusionner les identités sélectionnées
7+ //- q-btn(flat icon="mdi-check" color="primary" rounded @click="openUpdateModale(IdentityState.TO_VALIDATE)" size="md" :disable="selected.length === 0")
8+ //- q-tooltip.text-body2(transition-show="scale" transition-hide="scale") Valider les identités sélectionnées
9+ q-btn( flat icon ="mdi-sync" color ="primary" rounded @click ="openUpdateModale(IdentityState.TO_VALIDATE)" size ="md" : disable= "selected.length === 0" )
810 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Mettre à synchroniser les identités sélectionnées
911 q-btn( flat icon ="mdi-close" color ="primary" rounded @click ="clearSelection" size ="md" )
1012 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Nettoyer la selection
@@ -14,19 +16,103 @@ q-btn-group(rounded flat)
1416import type { components } from ' #build/types/service-api'
1517import type { PropType } from ' vue'
1618import { useRouter } from ' nuxt/app'
17- type Ticket = components [' schemas' ][' TicketDto' ]
19+ import updateIdentityModale from ' ../updateIdentityModale.vue'
20+ import { useIdentityStates } from ' #imports'
21+ import { IdentityState } from ' ~/composables'
22+ import { useIdentityStateStore } from ' ~/stores/identityState'
23+
24+ const $q = useQuasar ()
1825
1926const props = defineProps ({
2027 selected: {
21- type: Array as PropType <Ticket []>,
28+ type: Array as PropType <any []>,
2229 default : () => [],
2330 },
2431})
2532
26- const emit = defineEmits ([' updateLifestep' , ' clear' ])
33+ const emit = defineEmits ([' updateLifestep' , ' clear' , ' refresh' ])
34+
35+ const { getStateName } = useIdentityStates ()
36+ const { getStateValue } = useIdentityStateStore ()
37+ // function updateLifestep(lifestep: LifeStep) {
38+ // emit('updateLifestep', { identity: props.selected, lifestep })
39+ // }
40+
41+ function openUpdateModale(identityState : IdentityState ) {
42+ console .log (' openUpdateModale' )
43+
44+ const name = getStateName (identityState )
45+ const count = getStateValue (identityState )
46+
47+ $q .dialog ({
48+ component: updateIdentityModale ,
49+ componentProps: {
50+ selectedIdentities: props .selected ,
51+ identityTypesName: name ,
52+ allIdentitiesCount: count ,
53+ },
54+ })
55+ .onOk (async (data ) => {
56+ console .log (' syncIdentities' , data )
57+ data .syncAllIdentities ? await updateAllIdentities (identityState ) : await updateIdentity (props .selected , identityState )
58+ })
59+ .onCancel (() => {
60+ console .log (' cancelSync' )
61+ })
62+ }
63+
64+ function getTargetState(state : IdentityState ) {
65+ switch (state ) {
66+ case IdentityState .TO_VALIDATE :
67+ return IdentityState .TO_SYNC
68+ default :
69+ return state
70+ }
71+ }
2772
28- function updateLifestep(lifestep : LifeStep ) {
29- emit (' updateLifestep' , { identity: props .selected , lifestep })
73+ async function updateAllIdentities(state : IdentityState ) {
74+ const { data : identities } = await useHttp (` /management/identities?limit=999999&&filters[@state][]=${state } ` , {
75+ method: ' get' ,
76+ })
77+
78+ if (! identities ) {
79+ $q .notify ({
80+ message: ' Aucune identité à mettre à jour' ,
81+ color: ' negative' ,
82+ })
83+ return
84+ }
85+ updateIdentity (identities .value .data , state )
86+ }
87+
88+ async function updateIdentity(identities , state : IdentityState ) {
89+ const targetState = getTargetState (state )
90+
91+ console .log (' updateIdentity' , identities )
92+ const ids = identities .map ((identity ) => identity ._id )
93+ const { data, error } = await useHttp (` /management/identities/state ` , {
94+ method: ' patch' ,
95+ body: {
96+ ids ,
97+ originState: state ,
98+ targetState ,
99+ },
100+ })
101+
102+ if (error .value ) {
103+ $q .notify ({
104+ message: error .value .data .message ,
105+ color: ' negative' ,
106+ })
107+ return
108+ }
109+
110+ $q .notify ({
111+ message: ` Les identités ont été mises à jour avec succès ` ,
112+ color: ' positive' ,
113+ })
114+ emit (' refresh' )
115+ emit (' clear' )
30116}
31117
32118function clearSelection() {
@@ -41,7 +127,7 @@ function merge() {
41127 console .log (' merge' )
42128}
43129
44- function goToIdentity(identity : Ticket ) {
130+ function goToIdentity(identity ) {
45131 useRouter ().push (` /identity/${identity ._id } ` )
46132}
47133 </script >
0 commit comments