diff --git a/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml b/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml
index 4756ff4f7..263a57049 100644
--- a/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml
+++ b/src/Bundle/ChillMainBundle/translations/messages+intl-icu.fr.yaml
@@ -45,3 +45,12 @@ workflow:
few {# workflows}
other {# workflows}
}
+
+duration:
+ minute: >-
+ {m, plural,
+ =0 {Aucune durée}
+ one {# minute}
+ few {# minutes}
+ other {# minutes}
+ }
diff --git a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php
index 078ef0c3c..8780f7d17 100644
--- a/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php
+++ b/src/Bundle/ChillPersonBundle/Entity/AccompanyingPeriod/AccompanyingPeriodWorkEvaluation.php
@@ -160,6 +160,14 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU
*/
private ?DateInterval $warningInterval = null;
+ /**
+ * @ORM\Column(type="integer", nullable=true)
+ * @Serializer\Groups({"read", "docgen:read"})
+ * @Serializer\Groups({"write"})
+ * @Serializer\Groups({"accompanying_period_work_evaluation:create"})
+ */
+ private ?int $timeSpent = null;
+
public function __construct()
{
$this->documents = new ArrayCollection();
@@ -265,6 +273,11 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU
return $this->warningInterval;
}
+ public function getTimeSpent(): ?int
+ {
+ return $this->timeSpent;
+ }
+
public function removeDocument(AccompanyingPeriodWorkEvaluationDocument $document): self
{
$this->documents->removeElement($document);
@@ -322,6 +335,13 @@ class AccompanyingPeriodWorkEvaluation implements TrackCreationInterface, TrackU
return $this;
}
+ public function setTimeSpent(?int $timeSpent): self
+ {
+ $this->timeSpent = $timeSpent;
+
+ return $this;
+ }
+
public function setEvaluation(?Evaluation $evaluation): AccompanyingPeriodWorkEvaluation
{
if (
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php
index e7d1e5dfd..010618733 100644
--- a/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php
+++ b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php
@@ -47,6 +47,7 @@ class ListEvaluation implements ListInterface, GroupedExportInterface
'endDate',
'maxDate',
'warningInterval',
+ 'timeSpent',
'acpw_id',
'acpw_startDate',
'acpw_endDate',
@@ -295,6 +296,9 @@ class ListEvaluation implements ListInterface, GroupedExportInterface
$qb->addSelect(sprintf('workeval.%s AS %s', $field, $field));
}
+ // add the time spent field
+ $qb->addSelect('(workeval.timeSpent / 60) AS timeSpent');
+
// those with identity
foreach (['createdBy', 'updatedBy'] as $field) {
$qb->addSelect(sprintf('IDENTITY(workeval.%s) AS %s', $field, $field));
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue
index d6e42f743..7dcb595a3 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue
@@ -49,6 +49,20 @@
+
@@ -191,6 +205,8 @@ const i18n = {
evaluation_choose_a_template: "Choisir un modèle",
evaluation_add_a_document: "Ajouter un document",
evaluation_add: "Ajouter une évaluation",
+ evaluation_time_spent: "Temps de rédaction",
+ select_time_spent: "Indiquez le temps de rédaction",
Documents: "Documents",
document_add: "Générer ou téléverser un document",
document_upload: "Téléverser un document",
@@ -224,6 +240,22 @@ export default {
maxPostSize: 15000000,
required: false,
},
+ timeSpentChoices: [
+ { text: '1 minute', value: 60 }, { text: '2 minutes', value: 120 },
+ { text: '3 minutes', value: 180 }, { text: '4 minutes', value: 240 },
+ { text: '5 minutes', value: 300 }, { text: '10 minutes', value: 600 },
+ { text: '15 minutes', value: 900 },{ text: '20 minutes', value: 1200 },
+ { text: '25 minutes', value: 1500 }, { text: '30 minutes', value: 1800 },
+ { text: '45 minutes', value: 2700 },{ text: '1 hour', value: 3600 },
+ { text: '1 hour 15 minutes', value: 4500 }, { text: '1 hour 30 minutes', value: 5400 },
+ { text: '1 hour 45 minutes', value: 6300 }, { text: '2 hours', value: 7200 },
+ { text: '2 hours 30 minutes', value: 9000 }, { text: '3 hours', value: 10800 },
+ { text: '3 hours 30 minutes', value: 12600 },{ text: '4 hours', value: 14400 },
+ { text: '4 hours 30 minutes', value: 16200 },{ text: '5 hours', value: 18000 },
+ { text: '5 hours 30 minutes', value: 19800 },{ text: '6 hours', value: 21600 },
+ { text: '6 hours 30 minutes', value: 23400 },{ text: '7 hours', value: 25200 },
+ { text: '7 hours 30 minutes', value: 27000 },{ text: '8 hours', value: 28800 },
+ ]
}
},
computed: {
@@ -265,6 +297,10 @@ export default {
get() { return this.evaluation.warningInterval; },
set(v) { this.$store.commit('setEvaluationWarningInterval', { key: this.evaluation.key, days: v }); }
},
+ timeSpent: {
+ get() { return this.evaluation.timeSpent },
+ set(v) { this.$store.commit('setEvaluationTimeSpent', { key: this.evaluation.key, time: v}) }
+ },
comment: {
get() { return this.evaluation.comment; },
set(v) { this.$store.commit('setEvaluationComment', { key: this.evaluation.key, comment: v }); }
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
index d9f317b4c..e075e65bc 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js
@@ -116,6 +116,7 @@ const store = createStore({
endDate: e.endDate === null || e.endDate === '' ? null : { datetime: datetimeToISO(ISOToDate(e.endDate)) },
maxDate: e.maxDate === null || e.maxDate === '' ? null : { datetime: datetimeToISO(ISOToDate(e.maxDate)) },
warningInterval: intervalDaysToISO(e.warningInterval),
+ timeSpent: e.timeSpent,
comment: e.comment,
documents: e.documents
};
@@ -138,6 +139,7 @@ const store = createStore({
endDate: e.endDate !== null ? dateToISO(new Date(e.endDate.datetime)) : null,
maxDate: e.maxDate !== null ? dateToISO(new Date(e.maxDate.datetime)) : null,
warningInterval: e.warningInterval !== null ? intervalISOToDays(e.warningInterval) : null,
+ timeSpent: e.timeSpent !== null ? e.timeSpent : null,
documents: e.documents.map((d, docIndex) => {
return Object.assign(d, {
key: docIndex
@@ -258,6 +260,7 @@ const store = createStore({
endDate: null,
maxDate: null,
warningInterval: null,
+ timeSpent: null,
comment: "",
editEvaluation: true,
workflows_availables: state.work.workflows_availables_evaluation,
@@ -286,6 +289,10 @@ const store = createStore({
state.evaluationsPicked.find(e => e.key === key)
.warningInterval = days;
},
+ setEvaluationTimeSpent(state, {key, time}) {
+ state.evaluationsPicked.find(e => e.key === key)
+ .timeSpent = time;
+ },
setEvaluationComment(state, {key, comment}) {
state.evaluationsPicked.find(e => e.key === key)
.comment = comment;
@@ -482,7 +489,7 @@ const store = createStore({
;
commit('setIsPosting', true);
- console.log('payload', payload);
+ console.log('the social action', payload);
return makeFetch('PUT', url, payload)
.then(data => {
diff --git a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig
index 0dd0cc84a..f4198a5c7 100644
--- a/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig
+++ b/src/Bundle/ChillPersonBundle/Resources/views/AccompanyingCourseWork/_objectifs_results_evaluations.html.twig
@@ -118,6 +118,18 @@
{% endif %}
{% endif %}
+
+ {% if e.timeSpent is not null and e.timeSpent > 0 %}
+
+ {% set minutes = (e.timeSpent / 60) %}
+ {{ 'accompanying_course_work.timeSpent'|trans ~ ' : ' }} {{ 'duration.minute'|trans({ '{m}' : minutes }) }}
+
+ {% elseif displayContent is defined and displayContent == 'long' %}
+
+ {{ 'accompanying_course_work.timeSpent'|trans ~ ' : ' }}
+ {{ 'Not given'|trans }}
+
+ {% endif %}
@@ -143,7 +155,7 @@
{% else %}
{{ 'No document found'|trans }}
{% endif %}
-
+
{% endif %}
diff --git a/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php b/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php
new file mode 100644
index 000000000..ec802a993
--- /dev/null
+++ b/src/Bundle/ChillPersonBundle/migrations/Version20230210104424.php
@@ -0,0 +1,26 @@
+addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation ADD timeSpent INT DEFAULT NULL');
+ }
+
+ public function down(Schema $schema): void
+ {
+ $this->addSql('ALTER TABLE chill_person_accompanying_period_work_evaluation DROP timeSpent');
+ }
+}
diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml
index 808ce5257..090f35c1c 100644
--- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml
+++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml
@@ -908,6 +908,7 @@ accompanying_course_work:
remove: Supprimer une action d'accompagnement
social_evaluation: Évaluation
private_comment: Commentaire privé
+ timeSpent: Temps de rédaction
#
@@ -1139,6 +1140,7 @@ export:
updatedAt: Date de modification
createdBy: Créé par
updatedBy: Modifié par
+ timeSpent: Temps de rédaction (minutes)
acpw:
List of accompanying period works: Liste des actions
List description: Génère une liste des actions d'accompagnement, filtrée sur différents paramètres.