| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import {repositoryHelper} from "~/services/store/repository";
- import {Access} from "~/models/Access/Access";
- import {QUERY_TYPE} from "~/types/enums";
- import {computed} from '@nuxtjs/composition-api'
- import {AnyJson, AnyStore} from "~/types/interfaces";
- import DataPersister from "~/services/dataPersister/dataPersister";
- /**
- * @category Use/updater
- * @class UseActivityYearUpdater
- * Use Classe pour la mise à jour de l'activity year
- */
- export class UseActivityYearUpdater{
- private store!:AnyStore
- private $dataPersister!:DataPersister
- constructor(store:AnyStore, $dataPersister:DataPersister){
- this.store = store
- this.$dataPersister = $dataPersister
- }
- /**
- * Composition function
- */
- public invoke(): AnyJson{
- const activityYear = computed(()=>this.store.state.profile.access.activityYear)
- return {
- updater: (activityYear:number) => this.update(activityYear),
- activityYear
- }
- }
- /**
- * Mets à jour le store, puis créer une instance de Access avec la nouvelle activityYear et là met à jour
- * @param activityYear
- */
- private async update(activityYear:number): Promise<any>{
- if(activityYear <= 0)
- throw new Error('year must be positive')
- this.store.commit('profile/access/setActivityYear', activityYear)
- const accessInstance:Access = this.createNewAccessInstance(this.store.state.profile.access.id, this.store.state.profile.access.activityYear)
- await this.$dataPersister.invoke({
- type: QUERY_TYPE.MODEL,
- model: Access,
- id: accessInstance.id
- })
- }
- /**
- * Créer une nouvelle instance d'Access (== nouveau state dans le store) avec une date d'activité et la retourne
- * @param accessId
- * @param activityYear
- */
- private createNewAccessInstance(accessId: number, activityYear:number): Access{
- if(accessId <= 0 || activityYear <= 0)
- throw new Error('id and activity year must be positive')
- const accessInstance = repositoryHelper.createNewModelInstance(Access) as Access
- accessInstance.id = accessId
- accessInstance.activityYear = activityYear
- repositoryHelper.persist(Access, accessInstance)
- return accessInstance
- }
- }
- export const $useActivityYearUpdater = (store:AnyStore, $dataPersister:DataPersister) => new UseActivityYearUpdater(store, $dataPersister).invoke()
|