| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- import Benevole from "@/models/Benevole";
- import Competence from "@/models/Competence";
- import Creneau from "@/models/Creneau";
- import Evenement from "@/models/Evenement";
- import { Ressource } from "jc-timeline";
- import { MutationTree } from "vuex";
- import { State, StateJSON } from "./State";
- export enum MutationTypes {
- resetState = "resetState",
- editEvenement = "editEvenement",
- addCreneau = "addCreneau",
- removeCreneau = "removeCreneau",
- editCreneau = "editCreneau",
- addBenevole2Creneau = "addBenevole2Creneau",
- removeBenevole2Creneau = "removeBenevole2Creneau",
- addCreneauGroup = "addCreneauGroup",
- removeCreneauGroup = "removeCreneauGroup",
- editCreneauGroup = "editCreneauGroup",
- reorderCreneauGroup = "reorderCreneauGroup",
- addBenevole = "addBenevole",
- removeBenevole = "removeBenevole",
- editBenevole = "editBenevole",
- addConstraint = "addConstraint",
- removeConstraint = "removeConstraint",
- editConstraint = "editConstraint",
- }
- interface CreneauPairing {
- creneauId: string;
- benevoleId: number;
- }
- export type Mutations<S = State> = {
- [MutationTypes.resetState](state: S): void;
- [MutationTypes.editEvenement]<K extends keyof Evenement>(
- state: S,
- payload: { field: K; value: Evenement[K] }
- ): void;
- [MutationTypes.addCreneau](state: S, payload: Creneau): void;
- [MutationTypes.removeCreneau](state: S, payload: Creneau): void;
- [MutationTypes.editCreneau]<K extends keyof Creneau>(
- state: S,
- payload: { id: string; field: K; value: Creneau[K] }
- ): boolean;
- [MutationTypes.addCreneauGroup](state: S, payload: Ressource): void;
- [MutationTypes.removeCreneauGroup](state: S, payload: Ressource): void;
- [MutationTypes.editCreneauGroup]<K extends keyof Ressource>(
- state: S,
- payload: { id: string; field: K; value: Ressource[K] }
- ): boolean;
- [MutationTypes.reorderCreneauGroup](state: S, payload: Array<Ressource>): boolean;
- [MutationTypes.addBenevole2Creneau](state: S, payload: CreneauPairing): void;
- [MutationTypes.removeBenevole2Creneau](state: S, payload: CreneauPairing): void;
- [MutationTypes.addBenevole](state: S, payload: Benevole): void;
- [MutationTypes.removeBenevole](state: S, payload: Benevole): void;
- [MutationTypes.editBenevole]<K extends keyof Benevole>(
- state: S,
- payload: { id: number; field: K; value: Benevole[K] }
- ): boolean;
- [MutationTypes.addConstraint](state: S, payload: Competence): void;
- [MutationTypes.removeConstraint](state: S, payload: Competence): void;
- [MutationTypes.editConstraint]<K extends keyof Competence>(
- state: S,
- payload: { id: number; field: K; value: Competence[K] }
- ): boolean;
- };
- export const mutations: MutationTree<State> & Mutations = {
- [MutationTypes.resetState](state): void {
- state.evenement = new Evenement();
- state.creneauList = [];
- state.creneauGroupList = [];
- state.competenceList = [];
- state.benevoleList = [];
- },
- [MutationTypes.editEvenement](state, payload): void {
- state.evenement[payload.field] = payload.value;
- },
- // Creneau Management
- [MutationTypes.addCreneau](state, creneau) {
- state.creneauList = [...state.creneauList, creneau];
- },
- [MutationTypes.removeCreneau](state, creneau) {
- state.creneauList = state.creneauList.filter((c) => c.id !== creneau.id);
- },
- [MutationTypes.editCreneau](state, payload) {
- const el = state.creneauList.find((o) => o.id == payload.id);
- if (el) {
- el[payload.field] = payload.value;
- return true;
- }
- return false;
- },
- [MutationTypes.addBenevole2Creneau](state, pair: CreneauPairing) {
- const benevole = state.benevoleList.find((o) => o.id == pair.benevoleId);
- const creneau = state.creneauList.find((o) => o.id == pair.creneauId);
- if (creneau && benevole) {
- benevole.creneauIdList = [...benevole.creneauIdList, pair.creneauId];
- creneau.benevoleIdList = [...creneau.benevoleIdList, pair.benevoleId];
- }
- },
- [MutationTypes.removeBenevole2Creneau](state, pair: CreneauPairing) {
- const benevole = state.benevoleList.find((o) => o.id == pair.benevoleId);
- const creneau = state.creneauList.find((o) => o.id == pair.creneauId);
- if (benevole)
- benevole.creneauIdList = benevole.creneauIdList.filter((id) => id !== pair.creneauId);
- if (creneau)
- creneau.benevoleIdList = creneau.benevoleIdList.filter((id) => id !== pair.benevoleId);
- },
- // Creneau Group Management
- [MutationTypes.reorderCreneauGroup](state, payload) {
- state.creneauGroupList = payload;
- return true;
- },
- [MutationTypes.addCreneauGroup](state, payload) {
- state.creneauGroupList = [...state.creneauGroupList, payload];
- },
- [MutationTypes.removeCreneauGroup](state, payload) {
- state.creneauGroupList = state.creneauGroupList.filter((c) => c.id !== payload.id);
- },
- [MutationTypes.editCreneauGroup](state, payload) {
- const el = state.creneauGroupList.find((o) => o.id == payload.id);
- if (el) {
- el[payload.field] = payload.value;
- return true;
- }
- return false;
- },
- // Benevole Management
- [MutationTypes.addBenevole](state, payload) {
- state.benevoleList = [...state.benevoleList, payload];
- },
- [MutationTypes.removeBenevole](state, payload) {
- state.creneauList.forEach(
- (creneau) =>
- (creneau.benevoleIdList = creneau.benevoleIdList.filter((id) => id !== payload.id))
- );
- state.benevoleList = state.benevoleList.filter((c) => c.id !== payload.id);
- },
- [MutationTypes.editBenevole](state, payload) {
- const el = state.benevoleList.find((o) => o.id == payload.id);
- if (el) {
- el[payload.field] = payload.value;
- return true;
- }
- return false;
- },
- // Constraint Management
- [MutationTypes.addConstraint](state, payload) {
- state.competenceList = [...state.competenceList, payload];
- },
- [MutationTypes.removeConstraint](state, payload) {
- const filterFunction = (id: number) => id !== payload.id;
- state.benevoleList.forEach(
- (benevole) => (benevole.competenceIdList = benevole.competenceIdList.filter(filterFunction))
- );
- state.creneauList.forEach(
- (creneau) => (creneau.competencesIdList = creneau.competencesIdList.filter(filterFunction))
- );
- state.competenceList = state.competenceList.filter((c) => c.id !== payload.id);
- },
- [MutationTypes.editConstraint](state, payload) {
- const el = state.competenceList.find((o) => o.id == payload.id);
- if (el) {
- el[payload.field] = payload.value;
- return true;
- }
- return false;
- },
- };
|