useNextStepFactory.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import {FORM_STATUS, SUBMIT_TYPE} from "~/types/enums";
  2. import {useContext} from "@nuxtjs/composition-api";
  3. import {Store} from "vuex";
  4. import {AnyJson} from "~/types/interfaces";
  5. import {Route} from "vue-router";
  6. export default class UseNextStepFactory{
  7. private store: Store<any>
  8. private router: any
  9. constructor() {
  10. const {store, app: {router}} = useContext()
  11. this.store = store
  12. this.router = router
  13. }
  14. invoke(args: any, response: AnyJson){
  15. const factory: AnyJson = {}
  16. factory[SUBMIT_TYPE.SAVE] = () => this.save(args, response.id)
  17. factory[SUBMIT_TYPE.SAVE_AND_BACK] = () => this.saveAndGoTo(args)
  18. return factory
  19. }
  20. /**
  21. * Action Sauvegarder qui redirige vers la page d'edit si on est en mode create
  22. * @param route
  23. * @param id
  24. */
  25. save(route: Route, id: number){
  26. if(this.store.state.form.formStatus === FORM_STATUS.CREATE){
  27. route.path += id
  28. this.router.push(route)
  29. }
  30. }
  31. /**
  32. * Action sauvegarder et route suivante qui redirige vers une route
  33. * @param route
  34. */
  35. saveAndGoTo(route: Route){
  36. this.router.push(route)
  37. }
  38. }