mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-04 11:18:25 +00:00 
			
		
		
		
	feat: enable document duplication to another evaluation
- Introduce API method for duplicating a document to a different evaluation - Add Vuex actions and mutations to handle duplication logic to another evaluation
This commit is contained in:
		@@ -129,7 +129,7 @@
 | 
			
		||||
                      <a
 | 
			
		||||
                          class="dropdown-item"
 | 
			
		||||
                          @click="prepareDocumentDuplicationToWork(d)"
 | 
			
		||||
                      >{{ trans(EVALUATION_DOCUMENT_DUPLICATE_TO_OTHER_WORK) }}</a
 | 
			
		||||
                      >{{ trans(EVALUATION_DOCUMENT_DUPLICATE_TO_OTHER_EVALUATION) }}</a
 | 
			
		||||
                      >
 | 
			
		||||
                    </li>
 | 
			
		||||
                  </ul>
 | 
			
		||||
@@ -183,7 +183,7 @@ import {
 | 
			
		||||
  EVALUATION_DOCUMENTS,
 | 
			
		||||
  EVALUATION_DOCUMENT_DUPLICATE,
 | 
			
		||||
  EVALUATION_DOCUMENT_DUPLICATE_HERE,
 | 
			
		||||
  EVALUATION_DOCUMENT_DUPLICATE_TO_OTHER_WORK,
 | 
			
		||||
  EVALUATION_DOCUMENT_DUPLICATE_TO_OTHER_EVALUATION,
 | 
			
		||||
  trans,
 | 
			
		||||
} from "translator";
 | 
			
		||||
import { ref, watch } from "vue";
 | 
			
		||||
 
 | 
			
		||||
@@ -52,9 +52,7 @@ import TimeSpentInput from "./TimeSpentInput.vue";
 | 
			
		||||
import CommentInput from "./CommentInput.vue";
 | 
			
		||||
import DocumentsList from "./DocumentsList.vue";
 | 
			
		||||
import DocumentActions from "./DocumentActions.vue";
 | 
			
		||||
import { makeFetch } from "ChillMainAssets/lib/api/apiMethods";
 | 
			
		||||
import { useToast } from "vue-toast-notification";
 | 
			
		||||
import { DOCUMENT_DUPLICATE_TO_EVALUATION_SUCCESS, trans } from "translator";
 | 
			
		||||
 | 
			
		||||
const props = defineProps(["evaluation", "docAnchorId"]);
 | 
			
		||||
const store = useStore();
 | 
			
		||||
@@ -242,17 +240,10 @@ function duplicateDocument(document) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function duplicateDocumentToEvaluation({ evaluation, document }) {
 | 
			
		||||
  const url = `/api/1.0/person/accompanying-course-work-evaluation-document/${document.id}/evaluation/${evaluation.id}/duplicate`;
 | 
			
		||||
  // console.log('document id', document.id, 'evaluation id', evaluation.id)
 | 
			
		||||
 | 
			
		||||
  makeFetch("POST", url)
 | 
			
		||||
    .then((response) => {
 | 
			
		||||
      console.log("new document", response);
 | 
			
		||||
      toast.open({ message: trans(DOCUMENT_DUPLICATE_TO_EVALUATION_SUCCESS) });
 | 
			
		||||
    })
 | 
			
		||||
    .catch((error) => {
 | 
			
		||||
      console.log(error);
 | 
			
		||||
    });
 | 
			
		||||
  store.dispatch("duplicateDocumentToEvaluation", {
 | 
			
		||||
    evaluation: evaluation,
 | 
			
		||||
    document: document,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function onStatusDocumentChanged(newStatus) {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import { findSocialActionsBySocialIssue } from "ChillPersonAssets/vuejs/_api/Soc
 | 
			
		||||
import { create } from "ChillPersonAssets/vuejs/_api/AccompanyingCourseWork.js";
 | 
			
		||||
import { fetchResults, makeFetch } from "ChillMainAssets/lib/api/apiMethods.ts";
 | 
			
		||||
import { fetchTemplates } from "ChillDocGeneratorAssets/api/pickTemplate.js";
 | 
			
		||||
import { duplicate } from "../_api/accompanyingCourseWorkEvaluationDocument";
 | 
			
		||||
import { duplicate, duplicateDocumentToEvaluation } from "../_api/accompanyingCourseWorkEvaluationDocument";
 | 
			
		||||
 | 
			
		||||
const debug = process.env.NODE_ENV !== "production";
 | 
			
		||||
const evalFQDN = encodeURIComponent(
 | 
			
		||||
@@ -302,6 +302,13 @@ const store = createStore({
 | 
			
		||||
      document.key = evaluation.documents.length + 1;
 | 
			
		||||
      evaluation.documents.splice(0, 0, document);
 | 
			
		||||
    },
 | 
			
		||||
    addDuplicatedDocumentToEvaluation(state, { document, evaluation }) {
 | 
			
		||||
          let evaluationDest = state.evaluationsPicked.find(
 | 
			
		||||
              (e) => e.id === evaluation.id,
 | 
			
		||||
          );
 | 
			
		||||
          document.key = evaluationDest.documents.length + 1;
 | 
			
		||||
          evaluationDest.documents.splice(0, 0, document);
 | 
			
		||||
    },
 | 
			
		||||
    /**
 | 
			
		||||
     * Replaces a document in the state with a new document.
 | 
			
		||||
     *
 | 
			
		||||
@@ -598,6 +605,10 @@ const store = createStore({
 | 
			
		||||
      const newDoc = await duplicate(document.id);
 | 
			
		||||
      commit("addDuplicatedDocument", { document: newDoc, evaluation_key });
 | 
			
		||||
    },
 | 
			
		||||
    async duplicateDocumentToEvaluation({ commit }, { document, evaluation }) {
 | 
			
		||||
          const newDoc = await duplicateDocumentToEvaluation(document.id, evaluation.id);
 | 
			
		||||
          commit("addDuplicatedDocumentToEvaluation", { document: newDoc, evaluation });
 | 
			
		||||
    },
 | 
			
		||||
    removeDocument({ commit }, payload) {
 | 
			
		||||
      commit("removeDocument", payload);
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -9,3 +9,13 @@ export const duplicate = async (
 | 
			
		||||
    `/api/1.0/person/accompanying-course-work-evaluation-document/${id}/duplicate`,
 | 
			
		||||
  );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const duplicateDocumentToEvaluation = async (
 | 
			
		||||
    document_id: number,
 | 
			
		||||
    evaluation_id: number,
 | 
			
		||||
): Promise<AccompanyingPeriodWorkEvaluationDocument> => {
 | 
			
		||||
    return makeFetch<null, AccompanyingPeriodWorkEvaluationDocument>(
 | 
			
		||||
        "POST",
 | 
			
		||||
        `/api/1.0/person/accompanying-course-work-evaluation-document/${document_id}/evaluation/${evaluation_id}/duplicate`,
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -775,7 +775,7 @@ evaluation:
 | 
			
		||||
    document:
 | 
			
		||||
      duplicate: Dupliquer
 | 
			
		||||
      duplicate_here: Dupliquer ici
 | 
			
		||||
      duplicate_to_other_work: Dupliquer vers un autre actions d'accompagnement
 | 
			
		||||
      duplicate_to_other_evaluation: Dupliquer vers une autre évaluation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
goal:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user