{"version":3,"file":"js/app.57f438ee.js","mappings":"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","sources":["webpack://ehro-admin/./src/lang/ lazy ^\\.\\/.*$ namespace object","webpack://ehro-admin/./src/assets/js/Utils.js","webpack://ehro-admin/./src/lang/fr.js","webpack://ehro-admin/./src/_nav.ts","webpack://ehro-admin/./src/interceptors/index.ts","webpack://ehro-admin/./src/apis/OrganizerAPI.ts","webpack://ehro-admin/./src/apis/AuthenticationAPI.ts","webpack://ehro-admin/./src/apis/AccountAPI.ts","webpack://ehro-admin/./src/apis/ShopAPI.ts","webpack://ehro-admin/./src/i18n.ts","webpack://ehro-admin/./src/App.vue?0068","webpack://ehro-admin/./src/App.vue?4296","webpack://ehro-admin/./src/App.vue?8bd0","webpack://ehro-admin/./src/App.vue","webpack://ehro-admin/./src/main.ts","webpack://ehro-admin/./src/models/CampaignModel.ts","webpack://ehro-admin/./src/models/EventDayModel.ts","webpack://ehro-admin/./src/models/ConfigurationModel.ts","webpack://ehro-admin/./src/models/EventModel.ts","webpack://ehro-admin/./src/models/Form/AttributeModel.ts","webpack://ehro-admin/./src/models/Form/FieldModel.ts","webpack://ehro-admin/./src/models/Form/FormModel.ts","webpack://ehro-admin/./src/models/ManagerModel.ts","webpack://ehro-admin/./src/models/OrganizationEventResumeModel.ts","webpack://ehro-admin/./src/models/OrganizationModel.ts","webpack://ehro-admin/./src/models/ParticipationModel.ts","webpack://ehro-admin/./src/models/PositionModel.ts","webpack://ehro-admin/./src/models/RewardCategoryModel.ts","webpack://ehro-admin/./src/models/ShopOrderModel.ts","webpack://ehro-admin/./src/models/ShopProductModel.ts","webpack://ehro-admin/./src/models/TagModel.ts","webpack://ehro-admin/./src/models/TimeSlotModel.ts","webpack://ehro-admin/./src/models/UserModel.ts","webpack://ehro-admin/./src/models/VolunteerCategoryModel.ts","webpack://ehro-admin/./src/models/VolunteerModel.ts","webpack://ehro-admin/./src/router.ts","webpack://ehro-admin/./src/utils/i18n.ts","webpack://ehro-admin/./src/services/AuthenticationService.ts","webpack://ehro-admin/./src/models/ParticipationsRankingModel.ts","webpack://ehro-admin/./src/services/EventService.ts","webpack://ehro-admin/./src/services/FormService.ts","webpack://ehro-admin/./src/services/PermissionLib.ts","webpack://ehro-admin/./src/models/TimeSlotResumeModel.ts","webpack://ehro-admin/./src/models/ParticipationResumeModel.ts","webpack://ehro-admin/./src/models/EventWithResumeModel.ts","webpack://ehro-admin/./src/models/ShopTransactionDataModel.ts","webpack://ehro-admin/./src/models/ShopTransactionModel.ts","webpack://ehro-admin/./src/services/VolunteerService.ts","webpack://ehro-admin/./src/services/ManagerService.ts","webpack://ehro-admin/./src/models/CommunicationHistory.ts","webpack://ehro-admin/./src/services/EmailService.ts","webpack://ehro-admin/./src/models/CampaignRegistrationModel.ts","webpack://ehro-admin/./src/services/CampaignService.ts","webpack://ehro-admin/./src/services/EventAssignerService.ts","webpack://ehro-admin/./src/services/ShopService.ts","webpack://ehro-admin/./src/utils/date.ts","webpack://ehro-admin/webpack/bootstrap","webpack://ehro-admin/webpack/runtime/chunk loaded","webpack://ehro-admin/webpack/runtime/compat get default export","webpack://ehro-admin/webpack/runtime/create fake namespace object","webpack://ehro-admin/webpack/runtime/define property getters","webpack://ehro-admin/webpack/runtime/ensure chunk","webpack://ehro-admin/webpack/runtime/get javascript chunk filename","webpack://ehro-admin/webpack/runtime/get mini-css chunk filename","webpack://ehro-admin/webpack/runtime/global","webpack://ehro-admin/webpack/runtime/harmony module decorator","webpack://ehro-admin/webpack/runtime/hasOwnProperty shorthand","webpack://ehro-admin/webpack/runtime/load script","webpack://ehro-admin/webpack/runtime/make namespace object","webpack://ehro-admin/webpack/runtime/node module decorator","webpack://ehro-admin/webpack/runtime/publicPath","webpack://ehro-admin/webpack/runtime/css loading","webpack://ehro-admin/webpack/runtime/jsonp chunk loading","webpack://ehro-admin/webpack/startup"],"sourcesContent":["var map = {\n\t\"./de\": [\n\t\t29594,\n\t\t9594\n\t],\n\t\"./de.js\": [\n\t\t29594,\n\t\t9594\n\t],\n\t\"./en\": [\n\t\t18777,\n\t\t8777\n\t],\n\t\"./en.js\": [\n\t\t18777,\n\t\t8777\n\t],\n\t\"./fr\": [\n\t\t83177\n\t],\n\t\"./fr.js\": [\n\t\t83177\n\t],\n\t\"./fr_champagne\": [\n\t\t96787,\n\t\t6787\n\t],\n\t\"./fr_champagne.js\": [\n\t\t96787,\n\t\t6787\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 84333;\nmodule.exports = webpackAsyncContext;","import { DateTime, Duration } from 'luxon';\nimport i18n from '@/i18n';\n\n/* Add number of minutes in date */\nexport function addSec(date, sec) {\n return DateTime.fromJSDate(date).plus(Duration.fromObject({ seconds: sec })).toJSDate();\n}\n/* Get hour of date rounded on nearest */\nexport function roundHour(timestamp) {\n return Math.round(timestamp / (3600 * 1000));\n}\nexport function roundHalfHour(timestamp) {\n let source = timestamp / (3600 * 1000);\n const hour = Math.trunc(timestamp / (3600 * 1000));\n source -= hour;\n source = Math.round(source * 100);\n\n let half = 0;\n if (source < 25) {\n half = 0;\n } else if (source < 75) {\n half = 0.5;\n } else {\n half = 1;\n }\n return hour + half;\n}\nexport function noRounded(timestamp) {\n return timestamp / (3600 * 1000);\n}\n\nexport function isToday(d) {\n return d.toFormat('yyyy-LL-dd') === DateTime.now().toFormat('yyyy-LL-dd');\n}\n\n/* Format the date in string hh:mm */\nexport function formatTime(date) {\n return DateTime.fromJSDate(date).toFormat('HH:mm');\n}\n\nexport function formatDateTime(date) {\n return DateTime.fromJSDate(date).toFormat('dd.LL.yyyy - HH:mm');\n}\n\nexport function toHoursMinutesFormat(dateTime) {\n return dateTime.toFormat('HH:mm');\n}\n\nexport function toShortDateFormat(dateTime) {\n return dateTime.toLocaleString(DateTime.DATE_SHORT, { locale: i18n.locale });\n}\n\nexport function printDateFormat(dateTime) {\n return dateTime.toFormat('ccc dd.MM.yyyy', { locale: i18n.locale });\n}\n\nexport function toHugeDateTimeFormat(dateTime) {\n return dateTime.toLocaleString(DateTime.DATETIME_HUGE, { locale: i18n.locale });\n}\n\nexport function toHugeDateFormat(dateTime) {\n return dateTime.toLocaleString(DateTime.DATE_HUGE, { locale: i18n.locale });\n}\n\n/* Transform timestamp to date object */\nexport function getDateFromTimestamp(timestamp, eventTimeZone) {\n return DateTime.fromMillis(timestamp).setZone(eventTimeZone);\n}\n\nexport function getTimestampFromDate(date) {\n return date.toMillis();\n}\n\n\nexport function millisToHoursAndMinutes(millis) {\n let hours = Math.floor(millis / (3600 * 1000));\n const minutesInMs = millis - (hours * (3600 * 1000));\n let minutes = Math.round(minutesInMs / (60 * 1000));\n hours = (hours < 10) ? `0${hours}` : hours;\n minutes = (minutes < 10) ? `0${minutes}` : minutes;\n return `${hours}:${minutes}`;\n}\n\nexport function secToHoursAndMinutes(sec) {\n let totalSeconds = sec;\n let hours = Math.floor(totalSeconds / 3600);\n totalSeconds %= 3600;\n let minutes = Math.floor(totalSeconds / 60);\n hours = (hours < 10) ? `0${hours}` : parseFloat(hours).toLocaleString('fr');\n minutes = (minutes < 10) ? `0${minutes}` : minutes;\n return `${hours}:${minutes}`;\n}\n\nexport function secToHoursAndMinutesWithExtraDay(sec) {\n let totalSeconds = sec;\n let hours = Math.floor(totalSeconds / 3600);\n totalSeconds %= 3600;\n let minutes = Math.floor(totalSeconds / 60);\n let extraDay = false;\n if (hours >= 24) {\n extraDay = true;\n hours -= 24;\n }\n hours = (hours < 10) ? `0${hours}` : parseFloat(hours).toLocaleString('fr');\n minutes = (minutes < 10) ? `0${minutes}` : minutes;\n return extraDay ? `${hours}:${minutes} +1` : `${hours}:${minutes}`;\n}\n\n\nexport function isInclude(array, item) {\n // FOR FUCKING IE\n if (!Array.prototype.includes) {\n array.forEach((currentItem) => {\n if (currentItem === item) {\n return true;\n }\n });\n return false;\n }\n return array.includes(item);\n}\n\n/* GROUP BY FOR AN ARRAY */\nexport function groupBy(array, key) {\n const result = {};\n array.forEach((item) => {\n if (!result[item[key]] && item[key] !== '') {\n result[item[key]] = [];\n }\n\n if (item[key] !== '') {\n result[item[key]].push(item);\n }\n });\n return result;\n}\nexport function groupByMultipleKeys(array, keys) {\n const result = {};\n\n array.forEach((item) => {\n let key = '';\n keys.forEach((k) => {\n if (key === '') {\n key += item[k];\n } else {\n key += `-${item[k]}`;\n }\n });\n if (key !== '') {\n if (!result[key]) {\n result[key] = [];\n }\n\n result[key].push(item);\n }\n });\n\n return result;\n}\n\nexport function groupByReferenceKeyWithSubKeys(array, refKey, subkeys) {\n const result = {};\n\n\n array.forEach((item) => {\n if (!result[item[refKey]] && item[refKey] !== '') {\n result[item[refKey]] = {};\n }\n // const dict = result[item[refKey]];\n\n if (item[refKey] !== '') {\n // Create subkey index\n let subkey = '';\n subkeys.forEach((k) => {\n if (subkey === '') {\n subkey += item[k];\n } else {\n subkey += `-${item[k]}`;\n }\n });\n\n // Test if subkey index already present\n if (!result[item[refKey]][subkey]) {\n result[item[refKey]][subkey] = [];\n }\n result[item[refKey]][subkey].push(item);\n }\n });\n\n return result;\n}\n\n\nexport function reorderArray(event, originalArray) {\n const movedItem = originalArray.find((item, index) => index === event.oldIndex);\n if (movedItem) {\n const remainingItems = originalArray.filter((item, index) => index !== event.oldIndex);\n \n const reorderedItems = [\n ...remainingItems.slice(0, event.newIndex),\n movedItem,\n ...remainingItems.slice(event.newIndex)\n ];\n\n return reorderedItems;\n }\n return originalArray;\n}\n\n\nexport function isMobile() {\n let check = false;\n (function (a) { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true; }(navigator.userAgent || navigator.vendor || window.opera));\n return check;\n}\n\nexport function getProgressVariant(prc) {\n if (prc < 50) {\n return 'danger';\n } else if (prc >= 50 && prc <= 75) {\n return 'warning';\n } else if (prc > 75 && prc <= 95) {\n return 'info';\n } else if (prc > 95) {\n return 'success';\n }\n return 'dark';\n}\n\n\nfunction getRGB(c) {\n return parseInt(c, 16) || c\n}\n\nfunction getsRGB(c) {\n return getRGB(c) / 255 <= 0.03928\n ? getRGB(c) / 255 / 12.92\n : Math.pow((getRGB(c) / 255 + 0.055) / 1.055, 2.4)\n}\n\nfunction getLuminance(hexColor) {\n return (\n 0.2126 * getsRGB(hexColor.substr(1, 2)) +\n 0.7152 * getsRGB(hexColor.substr(3, 2)) +\n 0.0722 * getsRGB(hexColor.substr(-2))\n )\n}\n\nfunction getContrast(f, b) {\n const L1 = getLuminance(f)\n const L2 = getLuminance(b)\n return (Math.max(L1, L2) + 0.05) / (Math.min(L1, L2) + 0.05)\n}\n\nexport function getTextColor(bgColor) {\n const whiteContrast = getContrast(bgColor, '#ffffff')\n const blackContrast = getContrast(bgColor, '#000000')\n\n return whiteContrast > blackContrast ? '#ffffff' : '#000000'\n}\n","const fr = {\n cfg_position_order: \"Ordre des missions\",\n prefer_positions_with_slots:\n \"Priorité sur les missions avec tranches horaires\",\n preserve_order: \"Respecter l’ordre défini\",\n\n display: \"Afficher\",\n hide: \"Masquer\",\n\n // FORM BUILDER\n no_email_confirmation_needed:\n \"📢 Pas besoin de créer un champ de confirmation d'email, nous nous chargeons déjà de vérifier la saisie !\",\n fields: \"Champs\",\n drag_field: \"Glissez un champ dans le formulaire\",\n add_volunteer: \"+ Bénévole\",\n add_event: \"+ Événement\",\n add_campaign: \"+ Campagne\",\n form: \"Formulaire\",\n tooltip_label: \"C'est le texte affiché dans le formulaire final\",\n choose_type: \"Choisissez un type\",\n per_participation: \"Par participation\",\n options: \"Options\",\n parent_field: \"Champ parent\",\n no_parent_field: \"Aucun champ parent\",\n trigger_value: \"Valeur déclencheur\",\n refresh_fields: \"Les champs disponibles ont été rafraîchis.\",\n refresh_error: \"Une erreur s'est produite lors du rafraîchissement.\",\n delete_confirmation:\n 'Êtes-vous sûr de vouloir supprimer le champ \"{field}\" ? Cette action est irréversible.',\n delete_success: 'Le champ \"{field}\" a été supprimé.',\n delete_error: \"Une erreur s'est produite lors de la suppression du champ.\",\n save_error: \"Une erreur s'est produite lors de la sauvegarde.\",\n configure_field: \"Configurer le champ\",\n option_name: \"Nom de l'option\",\n confirmation: \"Confirmation\",\n label: \"Libellé\",\n country: \"Pays\",\n birthdate: \"Date de naissance\",\n phone: \"No de téléphone\",\n field_name: \"Nom du champ\",\n field_type: \"Type du champ\",\n text: \"Texte\",\n text_multiline: \"Text long\",\n int: \"Nombre\",\n date: \"Date\",\n enum: \"Choix unique\",\n enum_multiple: \"Choix multiple\",\n bool: \"Oui / Non\",\n restriction_enum_as_parent:\n \"Seuls les champs de type choix unique peuvent être utilisés comme condition\",\n important_information: \"ℹ️ Informations importantes\",\n restriction_light_fields:\n \"La licence Light ne permet pas d’ajouter des champs bénévoles. Vous pouvez cependant créer jusqu’à 3 champs événementiels.\",\n restriction_club_fields:\n \"La licence Club permet d’ajouter 3 champs bénévoles et 3 champs événementiels maximum.\",\n restriction_alert: \"⚠️ Restrictions liées à votre licence\",\n restriction_volunteer_fields_licence:\n \"Vous avez atteint la limite de champs bénévoles autorisés par votre licence.\",\n restriction_event_fields_licence:\n \"Vous avez atteint la limite de champs événementiels autorisés par votre licence.\",\n\n conditions: \"Condition\",\n\n max_part_at_time: \"Nombre maximal de participants à la fois\",\n cfg_basket: \"Activer le panier pour les inscriptions\",\n cfg_basket_info: \"Impossible avec les inscriptions de groupe\",\n menu_badge: \"Badges\",\n onlyNotFull: \"Seulement les tranches non-complètes\",\n filter_public: \"Filtrer le tableau\",\n reg_form_phone_too_short: \"Numéro non valide\",\n reg_form_phone_use_country_code:\n \"Merci d'indiquer l'indicatif international avec +XX ex: +41 112223344\",\n\n sort: \"Ordrer par nom\",\n montant: \"Montant\",\n quantity: \"Quantité\",\n solde: \"Solde\",\n product_purchased: \"Achat\",\n manual_adjustment: \"Ajustement manuel\",\n participation_accepted: \"Inscription\",\n participation_cancelled: \"Désinscription\",\n participation_changed: \"Modification d’inscription\",\n time_slot_changed: \"Changement de trache horaire\",\n hourly_rate_changed: \"Changement du nombre de points\",\n\n point: \"point | points\",\n buy: \"Acheter\",\n not_available: \"Pas encore disponible\",\n portail_shop: \"Shop\",\n portail_shop_transaction: \"Historique des points\",\n portail_shop_orders: \"Mes achats\",\n shop_purchase_confirmed: \"Achat confirmé\",\n portail_affectation: \"Vos affectations\",\n registration_info: \"\",\n registration_error: \"Erreur lors de l'inscription\",\n filter: \"Filtrer\",\n reward_category: \"Shop: catégorie des tranches\",\n code: \"Code\",\n order_status_awaiting_delivery: \"En attente de retrait\",\n order_status_delivered: \"Remis\",\n order_status_cancelled: \"Annulé\",\n order_cancelled: \"Commande annulée\",\n\n copy_filtered_missions: \"Copier les missions filtrées\",\n no_shift: \"Aucune tranche disponible pour cette date\",\n remove_all_tags: \"Supprimer tous les tags\",\n hours_for_day_day_error:\n \"Attention, des shifts ne seront plus visible le {date}\",\n hours_for_day_full_event: \"Appliquer à tous les jours\",\n cfg_enable_registrations: \"Autoriser les inscriptions\",\n private_description: \"Description interne\",\n cfg_enable_past:\n \"Afficher les tranches horaires dans le passé sur le planificateur public\",\n\n jour_small: \"j\",\n contact: \"Contact\",\n in_case_of_questions: \"En cas de question contactez :\",\n general_info: \"Informations générales\",\n reg_form_email_desc:\n \"Nécessaire si vous souhaitez une confirmation et un rappel\",\n registration_done: \"Inscription enregistrée\",\n consult_spam: \"Si vous ne recevez pas de confirmation, consultez vos spams\",\n\n order: \"Ordre\",\n add_tags: \"Ajouter des tags\",\n remove_tags: \"Supprimer les tags\",\n remove_tags_text:\n \"Tous les tags de toutes les missions sélectionnées seront supprimés\",\n\n show_tag: \"Afficher les tags\",\n tag: \"Tag | Tags\",\n tag_public: \"Tags publics\",\n tag_private: \"Tags internes\",\n no_item_found: \"Aucun élément trouvé\",\n choose_tag: \"Sélectioner 1 ou plusieurs tags\",\n save_first: \"Veuillez d'abord sauvegarder\",\n\n x_item_deleted: \"{nbr} élément supprimé | {nbr} éléments supprimés\",\n x_item_created: \"{nbr} élément créé | {nbr} éléments créés\",\n x_item_updated: \"{nbr} élément mis à jour | {nbr} éléments mis à jour\",\n\n more_dates_here: \"{nbr} jours disponibles\",\n\n menu_soon: \"À venir\",\n soon_title: \"À venir\",\n\n menu_com_model: \"Modèles\",\n\n all_day: \"Jour complet\",\n\n form_event_name: \"Nom de l'événement\",\n form_event_logo: \"Logo\",\n event_action_edit: \"Modifier\",\n event_action_link: \"Partager\",\n event_action_ranking: \"Voir le classement\",\n event_action_assign: \"Affecter des bénévoles\",\n event_action_manage: \"Gestion opérationnelle\",\n event_action_clone: \"Cloner\",\n event_action_delete: \"Supprimer\",\n event_action_plan: \"Planifier\",\n edit_tab_detail: \"Page de détail\",\n\n cal_by_week: \"Par semaine\",\n cal_by_day: \"Par jour\",\n cal_display_today: \"Afficher aujourd'hui\",\n cal_display_volunteers: \"Afficher les bénévoles\",\n\n alert_welcome:\n \"🎉 Mise à jour 5.0 🎉 Consultez le VLOG en bas de page ainsi que les notes de mises à jour !\",\n\n alert_wrong_browser:\n \"Mozilla Firefox ou Google Chrome sont recommandés pour l’utilisation du système\",\n\n vol_display_name_nothing: \"Ne pas afficher le prénom ni le nom\",\n vol_display_name_full: \"Afficher le prénom et nom complets\",\n vol_display_name_abbreviated: \"Abréger le nom de famille\",\n\n switch_org: \"Changer d’organisation\",\n extend_event: \"Extension d'un événement\",\n event_target: \"Événement à étendre\",\n event_extend_button: \"Copier dans un autre événement\",\n\n clone_participations: \"Cloner les inscriptions des bénévoles\",\n clone_participations_info:\n \"En cochant cette case, le système copiera aussi les participations des bénévoles dans chacune des tranches horaires\",\n clone_participations_categorie:\n \"Vous pouvez filtrer les inscriptions qui seront clonées en fonction des catégories des bénévoles (si vous ne cochez rien, tout sera copié)\",\n\n startDate: \"Date de début\",\n endDate: \"Date de fin\",\n startTime: \"Heure de début\",\n endTime: \"Heure de fin\",\n\n calendar: \"Calendrier\",\n\n list_enable_edit: \"Activer édition\",\n list_disable_edit: \"Vérouiller et sauver\",\n age: \"Âge\",\n timezone: \"Fuseau horaire de l'événement\",\n timezoneChangeTitle: \"Attention\",\n timezoneChangeDesc:\n \"Votre événement contient des tranches horaires. \\\n Le système va adapter toutes les tranches sur le nouveau fuseau horaire\",\n\n complex_event: \"Événement complexe\",\n complex_event_desc:\n \"Les événements complexes permettent plus de configuration\",\n complex_select_date: \"Sélection des dates\",\n complex_period: \"Période étendue (génération automatique)\",\n complex_period_desc:\n \"Dans le cadre d'un événement étendu, vous définissez uniquement la période de votre événement durant laquelle les tranches peuvent être créées.\",\n\n portal_title: \"Portail des bénévoles\",\n portal_acces_info: \"Email requis pour consulter vos affectations\",\n portal_acces_btn: \"Voir mes affectations\",\n portal_print: \"Imprimer mon planning\",\n\n portail_goodies: \"Vos vouchers\",\n portail_display_goodies: \"Afficher mes vouchers\",\n portail_refresh_goodies: \"Rafraichir mes vouchers\",\n portail_with_goodies:\n \"Super ! Grâce à votre engagement vous avez le droit à {nbr} voucher(s)!\",\n portail_with_goodies_no_voucher:\n \"Vous n'avez droit à aucun voucher :-(, contactez l'organisateur en cas d'erreur\",\n portail_no_goodies:\n \"Malheureusement, vous ne remplissez pas les conditions requises pour recevoir des vouchers.\",\n portail_show_rules: \"Consulter les conditions\",\n menu_shop: \"Shop\",\n menu_voucher_list: \"Mes bons\",\n menu_voucher_import: \"Importation\",\n portail_show_howto: \"Comment utiliser mes bons ? Rendez-vous ici \",\n menu_shop_product: \"Contreparties\",\n menu_shop_config: \"Configuration\",\n\n occurence: \"Occurence\",\n serie: \"Série\",\n delete_serie: \"Supprimer toute la série ou uniquement cette occurence ?\",\n affectation_recurrente: \"Affectation récurrente\",\n add_serie: \"Ajouter à toute la série ?\",\n\n menu_affectation: \"Affectations\",\n menu_validations: \"À valider\",\n message: \"Message\",\n\n tag_list: \"Liste des tags\",\n auto_save: \"Sauvegarde automatique\",\n adjust_timeframe: \"Ajuster la plage horaire du jour\",\n\n status_group_action: \"Changer le status par défaut\",\n cfg_validation: \"Validation des affectations\",\n default_validation_status: \"Validation par défaut\",\n AWAITING_ORGANIZER_VALIDATION: \"En attente de confirmation de l'organisateur\",\n AWAITING_VOLUNTEER_VALIDATION: \"\",\n REJECTED_BY_ORGANIZER: \"\",\n REJECTED_BY_VOLUNTEER: \"\",\n CANCELLED_BY_ORGANIZER: \"\",\n CANCELLED_BY_VOLUNTEER: \"\",\n ACCEPTED: \"Validé\",\n\n // VLOG\n menu_vlog: \"VLOG\",\n vlog_title: \"Quelques infos d'EHRO\",\n vlog_desc: \"Ici nous partageons avec vous quelques infos sur EHRO\",\n\n // Docs\n doc_title: \"Tutos\",\n doc_latest: \"Les dernières nouveautés expliquées\",\n doc_general: \"Généralités\",\n doc_event: \"Création d'événements\",\n doc_gestion: \"Gestion des inscriptions\",\n doc_vol: \"Gestion des bénévoles\",\n doc_comm: \"Communiquer et imprimer\",\n doc_public: \"Les pages publiques et le portail\",\n\n // Release notes\n release_title: \"Quoi de neuf ?\",\n release_latest: \"Dernières versions\",\n release_old: \"Versions précédentes\",\n release_desc: \"Cliquez pour plus de détail\",\n release_v5: \"Version 5\",\n release_v4: \"Version 4\",\n release_v3: \"Version 3\",\n release_v2: \"Version 2\",\n release_v1: \"Version 1\",\n release_v0: \"Version BETA\",\n\n // Portail\n portail_quick_stats: \"Vos statistiques\",\n portail_comm: \"Communications\",\n portail_no_communication: \"Aucune communication à afficher\",\n portail_upcoming_shifts: \"Prochaines affectations\",\n portail_group_upcoming_shifts: \"Prochaines affectations en groupe\",\n portail_solo_upcoming_shifts: \"Vos prochaines affectations\",\n portail_awaiting_org_validation_shifts:\n \"Affectations en attente de confirmation\",\n portail_awaiting_org_validation_desc:\n \"L'organisateur doit valider votre inscription. \\\n Un email de confirmation vous sera envoyé lors de la validation.\",\n portail_rejected_org_validation_shifts:\n \"Affectations rejetées par l'organisateur\",\n\n portail_no_upcoming_shifts: \"Aucune affectation à venir\",\n portail_hide_old_shifts: \"Masquer les anciennes affectations\",\n portail_load_old_shifts: \"Afficher les anciennes affectations\",\n mail_sentat: \"Envoyé à\",\n mail_subject: \"Sujet\",\n mail_sender: \"Expéditeur\",\n mail_event: \"Événement\",\n stats_group: \"En groupe\",\n\n // 2FA\n devices_title: \"Authentification à deux facteurs\",\n devices_active: \"Méthode activée | Méthodes activées\",\n devices_add: \"Ajouter une méthode d'authentification à deux facteurs\",\n devices_email: \"Par email\",\n devices_qrcode: \"Par générateur de codes\",\n devices_backup: \"Par code de secours\",\n devices_nb_backup_codes_left:\n \"{nbCodes} code restant | {nbCodes} codes restants\",\n devices_qrcode_howto:\n \"Utilise ton application favorite de double authentification, scan le QRCode ci-dessus et entre le code de vérification.\",\n devices_code: \"Code\",\n devices_qrcode_setup: \"Configurer le générateur de codes\",\n devices_delete:\n \"Voulez-vous vraiment supprimer cette méthode d’authentification?\",\n devices_email_setup:\n \"Un email contenant un code a été envoyé à {currentEmail},\" +\n \" merci d'introduire le code de confirmation ci-dessous dans un délai de 5 minutes.\",\n devices_will_logout: \"Vous allez être déconnecté\",\n devices_use_backup: \"Utilise un de tes codes de sauvegardes\",\n backup_renew: \"Regénérer\",\n\n // 3.5\n sure: \"Tu confirmes ?\",\n\n // 3.4\n complete_calendar: \"Calendrier complet\",\n goto_volunteer_space: \"Accès bénévoles\",\n\n //3.1\n cfg_enable_group: \"Activer les inscriptions de groupe\",\n reg_form_groupsize_label: \"Indiquez un nombre de membre (entre 1 et {nbr})\",\n reg_form_mendatory_groupsize:\n \"Introduire un nombre de personne entre 1 et {nbr}\",\n reg_individual: \"Individuelle\",\n reg_group: \"Groupe\",\n reg_type: \"Quel type d'inscription ?\",\n reg_group_unable:\n \"Inscription en groupe impossible car il ne reste pas assez de place dans cette tranche\",\n my_group_registration: \"Mes affectations de groupe\",\n group_name: \"Nom du groupe\",\n groupe_size: \"Taille du groupe\",\n cfg_hide_full_slot: \"Affichage des tranches déjà complètes\",\n campaign_fields: \"Champs\",\n add_field: \"Ajouter un champ\",\n form_mandatory_field: \"Obligatoire\",\n\n //3.0\n x_slot_deleted: \"{nbr} tranche supprimée | {nbr} tranches supprimées\",\n x_slot_created: \"{nbr} tranche créée | {nbr} tranches créées\",\n x_slot_updated: \"{nbr} tranche mise à jour | {nbr} tranches mises à jour\",\n tmp_add_slot: \"Modification ajouté à la liste d'attente\",\n update_needed:\n \"Modifications en attente de sauvegarde, pour annuler veuillez rafraîchir la page\",\n event_schedule_enable_autosave_title:\n \"Sauvegarde automatique des modifications\",\n event_schedule_enable_copypaste:\n \"Activer le copier-coller (attention, la sauvegarde automatique sera désactivée)\",\n reg_form_birthdate_desc: \"Nécessaire pour certaines tâches / accréditations\",\n tooltip_simple_choose:\n \"Merci de choisir {nbr} option | Merci de choisir {nbr} options\",\n tooltip_min_choose:\n \"Merci de choisir au minimum {min} option | Merci de choisir au minimum {min} options\",\n tooltip_max_choose:\n \"Merci de choisir au maximum {max} option | Merci de choisir au maximum {max} options\",\n tooltip_minmax_choose:\n \"Merci de choisir au minimum {min} option(s) et au maximum {max} options\",\n tooltip_no_limit_choose: \"Plusieurs choix possible\",\n invalid_form:\n \"Le formulaire contient des erreurs, merci de contrôler vos réponses !\",\n thankyou: \"Merci\",\n form_failure_too_many: \"Veuillez cocher au maximum {nbr} choix\",\n form_failure_too_less: \"Veuillez cocher au moins {nbr} choix\",\n registrations: \"Inscription | Inscriptions\",\n registrations_in_progress: \"Inscription en cours | Inscriptions en cours\",\n status_closed: \"Terminé | Terminés\",\n status_closing: \"Terminer\",\n campaign: \"Campagne | Campagne | Campagnes\",\n no_campaign: \"Aucune campagne trouvée\",\n campaign_confirm_delete: \"Êtes-vous sûr de vouloir supprimer la campagne ?\",\n create_campaign: \"Créer une campagne\",\n edit_campaign: \"Modifier une campagne\",\n new_campaign: \"Nouvelle campagne\",\n msg_cmp_created: \"Campagne créée\",\n msg_cmp_saved: \"Campagne sauvegardée\",\n form_cmp_name: \"Nom de la campagne\",\n form_cmp_name_missing: \"Un nom des obligatoire\",\n form_cmp_desc: \"Description de la campagne\",\n form_cmp_desc_missing: \"Une description est obligatoire\",\n form_cmp_resp: \"Nom de la personne de contact pour les bénévoles\",\n form_cmp_resp_missing: \"Entrer le nom de la personne de contact\",\n form_cmp_mail: \"Email du responsable\",\n form_cmp_mail_missing: \"Un e-mail est obligatoire\",\n profile: \"Profil\",\n register: \"S'inscrire\",\n update: \"Valider les modifications\",\n createdAt: \"Inscription faite le\",\n registration_confirm_delete:\n \"Êtes-vous sûr de vouloir supprimer votre inscription ?\",\n reg_table_createdAt: \"Date inscription\",\n reg_table_modifiedAt: \"Dernière modification\",\n vol_prof_listing_campaign: \"Inscriptions aux campagnes\",\n profile_editing: \"Modifier\",\n cmp_reg_confirm_delete:\n \"Êtes-vous sûr de vouloir supprimer l'inscription sélectionnée ? Ceci ne supprimera pas le bénévole.\",\n cmp_regs_confirm_delete:\n \"Êtes-vous sûr de vouloir supprimer les {nbr} inscriptions sélectionnées ? Ceci ne supprimera pas les bénévoles.\",\n reg_modifed: \"Inscription modifiée\",\n mail_cmp_name: \"Nom de la campagne\",\n event_schedule_enable_copypaste_position:\n \"Activer le copier/coller par mission\",\n event_schedule_enable_copypaste_sector:\n \"Activer le copier/coller par catégorie\",\n default_vol_number:\n \"Nombre de volontaire par défaut dans les nouvelles tranches\",\n ////\n\n //2.5\n slot_deleted: \"Tranche supprimée\",\n slot_updated: \"Tranche mise à jour\",\n vol_switch_ok: \"Changement terminé avec succès\",\n vol_switch_categ: \"Changement de catégorie\",\n\n no_public_event:\n \"Nous ne recherchons aucun héros pour le moment ! Revenez plus tard.\",\n no_public_event_corporate:\n \"Toutes les plages horaires sont actuellement occupées.\",\n no_shift_found:\n \"Nous avons bien cherché mais il n'y a pas de tranches horaires libres correspondant à votre demande.\",\n public_list_event: \"Liste des événements en cours\",\n public_contact: \"Page de contact\",\n\n // EMCC\n address: \"Adresse\",\n town: \"Ville\",\n npa: \"NPA\",\n vol_list_category: \"Catégorie\",\n // Public page\n menu_org_page: \"Ma page publique\",\n cfg_org_public_page: \"Page publique de votre organisation\",\n cfg_show_on_public_page: \"Afficher sur ma page publique\",\n cfg_show_on_home_calendar: \"Publier mon évènement sur le calendrier EHRO\",\n\n // MANAGER\n pwd: \"Mot de passe\",\n manager_acces: \"Accès responsable\",\n manager_filter: \"Filtres\",\n manager_affectations: \"Affectations\",\n manager_print_assi: \"Imprimer les affectations\",\n manager_print_repas: \"Imprimer les repas\",\n espace_manager: \"Espace manager\",\n manager_acces_info:\n \"Connectez-vous pour consulter les affectations de vos bénévoles\",\n manager_acces_btn: \"Se connecter\",\n pwd_mandatory: \"Mot de passe obligatoire\",\n manager_error: \"Erreur de connexion, contrôler vos informations\",\n /** ********************** */\n\n // NEW 2.5\n menu_campaign: \"Campagnes\",\n menu_my_campaigns: \"Mes campagnes\",\n field_form_category: \"Catégorie\",\n\n // NEW 2.4\n vol_confirm_delete:\n \"Êtes-vous sûr de vouloir supprimer le volontaire sélectionné ? Ceci supprimera aussi son(ses) affectation(s).\",\n vols_confirm_delete:\n \"Êtes-vous sûr de vouloir supprimer les {nbr} volontaires sélectionnés ? Ceci supprimera aussi leur(s) affectation(s).\",\n vol_delete_ok: \"Suppression terminée avec succès\",\n is_member: \"Est membre de l'association\",\n is_member_explenation:\n \"uniquement modifiable par vous, permet de séparer vos membres des bénévoles externes\",\n send_resume_to_me: \"Recevoir un email de confirmation\",\n\n // NEW 2.3\n menu_history_mail: \"Historique\",\n com_sender: \"Expéditeur\",\n com_nbr_rec: \"Nombre de destinataire\",\n\n // NEW 2.1\n vol_list_import: \"Import\",\n vol_list_export: \"Export\",\n vol_list_export_cross_events: \"Export d’affectations\",\n vol_list_export_cross_events_intro:\n \"Cet export contient toutes les personnes bénévoles qui ont au moins une tranche horaire parmi les jours et les événements sélectionnés, ainsi que les tranches horaires qui leurs sont assigné‧e‧s.\",\n vol_list_export_cross_events_instructions:\n \"Vous devez sélectionner au moins un événement et une date.\",\n vol_list_export_btn: \"Exporter\",\n vol_list_tools: \"Outils\",\n vol_actions_text: \"Sélectionner des volontaires pour activer les actions\",\n vol_fusion_btn: \"Fusionner\",\n vol_fusion_title: \"Fusionner les volontaires\",\n vol_fusion_ok: \"Fusion terminée avec succès\",\n vol_list_filters: \"Filtres\",\n vol_edit_participation_to_all:\n \"Appliquer à toutes les inscriptions de ce volontaire pour cet événement ?\",\n vol_list_refresh: \"Actualiser\",\n vol_list_display_no_part: \"Aucune inscription\",\n vol_list_filter_date: \"Années\",\n vol_list_minimum_filter: \"Minimum 1\",\n vol_send_email: \"Envoi d'email\",\n vol_list_invert: \"Inverser les filtres (voir vidéo dans documentation)\",\n vol_list_andlogic:\n \"Logique du ET au lieu du OU (voir vidéo dans documentation)\",\n vol_list_all: \"Tout sélectionner\",\n vol_list_deselect: \"Désélectionner\",\n\n // NEW 2.2\n custom_field_form: \"Champs personnalisé\",\n field_form_title: \"Titre du champs\",\n field_form_mendatory_title: \"Titre obligatoire\",\n field_form_type: \"Type du champs\",\n field_form_list: \"Valeurs possibles\",\n field_form_mendatory_list: \"Obligatoire\",\n field_form_list_info: \"Séparer les valeurs par ;\",\n field_type_txt: \"Champs de texte\",\n field_type_yesno: \"Oui / Non\",\n field_type_list: \"Liste déroulante\",\n field_form_mandatory: \"Rendre obligatoire\",\n field_form_grouped: \"Réponse groupée\",\n field_form_grouped_info:\n \"Dans le cas d'une inscription de groupe, une seule réponse est requise pour l'entier du groupe\",\n field_form_select_value: \"Sélectionnez une option\",\n yes: \"Oui\",\n no: \"Non\",\n\n // DOWN\n down_title: \"Maintenance\",\n down_subtitle: \"Mise à jour en cours\",\n down_text:\n \"Merci de revenir plus tard, nous travaillons actuellement sur le site\",\n\n // 404\n http404_subtitle: \"Oops! Vous êtes perdu.\",\n http404_text: \"La page que vous avez demandée n'existe pas.\",\n\n // GENERAL\n loading: \"Chargement ...\",\n prev: \"Précédent\",\n next: \"Suivant\",\n delete: \"Supprimer\",\n deleted: \"supprimé\",\n cancel: \"Annuler\",\n erease: \"Effacer\",\n valid: \"Valider\",\n save: \"Sauver\",\n error: \"Erreur\",\n success: \"Succès\",\n close: \"Fermer\",\n confirm: \"Confirmer\",\n send: \"Envoyer\",\n msg_enter_number: \"Entrer un nombre\",\n add: \"Ajouter\",\n edit: \"Editer\",\n\n // EVENT OBJECT\n organization: \"Organisateur | Organisateurs\",\n event: \"Événement | Événement | Événements\",\n sector: \"Secteur | Secteurs\",\n category: \"Catégorie | Catégories\",\n mission: \"Mission | Missions\",\n choose_event: \"Choisir un événement\",\n no_event: \"Aucun événement trouvé\",\n\n // PEOPLE\n firstName: \"Prénom\",\n lastName: \"Nom\",\n email: \"Email\",\n password: \"Mot de passe\",\n\n // MANAGER\n manager_confirm_delete: \"Êtes-vous sûr de vouloir supprimer le manager ?\",\n\n // NO EVENT SCREEN\n no_event_txt: \"Créer un événement pour accéder aux outils\",\n\n // NO ORGANIZATION\n no_session:\n \"Votre session a expiré. Veuillez vous déconnecter depuis le menu utilisateur en haut à droite et vous reconnecter.\",\n\n // DASHBOARD {{ $t('cancel') }}\n dashboard: \"Tableau de bord\",\n dashboard_welcome: \"Bienvenue sur EHRO 2.0\",\n dashboard_slot: \"Tranche | Tranches\",\n dashboard_vol: \"Bénévole | Bénévoles\",\n dashboard_hour: \"Heure | Heures\",\n last_registrations: \"Dernières inscriptions\",\n progress_infos: \"Tous les événements en cours confondus\",\n progress_title: 'Plages horaires complètes sur les événements \"EN COURS\"',\n dashboard_presentation: \"Présentation vidéo de EHRO 2.0\",\n\n // MESSAGE\n msg_day_copy_successfully: \"Jour correctement copié\",\n msg_delete_successfully: \"{obj} correctement supprimé\",\n msg_edit_successfully: \"{obj} correctement modifié\",\n msg_edit_fail: \"Erreur lors de la modification\",\n msg_moving_successfully: \"{obj} correctement déplacé\",\n msg_register_success: \"Inscription enregistrée !\",\n msg_register_success_detail: \"Inscription enregistrée pour {name} !\",\n msg_register_fail: \"Erreur lors de l'inscription\",\n msg_mail_success: \"{nbr} mails envoyés\",\n msg_mail_fail: \"Echec de l'envoi\",\n\n // TABLE COLUMN TITLE\n date: \"Date | Dates\",\n name: \"Nom\",\n description: \"Description\",\n required_vol: \"Bénévoles requis\",\n classification: \"Classification\",\n status: \"Statut\",\n action: \"Action\",\n actions: \"Actions\",\n\n // EVENT STATUS\n status_draft: \"Brouillon | Brouillons\",\n status_published: \"Publié | Publiés\",\n status_publishing: \"Publier\",\n status_archive: \"Archive | Archives\",\n status_archiving: \"Archiver\",\n status_change_to_draft: \"Événement en mode brouillon\",\n status_change_to_published: \"Événement publié\",\n status_change_to_archive: \"Événement archivé\",\n\n // USER\n profil: \"Profil\",\n settings: \"Paramètres\",\n logout: \"Se déconnecter\",\n paiement: \"Paiement | Paiements\",\n options: \"Options\",\n profil_account: \"Infos du compte\",\n profil_org_title: \"Nom de l'organisateur\",\n profil_update_success: \"Profil correctement mis à jour\",\n error_try_again: \"Erreur, veuillez réessayer\",\n profil_reset_password_button: \"Réinitialiser\",\n profil_reset_password_title: \"Réinitialiser le mot de passe\",\n profil_reset_password_info:\n \"Réinitialisation de mot de passe : contrôlez vos emails\",\n profil_reset_password_text:\n \"Un mail sera envoyé à {email} avec un lien sécurisé permettant la modification du mot de passe.\",\n profil_change_logo: \"Changer le logo\",\n\n // VOLUNTEER\n volunteer: \"Volontaire | Volontaire | Volontaires\",\n\n // VOLUNTEER PROFILE\n vol_prof_title: \"Profil : {name}\",\n vol_prof_filter: \"Filtre\",\n vol_prof_id: \"ID\",\n vol_prof_create: \"Créé le\",\n vol_prof_filter_event_for: \"Pour\",\n vol_prof_filter_all_event: \"Tous les événements confondus\",\n vol_prof_comment: \"Commentaire\",\n vol_prof_listing: \"Listing des affectations\",\n vol_prof_listing_filter: \"Uniquement pour l'événement : {event}\",\n vol_prof_print_plan: \"Imprimer le plan de {name} pour {event}\",\n vol_prof_slots: \"tranche | tranches\",\n vol_prof_hours: \"heure | heures\",\n\n // VOLUNTEER REGISTRATION FORM\n reg_form_new: \"Nouvelle inscription\",\n reg_form_existing: \"Bénévole existant\",\n reg_form_email: \"Email\",\n reg_form_born: \"Date de naissance\",\n reg_form_tel: \"Tél.\",\n reg_form_tel_desc: \"Votre numéro ne sera connu que de l'organisateur\",\n reg_form_patisserie: \"Patisserie\",\n reg_form_patisserie_info:\n \"Si vous souhaitez apporter une patisserie pour nos ventes :-)\",\n reg_form_tshirt: \"Taille du t-shirt\",\n reg_form_tshirt_info: \"Merci de choisir une taille (unisexe)\",\n reg_form_reference: \"Membre de référence\",\n reg_form_reference_info:\n \"Si vous représentez un membre de notre société, merci d'indiquer son nom\",\n reg_form_edit_title: \"Modification\",\n reg_form_edit_text:\n \"Uniquement les questions spécifiques à cette inscription sont modifiable\",\n reg_form_delete_title: \"Supprimer : {name}\",\n reg_form_delete_text: \"Êtes-vous sûr de vouloir effacer l'inscription ?\",\n customfield_form_delete_text: \"Êtes-vous sûr de vouloir effacer le champs ?\",\n reg_form_confirm_email: \"Confirmation email\",\n reg_form_mendatory_firstname: \"Un prénom est obligatoire\",\n reg_form_mendatory_lastname: \"Un nom est obligatoire\",\n reg_form_mendatory_email: \"Un email valide est obligatoire\",\n reg_form_mendatory_email_confirm: \"Doit être identique à l'adresse indiquée\",\n reg_form_mendatory_phone: \"Un numéro valide est obligatoire\",\n reg_form_mendatory_address: \"Une adresse est obligatoire\",\n reg_form_mendatory_town: \"Merci d'indiquer la ville\",\n reg_form_mendatory_npa: \"Obligatoire\",\n reg_form_policy_accept: \"J'accepte la\",\n reg_form_policy_title: \"politique de confidentialité\",\n reg_form_existing_info:\n \"Cliquer sur un bénévole pour le sélectioner. Sélection multiple possible.\",\n\n // LISTING DES VOLONTAIRES\n vol_list_nbr: \"Nombre de résultats\",\n vol_list_xls: \"Télécharger en format EXCEL\",\n vol_list_name: \"Nom\",\n vol_list_email: \"Email\",\n vol_list_phone: \"Tél.\",\n vol_list_born: \"Date de naissance\",\n vol_list_patisserie: \"Patisserie\",\n vol_list_tshirt: \"T-Shirt\",\n\n // VOL SCHEDULING\n vol_schedule_active: \"Activer le formulaire d'inscription au clic\",\n event_schedule_reduce: \"Réduire toutes les missions par défaut\",\n event_schedule_save_title: \"Désactiver la sauvegarde automatique\",\n event_schedule_save_info: '! Ne pas oublier de cliquer sur \"Valider\" !',\n\n // GESTION DES INSCRIPTIONS\n registration: \"Inscription | Inscriptions\",\n reg_management: \"Gestion des inscriptions\",\n reg_status: \"Etat des inscriptions\",\n reg_planning: \"Planning\",\n reg_full: \"Planning complet\",\n reg_listing: \"Listing\",\n reg_listing_title: \"Listing des volontaires\",\n reg_resume: \"Résumé\",\n reg_resume_title: \"Résumé global\",\n reg_communication: \"Communication\",\n reg_list_patisserie: \"Listing des patisseries\",\n reg_list_ref_member: \"Membres de référence\",\n reg_search: \"Recherche\",\n reg_table_detail: \"Détail\",\n reg_table_slots: \"Tranches\",\n reg_table_hour: \"Heures\",\n reg_table_email: \"Email\",\n\n // MENUS\n create_event: \"Créer un événement\",\n menu_draft: \"Brouillons\",\n menu_draft_subtitle: \"Evénement brouillon | Evénements brouillons\",\n menu_current: \"En cours\",\n menu_event: \"Mes événements\",\n menu_archive: \"Mes archives\",\n menu_communication: \"Communication\",\n menu_send_mail: \"Envoi d'emails\",\n menu_printing: \"Impression | Impressions\",\n menu_planning: \"Planning\",\n menu_planning_per_volunteer: \"Plannings individuel\",\n menu_bon: \"Bons\",\n menu_order_tshirt: \"Commande t-shirts\",\n menu_info: \"Infos\",\n menu_contact: \"Contact\",\n menu_documentation: \"Documentation\",\n menu_integrations: \"Intégrations\",\n\n menu_bugs: \"Bugs connus\",\n menu_features: \"Nouveautés\",\n menu_volunteer: \"Bénévole\",\n menu_my_volunteers: \"Mes bénévoles\",\n menu_my_categories: \"Mes catégories\",\n menu_public_site: \"Site publique\",\n menu_manager_site: \"Site pour manager\",\n menu_participations_export: \"Export d’affectations\",\n menu_participations_overview: \"Vue d’ensemble\",\n menu_volunteers_import: \"Importation\",\n\n // EDIT EVENT\n edit_event: \"Modification d'un événement\",\n new_event: \"Nouvel événement\",\n edit_tab_general: \"Général\",\n edit_tab_category: \"Missions\",\n edit_tab_scheduler: \"Planification\",\n edit_tab_config: \"Configuration\",\n edit_tab_pro: \"Validation des inscriptions\",\n edit_tab_restriction: \"Règles de restriction\",\n edit_tab_actions: \"Actions\",\n edit_tab_communication: \"E-mail de confirmation\",\n edit_tab_checkup: \"Contrôles\",\n msg_event_created: \"Événement créé\",\n msg_event_saved: \"Événement sauvegardé\",\n event_confirm_delete: \"Êtes-vous sûr de vouloir supprimer l'événement ?\",\n\n // EDIT EVENT : GENERAL\n form_event_name: \"Nom de l'événement\",\n form_event_name_missing: \"Un nom est obligatoire\",\n form_event_desc: \"Description\",\n form_event_teaser: \"Texte d'intro\",\n form_event_desc_missing: \"Une description est obligatoire\",\n form_event_teaser_len: \"Maximum 1500 caractères\",\n form_event_resp: \"Nom de la personne de contact pour les bénévoles\",\n form_event_resp_missing: \"Entrer le nom de la personne de contact\",\n form_event_mail: \"Email du responsable\",\n form_event_mail_missing: \"Un e-mail est obligatoire\",\n form_event_mail_error: \"Entrez une adresse e-mail valide\",\n form_event_date: \"Dates\",\n form_event_date_missing: \"Au moins une date est requise\",\n participations_rankings: \"Classements de bénévoles\",\n form_event_website: \"Site web\",\n form_event_website_missing:\n \"Doit commencer avec http:// (exemple http://www.ehro.app ou http://ehro.app)\",\n form_event_images: \"Photo (max 10, JPG/JPEG, < 10Mb)\",\n error_image_format: \"Uniquement le format JPG/JPEG autorisé\",\n error_image_size: \"Fichier trop volumineux\",\n error_images_number: \"Maximum 10 images\",\n\n // DATEPICKER\n january: \"Janvier\",\n february: \"Février\",\n march: \"Mars\",\n april: \"Avril\",\n may: \"Mai\",\n june: \"Juin\",\n july: \"Juillet\",\n august: \"Août\",\n september: \"Septembre\",\n october: \"Octobre\",\n november: \"Novembre\",\n december: \"Décembre\",\n\n // EDIT EVENT : CATEGORY\n no_category: \"Divers (sans catégorie)\",\n add_sector: \"Entrer une catégorie\",\n add_position: \"Entrer une mission\",\n add_title: \"Entrer un titre\",\n msg_warning_delete_slot:\n \"Attention cette catégorie contient des tranches horaires... Tout sera supprimé.\",\n\n // EDIT EVENT : SCHEDULER\n copy: \"Copier\",\n copy_all_slots: \"Copier toutes les tranches horaire du jour\",\n paste: \"Coller\",\n zoom: \"Zoom\",\n\n // EDIT SLOT\n slot_nbr_volunteer: \"# de volontaires\",\n slot_desc: \"Description\",\n\n // EDIT CREATE SLOT\n slot_nbr_vol: \"Nombre de volontaires\",\n slot_duration: \"Durée (en heure)\",\n create: \"Créer\",\n update: \"Modifier\",\n\n // EDIT EVENT : SET UP TIMELINE\n hours_for_day: \"Plage horaire pour le\",\n start_hour: \"Heure de début\",\n end_hour: \"Heure de fin\",\n\n // EDIT EVENT : CONFIGURATION\n upload_logo: \"Charger un logo\",\n modify_logo: \"Changer le logo\",\n cfg_public: \"Configuration de la page publique\",\n cfg_event: \"Configuration de l'événement\",\n cfg_display_volunteer_name: \"Affichage du nom des volontaires\",\n cfg_close_position_by_default: \"Réduire toutes les missions par défaut\",\n cfg_send_me_copy: \"M'envoyer une copie par email de chaque inscription\",\n cfg_force_confirm_email: \"Forcer l'envoi d'un email de confirmation\",\n cfg_form: \"Configuration du formulaire\",\n cfg_mail_mandatory: \"Email obligatoire\",\n cfg_ask_for_phone: \"Demander un numéro de téléphone\",\n cfg_phone_mandatory: \"Téléphone obligatoire\",\n cfg_ask_for_t_shirt: \"Demander une taille de t-shirt\",\n cfg_ask_for_t_shirt_info:\n \"Si vous activez les inscriptions de groupe, utilisez un champs libre\",\n cfg_shirt_size_mandatory: \"Taille obligatoire\",\n cfg_ask_for_ref_member: \"Demander un nom de membre de référence\",\n cfg_ask_for_patisserie: \"Demander une patisserie\",\n cfg_confirm_mail: \"Configuration de l'email de confirmation\",\n cfg_ask_for_born_date: \"Demander une date de naissance\",\n cfg_ask_for_address: \"Demander l'adresse postale\",\n cfg_address_mandatory: \"Adresse obligatoire\",\n cfg_free_field_title: \"Entrer le titre du champs\",\n cfg_ask_for_free_field_1: \"Ajouter un champs libre\",\n cfg_ask_for_free_field_2: \"Ajouter un second champs libre\",\n add_option: \"Ajouter une option\",\n cfg_special: \"Configurations spéciales\",\n cfg_display_as_calendar: \"Affichage sous forme de calendrier\",\n cfg_allow_shift_creation_by_volunteer:\n \"Autoriser la création de tranches par les volontaires\",\n\n // EDIT EVENT : ACTIONS\n public_page: \"Page publique de l'événement\",\n test: \"Tests\",\n mail_sending: \"Envoi d'emails\",\n mail_send_to_test: \"Envoyer un mail de test à l'adresse de l'événement\",\n print_planning: \"Imprimer les plannings\",\n print_t_shirts: \"Imprimer la liste des tailles des t-shirt\",\n print_patisserie: \"Imprimer la liste des patisseries\",\n print_bons: \"Imprimer les bons\",\n msg_mail_ok: \"Mail envoyé avec succès à\",\n msg_copy_link_ok: \"Le lien a été copié avec succès\",\n msg_copy_link_error: \"Oops, un problème est survenu\",\n others: \"Autres\",\n report_group: \"Rapport de travail / groupe\",\n report_member: \"Rapport de travail / membre\",\n clean_registrations: \"Effacer tous les volontaires\",\n\n // ARCHIVE EVENT\n event_archive: \"Événement archivé | Événements archivés\",\n path_cloning: \"Cloning\",\n event_copy: \"Clonage d'un événement\",\n event_copy_prefix: \"[CLONE]\",\n event_copy_old_dates: \"Anciennes dates\",\n event_copy_new_dates: \"Nouvelles dates\",\n event_copy_button: \"Cloner\",\n msg_event_copied: \"Événement cloné\",\n\n // MAIL\n mail_edit: \"Modification\",\n mail_preview: \"Prévisualisation de l'email\",\n mail_text: \"Texte\",\n mail_tags: \"Liste des tags\",\n mail_vol_name: \"Nom complet du volontaire\",\n mail_vol_first_name: \"Prénom du volontaire\",\n mail_event_name: \"Nom de l'événement\",\n mail_resp_name: \"Nom du responsable de l'événement\",\n mail_resp_mail: \"Email du responsable de l'événement\",\n mail_dates: \"Dates de l'événement\",\n mail_fields:\n \"Résumé des inscriptions, avec les champs du formulaire d’inscription\",\n mail_resume:\n \"Résumé de/des inscriptions du volontaire (texte automatiquement adapté si plusieurs inscriptions\",\n mail_bold: \"pour la mise en gras\",\n mail_italic: \"pour la mise en italique\",\n mail_link: \"pour créer un lien\",\n mail_links: \"pour un lien cliquable avec un titre\",\n mail_formatting: \"Mise en forme\",\n mail_target_category: \"Cibler une catégorie\",\n mail_target_position: \"Cibler un poste\",\n mail_target_everyone: \"Tout le monde\",\n mail_msg_are_you_sure:\n \"Êtes-vous certain d'envoyer le mail à tous les bénévoles ?\",\n mail_choose_template: \"Choix du modèle de mail\",\n mail_template_neutral: \"Neutre\",\n mail_template_reminder: \"Rappel\",\n mail_template_thanks: \"Remerciements\",\n mail_send_me_sample: \"M'envoyer un exemple\",\n mail_send_to_volunteers: \"Envoyer à tous les volontaires\",\n mail_confirm_title: \"Confirmation d'envoi\",\n mail_formatting: \"Mise en forme\",\n text: \"texte\",\n title: \"Titre\",\n\n // PDF\n pdf_title_plan: \"Planning des bénévoles\",\n pdf_filename_plan: \"Planning-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n pdf_title_tshirt: \"Liste t-shirts\",\n pdf_filename_tshirt: \"TShirts-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n pdf_title_patisserie: \"Liste des patisseries\",\n pdf_filename_patisserie: \"Patisseries-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n pdf_filename_bon: \"Bons-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n pdf_filename_bon_custom: \"Bons-Perso-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n pdf_filename_bon_all: \"Bons-AllInclusive-{name}.pdf\", // PDF FILE NAME : NO SPACE - NO ACCENT\n\n // PRINTING PLANNING\n print_config: \"Configurer les détails de l'impression\",\n print_dates: \"Choix des dates\",\n print_sector_position: \"Afficher la description des catégories et postes\",\n print_slot: \"Afficher la description des tranches horaires\",\n print_other_fileds: \"Autres champs\",\n print_display_mail: \"Afficher l'adresse mail\",\n print_display_phone: \"Afficher le numéro de téléphone\",\n print_display_tshirt: \"Afficher la taille du T-Shirt\",\n print_display_patisserie: \"Afficher la patisserie\",\n print_generate_pdf: \"Générer le PDF\",\n print_zip_file:\n \"Télécharge 1 fichier PDF / bénévoles soit un total de {nbr} fichiers\",\n\n // PRINTING BONS\n print_custom: \"Personnalisés\",\n print_all_inclusive: \"All inclusive\",\n print_price: \"Tarif horaire\",\n print_round: \"Arrondi\",\n print_hour: \"A l'heure\",\n print_half_hour: \"A la 1/2 heure\",\n print_no_rounded: \"Pas d'arrondi\",\n print_number_hours: \"Nombre d'heures\",\n print_name_per_line: \"Entrer un nom par ligne\",\n\n // PRINTING T-SHIRT\n t_shirt_not_activated:\n \"L'option des t-shirts n'a pas été activé pour cet événement.\",\n listing_t_shirt: \"Listing des t-shirts\",\n\n // PRINTING PLANNING PERSO\n print_perso_title: \"Planning d'engagement\",\n print_perso_subtitle: \"Événement : {name}\",\n print_perso_info: \"Informations\",\n print_perso_resume: \"Résumé\",\n print_perso_resume_time: \"Vous travaillez un total de {nbr} heures\",\n print_perso_resume_slots: \"Réparti sur {nbr} tranches horaires\",\n print_perso_affectations: \"Affectations - {date}\",\n print_perso_profil: \"Profil : {name}\",\n\n // CONTACT\n contact_subtitle: \"Questions / remarques / bugs\",\n contact_info: \"N'hésitez pas à contacter l'équipe de ehro\",\n contact_send_mail: \"Envoyer un mail\",\n\n // ERROR\n error_no_volunteer_required:\n \"Votre événement ne contient aucune tranche horaire ou ne nécessite aucun volontaire\",\n error_create_slot_over_range:\n \"Impossible de dépasser +10:00, veuillez créer un nouveau jour\",\n error_move_range_over_slot:\n \"Impossible de modifier la plage horaire du jour car des tranches ne seront plus visibles\",\n error_sending_mail: \"Echéc de l'envoi à\",\n error_default_msg: \"Une erreur est survenue\",\n\n // REGISTER FORM\n send_resume_to_volunteer: \"Envoyer l'email de confirmation au volontaire\",\n};\n\nexport default fr;\n","import i18n from '@/i18n';\nimport Vue from 'vue';\nimport { PermissionLib } from './services/PermissionLib';\n\nexport function v4Url(url: string): string {\n return process.env.VUE_APP_BASE_API_URL + url;\n}\n\nexport function v4PublicUrl(url: string): string {\n const trimmedPublicSite = (process.env.VUE_APP_PUBLIC_SITE || '').replace(/\\/+$/, '');\n return trimmedPublicSite + url;\n}\n\nexport function v4VolunteerUrl(volunteerId: number): string {\n return v4Url(`/volunteers/${volunteerId}/`);\n}\n\nexport function v4404rUrl(): string {\n return v4Url(`/404/`);\n}\n\nexport class Nav {\n public static items(permissionLib: PermissionLib): any[] {\n\n const items = [];\n\n\n // Dashboard\n items.push(\n {\n name: i18n.t('dashboard'),\n url: '/dashboard',\n icon: 'icon-speedometer',\n },\n );\n // Events\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.tc('event', 2),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('create_event'),\n url: '/events/new',\n icon: 'icon-plus',\n },\n {\n name: i18n.t('menu_event'),\n url: '/events/list',\n icon: 'cui-sun',\n },\n {\n name: i18n.t('menu_archive'),\n url: '/events/archive',\n icon: 'cui-moon',\n },\n );\n\n if (permissionLib.isCorporate || permissionLib.isPro) {\n items.push({\n name: i18n.t('calendar'),\n url: '/events/calendar',\n icon: 'icon-calendar',\n });\n }\n\n items.push({\n name: i18n.tc('tag', 2),\n url: v4Url('/tags/'),\n icon: 'icon-tag',\n });\n\n // Campaigns\n if (permissionLib.enableCampaigns) {\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_campaign'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_my_campaigns'),\n url: '/campaigns',\n icon: 'icon-rocket',\n },\n );\n }\n\n // Volunteers\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_volunteer'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_my_volunteers'),\n url: v4Url('/volunteers/'),\n icon: 'icon-people',\n },\n {\n name: i18n.t('menu_my_categories'),\n url: v4Url('/categories/'),\n icon: 'icon-eyeglass',\n },\n {\n name: i18n.t('menu_volunteers_import'),\n url: v4Url('/volunteers/import/'),\n icon: 'icon-cloud-upload',\n },\n );\n\n\n items.push(\n {\n name: 'Managers',\n url: '/manager/list',\n icon: 'icon-user',\n },\n );\n\n\n // Affectations\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_affectation'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n );\n\n if (permissionLib.enableParticipationsValidation || permissionLib.isPro || permissionLib.isCorporate) {\n items.push(\n {\n name: i18n.t('menu_validations'),\n url: v4Url('/participations/validate/'),\n icon: 'icon-check',\n badge: { 'variant': 'danger', 'text': permissionLib.currentOrganization.nbPendingValidations },\n }\n );\n }\n\n items.push(\n {\n name: i18n.t('menu_participations_export'),\n url: v4Url('/participations/export/'),\n icon: 'icon-cloud-download',\n },\n );\n\n items.push(\n {\n name: i18n.t('menu_participations_overview'),\n url: v4Url('/overview/participations/'),\n icon: 'icon-pie-chart',\n },\n );\n\n if (permissionLib.enableShop || permissionLib.enableVouchers) {\n // Communication\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_shop'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n }\n );\n if (permissionLib.enableShop) {\n items.push(\n {\n name: i18n.t('menu_shop_config'),\n url: '/shop/config',\n icon: 'icon-speech',\n },\n );\n items.push(\n {\n name: i18n.t('menu_shop_product'),\n url: v4Url('/shop/products/'),\n icon: 'icon-basket',\n },\n );\n }\n\n if (permissionLib.enableVouchers) {\n items.push(\n {\n name: i18n.t('menu_voucher_list'),\n url: v4Url('/vouchers/'),\n icon: 'icon-present',\n },\n {\n name: i18n.t('menu_voucher_import'),\n url: v4Url('/vouchers/import/'),\n icon: 'icon-cloud-upload',\n }\n );\n }\n }\n\n // Communication\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_communication'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_com_model'),\n url: v4Url('/communications/templates/'),\n icon: 'icon-docs',\n },\n {\n name: i18n.t('menu_send_mail'),\n url: v4Url('/communications/send/'),\n icon: 'icon-speech',\n },\n {\n name: i18n.t('menu_history_mail'),\n url: v4Url('/communications/'),\n icon: 'icon-notebook',\n },\n );\n\n if (permissionLib.enableBadges) {\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_badge'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_com_model'),\n url: v4Url('/badges/templates/'),\n icon: 'icon-docs',\n },\n );\n }\n\n if (permissionLib.enableWeezevent) {\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_integrations'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: 'Weezevent',\n url: v4Url('/weezevent/'),\n icon: 'icon-puzzle',\n },\n );\n }\n\n\n // Printing\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.tc('menu_printing', 2),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_planning'),\n url: '/action/print',\n icon: 'icon-printer',\n },\n );\n if (!permissionLib.isCorporate) {\n items.push(\n {\n name: i18n.t('menu_planning_per_volunteer'),\n url: '/action/print-ppb',\n icon: 'icon-printer',\n },\n {\n name: i18n.t('menu_bon'),\n url: '/action/print-bon',\n icon: 'icon-printer',\n },\n {\n name: i18n.t('menu_order_tshirt'),\n url: '/action/print-tshirt',\n icon: 'icon-printer',\n },\n );\n }\n\n // Info\n items.push(\n {\n divider: true,\n },\n {\n title: true,\n name: i18n.t('menu_info'),\n class: '',\n wrapper: {\n element: '',\n attributes: {},\n },\n },\n {\n name: i18n.t('menu_contact'),\n url: '/infos/contact',\n icon: 'icon-speech',\n },\n {\n name: i18n.t('menu_documentation'),\n url: '/infos/doc',\n icon: 'icon-layers',\n },\n {\n name: i18n.t('menu_features'),\n url: '/infos/whatsnew',\n icon: 'icon-like',\n },\n {\n name: i18n.t('menu_vlog'),\n url: '/infos/vlog',\n icon: 'icon-camera',\n },\n {\n name: i18n.t('menu_soon'),\n url: '/infos/soon',\n icon: 'icon-like',\n },\n );\n return items;\n }\n}\n","import { AxiosRequestConfig } from 'axios';\nimport { AuthenticationService } from '@/services';\nimport Vue from 'vue';\n\nexport const AUTHENTICATION_USE_INTERCEPTOR = (config: AxiosRequestConfig): AxiosRequestConfig => {\n const newAuthUser = AuthenticationService.instance.authenticatedUser;\n\n if (newAuthUser !== null) {\n const csrfToken = Vue.$cookies.get('_csrftoken');\n\n if (csrfToken !== null) {\n config.headers['X-CSRFToken'] = csrfToken;\n\n // The CSRF token is stored in a cookie so we need CSRF-protected requests\n // to be sent with cookies so the server can compare them\n config.withCredentials = true;\n }\n }\n\n return config;\n};\n\nexport const AUTHENTICATION_REJECT_INTERCEPTOR = (error: any): any => Promise.reject(error);\n","import axios, { AxiosInstance } from 'axios';\nimport { AUTHENTICATION_REJECT_INTERCEPTOR, AUTHENTICATION_USE_INTERCEPTOR } from '@/interceptors';\nimport router from '@/router';\nimport { AuthenticationService } from '@/services';\n\nexport class OrganizerAPI {\n\n private static internal: AxiosInstance;\n private static isoDateRegex = new RegExp(\n '^(\\\\d{4})[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$',\n );\n private static isoDateTimeRegex = new RegExp(\n '^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T' +\n '(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z|\\\\+\\\\d{2}:\\\\d{2})?$',\n );\n\n private static isoDurationRegex = new RegExp(\n '^(-?)P(?=\\\\d|T\\\\d)(?:(\\\\d+)Y)?(?:(\\\\d+)M)?(?:(\\\\d+)([DW]))?' +\n '(?:T(?:(\\\\d+)H)?(?:(\\\\d+)M)?(?:(\\\\d+(?:\\\\.\\\\d+)?)S)?)?$',\n );\n\n public static get instance(): AxiosInstance {\n if (!OrganizerAPI.internal) {\n OrganizerAPI.internal = axios.create({\n baseURL: process.env.VUE_APP_ORGANIZER_API_URL,\n transformResponse: (data?: any, headers?: any): any => {\n if (data !== undefined && data !== null && data !== '') {\n return JSON.parse(data, (key: any, value: any): any => {\n if (typeof value === 'string') {\n const dateTimeMatches = OrganizerAPI.isoDateTimeRegex.exec(value as string);\n if (dateTimeMatches !== null) {\n return new Date(value);\n }\n const dateMatches = OrganizerAPI.isoDateRegex.exec(value as string);\n if (dateMatches !== null) {\n return new Date(value);\n }\n const durationMatches = OrganizerAPI.isoDurationRegex.exec(value as string);\n if (durationMatches !== null) {\n // Only handle hour minutes and seconds\n return parseInt(durationMatches[4], 10) * 24 * 60 * 60 +\n parseInt(durationMatches[6], 10) * 60 * 60 +\n parseInt(durationMatches[7], 10) * 60 +\n parseInt(durationMatches[8], 10);\n }\n }\n return value;\n });\n } else {\n return {};\n }\n },\n });\n }\n OrganizerAPI.internal.interceptors.request.use(\n AUTHENTICATION_USE_INTERCEPTOR,\n AUTHENTICATION_REJECT_INTERCEPTOR,\n );\n // Add a response interceptor\n OrganizerAPI.internal.interceptors.response.use((response) => {\n // Do something with response data\n return response;\n }, (error) => {\n if (error.response && (error.response.status === 403 || error.response.status === 401)) {\n AuthenticationService.instance.cleanCookies();\n router.push({ name: 'public-login' });\n }\n // Do something with response error\n return Promise.reject(error);\n });\n return OrganizerAPI.internal;\n }\n\n}\n","import axios, { AxiosInstance } from 'axios';\nimport { AUTHENTICATION_USE_INTERCEPTOR, AUTHENTICATION_REJECT_INTERCEPTOR} from '@/interceptors';\n\nexport class AuthenticationAPI {\n\n private static internal: AxiosInstance;\n\n public static get instance(): AxiosInstance {\n if (!AuthenticationAPI.internal) {\n AuthenticationAPI.internal = axios.create({\n baseURL: process.env.VUE_APP_AUTHENTICATION_API_URL,\n });\n }\n AuthenticationAPI.internal.interceptors.request.use(\n AUTHENTICATION_USE_INTERCEPTOR,\n AUTHENTICATION_REJECT_INTERCEPTOR,\n );\n return AuthenticationAPI.internal;\n }\n\n}\n\n","import axios, { AxiosInstance } from 'axios';\nimport { AUTHENTICATION_USE_INTERCEPTOR, AUTHENTICATION_REJECT_INTERCEPTOR } from '@/interceptors';\n\nexport class AccountAPI {\n\n private static internal: AxiosInstance;\n\n public static get instance(): AxiosInstance {\n if (!AccountAPI.internal) {\n AccountAPI.internal = axios.create({\n baseURL: process.env.VUE_APP_ACCOUNT_API_URL,\n });\n }\n AccountAPI.internal.interceptors.request.use(\n AUTHENTICATION_USE_INTERCEPTOR,\n AUTHENTICATION_REJECT_INTERCEPTOR,\n );\n return AccountAPI.internal;\n }\n\n}\n\n","import axios, { AxiosInstance } from 'axios';\nimport { AUTHENTICATION_REJECT_INTERCEPTOR, AUTHENTICATION_USE_INTERCEPTOR } from '@/interceptors';\nimport router from '@/router';\nimport { AuthenticationService } from '@/services';\n\nexport class ShopAPI {\n\n private static internal: AxiosInstance;\n private static isoDateRegex = new RegExp(\n '^(\\\\d{4})[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$',\n );\n private static isoDateTimeRegex = new RegExp(\n '^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T' +\n '(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]+)?(Z|\\\\+\\\\d{2}:\\\\d{2})?$',\n );\n\n private static isoDurationRegex = new RegExp(\n '^(-?)P(?=\\\\d|T\\\\d)(?:(\\\\d+)Y)?(?:(\\\\d+)M)?(?:(\\\\d+)([DW]))?' +\n '(?:T(?:(\\\\d+)H)?(?:(\\\\d+)M)?(?:(\\\\d+(?:\\\\.\\\\d+)?)S)?)?$',\n );\n\n public static get instance(): AxiosInstance {\n if (!ShopAPI.internal) {\n ShopAPI.internal = axios.create({\n baseURL: process.env.VUE_APP_SHOP_API_URL,\n transformResponse: (data?: any, headers?: any): any => {\n if (data !== undefined && data !== null && data !== '') {\n return JSON.parse(data, (key: any, value: any): any => {\n if (typeof value === 'string') {\n const dateTimeMatches = ShopAPI.isoDateTimeRegex.exec(value as string);\n if (dateTimeMatches !== null) {\n return new Date(value);\n }\n const dateMatches = ShopAPI.isoDateRegex.exec(value as string);\n if (dateMatches !== null) {\n return new Date(value);\n }\n const durationMatches = ShopAPI.isoDurationRegex.exec(value as string);\n if (durationMatches !== null) {\n // Only handle hour minutes and seconds\n return parseInt(durationMatches[4], 10) * 24 * 60 * 60 +\n parseInt(durationMatches[6], 10) * 60 * 60 +\n parseInt(durationMatches[7], 10) * 60 +\n parseInt(durationMatches[8], 10);\n }\n }\n return value;\n });\n } else {\n return {};\n }\n },\n });\n }\n ShopAPI.internal.interceptors.request.use(\n AUTHENTICATION_USE_INTERCEPTOR,\n AUTHENTICATION_REJECT_INTERCEPTOR,\n );\n // Add a response interceptor\n ShopAPI.internal.interceptors.response.use((response) => {\n // Do something with response data\n return response;\n }, (error) => {\n if (error.response && (error.response.status === 403 || error.response.status === 401)) {\n AuthenticationService.instance.cleanCookies();\n router.push({ name: 'public-login' });\n }\n // Do something with response error\n return Promise.reject(error);\n });\n return ShopAPI.internal;\n }\n\n}\n","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport fr from '@/lang/fr.js';\n\nVue.use(VueI18n);\n\nconst i18n = new VueI18n({\n locale: 'fr',\n fallbackLocale: 'fr',\n messages: { fr },\n});\n\nexport default i18n;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app\"},[_c('router-view',{key:_vm.$route.fullPath}),_c('vue-snotify')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { Component, Provide, Vue, Watch } from 'vue-property-decorator';\nimport { AuthenticationService } from '@/services';\nimport { PermissionLib } from './services/PermissionLib';\n\n@Component({})\nexport default class App extends Vue {\n\n @Provide('authenticatedUser') private authenticatedUser = AuthenticationService.instance.authenticatedUser;\n @Provide('permissionLib') private permissionLib = new PermissionLib();\n\n}\n","import mod from \"-!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/thread-loader/dist/cjs.js!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/babel-loader/lib/index.js??clonedRuleSet-41.use[1]!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/thread-loader/dist/cjs.js!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/babel-loader/lib/index.js??clonedRuleSet-41.use[1]!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=cf212dea&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=cf212dea&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../nix/store/4gqm246hzdfzp7056w08y59vnj1ww375-node-dependencies-ehro-admin-4.5.2/lib/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import 'core-js';\nimport 'regenerator-runtime';\nimport Vue from 'vue';\nimport BootstrapVue from 'bootstrap-vue';\nimport BootstrapVueIcons from 'bootstrap-vue';\nimport Vuelidate from 'vuelidate';\nimport VeeValidate from 'vee-validate';\nimport App from './App.vue';\nimport router from './router';\nimport i18n from './i18n';\nimport VueCookies from 'vue-cookies';\nimport Sticky from 'vue-sticky-directive';\nimport excel from 'vue-excel-export';\nimport ICS from 'vue-ics';\nimport VueGtag from 'vue-gtag';\n\nimport 'vue-phone-number-input/dist/vue-phone-number-input.css';\n\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { faSyncAlt } from '@fortawesome/free-solid-svg-icons';\nimport { faEye } from '@fortawesome/free-solid-svg-icons';\nimport { faEyeSlash } from '@fortawesome/free-solid-svg-icons';\nimport { faUserCog } from '@fortawesome/free-solid-svg-icons';\nimport { faShareSquare } from '@fortawesome/free-solid-svg-icons';\nimport { faShoppingCart } from '@fortawesome/free-solid-svg-icons';\nimport { faBagShopping } from '@fortawesome/free-solid-svg-icons';\nimport { faGavel } from '@fortawesome/free-solid-svg-icons';\nimport { faUsers } from '@fortawesome/free-solid-svg-icons';\nimport { faLockOpen } from '@fortawesome/free-solid-svg-icons';\nimport { faLock } from '@fortawesome/free-solid-svg-icons';\nimport { faCheckSquare } from '@fortawesome/free-solid-svg-icons';\nimport { faPencilAlt } from '@fortawesome/free-solid-svg-icons';\nimport { faGripVertical } from '@fortawesome/free-solid-svg-icons';\nimport { faBars } from '@fortawesome/free-solid-svg-icons';\nimport { faRepeat } from '@fortawesome/free-solid-svg-icons';\nimport { faCogs } from '@fortawesome/free-solid-svg-icons';\nimport { faComment } from '@fortawesome/free-solid-svg-icons';\nimport { faCopy } from '@fortawesome/free-solid-svg-icons';\nimport { faPaste } from '@fortawesome/free-solid-svg-icons';\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\nimport { faInfo } from '@fortawesome/free-solid-svg-icons';\nimport { faUser } from '@fortawesome/free-solid-svg-icons';\nimport { faArrowUp } from '@fortawesome/free-solid-svg-icons';\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons';\nimport { faBrain } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText } from '@fortawesome/vue-fontawesome';\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';\nimport { faRocket } from '@fortawesome/free-solid-svg-icons';\nimport { faQrcode } from '@fortawesome/free-solid-svg-icons';\nimport { faAt } from '@fortawesome/free-solid-svg-icons';\nimport { faPlane } from '@fortawesome/free-solid-svg-icons';\nimport { faTrophy } from '@fortawesome/free-solid-svg-icons';\nimport { faCheckDouble } from '@fortawesome/free-solid-svg-icons';\nimport { faTableColumns } from '@fortawesome/free-solid-svg-icons';\nimport { faColumns } from '@fortawesome/free-solid-svg-icons';\nimport { faTriangleExclamation } from '@fortawesome/free-solid-svg-icons';\nimport { faCalendarDays } from '@fortawesome/free-solid-svg-icons';\nimport { faBasketShopping } from '@fortawesome/free-solid-svg-icons';\nimport { faArrowTrendUp } from '@fortawesome/free-solid-svg-icons';\nimport { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport { faPen, faMinus } from '@fortawesome/free-solid-svg-icons';\nimport { faUpDown } from '@fortawesome/free-solid-svg-icons';\nimport CKEditor from '@ckeditor/ckeditor5-vue2';\n\nVue.use(CKEditor);\n\nimport PortalVue from \"portal-vue\";\nimport { Kalendar } from 'kalendar-vue';\nVue.use(PortalVue);\nVue.use(Kalendar);\n\n\nlibrary.add(faPencilAlt, faCogs, faLock, faLockOpen, faUsers, faShareSquare, faUserCog, faComment, faExternalLinkAlt, faPlus, faUpDown);\nlibrary.add(faTrash, faEye, faEyeSlash, faCheckSquare, faPaste, faInfoCircle, faUser, faCopy, faBrain, faShoppingCart, faGripVertical);\nlibrary.add(faArrowUp, faArrowDown, faRocket, faGavel, faQrcode, faAt, faPlane, faTrophy, faCheckDouble, faInfo, faBagShopping, faSyncAlt);\nlibrary.add(faTableColumns, faColumns, faTriangleExclamation, faRepeat, faCalendarDays, faBars, faBasketShopping, faArrowTrendUp, faPen, faMinus);\nVue.component('font-awesome-icon', FontAwesomeIcon);\nVue.use(VueCookies);\nVue.use(BootstrapVue);\nVue.use(BootstrapVueIcons);\nVue.use(Vuelidate);\nVue.use(Sticky);\nVue.use(excel);\nVue.use(ICS, { uidDomain: 'www.ehro.app', prodId: 'ehro.app' });\nVue.use(VeeValidate, {\n // This is the default\n inject: true,\n // Important to name this something other than 'fields'\n fieldsBagName: 'veeFields',\n validity: true,\n});\n\nVue.use(VueGtag, {\n config: { id: 'UA-164123199-1' },\n}, router);\n\n\nimport Snotify from 'vue-snotify';\nimport { SnotifyPosition } from 'vue-snotify';\nimport { SnotifyService } from 'vue-snotify/SnotifyService';\n\nconst options2 = {\n toast: {\n position: SnotifyPosition.leftBottom,\n timeout: 2000,\n },\n};\nVue.use(Snotify, options2);\n\ndeclare module 'vue/types/vue' { export interface Vue { readonly $snotify: SnotifyService; } }\n// declare module 'vue/types/vue' { export interface Vue { readonly $ics: ICS; } }\n\nVue.config.productionTip = false;\n\nnew Vue({\n router,\n i18n,\n render: (h) => h(App),\n}).$mount('#app');\n","export enum CampaignStatus {\n Draft = 'draft',\n Published = 'published',\n Closed = 'closed',\n Archived = 'archived',\n}\n\nexport class CampaignModel {\n\n public static empty() {\n return new CampaignModel();\n }\n\n public id: string | null = null;\n public organization: number | null = null;\n public name: string;\n public description: string;\n public contactName: string;\n public contactEmail: string;\n public logo: string;\n public base64Logo: string;\n public isPublic: boolean;\n public registrationEmailText: string;\n public status: CampaignStatus;\n public nbRegistrations: number;\n public token: string;\n public showOnHomeCalendar: boolean;\n\n public timeZone: string = '';\n\n constructor({\n id = null,\n organization = null,\n token = '',\n name = '',\n description = '',\n contactName = '',\n contactEmail = '',\n logo = '',\n timeZone = 'Europe/Zurich',\n base64Logo = '',\n status = CampaignStatus.Draft,\n nbRegistrations = 0,\n showOnHomeCalendar = false,\n isPublic = false,\n registrationEmailText = 'Hello [[volunteer_name]],\\n\\n\\\nMerci pour votre inscription à [[campaign_name]] !\\n\\n\\\n[[campaign_registration_summary]]\\n\\n\\\nEn cas de questions, vous pouvez vous adresser à [[campaign_coordinator_name]] par email : [[campaign_coordinator_email]].\\n\\n\\\nMerci, sans vous, nous ne pourrions mettre sur pied notre manifestation. :-)\\n\\n',\n }: {\n id?: string | null,\n organization?: number | null,\n token?: string,\n name?: string,\n description?: string,\n contactName?: string,\n contactEmail?: string,\n fields?: any[],\n logo?: string,\n base64Logo?: string,\n status?: CampaignStatus,\n nbRegistrations?: number\n isPublic?: boolean,\n timeZone?: string,\n registrationEmailText?: string,\n showOnHomeCalendar?: boolean,\n } = {}) {\n this.id = id;\n this.organization = organization;\n this.token = token;\n this.name = name;\n this.logo = logo;\n this.base64Logo = base64Logo;\n this.status = status;\n this.nbRegistrations = nbRegistrations;\n this.description = description;\n this.contactName = contactName;\n this.contactEmail = contactEmail;\n this.isPublic = isPublic;\n this.timeZone = timeZone;\n this.showOnHomeCalendar = showOnHomeCalendar;\n this.registrationEmailText = registrationEmailText;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n organization: this.organization,\n token: this.token,\n name: this.name,\n description: this.description,\n contactName: this.contactName,\n contactEmail: this.contactEmail,\n base64Logo: this.base64Logo,\n status: this.status,\n isPublic: this.isPublic,\n registrationEmailText: this.registrationEmailText,\n showOnHomeCalendar: this.showOnHomeCalendar,\n timeZone: this.timeZone,\n };\n }\n}\n","import { DateTime } from 'luxon';\nimport i18n from '@/i18n';\n\nexport class EventDayModel {\n public startsAt: DateTime;\n public endsAt: DateTime;\n\n constructor({\n startsAt = DateTime.fromMillis(0),\n endsAt = DateTime.fromMillis(0),\n }: {\n startsAt?: DateTime,\n endsAt?: DateTime,\n } = {}) {\n this.startsAt = startsAt;\n this.endsAt = endsAt;\n }\n\n public toJSON(): any {\n return {\n startsAt: this.startsAt.toISO(),\n endsAt: this.endsAt.toISO(),\n };\n }\n\n public get date() {\n return this.startsAt.startOf('day').toJSDate();\n }\n\n public dayFormatted() {\n return this.startsAt.toFormat('ccc dd.MM.yyyy', { locale: i18n.locale });\n }\n\n public isoFormatted() {\n return this.startsAt.toISO() ? String(this.startsAt.toISO()) : this.dayFormatted();\n }\n\n public get startOfDayDateOfStarts(): DateTime {\n return this.startsAt.startOf('day');\n }\n public get startOfDayDateOfEnds(): DateTime {\n // cas ou sa se termine à minuit\n if (this.endsAt.hour === 0 && this.endsAt.minute === 0) {\n return this.endsAt.minus({ days: 1 }).startOf('day');\n }\n return this.endsAt.startOf('day');\n }\n\n public startsAtYYYYMMDD() {\n return this.startOfDayDateOfStarts.toFormat('yyyy-LL-dd');\n }\n public endsAtYYYYMMDD() {\n return this.startOfDayDateOfEnds.toFormat('yyyy-LL-dd');\n }\n\n public hasInRange(start: DateTime, end: DateTime) {\n return this.startsAt.toMillis() <= start.toMillis() && this.endsAt.toMillis() >= end.toMillis();\n }\n\n public isInPast(): boolean {\n return this.endsAt.toMillis() < DateTime.now().toMillis();\n }\n}\n","import i18n from '@/i18n';\n\nexport class ConfigurationModel {\n\n public static empty() {\n return new ConfigurationModel();\n }\n\n public displayNameOpts = [\n { text: i18n.t('vol_display_name_nothing'), value: 'nothing' },\n { text: i18n.t('vol_display_name_full'), value: 'full_name' },\n { text: i18n.t('vol_display_name_abbreviated'), value: 'last_name_abbreviated' },\n ];\n\n public fullSlotsDefaultDisplayOpts = [\n { text: i18n.t('display'), value: 'show' },\n { text: i18n.t('hide'), value: 'hide' },\n ];\n\n\n public positionOrderingOpts = [\n { text: i18n.t('prefer_positions_with_slots'), value: 'prefer_positions_with_slots' },\n { text: i18n.t('preserve_order'), value: 'preserve_order' },\n ];\n\n\n\n public volunteerNameDisplay: string;\n public sendMeCopyOfRegistration: boolean;\n public registrationEmailText: string;\n public enableGroupRegistrations: boolean;\n public allowPublicTimeSlotCreation: boolean;\n public enableRegistrations: boolean;\n public showPastSlots: boolean;\n public colorFree: string;\n public colorFull: string;\n public closePositionByDefault: boolean;\n public fullSlotsDefaultDisplay: string;\n public positionOrdering: string;\n\n constructor({\n volunteerNameDisplay = 'nothing',\n positionOrdering = 'prefer_positions_with_slots',\n allowPublicTimeSlotCreation = false,\n enableRegistrations = true,\n showPastSlots = false,\n enableGroupRegistrations = false,\n sendMeCopyOfRegistration = false,\n fullSlotsDefaultDisplay = 'hide',\n closePositionByDefault = false,\n registrationEmailText = 'Hello [[volunteer_name]],\\n\\n\\\nMerci pour votre inscription à [[event_name]] !\\n\\n\\\n[[registration_resume]]\\n\\n\\\nEn cas de questions, vous pouvez vous adresser à [[responsable_name]] par email : [[responsable_email]].\\n\\n\\\nMerci, sans vous, nous ne pourrions mettre sur pied notre manifestation. :-)\\n\\n',\n colorFree = '#4fd68e',\n colorFull = '#d65f4f',\n }: {\n volunteerNameDisplay?: string,\n allowPublicTimeSlotCreation?: boolean,\n enableRegistrations?: boolean,\n showPastSlots?: boolean,\n enableGroupRegistrations?: boolean,\n sendMeCopyOfRegistration?: boolean,\n closePositionByDefault?: boolean,\n registrationEmailText?: string,\n colorFree?: string,\n colorFull?: string,\n fullSlotsDefaultDisplay?: string,\n positionOrdering?: string,\n } = {}) {\n\n this.volunteerNameDisplay = volunteerNameDisplay;\n this.enableRegistrations = enableRegistrations;\n this.showPastSlots = showPastSlots;\n this.closePositionByDefault = closePositionByDefault;\n this.enableGroupRegistrations = enableGroupRegistrations;\n this.sendMeCopyOfRegistration = sendMeCopyOfRegistration;\n this.registrationEmailText = registrationEmailText;\n this.fullSlotsDefaultDisplay = fullSlotsDefaultDisplay;\n this.allowPublicTimeSlotCreation = allowPublicTimeSlotCreation;\n this.colorFree = colorFree;\n this.colorFull = colorFull;\n this.positionOrdering = positionOrdering;\n }\n\n public toJSON(): any {\n return {\n allowPublicTimeSlotCreation: this.allowPublicTimeSlotCreation,\n enableRegistrations: this.enableRegistrations,\n showPastSlots: this.showPastSlots,\n volunteerNameDisplay: this.volunteerNameDisplay,\n enableGroupRegistrations: this.enableGroupRegistrations,\n sendMeCopyOfRegistration: this.sendMeCopyOfRegistration,\n fullSlotsDefaultDisplay: this.fullSlotsDefaultDisplay,\n registrationEmailText: this.registrationEmailText,\n colorFree: this.colorFree,\n colorFull: this.colorFull,\n closePositionByDefault: this.closePositionByDefault,\n positionOrdering: this.positionOrdering,\n };\n }\n\n get displayVolunteer() {\n return this.volunteerNameDisplay !== 'nothing';\n }\n\n}\n","import { PositionModel } from '@/models/PositionModel';\nimport { EventDayModel } from '@/models/EventDayModel';\nimport { ConfigurationModel } from '@/models/ConfigurationModel';\nimport { TimeSlotModel } from '@/models/TimeSlotModel';\nimport { ParticipationModel } from './ParticipationModel';\nimport { CampaignModel } from './CampaignModel';\nimport IntervalTree from '@flatten-js/interval-tree';\nimport { DateTime } from 'luxon';\nimport { faImages } from '@fortawesome/free-solid-svg-icons';\nimport { TagModel } from './TagModel';\nimport { RewardCategoryModel } from './RewardCategoryModel';\nimport * as Utils from '@/assets/js/Utils.js';\nimport { AttributeModel } from './Form/AttributeModel';\n\nexport enum EventStatus {\n Draft,\n Published,\n Archived,\n}\n\nexport class EventModel {\n\n public static empty() {\n return new EventModel();\n }\n\n public id: number | null = null;\n public organizationId: number | null = null;\n public description: string;\n public email: string;\n public responsable: string;\n public status: EventStatus;\n public complexEvent: boolean;\n public positions: PositionModel[];\n public filteredAttributes: AttributeModel[] = [];\n public configuration: ConfigurationModel;\n public logo: string;\n public teaser: string;\n public website: string;\n public base64Logo: string;\n public versionEhro: number;\n public participationsRankings: number[] = [];\n public participationsRankingsUrls: string[] = [];\n\n public organizationName: string = '';\n public nbrVolunteersRequired: number | null = null;\n public nbrVolunteersRegistered: number | null = null;\n public showOnPublicPage: boolean = true;\n public showOnHomeCalendar: boolean = true;\n public timeZone: string = '';\n public images: any[] = [];\n public overviewSecret: string = '';\n\n public bulkShiftsToBeCreated: TimeSlotModel[] = [];\n\n private _bulkShiftsToBeUpdated: TimeSlotModel[] = [];\n public get bulkShiftsToBeUpdated(): TimeSlotModel[] {\n return this._bulkShiftsToBeUpdated;\n }\n public addShifToBeUpdated(slot: TimeSlotModel) {\n const index = this._bulkShiftsToBeUpdated.findIndex((shift) => { return shift.id === slot.id });\n if (index === -1) {\n this._bulkShiftsToBeUpdated.push(slot);\n } else {\n this._bulkShiftsToBeUpdated[index] = slot;\n }\n }\n\n public bulkShiftsToBeDeleted: TimeSlotModel[] = [];\n public get bulkShiftsToBeDeletedIds(): number[] {\n let ids: number[] = [];\n this.bulkShiftsToBeDeleted.forEach((s) => {\n if (s.id) {\n ids.push(s.id);\n }\n });\n return ids;\n }\n public bulkReset() {\n this.bulkShiftsToBeCreated = [];\n this.bulkShiftsToBeDeleted = [];\n this._bulkShiftsToBeUpdated = [];\n }\n\n\n public zoomLevel: number; // 0 .. 3\n private zoom = [5, 15, 30, 60];\n private size = [25, 25, 40, 60];\n\n private iName = '';\n private iDays: EventDayModel[] = [];\n public deepUpdateNeeded = false;\n\n private _uuidLong: string | null = null;\n private _uuidShort: string | null = null;\n\n get name(): string {\n if (this.status === EventStatus.Archived) {\n return '[ARCHIVE] ' + this.iName;\n }\n return this.iName;\n }\n\n set name(newName: string) {\n this.iName = newName;\n }\n\n get long_uuid_warning(): string | null {\n return this._uuidLong;\n }\n\n get uuid(): string | null {\n if (this._uuidShort) {\n return this._uuidShort;\n } else if (this._uuidLong) {\n return this._uuidLong;\n } else {\n return null;\n }\n }\n\n set uuid(value: string | null) {\n // Read-only !\n }\n\n public rewardCategories: RewardCategoryModel[] = [];\n\n public getRewardCategoryFromId(id: number): RewardCategoryModel | null {\n return RewardCategoryModel.getRewardCategoryFromId(id, this.rewardCategories);\n }\n\n public getDefaultRewardCategory(): RewardCategoryModel | null {\n return RewardCategoryModel.getDefaultRewardCategory(this.rewardCategories);\n }\n\n\n constructor({\n id = null,\n uuid = null,\n uuidShort = null,\n organizationId = null,\n name = '',\n description = '',\n email = '',\n responsable = '',\n status = EventStatus.Draft,\n days = [],\n positions = [],\n images = [],\n configuration = new ConfigurationModel(),\n logo = '',\n teaser = '',\n website = '',\n base64Logo = '',\n complexEvent = false,\n versionEhro = 2,\n showOnPublicPage = true,\n showOnHomeCalendar = true,\n participationsRankings = [],\n participationsRankingsUrls = [],\n zoomLevel = 1,\n timeZone = '',\n overviewSecret = '',\n }: {\n id?: number | null,\n uuid?: string | null,\n uuidShort?: string | null,\n organizationId?: number | null,\n name?: string,\n description?: string,\n email?: string,\n responsable?: string,\n status?: EventStatus,\n days?: any[],\n positions?: any[],\n images?: any[],\n configuration?: ConfigurationModel,\n logo?: string,\n teaser?: string,\n website?: string,\n base64Logo?: string,\n complexEvent?: boolean,\n versionEhro?: number,\n showOnPublicPage?: boolean,\n showOnHomeCalendar?: boolean,\n participationsRankings?: number[],\n participationsRankingsUrls?: string[],\n zoomLevel?: number,\n timeZone?: string,\n overviewSecret?: string,\n } = {}) {\n this.id = id;\n this._uuidLong = uuid;\n this._uuidShort = uuidShort;\n this.logo = logo;\n this.images = images;\n this.teaser = teaser;\n this.website = website;\n this.base64Logo = base64Logo;\n this.complexEvent = complexEvent;\n this.versionEhro = versionEhro;\n this.organizationId = organizationId;\n this.iName = name;\n this.description = description;\n this.email = email;\n this.responsable = responsable;\n this.showOnPublicPage = showOnPublicPage;\n this.showOnHomeCalendar = showOnHomeCalendar;\n this.status = status;\n this.zoomLevel = zoomLevel;\n this.overviewSecret = overviewSecret;\n const tmpDays = days.map((d: any): EventDayModel => {\n if (d instanceof EventDayModel) {\n return d;\n } else {\n return new EventDayModel({\n startsAt: DateTime.fromJSDate(d.startsAt).setZone(timeZone),\n endsAt: DateTime.fromJSDate(d.endsAt).setZone(timeZone),\n });\n }\n });\n this.iDays = tmpDays.sort((a, b) => {\n return a.date.getTime() - b.date.getTime();\n });\n this.positions = positions.map((p: any, i: number): PositionModel => {\n if (p instanceof PositionModel) {\n return p;\n } else {\n p.eventTimeZone = timeZone;\n return new PositionModel(p);\n }\n });\n this.orderPositionInArray();\n if (configuration instanceof ConfigurationModel) {\n this.configuration = configuration;\n } else {\n this.configuration = new ConfigurationModel(configuration);\n }\n this.participationsRankings = participationsRankings || [];\n this.participationsRankingsUrls = participationsRankingsUrls || [];\n this.timeZone = timeZone;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n uuid: this._uuidLong,\n organizationId: this.organizationId,\n name: this.iName,\n description: this.description,\n email: this.email,\n teaser: this.teaser,\n website: this.website,\n responsable: this.responsable,\n status: this.status,\n complexEvent: this.complexEvent,\n days: this.iDays.map((day: EventDayModel): any => day.toJSON()),\n positions: this.positions.map((p: PositionModel): any => {\n return p.toJSON();\n }),\n configuration: this.configuration.toJSON(),\n base64Logo: this.base64Logo,\n // images: this.images,\n images: this.images.map((image) => {\n if (image.id) {\n return {\n id: image.id,\n };\n } else {\n return image;\n }\n }),\n versionEhro: this.versionEhro,\n showOnPublicPage: this.showOnPublicPage,\n showOnHomeCalendar: this.showOnHomeCalendar,\n participationsRankings: this.participationsRankings,\n zoomLevel: this.zoomLevel,\n timeZone: this.timeZone,\n };\n }\n\n get numberOfShifts() {\n return this.positions.reduce((r, pos) => r + pos.timeSlots.length, 0);\n }\n\n\n public get style(): string {\n return `background-color:${this.configuration.colorFree}; color:${Utils.getTextColor(this.configuration.colorFree)}`;\n }\n\n private orderPositionInArray() {\n this.positions = this.positions.slice().sort((a, b) => {\n if (a.order < b.order) { return -1; }\n if (a.order > b.order) { return 1; }\n return 0;\n });\n }\n\n public orderPositionInArrayByName(asc: boolean) {\n this.positions = this.positions.slice().sort((a, b) => {\n if (a.name < b.name) { return asc ? -1 : 1; }\n if (a.name > b.name) { return asc ? 1 : -1; }\n return 0;\n });\n }\n\n public get positionsWaitingForUpdate(): PositionModel[] {\n return this.positions.filter((p) => p.updateNeeded);\n }\n\n\n public get imagesForUpdate() {\n return this.images.map((image) => {\n if (image.id) {\n return {\n id: image.id,\n };\n } else {\n return image;\n }\n });\n }\n\n public get days(): EventDayModel[] {\n return this.iDays;\n }\n public set days(days: EventDayModel[]) {\n const tmpDays = days.map((d: any): EventDayModel => {\n if (d instanceof EventDayModel) {\n return d;\n } else {\n return new EventDayModel(d);\n }\n });\n this.iDays = tmpDays.sort((a, b) => {\n return a.date.getTime() - b.date.getTime();\n });\n }\n\n public containsDate(date: DateTime): boolean {\n let res = false;\n this.days.forEach((d) => {\n res ||= (d.startsAtYYYYMMDD() === date.toFormat('yyyy-LL-dd'));\n });\n return res;\n }\n\n public get minDateJS(): Date {\n if (this.days.length > 0) {\n return this.days[0].startOfDayDateOfStarts.toJSDate();\n }\n return DateTime.now().toJSDate();\n }\n\n public get minDateString(): string {\n if (this.days.length > 0) {\n return this.days[0].startsAtYYYYMMDD();\n }\n return DateTime.now().toFormat('yyyy-LL-dd');\n }\n\n public get maxDateJS(): Date {\n if (this.days.length > 0) {\n return this.days[this.days.length - 1].endsAt.toJSDate();\n }\n return DateTime.now().toJSDate();\n }\n\n public get maxDateString(): string {\n if (this.days.length === 0) {\n return DateTime.now().toFormat('yyyy-LL-dd');\n }\n\n // Dernier jour défini dans EventDay\n let lastDefinedDay = this.days[this.days.length - 1].startOfDayDateOfEnds;\n\n // Récupérer toutes les dates de fin des shifts\n let shiftEndDates = this.positions\n .map(position => position.getLastSlot()?.endTime)\n .filter((slotDate): slotDate is DateTime => slotDate !== null); // Filtrer les valeurs null\n\n // Si aucun shift trouvé, retourner la dernière date définie\n if (shiftEndDates.length === 0) {\n return lastDefinedDay.toFormat('yyyy-LL-dd');\n }\n\n // Trouver la date la plus récente\n let lastShiftDay = shiftEndDates.reduce(\n (latest, slotDate) => (slotDate > latest ? slotDate : latest),\n lastDefinedDay\n );\n\n return lastShiftDay.toFormat('yyyy-LL-dd');\n }\n\n\n\n public createPosition(name: string): PositionModel {\n const newPosition = PositionModel.empty();\n newPosition.name = name;\n newPosition.order = this.positions.length;\n return newPosition;\n }\n\n public updatePositionsOrder() {\n this.positions.slice().forEach((position, index) => {\n position.updateNeeded = position.order !== index\n position.order = index;\n });\n }\n\n public deletePosition(position: PositionModel) {\n const index = this.positions.indexOf(position, 0);\n if (index > -1) {\n this.positions.splice(index, 1);\n this.updatePositionsOrder();\n }\n }\n\n public get hasSlot(): boolean {\n for (const position of this.positions) {\n if (position.timeSlots.length > 0) {\n return true;\n }\n }\n return false;\n }\n\n public get slots(): TimeSlotModel[] {\n const slots: TimeSlotModel[] = [];\n this.positions.forEach((position) => {\n slots.push(...position.timeSlots);\n });\n return slots;\n }\n\n public set participations(participations: ParticipationModel[]) {\n const tss = new Map();\n for (const position of this.positions) {\n for (const ts of position.timeSlots) {\n if (ts.id !== null) {\n tss.set(ts.id, ts);\n }\n }\n }\n\n for (const p of participations) {\n if (p.timeSlotId) {\n if (tss.has(p.timeSlotId)) {\n tss.get(p.timeSlotId)!.participations.push(p);\n }\n }\n }\n }\n\n public get participations(): ParticipationModel[] {\n const participations: ParticipationModel[] = [];\n for (const position of this.positions) {\n for (const ts of position.timeSlots) {\n for (const v of ts.participations) {\n participations.push(v);\n }\n }\n }\n return participations;\n }\n\n public getTags(): TagModel[] {\n const tags: TagModel[] = [];\n this.positions.forEach((position) => {\n position.tags.forEach((tag) => {\n if (!tags.map((t) => Number(t.id)).includes(Number(tag.id))) {\n tags.push(tag);\n }\n });\n });\n\n tags.sort((a, b) => {\n if (a.category && b.category) {\n if (a.category.order < b.category.order) { return -1; }\n if (a.category.order > b.category.order) { return 1; }\n }\n return 0;\n });\n\n return tags;\n }\n\n public get filteredPositions() {\n const positions: PositionModel[] = [];\n for (const position of this.positions) {\n if (this.filteringMissions.length > 0) {\n if (this.filteringMissions.indexOf(position) === -1) { continue; }\n }\n if (this.filteringTags.length > 0) {\n if (!this.filteringTags.every((filter) => position.listOfTagsId.some((item) => filter.tags.map((t: TagModel) => Number(t.id)).includes(item)))) {\n continue;\n }\n }\n positions.push(position);\n }\n return positions;\n }\n\n public getFilteredPositionWithSlotInDateRange(\n startDate: DateTime,\n endDate: DateTime,\n withPrivate: boolean,\n withEmptyPosition: boolean = false,\n ): PositionModel[] {\n const positions: PositionModel[] = [];\n for (const position of this.filteredPositions) {\n if (position.didContainSlotInDateRange(startDate, endDate, withPrivate) || withEmptyPosition) {\n positions.push(position);\n }\n }\n return positions;\n }\n\n public getAllSlotIdForDayIndexWithoutParticipations(day: EventDayModel, withPrivate: boolean): number[] {\n const slotsIds: number[] = [];\n this.positions.forEach((position) => {\n slotsIds.push(...position.slotsInRange(day.startsAt, day.endsAt, withPrivate).map((ts) => Number(ts.id)));\n });\n return slotsIds;\n }\n\n\n\n public setParticipationsToSlots(slots: TimeSlotModel[], parts: ParticipationModel[]): TimeSlotModel[] {\n slots.forEach((slot) => {\n slot.participations = slot.getParticipations(parts);\n });\n return slots;\n }\n\n public getSlotForRange(\n rangeStart: DateTime,\n rangeEnd: DateTime,\n posIndex: number | null,\n withPrivate: boolean,\n ): TimeSlotModel[] {\n\n const slots: TimeSlotModel[] = [];\n let _positions = [];\n\n if (posIndex === null) {\n _positions = this.getFilteredPositionWithSlotInDateRange(rangeStart, rangeEnd, withPrivate);\n } else {\n _positions = this.positions;\n }\n\n for (const position of _positions) {\n if (posIndex === null || position.id === posIndex) {\n const slts = position.slotsInRange(rangeStart, rangeEnd, withPrivate);\n\n slts.forEach((slot) => {\n slot.position = position;\n if (this.filteringRewardCategories.length > 0) {\n if (this.filteringRewardCategories.map((c) => c.id).includes(slot.rewardCategory)) {\n slots.push(slot);\n }\n } else {\n slots.push(slot);\n }\n });\n }\n }\n\n return slots;\n }\n\n public getSlotForDay(day: EventDayModel, withPrivate: boolean = false): TimeSlotModel[] {\n return this.getSlotForRange(day.startsAt, day.endsAt, null, withPrivate);\n }\n\n public getSlotsInfoForDay(day: EventDayModel, withPrivate: boolean = false) {\n return `[${this.getSlotForDay(day, withPrivate).length}]`;\n }\n\n public checkIfAtLeast1HoursIsAvailable(\n day: EventDayModel,\n filteredPositions: PositionModel[] | null = null,\n withPrivate: boolean): boolean {\n\n let result = false;\n for (const position of this.positions) {\n\n if (filteredPositions) {\n if (filteredPositions.indexOf(position) === -1) { continue; }\n }\n\n const slts = position.slotsInRange(day.startsAt, day.endsAt, withPrivate);\n const minimalDuration = 60;\n let freeSpace = false;\n let startingPoint = day.startsAt.toMillis();\n\n slts.forEach((slot) => {\n // Check si entre le dernier point et le debut du prochain slot il y'a la durée requise\n freeSpace = freeSpace || Math.floor((slot.startTime.toMillis() - startingPoint) / 60000) >= minimalDuration;\n startingPoint = slot.endTime.toMillis();\n });\n\n // Check le dernier slot -> fin du jour\n // Dans le cas de 0 slot => debut -> fin du jour \n freeSpace = freeSpace || Math.floor((day.endsAt.toMillis() - startingPoint) / 60000) >= minimalDuration;\n return freeSpace;\n }\n\n return result;\n }\n\n public getDayIndexForStringDate(stringDate: string): number {\n const test = DateTime.fromISO(stringDate, { zone: this.timeZone }).startOf('day').toJSDate().getTime();\n return this.days.findIndex((d) => {\n return d.date.getTime() === test;\n });\n }\n\n\n public getDayForStringDate(stringDate: string, searchForNoEventDay: boolean = false): EventDayModel | undefined {\n // Chercher l'EventDay existant\n const existingDay = this.days.find((d) => d.startsAtYYYYMMDD() === stringDate);\n if (existingDay) return existingDay;\n\n // Convertir stringDate en DateTime pour la recherche de shifts\n if (searchForNoEventDay) {\n const date = DateTime.fromFormat(stringDate, 'yyyy-LL-dd');\n if (!date.isValid) return undefined;\n\n // Vérifier si des shifts existent pour ce jour\n const slotsForDay = this.getSlotForRange(date.startOf('day'), date.endOf('day'), null, false);\n\n if (slotsForDay.length > 0) {\n // Trouver l'heure de début et de fin des shifts\n const earliestSlot = slotsForDay.reduce((earliest, slot) =>\n slot.startTime < earliest ? slot.startTime : earliest, date.endOf('day')\n );\n\n const latestSlot = slotsForDay.reduce((latest, slot) =>\n slot.endTime > latest ? slot.endTime : latest, date.startOf('day')\n );\n\n // Créer un EventDayModel dynamique\n return new EventDayModel({\n startsAt: earliestSlot,\n endsAt: latestSlot\n });\n }\n }\n\n return undefined;\n }\n\n\n\n public slotWithId(slotId: number): TimeSlotModel | null {\n for (const position of this.positions) {\n const slot = position.slotWithId(slotId);\n if (slot !== null) {\n return slot;\n }\n }\n return null;\n }\n\n public getSlotPosition(slotId: number): PositionModel {\n let result = new PositionModel();\n for (const position of this.positions) {\n for (const ts of position.timeSlots) {\n if (ts.id === slotId) {\n result = position;\n }\n }\n }\n return result;\n }\n\n public getPositionForId(positionId: number): PositionModel | null {\n for (const position of this.positions) {\n if (position.id === positionId) {\n return position;\n }\n }\n return null;\n }\n\n public isMaxZoom(): boolean {\n return this.zoomLevel === this.zoom.length - 1;\n }\n public isMinZoom(): boolean {\n return this.zoomLevel === 0;\n }\n public get schedulerStepWidth(): number {\n return this.size[this.zoomLevel];\n }\n public get schedulerStepSize(): number {\n return this.zoom[this.zoomLevel];\n }\n\n public updateTimeZone(newTimeZone: string) {\n this.timeZone = newTimeZone;\n\n this.days.forEach((day) => {\n const startST = day.startsAt.toISO({ includeOffset: false });\n const endST = day.endsAt.toISO({ includeOffset: false });\n if (startST && endST) {\n day.startsAt = DateTime.fromISO(startST, { zone: newTimeZone });\n day.endsAt = DateTime.fromISO(endST, { zone: newTimeZone });\n }\n });\n\n this.slots.forEach((slot) => {\n const startST = slot.startTime.toISO({ includeOffset: false });\n const endST = slot.endTime.toISO({ includeOffset: false });\n if (startST && endST) {\n slot.startTime = DateTime.fromISO(startST, { zone: newTimeZone });\n slot.endTime = DateTime.fromISO(endST, { zone: newTimeZone });\n }\n });\n\n this.deepUpdateNeeded = true;\n }\n\n\n // Filtering\n public get numberOfFilters(): number {\n return this.filteringMissions.length +\n this.filteringRewardCategories.length +\n this.filteringTags.map((item) => item.tags).flat().length;\n }\n /*\n category: TagModel\n tags: TagModel[] inside the category\n */\n public filteringTags: any[] = [];\n public filteringMissions: PositionModel[] = [];\n public filteringRewardCategories: RewardCategoryModel[] = [];\n\n\n}\n\n\n","import i18n from \"@/i18n\";\n\nexport enum AttributeType {\n TEXT = \"text\",\n TEXT_MULTILINE = \"text_multiline\",\n INT = \"int\",\n DATE = \"date\",\n ENUM = \"enum\",\n ENUM_MULTIPLE = \"enum_multiple\",\n BOOL = \"bool\",\n}\n\nexport const AttributeTypeLabels: Record = {\n [AttributeType.TEXT]: i18n.t('text') as string,\n [AttributeType.TEXT_MULTILINE]: i18n.t('text_multiline') as string,\n [AttributeType.INT]: i18n.t('int') as string,\n [AttributeType.DATE]: i18n.tc('date', 1) as string,\n [AttributeType.ENUM]: i18n.t('enum') as string,\n [AttributeType.ENUM_MULTIPLE]: i18n.t('enum_multiple') as string,\n [AttributeType.BOOL]: i18n.t('bool') as string,\n};\n\n\nexport enum AttributeToModelType {\n VOLUNTEER = \"volunteer\",\n EVENT = \"event\",\n CAMPAIGN = \"campaign\",\n}\n\nexport enum BaseAttributeType {\n ADDRESS = \"address\",\n CITY = \"city\",\n POSTCODE = \"postcode\",\n COUNTRY = \"country\",\n PHONE = \"phone\",\n BIRTHDATE = \"birthdate\",\n}\n\nexport const BaseAttributeLabels: { [key in BaseAttributeType]: string } = {\n [BaseAttributeType.PHONE]: i18n.t('phone') as string,\n [BaseAttributeType.BIRTHDATE]: i18n.t('birthdate') as string,\n [BaseAttributeType.ADDRESS]: i18n.t('address') as string,\n [BaseAttributeType.POSTCODE]: i18n.t('npa') as string,\n [BaseAttributeType.CITY]: i18n.t('town') as string,\n [BaseAttributeType.COUNTRY]: i18n.t('country') as string,\n};\n\nexport class AttributeModel {\n\n static getBaseAttributeType(): { id: BaseAttributeType; name: string }[] {\n return Object.entries(BaseAttributeLabels).map(([key, label]) => ({\n id: key as BaseAttributeType,\n name: label,\n }));\n }\n\n public id: number | BaseAttributeType | null;\n public name: string;\n public valueType: AttributeType;\n public event: number | null;\n public campaign: string | null;\n public onRegistration: boolean;\n public options: { id: number | null; option: string }[];\n\n constructor({\n id = null,\n name = '',\n valueType = AttributeType.TEXT,\n event = null,\n campaign = null,\n options = [],\n onRegistration = false,\n }: {\n id?: number | BaseAttributeType | null;\n name?: string;\n valueType?: AttributeType;\n event?: number | null;\n campaign?: string | null;\n options?: { id: number | null; option: string }[];\n onRegistration?: boolean;\n } = {}) {\n this.id = id;\n this.name = name;\n this.valueType = valueType;\n this.event = event;\n this.campaign = campaign;\n this.options = options.map((opt) => ({\n id: opt.id,\n option: opt.option,\n }));\n this.onRegistration = onRegistration;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n valueType: this.valueType,\n event: this.event,\n campaign: this.campaign,\n options: this.options,\n onRegistration: this.onRegistration,\n };\n }\n\n\n public get attributeToModelType(): AttributeToModelType {\n if (this.event) {\n return AttributeToModelType.EVENT;\n } else if (this.campaign) {\n return AttributeToModelType.CAMPAIGN;\n } else {\n return AttributeToModelType.VOLUNTEER;\n }\n }\n}\n","import i18n from \"@/i18n\";\nimport { AttributeModel, AttributeType, AttributeToModelType } from \"./AttributeModel\";\n\n/**\n * Représente un champ pouvant être lié à un bénévole, un événement, une participation ou une campagne.\n */\nexport class FieldModel {\n public id: number | null;\n public attribute: AttributeModel;\n public isRequired: boolean;\n public label: string;\n public description: string;\n public parentFieldId: number | null;\n public condition: { targetAttribute: number | null; targetOption: number | null } | null;\n public customAttribute: number | null;\n public baseAttribute: string | null;\n\n constructor({\n id = null,\n attribute = new AttributeModel(),\n isRequired = false,\n label = \"\",\n description = \"\",\n parentFieldId = null,\n condition = null,\n customAttribute = null,\n baseAttribute = null,\n }: Partial & { attribute?: AttributeModel | Partial } = {}) {\n this.id = id;\n this.attribute =\n attribute instanceof AttributeModel\n ? attribute\n : new AttributeModel(attribute);\n this.customAttribute = customAttribute;\n this.baseAttribute = baseAttribute;\n this.isRequired = isRequired;\n this.label = label;\n this.description = description;\n this.parentFieldId = parentFieldId;\n this.condition = condition ?? { targetAttribute: null, targetOption: null };\n }\n\n public toJSON(): Record {\n const json: Record = {\n id: this.id,\n isRequired: this.isRequired,\n label: this.label,\n type: this.attribute.attributeToModelType,\n description: this.description,\n attribute: this.attribute,\n };\n\n if (this.condition && this.condition?.targetAttribute !== null) {\n json.condition = {\n targetAttribute: this.condition.targetAttribute,\n targetOption: this.condition.targetOption\n };\n }\n if (this.customAttribute != null) {\n json.customAttribute = this.customAttribute;\n } else {\n json.baseAttribute = this.baseAttribute;\n }\n\n return json;\n }\n\n public get isWithOptions(): boolean {\n return (this.attribute.valueType === AttributeType.ENUM ||\n this.attribute.valueType === AttributeType.ENUM_MULTIPLE);\n }\n\n public get typeLabel(): string {\n switch (this.attribute.attributeToModelType) {\n case AttributeToModelType.VOLUNTEER:\n return i18n.tc(\"dashboard_vol\", 1) as string;\n case AttributeToModelType.EVENT:\n if (this.attribute && this.attribute.onRegistration) {\n return i18n.tc(\"registrations\", 1) as string;\n }\n return i18n.tc(\"event\", 1) as string;\n case AttributeToModelType.CAMPAIGN:\n return i18n.tc(\"campaign\", 1) as string;\n default:\n return \"-\";\n }\n }\n\n private get badgeColor(): string {\n switch (this.attribute.attributeToModelType) {\n case AttributeToModelType.VOLUNTEER:\n return \"primary\";\n case AttributeToModelType.EVENT:\n if (this.attribute && this.attribute.onRegistration) {\n return \"secondary\";\n }\n return \"success\";\n case AttributeToModelType.CAMPAIGN:\n return \"warning\";\n default:\n return \"secondary\";\n }\n }\n\n public get type(): AttributeToModelType {\n return this.attribute.attributeToModelType;\n }\n}\n","import { FieldModel } from \"./FieldModel\";\n\nexport class FormModel {\n public id: number | null;\n public fields: FieldModel[];\n\n constructor({\n id = null,\n fields = [],\n }: {\n id?: number | null;\n fields?: FieldModel[];\n } = {}) {\n this.id = id;\n this.fields = fields.map((field) =>\n field instanceof FieldModel ? field : new FieldModel(field)\n );\n }\n\n /**\n * Sérialisation vers un format JSON pour l'API\n */\n public toJSON(): Record {\n return {\n id: this.id,\n fields: this.fields.map((field) => field.toJSON()),\n };\n }\n\n /**\n * Ajoute un champ au formulaire\n */\n public addField(field: FieldModel): void {\n const newField = field instanceof FieldModel ? field : new FieldModel(field);\n this.fields.push(newField);\n }\n\n /**\n * Supprime un champ du formulaire par son ID\n */\n public removeFieldById(fieldId: number): void {\n this.fields = this.fields.filter((field) => field.id !== fieldId);\n }\n\n /**\n * Recherche un champ par son ID\n */\n public getFieldById(fieldId: number): FieldModel | undefined {\n return this.fields.find((field) => field.id === fieldId);\n }\n}\n","import { EventModel } from './EventModel';\n\nexport class ManagerModel {\n\n public static copy(mng: ManagerModel): ManagerModel {\n const manager = new ManagerModel();\n manager.id = mng.id;\n manager.email = mng.email;\n manager.password = mng.password;\n manager.organization = mng.organization;\n manager.eventIds = mng.eventIds;\n return manager;\n }\n\n\n public id: number | null = null;\n public email: string;\n public password: string;\n public organization: number | null = null;\n public eventIds: number[];\n\n constructor({\n id = null,\n organization = null,\n email = '',\n password = '',\n eventIds = [],\n }: {\n id?: number | null,\n organization?: number | null,\n email?: string,\n password?: string,\n eventIds?: number[],\n } = {}) {\n this.id = id;\n this.organization = organization;\n this.email = email;\n this.password = password;\n this.eventIds = eventIds;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n email: this.email,\n organization: this.organization,\n password: this.password,\n eventIds: this.eventIds,\n };\n }\n}\n","export class OrganizationEventResumeModel {\n public draft: number = 0;\n public published: number = 0;\n public archive: number = 0;\n public registeredPublished: number = 0;\n public requiredPublished: number = 0;\n public registeredAll: number = 0;\n public requiredAll: number = 0;\n public hoursRequired: number = 0;\n public hoursRegistered: number = 0;\n\n constructor({\n draft = 0,\n published = 0,\n archive = 0,\n registeredPublished = 0,\n requiredPublished = 0,\n registeredAll = 0,\n requiredAll = 0,\n hoursRequired = 0,\n hoursRegistered = 0,\n }: {\n draft?: number,\n published?: number,\n archive?: number,\n registeredPublished?: number,\n requiredPublished?: number,\n registeredAll?: number,\n requiredAll?: number,\n hoursRequired?: number,\n hoursRegistered?: number,\n } = {}) {\n this.draft = draft;\n this.published = published;\n this.archive = archive;\n this.registeredPublished = registeredPublished;\n this.requiredPublished = requiredPublished;\n this.registeredAll = registeredAll;\n this.requiredAll = requiredAll;\n this.hoursRegistered = hoursRegistered;\n this.hoursRequired = hoursRequired;\n }\n\n public toJSON(): any {\n return {\n draft: this.draft,\n published: this.published,\n archive: this.archive,\n registeredPublished: this.registeredPublished,\n requiredPublished: this.requiredPublished,\n registeredAll: this.registeredAll,\n requiredAll: this.requiredAll,\n hoursRegistered: this.hoursRegistered,\n hoursRequired: this.hoursRequired,\n };\n }\n}\n","import { OrganizationEventResumeModel } from './OrganizationEventResumeModel';\nimport { OrganizationEventLatestRegistrationModel } from './OrganizationEventLatestRegistrationModel';\nimport { DateTime } from 'luxon';\n\nexport enum LicenseType {\n None = 'null',\n Light = 'light',\n Club = 'club',\n Pro = 'pro',\n Corporate = 'corporate',\n}\n\nexport class OrganizationModel {\n\n public static empty() {\n return new OrganizationModel();\n }\n\n public id: number | null = null;\n private _name: string;\n public description: string;\n public logo: string;\n public slug: string;\n public publicName: string;\n public contactName: string;\n public contactEmail: string;\n public contactPhone: string;\n public contactInfo: string;\n public displayPublicList: boolean;\n public displayPublicContact: boolean;\n public enableCampaigns: boolean;\n public enableGroupRegistrations: boolean;\n public enforce2fa: boolean;\n public licenseType: LicenseType;\n public validUntil: string | null;\n public enableWeezevent: boolean;\n public enableShop: boolean;\n public enableBadges: boolean;\n public enableVouchers: boolean;\n public enableParticipationsValidation: boolean;\n public nbPendingValidations: number;\n\n\n public latestRegistration: OrganizationEventLatestRegistrationModel[] = [];\n public eventsResume: OrganizationEventResumeModel = new OrganizationEventResumeModel();\n public nbrVolunteers: number = 0;\n public defaultLanguage = 'fr';\n\n constructor({\n id = null,\n name = '',\n description = '',\n logo = '',\n slug = '',\n publicName = '',\n contactName = '',\n contactEmail = '',\n contactPhone = '',\n contactInfo = '',\n displayPublicList = true,\n displayPublicContact = true,\n enableCampaigns = false,\n enableGroupRegistrations = false,\n enforce2fa = false,\n licenseType = LicenseType.None,\n enableWeezevent = false,\n enableShop = false,\n enableBadges = false,\n enableVouchers = false,\n enableParticipationsValidation = false,\n nbPendingValidations = 0,\n defaultLanguage = 'fr',\n validUntil = null,\n }: {\n id?: number | null,\n name?: string,\n description?: string,\n logo?: string,\n slug?: string,\n publicName?: string,\n contactName?: string,\n contactEmail?: string,\n contactPhone?: string,\n contactInfo?: string,\n displayPublicList?: boolean,\n displayPublicContact?: boolean,\n enableCampaigns?: boolean,\n enableGroupRegistrations?: boolean,\n enforce2fa?: boolean,\n licenseType?: LicenseType,\n enableWeezevent?: boolean,\n enableShop?: boolean,\n enableBadges?: boolean,\n enableVouchers?: boolean,\n nbPendingValidations?: number,\n enableParticipationsValidation?: boolean,\n defaultLanguage?: string,\n validUntil?: string | null,\n } = {}) {\n this.id = id;\n this._name = name;\n this.description = description;\n this.logo = logo;\n this.slug = slug;\n if (publicName) {\n this.publicName = publicName;\n } else {\n this.publicName = name;\n }\n this.defaultLanguage = defaultLanguage;\n this.nbPendingValidations = nbPendingValidations;\n this.contactName = contactName;\n this.contactInfo = contactInfo;\n this.contactEmail = contactEmail;\n this.contactPhone = contactPhone;\n this.displayPublicContact = displayPublicContact;\n this.displayPublicList = displayPublicList;\n this.enableCampaigns = enableCampaigns;\n this.enableGroupRegistrations = enableGroupRegistrations;\n this.enforce2fa = enforce2fa;\n this.licenseType = licenseType;\n this.enableWeezevent = enableWeezevent;\n this.enableShop = enableShop;\n this.enableBadges = enableBadges;\n this.enableVouchers = enableVouchers;\n this.enableParticipationsValidation = enableParticipationsValidation;\n this.validUntil = validUntil;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n description: this.description,\n slug: this.slug,\n logo: this.logo,\n publicName: this.publicName,\n contactEmail: this.contactEmail,\n contactInfo: this.contactInfo,\n contactName: this.contactName,\n contactPhone: this.contactPhone,\n displayPublicContact: this.displayPublicContact,\n displayPublicList: this.displayPublicList,\n enableCampaigns: this.enableCampaigns,\n enableGroupRegistrations: this.enableGroupRegistrations,\n enforce2fa: this.enforce2fa,\n licenseType: this.licenseType,\n nbPendingValidations: this.nbPendingValidations,\n validUntil: this.validUntil,\n };\n }\n\n public get name(): string {\n return this.publicName !== '' ?\n this.publicName :\n this._name;\n }\n\n public set name(name: string) {\n this._name = name;\n }\n\n public get licenseName() {\n if (this) {\n if (this.licenseType === LicenseType.Pro) {\n return \"PRO\";\n } else if (this.licenseType === LicenseType.Corporate) {\n return \"CORPORATE\";\n } else if (this.licenseType === LicenseType.Club) {\n return \"CLUB\";\n } else if (this.licenseType === LicenseType.Light) {\n return \"LIGHT\";\n }\n }\n return '-';\n }\n}\n","import { VolunteerModel } from './VolunteerModel';\nimport { TimeSlotModel } from './TimeSlotModel';\nimport { CustomAnswerModel } from './CustomAnswerModel';\nimport { EventModel } from './EventModel';\nimport { DateTime } from 'luxon';\nimport { EventDayModel } from './EventDayModel';\nimport { event } from 'vue-gtag';\n\nexport enum ParticipationType {\n All = 'all',\n Solo = 'solo',\n Group = 'group',\n}\n\nexport enum ParticipationStatus {\n AWAITING_ORGANIZER_VALIDATION = 0,\n AWAITING_VOLUNTEER_VALIDATION = 1,\n REJECTED_BY_ORGANIZER = 2,\n REJECTED_BY_VOLUNTEER = 3,\n CANCELLED_BY_ORGANIZER = 4,\n CANCELLED_BY_VOLUNTEER = 5,\n ACCEPTED = 6,\n}\n\nexport class ParticipationModel {\n\n public static copy(part: ParticipationModel): ParticipationModel {\n const cp = new ParticipationModel();\n cp.id = part.id;\n cp.nbParticipants = part.nbParticipants;\n cp.groupName = part.groupName;\n return cp;\n }\n\n public static getStatusName(status: ParticipationStatus): string {\n switch (status) {\n case 0:\n return \"AWAITING_ORGANIZER_VALIDATION\";\n case 1:\n return \"AWAITING_VOLUNTEER_VALIDATION\";\n case 2:\n return \"REJECTED_BY_ORGANIZER\";\n case 3:\n return \"REJECTED_BY_VOLUNTEER\";\n case 4:\n return \"CANCELLED_BY_ORGANIZER\";\n case 5:\n return \"CANCELLED_BY_VOLUNTEER\";\n case 6:\n return \"ACCEPTED\";\n default:\n return '';\n }\n }\n\n\n public id: number | null = null;\n public createdAt: Date | null;\n\n // Group\n public nbParticipants: number = 1;\n public groupName: string = '';\n\n // Lien avec l'event\n public eventId: number | null = null;\n public eventName: string = '';\n\n // Lien avec le volunteer\n public volunteerId: number | null = null;\n public firstName: string = '';\n public lastName: string = '';\n public email: string;\n public phoneNumber: string;\n public tshirt: string;\n public bornDate: Date | null = null;\n\n // Lien avec le slot\n public timeSlotId: number;\n public timeSlot: TimeSlotModel;\n\n public validationStatus: ParticipationStatus;\n\n // Question spécifiques\n public customAttributeValues: { attribute: number; participation: number | null; value: number | string | boolean | Date }[] = [];\n\n public get _rowVariant() {\n if (this.validationStatus === ParticipationStatus.AWAITING_ORGANIZER_VALIDATION) {\n return 'warning';\n }\n return '';\n }\n\n constructor({\n id = null,\n timeSlotId = -1,\n volunteerId = null,\n firstName = '',\n lastName = '',\n email = '',\n phoneNumber = '',\n tshirt = '',\n eventId = null,\n createdAt = null,\n timeSlot = new TimeSlotModel(),\n nbParticipants = 1,\n groupName = '',\n eventName = '',\n validationStatus = ParticipationStatus.ACCEPTED,\n eventTimeZone = '',\n }: {\n id?: number | null,\n timeSlotId?: number,\n volunteerId?: number | null,\n firstName?: string,\n lastName?: string,\n email?: string,\n phoneNumber?: string,\n tshirt?: string,\n eventId?: number | null,\n createdAt?: Date | null,\n timeSlot?: TimeSlotModel,\n nbParticipants?: number,\n groupName?: string,\n eventName?: string,\n validationStatus?: ParticipationStatus,\n eventTimeZone?: string,\n } = {}) {\n this.id = id;\n this.timeSlotId = timeSlotId;\n this.volunteerId = volunteerId;\n this.firstName = firstName;\n this.lastName = lastName;\n this.eventId = eventId;\n this.email = email;\n this.phoneNumber = phoneNumber;\n this.tshirt = tshirt;\n this.createdAt = createdAt;\n this.nbParticipants = nbParticipants;\n this.groupName = groupName;\n this.eventName = eventName;\n this.validationStatus = validationStatus;\n\n if (timeSlot instanceof TimeSlotModel) {\n this.timeSlot = timeSlot;\n } else {\n (timeSlot as any).startTime = DateTime.fromJSDate((timeSlot as any).startTime).setZone(eventTimeZone);\n (timeSlot as any).endTime = DateTime.fromJSDate((timeSlot as any).endTime).setZone(eventTimeZone);\n this.timeSlot = new TimeSlotModel(timeSlot);\n }\n }\n\n public getTimeSlotIdsForCurrentDay(eventDay: EventDayModel, inEvent: EventModel): TimeSlotModel[] {\n\n const result: TimeSlotModel[] = [];\n const slotId = this.timeSlot.id === null ? this.timeSlotId : this.timeSlot.id;\n\n if (slotId) {\n const slot = inEvent.slotWithId(slotId);\n\n if (slot) {\n if (eventDay.hasInRange(slot.startTime, slot.endTime)) {\n result.push(slot);\n }\n }\n }\n return result;\n }\n\n public get duration() {\n return this.timeSlot.duration * this.nbParticipants;\n }\n}\n","import { TimeSlotModel } from '@/models/TimeSlotModel';\nimport { TagModel } from '@/models/TagModel';\nimport IntervalTree from '@flatten-js/interval-tree';\nimport { ParticipationModel, ParticipationStatus } from './ParticipationModel';\nimport { DateTime } from 'luxon';\n\n\nexport class PositionModel {\n\n public static empty() {\n return new PositionModel({});\n }\n\n public copyValueFrom(source: PositionModel) {\n this.name = source.name;\n this.description = source.description;\n this.tags = source.tags;\n this.defaultParticipationValidationStatus = source.defaultParticipationValidationStatus;\n this._maxParticipantsAtTime = source._maxParticipantsAtTime;\n }\n public static clone(position: PositionModel) {\n const item = new PositionModel();\n item.id = position.id;\n item.copyValueFrom(position);\n return item;\n }\n\n public id: number | null = null;\n public name: string;\n public order: number;\n public description: string;\n public _maxParticipantsAtTime: null | number = null; // null = no max\n public aiFieldList: string[] = [];\n public tags: TagModel[] = [];\n\n private slotsTree: IntervalTree = new IntervalTree();\n private heightForDayIndex = new Map();\n private slotsById: Map = new Map();\n\n public defaultParticipationValidationStatus: ParticipationStatus;\n public updateNeeded = false;\n\n constructor({\n id = null,\n name = '',\n order = 0,\n timeSlots = [],\n tags = [],\n description = '',\n defaultParticipationValidationStatus = ParticipationStatus.ACCEPTED,\n eventTimeZone = '',\n maxParticipantsAtTime = null,\n }: {\n id?: number | null,\n name?: string,\n order?: number,\n timeSlots?: any[],\n tags?: any[],\n description?: string,\n defaultParticipationValidationStatus?: ParticipationStatus,\n eventTimeZone?: string,\n maxParticipantsAtTime?: null | number,\n } = {}) {\n this.id = id;\n this.name = name;\n this.order = order;\n this._maxParticipantsAtTime = maxParticipantsAtTime;\n\n this.description = description;\n this.defaultParticipationValidationStatus = defaultParticipationValidationStatus;\n timeSlots.forEach((ts: any) => {\n if (ts instanceof TimeSlotModel) {\n ts.position = this;\n this.addSlot(ts, null, null);\n } else {\n ts.startTime = DateTime.fromJSDate(ts.startTime).setZone(eventTimeZone);\n ts.endTime = DateTime.fromJSDate(ts.endTime).setZone(eventTimeZone);\n let nTS = new TimeSlotModel(ts);\n nTS.position = this;\n this.addSlot(nTS, null, null);\n }\n });\n this.tags = tags.map((p: any): TagModel => {\n if (p instanceof TagModel) {\n return p;\n } else {\n return new TagModel(p);\n }\n });\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n order: this.order,\n description: this.description,\n timeSlots: this.timeSlots.map((ts: TimeSlotModel): any => ts.toJSON()),\n tags: this.tags.map((tag: TagModel): any => tag.id),\n defaultParticipationValidationStatus: this.defaultParticipationValidationStatus,\n maxParticipantsAtTime: this._maxParticipantsAtTime,\n };\n }\n\n public get maxParticipantsAtTime(): number {\n if (this._maxParticipantsAtTime) {\n return this._maxParticipantsAtTime;\n } else {\n return 0;\n }\n }\n\n public set maxParticipantsAtTime(val: number) {\n if (val == 0) {\n this._maxParticipantsAtTime = null;\n } else {\n this._maxParticipantsAtTime = val;\n }\n }\n\n public get timeSlots(): TimeSlotModel[] {\n return this.slotsTree.values;\n }\n\n public set timeSlots(timeSlots: TimeSlotModel[]) {\n\n this.slotsById = new Map();\n timeSlots.forEach((slot) => {\n this.slotsTree.insert([slot.startTime.toMillis(), slot.endTime.toMillis()], slot);\n if (slot.id) {\n this.slotsById.set(slot.id, slot);\n }\n });\n }\n\n public get numberVolunteersRequired() {\n if (this.timeSlots.length > 0) {\n return this.timeSlots.map((ts) => Number(ts.requiredVolunteerCount)).reduce((p, n) => p + n);\n }\n return 0;\n }\n public getCurrentParticipantNumber(participations: ParticipationModel[]): number {\n if (this.timeSlots.length > 0) {\n return this.timeSlots.map((ts) => ts.getCurrentParticipantNumber(participations)).reduce((p, n) => p + n);\n }\n return 0;\n }\n\n\n public addSlot(slot: TimeSlotModel, forRangeStart: DateTime | null, rangeEnd: DateTime | null) {\n this.slotsTree.insert([slot.startTime.toMillis(), slot.endTime.toMillis()], slot);\n if (slot.id) {\n this.slotsById.set(slot.id, slot);\n }\n if (forRangeStart !== null && rangeEnd !== null) {\n const key = forRangeStart.toMillis() + '-' + rangeEnd.toMillis();\n if (this.heightForDayIndex.has(key)) {\n this.heightForDayIndex.delete(key);\n }\n }\n }\n\n public removeSlot(slot: TimeSlotModel, forRangeStart: DateTime | null, rangeEnd: DateTime | null) {\n this.slotsTree.remove([slot.startTime.toMillis(), slot.endTime.toMillis()], slot);\n if (slot.id) {\n this.slotsById.delete(slot.id);\n }\n this.heightForDayIndex.clear();\n if (forRangeStart && rangeEnd) {\n this.defineSlotYIndex(forRangeStart, rangeEnd, true);\n }\n }\n\n public defineSlotYIndex(forRangeStart: DateTime, rangeEnd: DateTime, withPrivate: boolean): number {\n let height = 1;\n\n this.slotsInRange(forRangeStart, rangeEnd, withPrivate).forEach((slot) => {\n const slotOverlaps = this.slotsTree.search([slot.startTime.toMillis() + 1, slot.endTime.toMillis() - 1]);\n\n for (let index = 0; index < slotOverlaps.length; index++) {\n if (index > 0) {\n slotOverlaps[index].currentYIndex = slotOverlaps[index - 1].currentYIndex + 1;\n } else {\n slotOverlaps[index].currentYIndex = 0;\n }\n }\n height = Math.max(slotOverlaps.length, height);\n });\n return height;\n }\n\n public getTimeLineNumberOfItems(forRangeStart: DateTime, rangeEnd: DateTime, withPrivate: boolean, dynamic: boolean = false): number {\n // si aucun ou 1 seul slot => 1 hauteur\n if (this.slotsTree.size <= 1) {\n this.heightForDayIndex.clear();\n return 1;\n }\n\n const key = forRangeStart.toMillis() + '-' + rangeEnd.toMillis();\n // Check cache\n if (this.heightForDayIndex.has(key)) {\n return Number(this.heightForDayIndex.get(key));\n }\n\n let height = 1;\n\n if (this.slotsTree.size > 1) {\n\n this.slotsInRange(forRangeStart, rangeEnd, withPrivate).forEach((slot) => {\n const slotOverlaps = this.slotsTree.search([slot.startTime.toMillis() + 1, slot.endTime.toMillis() - 1]);\n\n if (slotOverlaps.length === 0) {\n slot.currentYIndex = 0;\n } else {\n const positionUsed: number[] = [];\n\n slotOverlaps.forEach((so) => {\n if (so.id === slot.id) {\n for (let index = 0; index < slotOverlaps.length; index++) {\n if (!positionUsed.includes(index)) {\n slot.currentYIndex = index;\n break;\n }\n }\n positionUsed.push(slot.currentYIndex);\n } else {\n positionUsed.push(so.currentYIndex);\n }\n });\n }\n height = Math.max(slot.currentYIndex + 1, height);\n });\n }\n this.heightForDayIndex.set(key, height);\n return height;\n }\n\n\n\n\n\n\n public getTimeLineHeight(forRangeStart: DateTime, rangeEnd: DateTime, withPrivate: boolean, dynamic: boolean = false, displayNames: boolean = false): number {\n // si aucun ou 1 seul slot => 1 hauteur\n // if (this.slotsTree.size <= 1) {\n // this.heightForDayIndex.clear();\n // return 20;\n // }\n\n const key = `${forRangeStart.toMillis()}-${rangeEnd.toMillis()}-${displayNames}`;\n // Check cache\n if (this.heightForDayIndex.has(key)) {\n return Number(this.heightForDayIndex.get(key));\n }\n\n //Default\n let height = 0;\n\n if (this.slotsTree.size > 0) {\n\n this.slotsInRange(forRangeStart, rangeEnd, withPrivate).forEach((slot) => {\n const slotOverlaps = this.slotsTree.search([slot.startTime.toMillis() + 1, slot.endTime.toMillis() - 1]);\n // console.log('----');\n // console.log(`slot : ${slot.timeInfo}`);\n\n if (slotOverlaps.length === 1) {\n slot.currentYIndex = 0;\n height = slot.currentYIndex + slot.getSlotHeight(displayNames);\n } else {\n const positionUsed: number[] = [];\n\n let marginTop = 0;\n slotOverlaps.forEach((so) => {\n // console.log(`\\t slot : ${so.timeInfo}`);\n // console.log(`\\t slot - currentYIndex: ${so.currentYIndex}`);\n // console.log(`\\t slot - height : ${so.getSlotHeight(displayNames)}`);\n\n\n if (so.id === slot.id) {\n slot.currentYIndex = marginTop;\n height = height + so.getSlotHeight(displayNames);\n // console.log(`slot.currentYIndex : ${slot.currentYIndex}`);\n // console.log(`slot.height : ${slot.getSlotHeight(displayNames)}`);\n } else {\n marginTop = so.currentYIndex + so.getSlotHeight(displayNames);\n // console.log(`\\t marginTop -> ${marginTop}`);\n }\n\n });\n }\n // console.log(`Return ${slot.currentYIndex} vs ${height}`);\n\n height = Math.max(slot.currentYIndex + 1, height);\n\n if (this.heightForDayIndex.has(key)) {\n height = Math.max(height, Number(this.heightForDayIndex.get(key)));\n }\n this.heightForDayIndex.set(key, height);\n });\n }\n\n return height;\n }\n\n\n public countNumberOfSlotOverlapTree(slot: TimeSlotModel): number {\n return this.slotsTree.search([slot.startTime.toMillis() + 1, slot.endTime.toMillis() - 1]).length;\n }\n\n\n\n public didContainSlotInDateRange(startDate: DateTime, endDate: DateTime, withPrivate: boolean): boolean {\n return this.slotsInRange(startDate, endDate, withPrivate).length > 0;\n }\n\n\n public getLastSlot(): TimeSlotModel | null {\n if (!this.orderedTimeSlots || this.orderedTimeSlots.length === 0) {\n return null;\n }\n return this.orderedTimeSlots[this.orderedTimeSlots.length - 1];\n }\n\n\n public slotsInRange(startDate: DateTime, endDate: DateTime, withPrivate: boolean): TimeSlotModel[] {\n\n let slots: TimeSlotModel[] = [];\n let startMillis = startDate.toMillis();\n let endMillis = endDate.toMillis();\n\n\n if (withPrivate) {\n slots = this.orderedTimeSlots.filter((slot) => slot.isIncludedOnRange(startDate, endDate));\n } else {\n slots = this.orderedPublicTimeSlots.filter((slot) => slot.isPrivate === false &&\n slot.isIncludedOnRange(startDate, endDate));\n }\n\n return slots;\n }\n\n\n public get orderedTimeSlots(): TimeSlotModel[] {\n const orderedArray = this.timeSlots.slice().sort(function compare(a, b) {\n return a.startTime.toMillis() - b.startTime.toMillis();\n });\n return orderedArray;\n }\n\n public get orderedPublicTimeSlots(): TimeSlotModel[] {\n const publicSlots: TimeSlotModel[] = new Array();\n for (const slot of this.timeSlots) {\n if (!slot.isPrivate) {\n publicSlots.push(slot);\n }\n }\n const orderedArray = publicSlots.slice().sort(function compare(a, b) {\n return a.startTime.toMillis() - b.startTime.toMillis();\n });\n return orderedArray;\n }\n\n public slotWithId(slotId: number): TimeSlotModel | null {\n return this.slotsById.get(slotId) || null;\n }\n\n public debugTree() {\n console.log(this.name);\n console.log(this.slotsTree);\n }\n\n\n\n ////// TAG LOGIC\n\n public get privateTags() {\n return this.tags.filter((t) => t.visibility === 0);\n }\n public get publicTags() {\n return this.tags.filter((t) => t.visibility === 1);\n }\n\n public tagSearch = '';\n public get criteria() {\n // Compute the search criteria\n return this.tagSearch.trim().toLowerCase();\n }\n public get listOfTagsId() {\n return this.tags.map((tag) => Number(tag.id));\n }\n\n public availableTags(baseList: TagModel[]): string[] {\n\n const options = baseList.map((o) => o.fullName);\n\n // Filter out already selected options\n options.filter(opt => this.tags.map((opt) => opt.fullName).indexOf(opt) === -1);\n\n if (this.criteria) {\n // Show only options that match criteria\n return options.filter(opt => opt.toLowerCase().indexOf(this.criteria) > -1);\n }\n // Show all options available\n return options;\n }\n\n public get tagsListwFullName(): string[] {\n return this.tags.map((opt) => opt.fullName).sort();\n }\n\n public getTagStyle(tagName: string) {\n let style = `background-color:#fff; color:#000`;\n this.tags.find((tag) => {\n if (tag.fullName === tagName) {\n style = tag.style;\n }\n });\n return style;\n }\n\n public set tagsListwFullName(list: string[]) {\n const deletedTags = this.tagsListwFullName.filter(opt => list.indexOf(opt) === -1);\n deletedTags.forEach((tag) => {\n this.removeTagByFulleName(tag);\n });\n }\n\n public addTagByFullName(fullName: string, baseList: TagModel[]) {\n const tag = baseList.find((tag) => { return tag.fullName === fullName });\n if (tag) {\n this.tags.push(tag);\n }\n }\n public removeTagByFulleName(fullName: string, updateNeeded: boolean = false) {\n const index = this.tags.findIndex((tag) => { return tag.fullName === fullName });\n if (index !== -1) {\n this.tags.splice(index, 1);\n this.updateNeeded = updateNeeded;\n }\n }\n}\n","export class RewardCategoryModel {\n\n public id: number | null;\n public name: string;\n public hourlyRate: string;\n public icon: string;\n public isDefault: boolean;\n public timeSlotColor: string;\n\n constructor({\n id = null,\n name = '',\n hourlyRate = '',\n icon = '',\n isDefault = false,\n timeSlotColor = '',\n }: {\n id?: number | null,\n name?: string,\n hourlyRate?: string,\n icon?: string,\n isDefault?: boolean,\n timeSlotColor?: string,\n\n } = {}) {\n this.id = id;\n this.name = name;\n this.hourlyRate = hourlyRate;\n this.icon = icon;\n this.isDefault = isDefault;\n this.timeSlotColor = timeSlotColor;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n hourlyRate: this.hourlyRate,\n icon: this.icon,\n isDefault: this.isDefault,\n timeSlotColor: this.timeSlotColor,\n };\n }\n\n static getRewardCategoryFromId(id: number, categories: RewardCategoryModel[]): RewardCategoryModel | null {\n const categ = categories.find((c) => Number(c.id) === Number(id));\n return categ ? categ : null;\n }\n\n static getDefaultRewardCategory(categories: RewardCategoryModel[]): RewardCategoryModel | null {\n const defaultReward = categories.find((c) => c.isDefault);\n return defaultReward ? defaultReward : null;\n }\n\n}\n\n","import { DateTime, Interval } from 'luxon';\nimport { ShopProductModel } from './ShopProductModel';\n\nexport enum OrderStatus {\n AwaitingDelivery = \"awaiting_delivery\",\n Delivered = \"delivered\",\n Cancelled = \"cancelled\",\n}\n\nexport class ShopOrderModel {\n public id: number | null;\n public productName: string;\n public quantity: number;\n public vouchersCodes: string[];\n public product: ShopProductModel;\n public createdAt: Date | null = null;\n public status: OrderStatus;\n\n constructor({\n id = null,\n productName = '',\n quantity = 0,\n vouchersCodes = [],\n product = new ShopProductModel(),\n createdAt = null,\n status = OrderStatus.AwaitingDelivery,\n }: {\n id?: number | null,\n productName?: string,\n quantity?: number,\n vouchersCodes?: string[],\n product?: ShopProductModel,\n createdAt?: Date | null,\n status?: OrderStatus,\n } = {}) {\n this.id = id;\n this.productName = productName;\n this.quantity = quantity;\n this.vouchersCodes = vouchersCodes;\n this.product = product;\n this.createdAt = createdAt;\n this.status = status;\n }\n\n isCancelled() {\n return this.status == OrderStatus.Cancelled;\n }\n\n isDelivered() {\n return this.status == OrderStatus.Delivered;\n }\n}\n","import { DateTime, Interval } from 'luxon';\n\nexport class ShopProductModel {\n\n public id: number | null;\n public name: string;\n public description: string;\n public price: string;\n public image: string;\n public status: string;\n public onSale: boolean;\n\n constructor({\n id = null,\n name = '',\n description = '',\n price = '',\n image = '',\n status = '',\n onSale = false,\n }: {\n id?: number | null,\n name?: string,\n description?: string,\n price?: string,\n image?: string,\n status?: string,\n onSale?: boolean,\n\n } = {}) {\n this.id = id;\n this.name = name;\n this.description = description;\n this.price = price;\n this.image = image;\n this.status = status;\n this.onSale = onSale;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n description: this.description,\n price: this.price,\n image: this.image,\n status: this.status,\n onSale: this.onSale,\n };\n }\n\n}","import * as Utils from '@/assets/js/Utils.js';\n\nexport class TagModel {\n\n public id: number | null = null;\n public name: string;\n public category: TagModel | null = null;\n public createdAt: Date | null;\n public visibility: number = 1;\n public color: string = '';\n public order: number = 0;\n\n constructor({\n id = null,\n name = '',\n category = null,\n createdAt = null,\n visibility = 1, // 0 = interne 1 = public\n color ='',\n order = 0,\n }: {\n id?: number | null,\n name?: string,\n category?: TagModel | null,\n createdAt?: Date | null,\n visibility?: number,\n color?: string,\n order?: number,\n } = {}) {\n this.id = id;\n this.name = name;\n this.category = category;\n this.visibility = visibility;\n this.createdAt = createdAt;\n this.color = color;\n this.order = order;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n };\n }\n\n public get fullName(): string {\n if (this.category) {\n return this.category.name + ' - ' + this.name;\n }\n return this.name;\n }\n\n public get style(): string {\n return `background-color:${this.backgroundColor}; color:${this.textColor}`;\n }\n\n get backgroundColor() {\n let color = '#ffc107';\n if (this.category && this.category.color !== '') {\n color = this.category.color;\n } else if (this.color !== '') {\n color = this.color;\n }\n return color;\n }\n get textColor() {\n return Utils.getTextColor(this.backgroundColor);\n }\n}\n\n","import { DateUtils } from '@/utils/date';\nimport * as Utils from '@/assets/js/Utils.js';\nimport { CustomAnswerModel } from './CustomAnswerModel';\nimport { EventModel } from './EventModel';\nimport { ParticipationModel } from './ParticipationModel';\nimport { DateTime, Interval } from 'luxon';\nimport { PositionModel } from './PositionModel';\nimport i18n from '@/i18n';\nimport { RewardCategoryModel } from './RewardCategoryModel';\nimport { EventService } from '@/services';\n\nexport class TimeSlotModel {\n\n // public static _nbr = 0;\n\n public static create(startDate: DateTime, endDate: DateTime, nbrVol: number) {\n return new TimeSlotModel({\n startTime: startDate,\n endTime: endDate,\n requiredVolunteerCount: nbrVol,\n });\n }\n\n public static copy(slot: TimeSlotModel) {\n return TimeSlotModel.create(slot.startTime, slot.endTime, slot.requiredVolunteerCount);\n }\n\n public static clone(slot: TimeSlotModel) {\n const TS = TimeSlotModel.copy(slot);\n TS.id = slot.id;\n TS.description = slot.description;\n TS.isPrivate = slot.isPrivate;\n TS.series = slot.series;\n TS.rewardCategory = slot.rewardCategory;\n TS.color = slot.color;\n TS.icon = slot.icon;\n TS.hourlyRate = slot.hourlyRate;\n return TS;\n }\n\n public copyValueFrom(slot: TimeSlotModel) {\n this.description = slot.description;\n this.startTime = slot.startTime;\n this.endTime = slot.endTime;\n this.isPrivate = slot.isPrivate;\n this.requiredVolunteerCount = slot.requiredVolunteerCount;\n this.rewardCategory = slot.rewardCategory;\n }\n\n // TS\n public id: number | null = null;\n public description: string;\n public startTime: DateTime;\n public endTime: DateTime;\n public requiredVolunteerCount: number;\n public isPrivate: boolean;\n public duration: number = 0;\n public createdAt: Date | null = null;\n public recurrence: string = '';\n public series: number | null = null;\n\n // Reward\n public rewardCategory: number | null = null;\n public hourlyRate: string = '';\n public _icon: string = '';\n\n public set icon(link: string) {\n this._icon = link;\n }\n public get icon() {\n if (this._icon && this._icon !== '') {\n return this._icon;\n }\n return '';\n }\n\n // FOR DISPLAY\n public currentYIndex: number = 0;\n\n // Ref participations\n public participations: ParticipationModel[] = [];\n public participationId: number | null = null;\n public nbParticipants: number = 0;\n public participants: string[] = [];\n\n // Printing et ref\n public positionId: number;\n public position: PositionModel | null = null;\n public positionName: string = '';\n\n // Ref Event\n public eventId: number | null = null;\n public eventName: string = '';\n public event: EventModel | null = null;\n\n public isSelectedOnList = false;\n public startBeforeRange = false;\n public endBeforeRange = false;\n\n constructor({\n id = null,\n description = '',\n startTime = DateTime.fromMillis(0),\n endTime = DateTime.fromMillis(0),\n requiredVolunteerCount = 0,\n isPrivate = false,\n nbParticipants = 0,\n participants = [],\n duration = 0,\n series = null,\n position = -1,\n positionName = '',\n rewardCategory = null,\n }: {\n id?: number | null,\n description?: string,\n startTime?: DateTime,\n endTime?: DateTime,\n requiredVolunteerCount?: number,\n isPrivate?: boolean,\n nbParticipants?: number,\n participants?: string[],\n duration?: number,\n series?: number | null,\n position?: number,\n positionName?: string,\n rewardCategory?: number | null,\n } = {}) {\n this.id = id;\n this.description = description;\n this.startTime = startTime;\n this.endTime = endTime;\n this.isPrivate = isPrivate;\n this.requiredVolunteerCount = requiredVolunteerCount;\n this.nbParticipants = nbParticipants;\n this.participants = participants;\n this.duration = duration;\n this.series = series;\n this.positionId = position;\n this.positionName = positionName;\n this.rewardCategory = rewardCategory;\n }\n\n public toJSON(): any {\n const json: any = {\n id: this.id,\n description: this.description,\n startTime: this.startTime.toISO(),\n endTime: this.endTime.toISO(),\n requiredVolunteerCount: this.requiredVolunteerCount,\n isPrivate: this.isPrivate,\n series: this.series,\n position: this.positionId,\n rewardCategory: this.rewardCategory,\n };\n if (this.recurrence !== '') {\n json.recurrence = this.recurrence;\n }\n if (this.position) {\n json.position = this.position.id;\n }\n return json;\n }\n\n public get hours() {\n return Interval.fromDateTimes(this.startTime, this.endTime).toDuration('hours').hours;\n }\n public get hoursMinutes() {\n return Interval.fromDateTimes(this.startTime, this.endTime).toDuration(['hours', 'minutes']).toObject();\n }\n\n public get points() {\n if (this.hourlyRate !== '') {\n return this.hours * Number(this.hourlyRate);\n }\n\n return 0;\n }\n\n public get printName() {\n if (this.position) {\n return this.position.name;\n } else if (this.positionName != '') {\n return this.positionName;\n } else {\n return \"Error\";\n }\n }\n\n private iColor: string = '';\n public get color(): string {\n if (this.iColor) {\n return this.iColor;\n }\n return '';\n }\n\n public get listHeight() {\n return this.participants.length * 18;\n }\n public getSlotHeight(displayNames: boolean = false) {\n let base = 40;\n if (this.description !== '') {\n base = 60;\n }\n if (displayNames) {\n base = base + this.listHeight;\n }\n return base;\n }\n\n public set color(newValue: string) {\n this.iColor = newValue;\n }\n\n getRewardCategoryFromList(rewardCategories: RewardCategoryModel[]) {\n return rewardCategories.find((item) => item.id === this.rewardCategory);\n }\n\n\n public getParticipations(participations: ParticipationModel[]): ParticipationModel[] {\n return participations.filter((part) => {\n if (part.timeSlotId === -1 && part.timeSlot && part.timeSlot.id) {\n return part.timeSlot.id === this.id;\n }\n return part.timeSlotId === this.id\n });\n }\n\n public overlapOne(timeslots: TimeSlotModel[]): boolean {\n let result = false;\n\n timeslots.forEach((slot) => {\n if (slot.startTime.toMillis() < this.startTime.toMillis() && slot.endTime.toMillis() > this.endTime.toMillis()) {\n // Cas 1, le shift testé commence avant et termine après le shift source\n result = result || true;\n } else if (slot.startTime.toMillis() < this.endTime.toMillis() && slot.endTime.toMillis() > this.endTime.toMillis()) {\n // Cas 2, le shift testé commence pendant le shift source\n result = result || true;\n } else if (slot.endTime.toMillis() > this.startTime.toMillis() && slot.startTime.toMillis() < this.startTime.toMillis()) {\n // Cas 3, le shift testé termine pendant le shift source (mais commence avant)\n result = result || true;\n } else if (slot.startTime.toMillis() < this.endTime.toMillis() && slot.endTime.toMillis() > this.startTime.toMillis()) {\n // Cas 4, le shift testé commence et termine pendant le shift source\n result = result || true;\n }\n });\n return result;\n }\n\n public isIncludedOnRange(startDate: DateTime, endDate: DateTime): boolean {\n let result = false;\n\n const shiftStart = this.startTime.toMillis();\n const shiftEnd = this.endTime.toMillis();\n const rangeStart = startDate.toMillis();\n const rangeEnd = endDate.toMillis();\n\n this.startBeforeRange = shiftStart < rangeStart;\n this.endBeforeRange = rangeEnd < shiftEnd;\n\n return shiftStart < rangeEnd && shiftEnd > rangeStart /*&& shiftEnd <= rangeEnd*/;\n }\n\n public getCurrentParticipantNumber(participations: ParticipationModel[]): number {\n const parts = this.getParticipations(participations);\n if (parts.length > 0 && this.nbParticipants === 0) {\n this.nbParticipants = parts.map((part) => part.nbParticipants).reduce((p, n) => p + n)\n }\n return this.nbParticipants;\n }\n\n public get numberVolunteersRequired() {\n return this.requiredVolunteerCount;\n }\n public set numberVolunteersRequired(value: number) {\n this.requiredVolunteerCount = value;\n }\n\n public get timeInfo() {\n var diffInDay = this.endTime.startOf('day').diff(this.startTime.startOf('day'), 'day');\n diffInDay.toObject();\n const daysOffset = this.endTime.day - this.startTime.day;\n\n var formattedMinute = (\"0\" + this.hoursMinutes.minutes).slice(-2);\n\n return `${this.startTime.toFormat('HH:mm')} - ${this.endTime.toFormat('HH:mm')}` +\n (daysOffset > 1 ? ` (+${daysOffset}${i18n.t('jour_small')})` : '') +\n ` [${this.hoursMinutes.hours}h${formattedMinute}]`;\n }\n\n public get smallTimeInfo() {\n var diffInDay = this.endTime.startOf('day').diff(this.startTime.startOf('day'), 'day');\n diffInDay.toObject();\n const daysOffset = this.endTime.day - this.startTime.day;\n\n var formattedMinute = (\"0\" + this.hoursMinutes.minutes).slice(-2);\n\n return `${this.startTime.toFormat('HH:mm')} - ${this.endTime.toFormat('HH:mm')}` +\n (daysOffset > 1 ? ` (+${daysOffset}${i18n.t('jour_small')})` : '');\n }\n\n\n // INLINE FORM METHOD\n private _inlineStartDate = '';\n get inlineStartDate() {\n if (this._inlineStartDate === '') {\n this._inlineStartDate = this.startTime.toFormat('yyyy-LL-dd');\n }\n return this._inlineStartDate;\n }\n set inlineStartDate(value: string) {\n this._inlineStartDate = value;\n }\n\n private _inlineEndDate = '';\n get inlineEndDate() {\n if (this._inlineEndDate === '') {\n this._inlineEndDate = this.endTime.toFormat('yyyy-LL-dd');\n }\n return this._inlineEndDate;\n }\n set inlineEndDate(value: string) {\n this._inlineEndDate = value;\n }\n\n private _inlineStartTime = '';\n get inlineStartTime() {\n if (this._inlineStartTime === '') {\n this._inlineStartTime = this.startTime.toFormat('HH:mm');\n }\n return this._inlineStartTime;\n }\n set inlineStartTime(value: string) {\n this._inlineStartTime = value;\n }\n\n private _inlineEndTime = '';\n get inlineEndTime() {\n if (this._inlineEndTime === '') {\n this._inlineEndTime = this.endTime.toFormat('HH:mm');\n }\n return this._inlineEndTime;\n }\n set inlineEndTime(value: string) {\n this._inlineEndTime = value;\n }\n\n\n}\n","import { OrganizationModel } from '@/models/OrganizationModel';\nimport { AuthenticationService } from '@/services';\nimport { AxiosResponse } from 'axios';\n\nexport class UserModel {\n\n public email: string;\n public firstName: string;\n public lastName: string;\n public token: string;\n public isSuperUser: boolean;\n public isStaff: boolean;\n public language: string;\n public dfaId: string;\n public activeOrganization: number;\n public availableOrganizations: OrganizationModel[] = [];\n\n constructor({\n email = '',\n firstName = '',\n lastName = '',\n token = '',\n isSuperUser = false,\n isStaff = false,\n activeOrganization = -1,\n availableOrganizations = [],\n language = '',\n dfaId = '',\n } = {}) {\n this.email = email;\n this.firstName = firstName;\n this.lastName = lastName;\n this.token = token;\n this.isSuperUser = isSuperUser;\n this.isStaff = isStaff;\n this.activeOrganization = activeOrganization;\n this.availableOrganizations = availableOrganizations.map((d: any): OrganizationModel => {\n let org;\n if (d instanceof OrganizationModel) {\n org = d;\n } else {\n org = new OrganizationModel(d);\n }\n return org;\n });\n this.language = language;\n this.dfaId = dfaId;\n }\n\n public toJSON(): any {\n return {\n email: this.email,\n firstName: this.firstName,\n lastName: this.lastName,\n token: this.token,\n isSuperUser: this.isSuperUser,\n isStaff: this.isStaff,\n language: this.language,\n dfaId: this.dfaId,\n // activeOrganization: this.activeOrganization,\n // availableOrganizations: this.availableOrganizations,\n };\n }\n\n\n\n\n private _waitForRefresh = false;\n\n public get currentOrganization(): OrganizationModel | null {\n const org = this.availableOrganizations.find((org) => {\n return org.id === this.activeOrganization;\n });\n\n if (org === undefined) {\n if (!this._waitForRefresh) {\n this._waitForRefresh = true;\n AuthenticationService.instance.getOrganizations(this).then((organization: OrganizationModel | undefined) => {\n this._waitForRefresh = false;\n return organization;\n });\n }\n\n return null;\n }\n return org;\n }\n\n}\n","\nexport class VolunteerCategoryModel {\n\n public id: number | null = null;\n public organizationId: number | null = null;\n public name: string;\n public isByDefault: boolean = false;\n\n constructor({\n id = null,\n organizationId = null,\n name = '',\n isByDefault = false,\n }: {\n id?: number | null,\n organizationId?: number | null,\n name?: string,\n isByDefault?: boolean,\n } = {}) {\n this.id = id;\n this.organizationId = organizationId;\n this.name = name;\n this.isByDefault = isByDefault;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n organizationId: this.organizationId,\n name: this.name,\n isByDefault: this.isByDefault,\n };\n }\n}\n","import { DateUtils } from '@/utils/date';\nimport { ParticipationModel } from './ParticipationModel';\nimport { TimeSlotModel } from './TimeSlotModel';\nimport { EventModel } from './EventModel';\nimport { VolunteerCategoryModel } from './VolunteerCategoryModel';\nimport { EventDayModel } from './EventDayModel';\nimport { AttributeModel } from './Form/AttributeModel';\n\ninterface CustomAttributeValue {\n attribute: number;\n participation: number | null;\n value: number | string | boolean | Date;\n}\n\nexport class VolunteerModel {\n\n public static copy(vol: VolunteerModel): VolunteerModel {\n const vol2 = new VolunteerModel();\n vol2.id = vol.id;\n vol2.firstName = vol.firstName;\n vol2.lastName = vol.lastName;\n vol2.email = vol.email;\n vol2.phoneNumber = vol.phoneNumber;\n vol2.bornDate = vol.bornDate;\n vol2.commentaire = vol.commentaire;\n vol2.participationIds = vol.participationIds;\n vol2.participations = vol.participations;\n vol2.numberSlots = vol.numberSlots;\n vol2.tshirt = vol.tshirt;\n vol2.categories = vol.categories;\n vol2.categoryIds = vol.categoryIds;\n vol2.address = vol.address;\n vol2.town = vol.town;\n vol2.postcode = vol.postcode;\n\n return vol2;\n }\n\n public id: number | null = null;\n public firstName: string;\n public lastName: string;\n public email: string;\n public phoneNumber: string;\n public address: string;\n public town: string;\n public postcode: string;\n public tshirt: string;\n public commentaire: string;\n public bornDate: Date | null;\n public participationIds: number[];\n public organizationId: number | null = null;\n public participations: ParticipationModel[] = [];\n public numberSlots = 0;\n public createdAt: Date | null;\n public categories: VolunteerCategoryModel[] = [];\n public categoryIds: number[];\n public nbVouchersAllowed: number = 0;\n public profilePicture: string;\n public customAttributeValues: CustomAttributeValue[] = [];\n\n // Testing for assigner\n public isSelectedOnList = false;\n\n public pointsBalance: number | null = null;\n\n constructor({\n id = null,\n organizationId = null,\n firstName = '',\n lastName = '',\n email = '',\n phoneNumber = '',\n address = '',\n profilePicture = '',\n town = '',\n postcode = '',\n bornDate = null,\n commentaire = '',\n tshirt = '',\n participationIds = [],\n createdAt = null,\n categories = [],\n categoryIds = [],\n numberSlots = 0,\n nbVouchersAllowed = 0,\n pointsBalance = null,\n customAttributeValues = [],\n }: {\n id?: number | null,\n organizationId?: number | null,\n firstName?: string,\n lastName?: string,\n email?: string,\n phoneNumber?: string,\n address?: string,\n town?: string,\n profilePicture?: string,\n postcode?: string,\n bornDate?: Date | null,\n commentaire?: string,\n tshirt?: string,\n participationIds?: number[],\n createdAt?: Date | null,\n categories?: VolunteerCategoryModel[],\n categoryIds?: number[],\n numberSlots?: number,\n nbVouchersAllowed?: number,\n pointsBalance?: null | number,\n customAttributeValues?: { attribute: number; participation: number | null; value: number | string | boolean | Date }[],\n } = {}) {\n this.id = id;\n this.organizationId = organizationId;\n this.firstName = firstName;\n this.lastName = lastName;\n this.email = email;\n this.phoneNumber = phoneNumber;\n this.profilePicture = profilePicture;\n this.address = address;\n this.town = town;\n this.postcode = postcode;\n this.tshirt = tshirt;\n this.commentaire = commentaire;\n this.bornDate = bornDate;\n this.participationIds = participationIds;\n this.createdAt = createdAt;\n this.categories = categories;\n this.numberSlots = numberSlots;\n this.categoryIds = categoryIds;\n this.nbVouchersAllowed = nbVouchersAllowed;\n this.pointsBalance = pointsBalance;\n this.customAttributeValues = customAttributeValues;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n organizationId: this.organizationId,\n firstName: this.firstName,\n lastName: this.lastName,\n email: this.email,\n phoneNumber: this.phoneNumber,\n address: this.address,\n town: this.town,\n postcode: this.postcode,\n bornDate: DateUtils.dateToISODate(this.bornDate),\n commentaire: this.commentaire,\n participationIds: this.participationIds,\n categories: this.categories.map((category) => category.id),\n categoriesIds: this.categoryIds,\n tshirt: this.tshirt,\n };\n }\n\n public toPublicJSON(): any {\n return {\n id: this.id,\n firstName: this.firstName,\n lastName: this.lastName,\n email: this.email,\n phoneNumber: this.phoneNumber,\n address: this.address,\n town: this.town,\n postcode: this.postcode,\n bornDate: DateUtils.dateToISODate(this.bornDate),\n tshirt: this.tshirt,\n };\n }\n\n\n public get orderedParticipations(): ParticipationModel[] {\n const ordered = this.participations.slice().sort((a, b) => {\n return a.timeSlot.startTime.toMillis() - b.timeSlot.startTime.toMillis();\n });\n return ordered;\n }\n\n public get timeslots(): TimeSlotModel[] {\n const res: TimeSlotModel[] = [];\n if (this.orderedParticipations) {\n this.orderedParticipations.forEach((iresume) => {\n const detail = iresume.timeSlot;\n detail.participationId = iresume.id;\n detail.eventName = iresume.eventName;\n detail.eventId = iresume.eventId;\n detail.createdAt = iresume.createdAt;\n res.push(detail);\n });\n }\n return res;\n }\n\n public get age() {\n if (!this.bornDate) {\n return null;\n }\n\n const today = new Date();\n let age = today.getFullYear() - this.bornDate.getFullYear();\n const m = today.getMonth() - this.bornDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < this.bornDate.getDate())) {\n age--;\n }\n\n if (age >= 18) {\n return '+18';\n } else if (age >= 16) {\n return '16-18';\n } else if (age >= 14) {\n return '14-16';\n } else if (age < 14) {\n return '-14';\n }\n\n return age;\n }\n\n public get groupDurations() {\n let duration = 0;\n this.participations.filter((p) => p.nbParticipants > 1).forEach((participation) => {\n duration += participation.duration;\n });\n return duration;\n }\n\n public get duration() {\n let duration = 0;\n this.participations.forEach((p) => {\n duration += p.duration;\n });\n return duration;\n }\n\n public containsGroup(): boolean {\n return this.participations.find((p) => p.nbParticipants > 1) !== undefined;\n }\n public groupNames(): string[] {\n return [...new Set(this.participations.map((p) => p.groupName))];\n }\n\n public getTimeSlotsForDay(eventDay: EventDayModel, inEvent: EventModel): TimeSlotModel[] {\n const ts: TimeSlotModel[] = [];\n this.participations.forEach((part) => {\n ts.push(...part.getTimeSlotIdsForCurrentDay(eventDay, inEvent));\n });\n return ts;\n }\n\n public getParticipationsForDay(eventDay: EventDayModel, inEvent: EventModel, removedRejected: boolean = false): ParticipationModel[] {\n const parts: ParticipationModel[] = [];\n if (removedRejected) {\n this.participations.filter((part) => {\n return part.validationStatus === 0 || part.validationStatus === 1 || part.validationStatus === 6;\n }).forEach((part) => {\n if (part.getTimeSlotIdsForCurrentDay(eventDay, inEvent).length > 0) {\n parts.push(part);\n }\n });\n\n } else {\n this.participations.forEach((part) => {\n if (part.getTimeSlotIdsForCurrentDay(eventDay, inEvent).length > 0) {\n parts.push(part);\n }\n });\n }\n return parts;\n }\n\n}\n","import Vue from 'vue';\nimport Router, { RawLocation, Route, RouteRecord } from 'vue-router';\nimport { AuthenticationService } from '@/services';\nimport { UserModel } from '@/models/UserModel';\nimport i18n from '@/i18n';\nimport { v4404rUrl, v4Url, v4VolunteerUrl } from '@/_nav';\nimport { OrganizationModel } from './models/OrganizationModel';\nimport { PermissionLib } from './services/PermissionLib';\n\n// Containers\nconst ADMINCONTAINER = () => import('./containers/AdminContainer.vue');\nconst LOGINCONTAINER = () => import('./containers/LoginContainer.vue');\nconst PUBLICCONTAINER = () => import('./containers/PublicContainer.vue');\n\n// Views\nconst DASHBOARD = () => import('./views/dashboard/Dashboard.vue');\n\n// User specific\nconst PROFILEPAGEUSER = () => import('./components/user/ProfileUser.vue');\nconst PROFILEPAGEORG = () => import('./components/user/ProfileOrg.vue');\nconst SUBSCRIPTIONS = () => import('./views/user/Subscriptions.vue');\n\n// HOME\nconst CONTACT = () => import('./views/public/AdminContact.vue');\nconst DOC = () => import('./views/public/documentation/DocMain.vue');\nconst SOON = () => import('./views/public/documentation/Soon.vue');\nconst WHATSNEW = () => import('@/views/public/ReleaseNotes/ReleaseNoteMain.vue');\nconst VLOG = () => import('@/views/public/vlog/VlogMain.vue');\n\n// EVENT\nconst PUBLIC_CAL_EVENT = () => import('./views/public/PublicEventCALDetail.vue');\nconst PUBLIC_GLOBAL_CAL = () => import('./views/public/PublicGlobalCal.vue');\nconst EVENTLIST = () => import('./views/EventList.vue');\nconst EVENTARCHIVELIST = () => import('./views/EventArchiveList.vue');\nconst EVENTDETAIL = () => import('./views/EventDetail.vue');\nconst EVENTPLAN = () => import('./views/EventPlanning.vue');\nconst EVENTCLONING = () => import('./views/EventCloning.vue');\nconst EVENTVOLUNTEERS = () => import('./views/EventVolunteersDetail.vue');\nconst EVENTVOLUNTEERSASSIGN = () => import('./views/assignments/EventVolunteersAssign.vue');\nconst CALENDAR = () => import('@/views/Calendar.vue');\n\n// const MANAGER_EVENT = () => import('@/views/public/PublicManagerDetail.vue');\nconst MANAGER_EVENT = () => import('@/views/public/PlanningOperationnelFullScreen.vue');\n\n\nconst VOLUNTEER_CMP_DETAIL = () => import('@/views/public/Portail/VolPortailCampaignDetail.vue');\n\n// CAMPAIGN\nconst CMPLIST = () => import('@/views/campaign/CampaignList.vue');\nconst CMPDETAIL = () => import('@/views/campaign/CampaignDetail.vue');\nconst CMPVOLUNTEERS = () => import('./views/campaign/CampaignVolunteersAdmin.vue');\n\n// MANAGER\nconst MANAGERLIST = () => import('@/views/managers/ManagerList.vue');\nconst MANAGERDETAIL = () => import('@/views/managers/ManagerDetail.vue');\n\n// ACTIONS\nconst PRINT = () => import('./views/actions/ActionPrint.vue');\nconst PRINTPPB = () => import('./views/actions/ActionPrintPPB.vue');\nconst PRINTBON = () => import('./views/actions/ActionPrintBon.vue');\n\n\n// RESET PWD\nconst LOGIN = () => import('@/views/pages/Login.vue');\nconst REGISTER = () => import('@/views/pages/Register.vue');\nconst LOGOUT = () => import('@/views/pages/Logout.vue');\nconst VERIFY = () => import('@/views/pages/VerifyEmail.vue');\nconst RESETPWD = () => import('@/views/pages/PasswordReset.vue');\nconst RESETPWDCONFIRM = () => import('@/views/pages/PasswordResetConfirm.vue');\n\nconst MANAGERPAGE = () => import('@/views/public/joj/ManagerMain.vue');\nconst VOLUNTEER_LOGIN = () => import('@/views/public/Portail/VolLoginPage.vue');\nconst VOLUNTEER_LOGIN_WITH_TOKEN = () => import('@/views/public/Portail/VolPortailMain.vue');\n\nconst PUBLIC_HOME = () => import('@/views/public/org/PublicHome.vue');\nconst PUBLIC_CONTACT = () => import('@/views/public/org/PublicContact.vue');\n\nconst TEMPDEV = () => import('@/components/event-detail/EventDetailScheduling.vue')\n\nconst SHOPCONFIG = () => import('@/views/shop/ShopConfig.vue')\n\nVue.use(Router);\n\n// const MAINTENANCE_MODE = process.env.VUE_APP_MAINTENANCE_MODE === 'True';\nconst MAINTENANCE_MODE = false;\n\n\nconst router = new Router({\n mode: 'history', // https://router.vuejs.org/api/#mode\n base: process.env.BASE_URL,\n linkActiveClass: 'open active',\n routes: [\n {\n path: '/:orgSlug/public_manager/:orgID',\n name: 'public_manager_event_detail_uuid',\n meta: { requiresAuth: false, label: 'EHRO - Espace manager' },\n component: MANAGERPAGE,\n props: true,\n },\n\n\n {\n path: '/404',\n meta: { requiresAuth: false },\n name: '404',\n beforeEnter(to, from, next) {\n window.location.href = v4404rUrl();\n },\n },\n {\n path: '/500',\n name: '500',\n meta: { requiresAuth: false },\n beforeEnter(to, from, next) {\n window.location.href = v4404rUrl();\n },\n },\n\n // REDIRECT TO PUBLIC SITE\n {\n path: '/home',\n name: 'public-home',\n meta: { requiresAuth: false },\n beforeEnter() {\n location.href = `${process.env.VUE_APP_PUBLIC_SITE}home`;\n },\n },\n\n\n // ADMIN PART\n {\n path: '/',\n redirect: '/dashboard',\n name: 'EHRO',\n meta: { requiresAuth: true, label: 'EHRO' },\n component: ADMINCONTAINER,\n children: [\n {\n path: 'dashboard',\n name: 'dashboard',\n meta: { label: i18n.t('dashboard') },\n component: DASHBOARD,\n },\n {\n path: 'Profile-user',\n name: 'profile-user',\n meta: { label: 'Profil' },\n component: PROFILEPAGEUSER,\n props: true,\n },\n {\n path: 'Profile-org',\n name: 'profile-org',\n meta: { label: i18n.tc('organization', 1) },\n component: PROFILEPAGEORG,\n props: true,\n },\n {\n path: 'Subscriptions',\n name: 'subscriptions',\n meta: { label: i18n.tc('paiement', 2) },\n component: SUBSCRIPTIONS,\n props: true,\n },\n {\n path: 'events',\n redirect: 'events/list',\n name: 'Events',\n meta: { label: 'Events' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'list',\n name: 'event-list',\n meta: { label: 'List' },\n component: EVENTLIST,\n },\n {\n path: 'archive',\n name: 'event-archive',\n meta: { label: 'Archives' },\n component: EVENTARCHIVELIST,\n },\n {\n path: 'new',\n name: 'event-detail-new',\n meta: { label: 'Create' },\n component: EVENTDETAIL,\n },\n {\n path: 'calendar',\n name: 'calendar',\n component: CALENDAR,\n meta: { label: i18n.t('calendar') },\n },\n {\n path: 'cloning/:eventId',\n name: 'event-cloning',\n meta: { label: i18n.t('path_cloning') },\n component: EVENTCLONING,\n props: true,\n },\n {\n path: ':eventId',\n name: 'event-detail-edit',\n meta: { label: 'Edit' },\n component: EVENTDETAIL,\n props: true,\n },\n {\n path: ':eventId/plannig',\n name: 'event-detail-plan',\n meta: { label: i18n.t('event_action_plan') },\n component: EVENTPLAN,\n props: true,\n },\n\n {\n path: 'dev/:eventId',\n name: 'event-dev',\n meta: { label: 'DEV' },\n component: TEMPDEV,\n props: true,\n },\n {\n path: 'assign/:eventId',\n name: 'event-volunteers-affectation',\n component: EVENTVOLUNTEERSASSIGN,\n props: true,\n meta: { label: 'Affectation des inscriptions' },\n },\n {\n path: 'volunteers/:eventId',\n name: 'event-volunteers-detail',\n component: EVENTVOLUNTEERS,\n props: true,\n meta: { label: 'Gestion des inscriptions' },\n },\n\n ],\n },\n {\n path: 'campaigns',\n redirect: 'campaigns/list',\n name: 'Campaign',\n meta: { label: i18n.tc('campaign', 2) },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'new',\n name: 'campaign-detail-new',\n meta: { label: 'Create' },\n component: CMPDETAIL,\n },\n {\n path: 'list',\n name: 'campaign-list',\n meta: { label: 'List' },\n component: CMPLIST,\n },\n {\n path: ':cmpId',\n name: 'campaign-detail-edit',\n meta: { label: 'Edit' },\n component: CMPDETAIL,\n props: true,\n },\n {\n path: 'volunteers/:cmpId',\n name: 'campaign-volunteers-detail',\n component: CMPVOLUNTEERS,\n props: true,\n meta: { label: 'Gestion des inscriptions' },\n },\n {\n path: 'volunteer/:volunteerId',\n name: 'campaign-volunteer-profile',\n meta: { label: i18n.t('profile') },\n props: true,\n beforeEnter(to, from, next) {\n window.location.href = v4VolunteerUrl(Number(to.params.volunteerId));\n },\n },\n ],\n },\n {\n path: 'volunteer',\n redirect: 'volunteer/list',\n name: 'Volunteers',\n meta: { label: 'Volunteers' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'list',\n name: 'volunteer-list',\n meta: { label: 'List' },\n beforeEnter(to, from, next) {\n window.location.href = v4Url('/volunteers/');\n },\n },\n {\n path: 'category',\n name: 'volunteer-category',\n meta: { label: 'Mes categories' },\n beforeEnter(to, from, next) {\n window.location.href = v4Url('/categories/');\n },\n },\n {\n path: ':volunteerId',\n name: 'volunteer-profile',\n meta: { label: i18n.t('profile') },\n props: true,\n beforeEnter(to, from, next) {\n window.location.href = v4VolunteerUrl(Number(to.params.volunteerId));\n },\n },\n ],\n },\n {\n path: 'manager',\n redirect: 'manager/list',\n name: 'Managers',\n meta: { label: 'Managers' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'list',\n name: 'Managers-list',\n meta: { label: 'Managers' },\n component: MANAGERLIST,\n },\n ],\n },\n {\n path: 'shop',\n redirect: 'Shop/Config',\n name: 'Shop',\n meta: { label: 'Shop' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'config',\n name: 'shop-config',\n meta: { label: 'Config' },\n component: SHOPCONFIG,\n },\n ],\n },\n {\n path: 'action',\n redirect: '/action/communication',\n name: 'Action',\n meta: { label: 'Action' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'print',\n name: 'Print',\n meta: { label: 'Impression / Plannings' },\n component: PRINT,\n },\n {\n path: 'print-ppb',\n name: 'Print-ppb',\n meta: { label: 'Impression / Plannings par bénévole' },\n component: PRINTPPB,\n },\n {\n path: 'print-bon',\n name: 'Print-bon',\n meta: { label: 'Impression / Bons' },\n component: PRINTBON,\n },\n ],\n },\n {\n path: 'infos',\n redirect: '/infos/whatsnew',\n name: 'Infos',\n meta: { label: 'Infos' },\n component: {\n render(c: any) { return c('router-view'); },\n },\n children: [\n {\n path: 'whatsnew',\n name: 'whatsnew',\n meta: { label: 'Quoi de neuf?' },\n component: WHATSNEW,\n },\n {\n path: 'contact',\n name: 'Contact',\n meta: { label: 'Contact' },\n component: CONTACT,\n },\n {\n path: 'doc',\n name: 'doc',\n meta: { label: 'Documentation' },\n component: DOC,\n },\n {\n path: 'vlog',\n name: 'vlog',\n meta: { label: 'Vlog' },\n component: VLOG,\n },\n {\n path: 'soon',\n name: 'soon',\n meta: { label: 'À venir' },\n component: SOON,\n },\n ],\n },\n ],\n },\n\n // ACCOUNT PAGES\n {\n path: '/account',\n redirect: '/account/404',\n name: 'Account',\n meta: { requiresAuth: false },\n component: LOGINCONTAINER,\n children: [\n {\n path: 'login',\n name: 'public-login',\n meta: { requiresAuth: false },\n component: LOGIN,\n },\n {\n path: 'register',\n name: 'public-register',\n meta: { requiresAuth: false },\n component: REGISTER,\n },\n {\n path: 'verify-user',\n name: 'verify-user',\n meta: { requiresAuth: false },\n props: true,\n component: VERIFY,\n },\n {\n path: 'reset-password',\n name: 'reset-password',\n meta: { requiresAuth: false },\n props: true,\n component: RESETPWD,\n },\n {\n path: 'reset-password-confirm',\n name: 'reset-password-confirm',\n meta: { requiresAuth: false },\n props: true,\n component: RESETPWDCONFIRM,\n },\n {\n path: 'logout',\n meta: { requiresAuth: false },\n name: 'public-logout',\n component: LOGOUT,\n },\n\n ],\n },\n\n\n\n\n // PUBLIC IFRAME\n {\n path: '/iframe_login/:orgSlug/:logo',\n name: 'public_iframe_vol_login',\n meta: { requiresAuth: false, label: 'Espace bénévole' },\n component: VOLUNTEER_LOGIN,\n props: true,\n },\n\n // PUBLIC PART\n {\n path: '/o/:orgSlug',\n props: true,\n meta: { requiresAuth: false, label: 'EHRO' },\n component: PUBLICCONTAINER,\n children: [\n {\n path: '/',\n name: 'org-home',\n meta: { requiresAuth: false, label: 'Organization' },\n props: true,\n component: PUBLIC_HOME,\n },\n {\n path: 'calendar',\n name: 'org-global-calendar',\n meta: { requiresAuth: false, label: 'Calendar' },\n props: true,\n component: PUBLIC_GLOBAL_CAL,\n },\n {\n path: 'volunteer-login',\n name: 'volunteer-events-list',\n meta: { requiresAuth: false, label: 'Espace bénévole' },\n component: VOLUNTEER_LOGIN,\n props: true,\n },\n {\n path: 'volunteer-schedule/:token',\n name: 'volunteer-schedule',\n meta: { requiresAuth: false, label: 'Espace bénévole' },\n component: VOLUNTEER_LOGIN_WITH_TOKEN,\n props: true,\n },\n {\n path: 'volunteer-schedule/:token/c/:cmpid/r/:regid',\n name: 'volunteer-schedule_cmp_detail',\n meta: { requiresAuth: false, label: 'Espace bénévole' },\n component: VOLUNTEER_CMP_DETAIL,\n props: true,\n },\n {\n path: 'events',\n name: 'public_events_list',\n redirect: '/o/:orgSlug',\n meta: { requiresAuth: false, label: 'Events' },\n props: true,\n component: PUBLIC_HOME,\n },\n {\n path: 'event/',\n redirect: 'org-home',\n meta: { requiresAuth: false },\n },\n\n {\n path: 'e-cal/:eventUUID',\n name: 'public_ecal_detail_uuid',\n meta: { requiresAuth: false, label: 'Inscriptions' },\n props: true,\n component: PUBLIC_CAL_EVENT,\n },\n {\n path: 'contact',\n name: 'public_contact',\n meta: { requiresAuth: false, label: 'Contact' },\n props: true,\n component: PUBLIC_CONTACT,\n },\n ],\n },\n\n { path: '*', redirect: '/404' },\n ],\n});\n\nrouter.beforeEach((\n to: Route,\n from: Route,\n next: (to?: RawLocation | false | ((vm: Vue) => any) | void) => void,\n) => {\n if (process.env.VUE_APP_BASE_API_URL === 'http://localhost:8000') {\n document.title = 'LOCAL SUPER EHRO';\n } else if (process.env.VUE_APP_BASE_API_URL === 'https://api.staging.ehro.app') {\n document.title = 'STAGING SUPER EHRO';\n } else {\n document.title = 'SUPER EHRO';\n }\n\n\n let isSuperUser = false;\n if (AuthenticationService.instance.isSuperAdmin) {\n isSuperUser = true;\n }\n\n const lang = AuthenticationService.instance.language;\n\n\n // HACK CHAMPAGNE !!!!\n if (AuthenticationService.instance.permissionLib.isHackCHAMPAGNESALLES || AuthenticationService.instance.permissionLib.isPublicHackCHAPAGNESALLES) {\n import(`@/lang/fr_champagne`).then((msgs) => {\n i18n.setLocaleMessage('fr', msgs.default);\n i18n.locale = 'fr';\n });\n } else {\n import(`@/lang/${lang}`).then((msgs) => {\n i18n.setLocaleMessage(lang, msgs.default);\n i18n.locale = lang;\n });\n }\n\n if (to.hash.startsWith('#/')) {\n let url = process.env.VUE_APP_ADMIN_SITE + to.hash.substring(2);\n window.location.href = url;\n return;\n }\n\n // Si la destination ne nécessite pas de login, on l'affiche\n if ((to.meta !== undefined && to.meta.requiresAuth !== undefined && !to.meta.requiresAuth)) {\n next();\n } else if (to.name === 'public-login') {\n next();\n } else if (!AuthenticationService.instance.loggedIn) {\n next({\n name: 'public-login',\n query: { redirect: to.fullPath },\n });\n } else if (to.name !== 'public-login') {\n if (!AuthenticationService.instance.loggedIn) {\n next({\n name: 'public-login',\n query: { redirect: to.fullPath },\n });\n } else if (AuthenticationService.instance.authenticatedUser!.currentOrganization == null) {\n AuthenticationService.instance.getOrganizations(AuthenticationService.instance.authenticatedUser!).then((organization: OrganizationModel | undefined) => {\n next();\n }).catch((error: any) => {\n next({\n name: 'public-login',\n query: { redirect: to.fullPath },\n });\n });\n } else {\n next();\n }\n } else {\n // Cas normal, on avance\n next();\n }\n});\n\nexport default router;\n","export function toLocalLocale(locale: string) {\n return locale === 'fr-ch' ? 'fr' : locale;\n}\n","import { AxiosInstance, AxiosResponse } from 'axios';\nimport { AuthenticationAPI, AccountAPI } from '@/apis';\nimport { UserModel } from '@/models/UserModel';\n\nimport Vue from 'vue';\nimport i18n from '@/i18n';\nimport { LicenseType, OrganizationModel } from '@/models/OrganizationModel';\nimport { or } from 'vuelidate/lib/validators';\nimport { PermissionLib } from './PermissionLib';\nimport { toLocalLocale } from '../utils/i18n';\n\nexport class AuthenticationService {\n private static internal: AuthenticationService = new AuthenticationService(AuthenticationAPI.instance);\n\n public static get instance(): AuthenticationService {\n return AuthenticationService.internal;\n }\n\n public publicOrganization: OrganizationModel | null = null;\n\n private _authenticatedUser: UserModel | null = null;\n public permissionLib = new PermissionLib();\n\n\n constructor(private api: AxiosInstance) {\n }\n\n public setOrganization(id: number) {\n return this.api.post(`/organizations/${id}/switch/`).then((response: AxiosResponse) => {\n if (this._authenticatedUser) {\n this._authenticatedUser.activeOrganization = response.data.id;\n if (this._authenticatedUser.currentOrganization) {\n this._authenticatedUser.currentOrganization.nbPendingValidations = response.data.nbPendingValidations;\n }\n this.updateUser(this._authenticatedUser);\n }\n return response.data;\n }).catch((error: any) => {\n throw error;\n });\n }\n \n\n public getOrganizations(user: UserModel): Promise {\n return this.api.get(`/organizations/`).then((response: AxiosResponse) => {\n\n user.activeOrganization = response.data.activeOrganization;\n\n // HACK CHAMPAGNE !!!!\n if (this.permissionLib.isHackCHAMPAGNESALLES || this.permissionLib.isPublicHackCHAPAGNESALLES) {\n import(`@/lang/fr_champagne`).then((msgs) => {\n i18n.setLocaleMessage('fr', msgs.default);\n i18n.locale = 'fr';\n AuthenticationService.instance.updateLanguage('fr');\n });\n }\n\n user.availableOrganizations = response.data.availableOrganizations.map((d: any): OrganizationModel => {\n let org;\n if (d instanceof OrganizationModel) {\n org = d;\n } else {\n org = new OrganizationModel(d);\n }\n return org;\n });\n return user.availableOrganizations.find((org) => {\n return org.id === user.activeOrganization;\n });\n }).catch((error: any) => {\n throw error;\n });\n }\n\n\n public isOrgId(id: number): boolean {\n if (this._authenticatedUser && this._authenticatedUser.currentOrganization) {\n if (this._authenticatedUser.currentOrganization.id) {\n return this._authenticatedUser.currentOrganization.id === id;\n }\n }\n return false;\n }\n\n public updateUser(user: UserModel) {\n localStorage.setItem('newAuthUser', JSON.stringify(user));\n }\n\n // 2fa\n public getDevicesList() {\n return this.api.get('/otp-devices/').then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public getMethodList() {\n return this.api.get('/otp-methods/').then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public setupMethod(methodCode: string) {\n return this.api.post(`/otp-methods/${methodCode}/setup/`).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public deleteDevice(deviceId: string) {\n return this.api.delete(`/otp-devices/${deviceId}/`).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public validDevice(device: string, token: string, secretKey: string) {\n return this.api.post(`/otp-validate/`, {\n token,\n device,\n secret: secretKey,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public challenge(device: string) {\n return this.api.post(`/otp-challenge/`, {\n device,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public verifyChallenge(device: string, token: string) {\n return this.api.post('/otp-verify/', {\n token,\n device,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public getBackupCodes() {\n return this.api.get('/otp-backup/').then((response: AxiosResponse) => {\n return response.data;\n });\n }\n public generateNewBackupCodes() {\n return this.api.post('/otp-backup/').then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n\n public updateLanguage(language: string): Promise {\n const user = this._authenticatedUser!;\n Vue.$cookies.set('django_language', language, '730d', '/', process.env.VUE_APP_SITE_DOMAIN);\n if (user !== null) {\n return this.updateUserProfile(user.email, user.firstName, user.lastName, language);\n }\n\n return Promise.resolve(user);\n }\n\n public updateUserProfile(\n email: string,\n firstName: string,\n lastName: string,\n language: string,\n ): Promise {\n return this.updateProfile(email, firstName, lastName, language,\n null, null, null, null, null, null, null, null, null);\n }\n\n\n public updateProfile(\n email: string,\n firstName: string,\n lastName: string,\n language: string,\n imageLogo: string | null,\n description: string | null,\n publicName: string | null,\n contactName: string | null,\n contactEmail: string | null,\n contactPhone: string | null,\n contactInfo: string | null,\n displayPublicList: boolean | null,\n displayPublicContact: boolean | null,\n ): Promise {\n const data = {} as any;\n data.username = email;\n data.email = email;\n data.firstName = firstName;\n data.lastName = lastName;\n data.language = language === 'fr' ? 'fr-ch' : language;\n\n if (imageLogo !== null) { data.imageLogo = imageLogo; }\n if (description !== null) { data.description = description; }\n if (publicName !== null) { data.publicName = publicName; }\n if (contactName !== null) { data.contactName = contactName; }\n if (contactEmail !== null) { data.contactEmail = contactEmail; }\n if (contactPhone !== null) { data.contactPhone = contactPhone; }\n if (contactInfo !== null) { data.contactInfo = contactInfo; }\n if (displayPublicList !== null) { data.displayPublicList = displayPublicList; }\n if (displayPublicContact !== null) { data.displayPublicContact = displayPublicContact; }\n\n return this.api.post('/profile/', data).then((response: AxiosResponse) => {\n const user = this._authenticatedUser!;\n\n if (response.data.organization!.logo !== null) {\n user.currentOrganization!.logo = response.data.organization.logo;\n }\n if (description !== null) { user.currentOrganization!.description = description; }\n if (publicName !== null) { user.currentOrganization!.publicName = publicName; }\n if (contactName !== null) { user.currentOrganization!.contactName = contactName; }\n if (contactEmail !== null) { user.currentOrganization!.contactEmail = contactEmail; }\n if (contactPhone !== null) { user.currentOrganization!.contactPhone = contactPhone; }\n if (contactInfo !== null) { user.currentOrganization!.contactInfo = contactInfo; }\n if (displayPublicList !== null) { user.currentOrganization!.displayPublicList = displayPublicList; }\n if (displayPublicContact !== null) { user.currentOrganization!.displayPublicContact = displayPublicContact; }\n\n user.email = email;\n user.firstName = firstName;\n user.lastName = lastName;\n user.language = language;\n this.updateUser(user);\n return this._authenticatedUser!;\n }).catch((error: any) => {\n throw error;\n });\n }\n\n public cleanCookies() {\n localStorage.removeItem('newAuthUser');\n }\n\n public djangoLogin(): Promise {\n return this.api.post('/login-token/');\n }\n\n public login(email: string, password: string): Promise {\n return this.performLogin({\n email,\n password,\n });\n }\n\n public register(email: string, password: string, passwordConfirm: string): Promise {\n const data = {\n username: email,\n email,\n password,\n password_confirm: passwordConfirm,\n };\n return this.api.post('/accounts/register/', data).then((response: AxiosResponse) => {\n console.log('[AuthenticationService]-[createAccount] : SUCCESS');\n }).catch((error: any) => {\n throw error;\n });\n }\n\n public verifyRegistration(userId: string, timestamp: string, signature: string): Promise {\n const data = {\n user_id: userId,\n timestamp,\n signature,\n };\n return this.api.post('/accounts/verify-registration/', data).then((response: AxiosResponse) => {\n console.log('[AuthenticationService]-[verifyRegistration] : SUCCESS');\n }).catch((error: any) => {\n throw error;\n });\n }\n\n public askForResetPasswordLink(email: string): Promise {\n const data = {\n login: email,\n };\n return this.api.post('/accounts/send-reset-password-link/', data).then((response: AxiosResponse) => {\n console.log('[AuthenticationService]-[askForResetPasswordLink] : SUCCESS');\n }).catch((error: any) => {\n throw error;\n });\n }\n\n public resetPassword(password: string, userId: string, timestamp: string, signature: string): Promise {\n const data = {\n password,\n user_id: userId,\n timestamp,\n signature,\n };\n return this.api.post('/accounts/reset-password/', data).then((response: AxiosResponse) => {\n console.log('[AuthenticationService]-[resetPassword] : SUCCESS');\n }).catch((error: any) => {\n throw error;\n });\n }\n\n\n public logout(): Promise {\n return this.api.post('/logout/').then((response: AxiosResponse) => {\n this.cleanCookies();\n this._authenticatedUser = null;\n }).catch((error: any) => {\n this.cleanCookies();\n this._authenticatedUser = null;\n });\n }\n\n public refresh(): Promise {\n console.log('refresh');\n\n return this.performLogin({});\n }\n\n public get authenticatedUser(): UserModel | null {\n if (this._authenticatedUser === null) {\n const newAuthUserJSON = localStorage.getItem('newAuthUser');\n\n if (newAuthUserJSON != null) {\n const djangoLanguage = Vue.$cookies.get('django_language');\n\n this._authenticatedUser = new UserModel(JSON.parse(newAuthUserJSON));\n\n if (djangoLanguage !== null) {\n this._authenticatedUser.language = djangoLanguage;\n }\n }\n }\n return this._authenticatedUser;\n }\n\n public get loggedIn(): boolean {\n return this.authenticatedUser !== null;\n }\n\n public get isSuperAdmin(): boolean {\n if (this.authenticatedUser) {\n return this.authenticatedUser.isStaff\n || this.authenticatedUser.isSuperUser;\n }\n return false;\n }\n\n\n public get langs() {\n if (this.permissionLib.isHackCHAMPAGNESALLES || this.permissionLib.isPublicHackCHAPAGNESALLES) {\n return [{ file: 'fr_champagne', lang: 'fr', code: 'fr' }];\n }\n return [{ file: 'fr', lang: 'fr', code: 'fr' }, { file: 'en', lang: 'en', code: 'en' }, { file: 'de', lang: 'de', code: 'de' }];\n }\n\n public changeLocal(newLang: string) { \n let changeTo = newLang;\n if (newLang === '' || newLang === 'fr-ch') {\n changeTo = 'fr';\n }\n\n const newLocale = this.langs.find((locale) => locale.lang === changeTo);\n if (newLocale) {\n import(`@/lang/${newLocale.file}`).then((msgs) => {\n i18n.setLocaleMessage(newLocale.lang, msgs.default);\n i18n.locale = newLocale.lang;\n AuthenticationService.instance.updateLanguage(newLocale.code);\n });\n }\n }\n\n\n public get language(): string {\n if (this.authenticatedUser) {\n return toLocalLocale(this.authenticatedUser.language);\n }\n\n return toLocalLocale(Vue.$cookies.get('django_language')) || 'fr';\n }\n\n\n private performLogin(data: any): Promise {\n // withCredentials: true is mandatory here to save cookies returned by the\n // login endpoint. withCredentials: true is also set in the interceptor but\n // only if the user is logged in, which is not the case here\n return this.api.post('/login/', data, { withCredentials: true }).then((response: AxiosResponse) => {\n // if (response.data.organizations === undefined || !(response.data.organizations.length > 0)) {\n // throw new Error('The user has no organization set, please set one in the admin');\n // }\n this._authenticatedUser = new UserModel(response.data);\n // this._authenticatedUser.currentOrganization = this._authenticatedUser.organizations[0];\n this.updateUser(this._authenticatedUser);\n\n return this._authenticatedUser;\n }).catch((error: any) => {\n if (error.response) {\n // Not a network error, user must be cleared\n this._authenticatedUser = null;\n }\n this.cleanCookies();\n this._authenticatedUser = null;\n throw error;\n });\n }\n}\n","export class ParticipationsRankingModel {\n public id: number;\n public name: string;\n\n constructor({\n id,\n name,\n }: {\n id: number,\n name: string,\n }) {\n this.id = id;\n this.name = name;\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n name: this.name,\n };\n }\n}\n","import axios, { AxiosResponse, AxiosInstance } from 'axios';\nimport { OrganizerAPI } from '@/apis';\nimport { EventModel } from '@/models/EventModel';\nimport { TagModel } from '@/models/TagModel';\nimport { OrganizationModel } from '@/models/OrganizationModel';\nimport { UserModel } from '@/models/UserModel';\nimport { EventDayModel } from '@/models/EventDayModel';\nimport { TimeSlotModel } from '@/models/TimeSlotModel';\nimport { ParticipationsRankingModel } from '@/models/ParticipationsRankingModel';\nimport { DateTime } from 'luxon';\nimport { VolunteerCategoryModel } from '@/models/VolunteerCategoryModel';\nimport { PositionModel } from '@/models/PositionModel';\nimport { RewardCategoryModel } from '@/models/RewardCategoryModel';\nimport { ShopProductModel } from '@/models/ShopProductModel';\nimport { FieldModel } from '@/models/FieldModel';\n\n\nexport class EventService {\n\n private static internal: EventService = new EventService(OrganizerAPI.instance);\n\n public static get instance(): EventService {\n return EventService.internal;\n }\n\n constructor(private api: AxiosInstance) { }\n\n public fcvgStats(organizationId: number): Promise {\n return this.api.get('/fcvg_stats/', {\n params: {\n organizationId,\n },\n }).then((response: AxiosResponse) => {\n return response;\n });\n }\n\n public retreiveDashboardInformations(organizationId: number, yearsArray: string[]): Promise {\n return this.api.get('/dashboard/', {\n params: {\n organizationId,\n years: yearsArray,\n },\n }).then((response: AxiosResponse) => {\n let orgs: OrganizationModel[] = [];\n orgs = response.data.map((d: any): OrganizationModel => {\n const org = new OrganizationModel(d);\n org.latestRegistration = d.latestRegistration;\n org.eventsResume = d.eventsResume;\n org.nbrVolunteers = d.nbrVolunteers;\n return org;\n });\n return orgs;\n });\n }\n\n public retreivePublicEvents(organizationId: number): Promise {\n return this.api.get(`/organization/${organizationId}/public-events/`, {\n }).then((response: AxiosResponse) => {\n let events: EventModel[] = [];\n events = response.data.map((d: any): EventModel => {\n const ev = new EventModel(d);\n ev.organizationName = d.organizationName;\n ev.nbrVolunteersRegistered = d.nbrVolunteersRegistered;\n ev.nbrVolunteersRequired = d.nbrVolunteersRequired;\n return ev;\n });\n return events;\n });\n }\n\n public retrieveEvents(organizationId: number): Promise {\n return this.api.get('/events/', {\n params: {\n organizationId,\n },\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): EventModel => new EventModel(d));\n });\n }\n\n public retrievePublishedEvents(organizationId: number): Promise {\n return this.api.get('/events/', {\n params: {\n organizationId,\n status: 'published',\n },\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): EventModel => new EventModel(d));\n });\n }\n\n public retrieveListEvents(organizationId: number): Promise {\n return this.api.get('/listEvent/', {\n params: {\n organizationId,\n },\n }).then((response: AxiosResponse) => {\n let events: EventModel[] = [];\n events = response.data.map((d: any): EventModel => {\n const ev = new EventModel(d);\n ev.organizationName = d.organizationName;\n ev.nbrVolunteersRegistered = d.nbrVolunteersRegistered;\n ev.nbrVolunteersRequired = d.nbrVolunteersRequired;\n return ev;\n });\n return events;\n });\n }\n\n public retrieveOrganizations(): Promise {\n return this.api.get('/organization/', {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): OrganizationModel => new OrganizationModel(d));\n });\n }\n\n public retreiveTags(): Promise {\n return this.api.get('/tags/', {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): TagModel => new TagModel(d));\n });\n }\n\n\n public createPosition(position: PositionModel, eventID: number): Promise {\n let body = position.toJSON();\n body.event_id = eventID;\n return this.api.post(`/positions/`,\n body).then((response: AxiosResponse) => {\n return new PositionModel(response.data);\n });\n }\n public updatePosition(position: PositionModel, eventID: number): Promise {\n let body = position.toJSON();\n body.event_id = eventID;\n return this.api.put(`/positions/${position.id}/`,\n body).then((response: AxiosResponse) => {\n return position;\n });\n }\n public deletePosition(position: PositionModel): Promise {\n return this.api.delete(`/positions/${position.id}/`).then((response: AxiosResponse) => {\n return position;\n });\n }\n\n public retrieveProducts(organizationId: number): Promise {\n return this.api.get(`/organization/${organizationId}/products/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): ShopProductModel => new ShopProductModel(d));\n });\n }\n\n\n public cloneEvent(\n event: EventModel,\n newName: string,\n startDay: EventDayModel,\n cloneParticipations: boolean,\n categories: number[]): Promise {\n\n let body: any = {\n newName,\n startDay,\n cloneParticipations,\n };\n\n if (categories.length > 0) {\n body = {\n newName,\n startDay,\n cloneParticipations,\n cloneOnlyParticipationsInCategories: categories,\n };\n }\n\n return this.api.post('/events/' + event.id + '/clone/', body).then((response: AxiosResponse) => {\n console.log('[CloningEvent] response : ' + response);\n return response;\n }).catch((error) => {\n console.log('[CloningEvent] error : ' + error);\n throw error;\n });\n }\n\n public extendEvent(\n event: EventModel,\n targetEvent: EventModel,\n startDay: string,\n cloneParticipations: boolean,\n cloneOnlyParticipationsInCategories: number[]): Promise {\n\n let body: any = {\n startDay,\n targetEvent: targetEvent.id,\n cloneParticipations,\n cloneOnlyParticipationsInCategories,\n };\n\n return this.api.post('/events/' + event.id + '/copy_into/', body).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n throw error;\n });\n }\n\n\n public retrieveListEventsWithStatus(organizationId: number | null, status: string): Promise {\n return this.api.get('/listEvent/', {\n params: {\n organizationId,\n status,\n },\n }).then((response: AxiosResponse) => {\n let events: EventModel[] = [];\n events = response.data.map((d: any): EventModel => {\n const ev = new EventModel(d);\n ev.organizationName = d.organizationName;\n ev.nbrVolunteersRegistered = d.nbrVolunteersRegistered;\n ev.nbrVolunteersRequired = d.nbrVolunteersRequired;\n return ev;\n });\n return events;\n });\n }\n\n\n public bulkSlotManagement(event: EventModel): Promise {\n\n let tsToCreate = event.bulkShiftsToBeCreated.map((slot) => slot.toJSON());\n let tsToUpdate = event.bulkShiftsToBeUpdated.map((slot) => slot.toJSON());\n let tsToDelete = event.bulkShiftsToBeDeletedIds;\n\n return this.api.post(`/slots/bulk/`, {\n create: tsToCreate,\n update: tsToUpdate,\n delete: tsToDelete,\n }).then((response: AxiosResponse) => {\n\n event.bulkShiftsToBeCreated.forEach((slot) => {\n if (slot.position) {\n slot.position.removeSlot(slot, null, null);\n }\n });\n\n let slots = [];\n if (response.data.create) {\n slots = response.data.create.map((d: any): TimeSlotModel => {\n const slot = new TimeSlotModel(d);\n slot.startTime = DateTime.fromJSDate(d.startTime).setZone(event.timeZone);\n slot.endTime = DateTime.fromJSDate(d.endTime).setZone(event.timeZone);\n let position = event.getPositionForId(d.position);\n if (position) {\n position.addSlot(slot, null, null);\n }\n return slot;\n });\n\n event.bulkReset();\n }\n\n return slots;\n });\n }\n\n\n public createSlot(event: EventModel, slot: TimeSlotModel): Promise {\n return this.api.post(`/slots/`, slot.toJSON()).then((response: AxiosResponse) => {\n let data = response.data;\n let slots: TimeSlotModel[] = [];\n\n if (!Array.isArray(response.data)) {\n const slot = new TimeSlotModel(response.data);\n slot.startTime = DateTime.fromJSDate(data.startTime).setZone(event.timeZone);\n slot.endTime = DateTime.fromJSDate(data.endTime).setZone(event.timeZone);\n slots.push(slot);\n } else {\n slots = response.data.map((d: any): TimeSlotModel => {\n const slot = new TimeSlotModel(d);\n slot.startTime = DateTime.fromJSDate(d.startTime).setZone(event.timeZone);\n slot.endTime = DateTime.fromJSDate(d.endTime).setZone(event.timeZone);\n return slot;\n });\n }\n return slots;\n });\n }\n public updateSlot(event: EventModel, slot: TimeSlotModel): Promise {\n return this.api.put(`/slots/${slot.id}/`,\n slot.toJSON()).then((response: AxiosResponse) => {\n\n let data = response.data;\n data.startTime = DateTime.fromJSDate(data.startTime).setZone(event.timeZone);\n data.endTime = DateTime.fromJSDate(data.endTime).setZone(event.timeZone);\n\n return new TimeSlotModel(response.data);\n });\n }\n public deleteSlot(slot: TimeSlotModel): Promise {\n return this.api.delete(`/slots/${slot.id}/`).then((response: AxiosResponse) => {\n return slot;\n });\n }\n\n\n public updateSlotSeries(event: EventModel, slot: TimeSlotModel): Promise {\n return this.api.put(`/slots-series/${slot.series}/time_slots/`,\n slot.toJSON()).then((response: AxiosResponse) => {\n const slots = response.data.map((d: any): TimeSlotModel => {\n const slot = new TimeSlotModel(d);\n slot.startTime = DateTime.fromJSDate(d.startTime).setZone(event.timeZone);\n slot.endTime = DateTime.fromJSDate(d.endTime).setZone(event.timeZone);\n return slot;\n });\n return slots;\n });\n }\n\n public deleteSlotSeries(slot: TimeSlotModel): Promise {\n return this.api.delete(`/slots-series/${slot.series}/`).then((response: AxiosResponse) => {\n return slot;\n });\n }\n\n\n\n public createEvent(event: EventModel): Promise {\n return this.api.post(\n `/events/`,\n event.toJSON()).then((response: AxiosResponse) => {\n return new EventModel(response.data);\n });\n }\n\n public updateEvent(event: EventModel): Promise {\n return this.api.put(\n `/events/${event.id}/`,\n event.toJSON()).then((response: AxiosResponse) => {\n return new EventModel(response.data);\n });\n }\n\n public partialUpdateEvent(eventId: number, body: any): Promise {\n return this.api.patch(\n `/events/${eventId}/`,\n body).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public retrieveEvent(eventId: number): Promise {\n return this.api.get(`/events/${eventId}/`).then((response: AxiosResponse) => {\n const ev = new EventModel(response.data);\n ev.organizationName = response.data.organizationName;\n ev.nbrVolunteersRegistered = response.data.nbrVolunteersRegistered;\n ev.nbrVolunteersRequired = response.data.nbrVolunteersRequired;\n return ev;\n });\n }\n\n public retrieveEventByUUID(eventUUID: string, key: string | null = null, secret: string | null = null, from: string | null = null, to: string | null = null): Promise {\n let url = `/publicevent/${eventUUID}/`;\n if (key) {\n url += `?passkey=${key}`;\n }\n\n let params = {} as any;\n if (secret) {\n params.s = secret;\n }\n if (from && to) {\n params.from = from;\n params.to = to;\n }\n\n let param = {} as any;\n param.params = params;\n\n return this.api.get(url, param).then((response: AxiosResponse) => {\n return new EventModel(response.data);\n }).catch((error) => {\n console.log('[EventService] error : ' + error);\n throw error;\n });\n }\n\n public retrieveEventManagerByUUID(eventUUID: string, email: string, password: string, orgId: string): Promise {\n return this.api.get(`/publicevent/${eventUUID}/`, {\n params: {\n email,\n password,\n orgId,\n }\n }).then((response: AxiosResponse) => {\n return new EventModel(response.data);\n }).catch((error) => {\n console.log('[EventService] error : ' + error);\n throw error;\n });\n }\n\n\n public deleteEvent(event: EventModel): Promise {\n return this.api.delete(`/events/${event.id}/`).then((response: AxiosResponse) => {\n return event;\n });\n }\n\n public deleteTESTEvent(id: string): Promise {\n return this.api.delete(`/events/${id}/`).then((response: AxiosResponse) => {\n return 'plop';\n });\n }\n\n public retrieveParticipationsRankings(): Promise {\n return this.api.get('/participations-rankings/').then(\n (response: AxiosResponse) => {\n return response.data.map((d: any): ParticipationsRankingModel => new ParticipationsRankingModel(d));\n });\n }\n\n public retreiveRestriction(eventID: string) {\n return this.api.get(`/custom/registration-rules/${eventID}/`).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public postRestriction(eventID: string, categoryID: string) {\n return this.api.post('/custom/registration-rules/', {\n event: eventID,\n category: categoryID,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public cancelSlots(eventID: string, slotsID: string[], email: string, password: string, orgId: string) {\n return this.api.post(`/events/${eventID}/cancel_slots/`, {\n slots: slotsID,\n email,\n password,\n orgId,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n\n // REWARD\n public refreshRewardCategories(eventID: number): Promise {\n return this.api.get(`/events/${eventID}/reward_categories/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): RewardCategoryModel => new RewardCategoryModel(d));\n });\n }\n\n public retreivePublicRewardsCategories(eventUUID: string): Promise {\n return this.api.get(`/publicevent/${eventUUID}/reward_categories/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): RewardCategoryModel => new RewardCategoryModel(d));\n });\n }\n\n public retrievePrivateLinks(eventId: number): Promise {\n return this.api.get(`/events/${eventId}/tag_passkeys/`).then((response: AxiosResponse) => {\n return response;\n });\n }\n}\n","import { OrganizerAPI } from '@/apis';\nimport { AttributeModel, AttributeType, AttributeToModelType } from '@/models/Form/AttributeModel';\nimport { FieldModel } from '@/models/Form/FieldModel';\nimport { FormModel } from '@/models/Form/FormModel';\nimport { AxiosInstance, AxiosResponse } from 'axios';\n\nexport class FormService {\n private static internal: FormService = new FormService(OrganizerAPI.instance);\n\n public static get instance(): FormService {\n return FormService.internal;\n }\n\n constructor(private api: AxiosInstance) { }\n\n // Volunteer Attributes\n public getVolunteerAttributes(): Promise {\n return this.api\n .get(`/custom-volunteer-attributes/`)\n .then((response: AxiosResponse) => {\n return response.data.map((d: any): AttributeModel => new AttributeModel(d));\n });\n }\n\n public async getVolunteerAttributesWithBase(): Promise {\n const customAttributes = await this.getVolunteerAttributes();\n\n // Récupérer les baseAttributes\n const baseAttributes = AttributeModel.getBaseAttributeType();\n\n // Convertir les baseAttributes en AttributeModel\n const baseAttributeModels = baseAttributes.map(\n (baseAttr) =>\n new AttributeModel({\n id: baseAttr.id, // BaseAttributeType ID\n name: baseAttr.name, // Nom de l'attribut\n valueType: AttributeType.TEXT, // Type TEXT par défaut pour les BaseAttributes\n })\n );\n\n return [...baseAttributeModels, ...customAttributes];\n }\n\n public postVolunteerAttributes(attribute: AttributeModel): Promise {\n return this.api\n .post(`/custom-volunteer-attributes/`, attribute.toJSON())\n .then((response: AxiosResponse) => new AttributeModel(response.data));\n }\n\n public putVolunteerAttributes(attribute: AttributeModel): Promise {\n return this.api\n .put(`/custom-volunteer-attributes/${attribute.id}/`, attribute.toJSON())\n .then((response: AxiosResponse) => new AttributeModel(response.data));\n }\n\n public deleteVolunteerAttributes(fieldId: number): Promise {\n return this.api\n .delete(`/custom-volunteer-attributes/${fieldId}/`)\n .then(() => undefined);\n }\n\n // Event Attributes\n public getEventAttributes(eventId: number): Promise {\n return this.api\n .get(`/events/${eventId}/custom-volunteer-attributes/`)\n .then((response: AxiosResponse) => {\n return response.data.map((d: any): AttributeModel => new AttributeModel(d));\n });\n }\n public postEventAttributes(eventId: number, attribute: AttributeModel): Promise {\n return this.api\n .post(`/events/${eventId}/custom-volunteer-attributes/`, attribute.toJSON())\n .then((response: AxiosResponse) => new AttributeModel(response.data));\n }\n\n // Campaign Attributes\n public getCampaignAttributes(cmpId: string): Promise {\n return this.api\n .get(`/campaigns/${cmpId}/custom-volunteer-attributes/`)\n .then((response: AxiosResponse) => {\n return response.data.map((d: any): AttributeModel => new AttributeModel(d));\n });\n }\n public postCampaignAttributes(cmpId: string, attribute: AttributeModel): Promise {\n return this.api\n .post(`/campaigns/${cmpId}/custom-volunteer-attributes/`, attribute.toJSON())\n .then((response: AxiosResponse) => new AttributeModel(response.data));\n }\n\n // Event Form\n public getEventForm(eventId: number): Promise {\n return this.api\n .get(`/events/${eventId}/form/`)\n .then((response: AxiosResponse) => new FormModel(response.data));\n }\n public getCampaignForm(cmpId: string): Promise {\n return this.api\n .get(`/campaigns/${cmpId}/form/`)\n .then((response: AxiosResponse) => new FormModel(response.data));\n }\n\n public async getDeepForm(\n id: string,\n type: AttributeToModelType\n ): Promise {\n try {\n // 1. Récupérer le formulaire brut selon le type\n const rawForm = type === AttributeToModelType.EVENT\n ? await this.getEventForm(Number(id))\n : await this.getCampaignForm(id);\n\n // 2. Récupérer les attributs custom selon le type\n const customAttributes =\n type === AttributeToModelType.EVENT\n ? await this.getEventAttributes(Number(id))\n : await this.getCampaignAttributes(id);\n\n // 3. Récupérer les attributs custom + base pour les bénévoles\n const customVolunteerAttributes = await this.getVolunteerAttributesWithBase();\n\n // 4. Construire un map des attributs pour accès rapide\n const attributeMap = new Map();\n\n // Ajouter les attributs custom (événement ou campagne)\n customAttributes.forEach((attr) => {\n attributeMap.set(attr.id!, new AttributeModel(attr));\n });\n\n // Ajouter les attributs custom + base bénévoles\n customVolunteerAttributes.forEach((attr) => {\n attributeMap.set(attr.id!, new AttributeModel(attr));\n });\n\n // 5. Construire les champs enrichis\n const fields = rawForm.fields.map((field: any) => {\n const attribute = field.customAttribute\n ? attributeMap.get(field.customAttribute)\n : attributeMap.get(field.baseAttribute);\n\n if (!attribute) {\n console.warn(`Attribut introuvable pour le champ ${field.id}`);\n return null;\n }\n const f = new FieldModel(field);\n f.attribute = attribute;\n return f;\n }).filter((field) => field !== null);\n\n // 6. Retourner le formulaire complet\n return new FormModel({\n id: rawForm.id,\n fields: fields as FieldModel[],\n });\n } catch (error) {\n console.error(\"Erreur lors de la récupération du DeepForm :\", error);\n throw error;\n }\n }\n\n public postEventForm(eventId: number, form: FormModel): Promise {\n return this.api\n .post(`/events/${eventId}/form/`, {\n fields: form.fields,\n })\n .then((response: AxiosResponse) => new FormModel(response.data));\n }\n\n public putEventForm(eventId: number, form: FormModel): Promise {\n return this.api\n .put(`/events/${eventId}/form/`, {\n fields: form.fields.map((field) => ({\n id: field.id,\n customAttribute: field.id,\n label: field.label,\n description: field.description,\n isRequired: field.isRequired,\n })),\n })\n .then((response: AxiosResponse) => new FormModel(response.data));\n }\n\n public postCampaignForm(cmpId: string, form: FormModel): Promise {\n return this.api\n .post(`/campaigns/${cmpId}/form/`, {\n fields: form.fields,\n })\n .then((response: AxiosResponse) => new FormModel(response.data));\n }\n}\n","import { LicenseType, OrganizationModel } from \"@/models/OrganizationModel\";\nimport { UserModel } from \"@/models/UserModel\";\nimport { AuthenticationService } from \"@/services/\";\nimport { OrganizationService } from \"./OrganizationService\";\nimport i18n from '@/i18n';\n\nconst IDMOTOCROSS = 109;\nconst IDVENOGE = 56;\nconst IDBIBLIO = 76;\nconst IDPALEO = 40;\nconst IDCHAMPAGNESALLE = 120;\nconst IDEHRO = 1;\nconst IDESTIVALE = 101;\nconst IDFIFAD = 98;\nconst IDPDG = 149;\nconst IDALETSCH = 171;\nconst IDCRAN = 172;\nconst IDCHAMPERY = 158;\nconst IDCARIBANA = 174;\nconst IDGIVRINS = 144;\nconst IDSCT = 159;\nconst IDVENOGE_BADGE = 194;\nconst IDVS25 = 230;\n\nexport class PermissionLib {\n\n public get user(): UserModel {\n if (AuthenticationService.instance.authenticatedUser) {\n return AuthenticationService.instance.authenticatedUser;\n } else {\n return new UserModel();\n }\n }\n\n public volunteerToken = '';\n\n public get currentOrganization(): OrganizationModel {\n if (this.user.token !== '' && this.user.currentOrganization) {\n return this.user.currentOrganization;\n } else {\n return new OrganizationModel();\n }\n }\n\n setCurrentOrganization(newOrganizationId: number): Promise {\n return AuthenticationService.instance.setOrganization(newOrganizationId).then((response) => {\n this.user.activeOrganization = response.id;\n return response;\n }).catch((error) => {\n throw error;\n });\n }\n\n get publicOrganization(): OrganizationModel | null {\n if (AuthenticationService.instance.publicOrganization) {\n return AuthenticationService.instance.publicOrganization;\n }\n return null;\n }\n\n public get isCorporate() {\n if (this.currentOrganization) {\n return this.currentOrganization.licenseType === LicenseType.Corporate ||\n this.currentOrganization.id === IDEHRO;\n }\n return false;\n }\n\n public get isPublicCorporate() {\n if (this.publicOrganization) {\n return this.publicOrganization.licenseType === LicenseType.Corporate;\n }\n return false;\n }\n\n public get isLight() {\n return this.currentOrganization && this.currentOrganization.licenseType === LicenseType.Light;\n }\n public get isClub() {\n return this.currentOrganization && this.currentOrganization.licenseType === LicenseType.Club;\n }\n\n public get isPro() {\n if (this.currentOrganization) {\n return this.currentOrganization.licenseType === LicenseType.Pro ||\n this.currentOrganization.id === IDEHRO;\n }\n }\n\n public get publicEnableVouchers() {\n return this.publicOrganization && this.publicOrganization.enableVouchers;\n }\n\n public get publicEnableShop() {\n return this.publicOrganization && this.publicOrganization.enableShop;\n }\n\n public get enableShop() {\n return this.currentOrganization && this.currentOrganization.enableShop;\n }\n\n public get enableBadges() {\n return this.currentOrganization && this.currentOrganization.enableBadges;\n }\n\n public get enableVouchers() {\n return this.currentOrganization && this.currentOrganization.enableVouchers;\n }\n\n public get enableCampaigns() {\n return this.currentOrganization && this.currentOrganization.enableCampaigns;\n }\n\n public get enableWeezevent() {\n return this.currentOrganization && this.currentOrganization.enableWeezevent;\n }\n\n public get enableParticipationsValidation() {\n return this.currentOrganization && this.currentOrganization.enableParticipationsValidation;\n }\n\n // CLIENTS HACKS BACKOFFICE\n public get isHackBIBLIO() {\n return this.currentOrganization && this.currentOrganization.id === IDBIBLIO;\n }\n\n public get isHackEstivale() {\n return this.currentOrganization && this.currentOrganization.id === IDESTIVALE;\n }\n\n public get isHackSCT() {\n return this.currentOrganization && this.currentOrganization.id === IDSCT;\n }\n\n public get isHackCHAMPAGNESALLES() {\n return this.currentOrganization && this.currentOrganization.id === IDCHAMPAGNESALLE;\n }\n\n public get isHackVALAIS25() {\n return this.currentOrganization && this.currentOrganization.id === IDVS25;\n }\n\n // CLIENTS PUBLIC HACK\n\n public get isPublicHackVALAIS25() {\n return this.publicOrganization && (\n this.publicOrganization.id === IDALETSCH ||\n this.publicOrganization.id === IDCRAN ||\n this.publicOrganization.id === IDCHAMPERY\n );\n }\n\n public get isPublicHackVENOGE() {\n return this.publicOrganization && this.publicOrganization.id === IDVENOGE;\n }\n\n public get isPublicHackBIBLIO() {\n return this.publicOrganization && this.publicOrganization.id === IDBIBLIO;\n }\n\n public get isPublicHackCHAPAGNESALLES() {\n return this.publicOrganization && this.publicOrganization.id === IDCHAMPAGNESALLE;\n }\n\n public get isPublicHackESTIVALE() {\n return this.currentOrganization && this.currentOrganization.id === IDESTIVALE;\n }\n\n public get isPublicHackCARIBANA() {\n return this.currentOrganization && this.currentOrganization.id === IDCARIBANA;\n }\n\n public get isPublicHackVenogeBadge() {\n return this.currentOrganization && this.currentOrganization.id === IDVENOGE_BADGE;\n }\n\n\n}\n","import { TimeSlotModel } from './TimeSlotModel';\nimport { CustomAnswerResumeModel } from './CustomAnswerResumeModel';\nimport { EventModel } from './EventModel';\nimport { DateUtils } from '@/utils/date';\nimport { DateTime } from 'luxon';\nimport i18n from '@/i18n';\nimport { PositionModel } from './PositionModel';\nimport { RewardCategoryModel } from './RewardCategoryModel';\n\nexport class TimeSlotResumeModel {\n\n public static copyFromTimeSlotModel(ts: TimeSlotModel): TimeSlotResumeModel {\n const tsr = new TimeSlotResumeModel();\n tsr.id = ts.id;\n tsr.startTime = ts.startTime;\n tsr.rewardCategory = ts.rewardCategory;\n tsr.endTime = ts.endTime;\n return tsr;\n }\n\n public id: number | null = null;\n public startTime: DateTime;\n public endTime: DateTime;\n public positionName: string = '';\n public sectorName: string = '';\n public description: string;\n public positionDescription: string = '';\n public sectorDescription: string = '';\n public participationId: number | null = null;\n public eventId: number | null = null;\n public eventName: string = '';\n public event: EventModel | null = null;\n public duration: number = 0;\n\n public createdAt: Date | null = null;\n\n public position: PositionModel | null = null;\n\n // Reward\n public rewardCategory: number | null = null;\n\n constructor({\n id = null,\n startTime = DateTime.fromMillis(0),\n endTime = DateTime.fromMillis(0),\n description = '',\n positionName = '',\n sectorName = '',\n positionDescription = '',\n sectorDescription = '',\n duration = 0,\n rewardCategory = null,\n }: {\n id?: number | null,\n description?: string,\n startTime?: DateTime,\n endTime?: DateTime,\n positionName?: string,\n sectorName?: string,\n positionDescription?: string,\n sectorDescription?: string,\n duration?: number,\n rewardCategory?: number | null,\n } = {}) {\n this.id = id;\n this.description = description;\n this.startTime = startTime;\n this.endTime = endTime;\n this.positionName = positionName;\n this.sectorName = sectorName;\n this.positionDescription = positionDescription;\n this.sectorDescription = sectorDescription;\n this.duration = duration;\n this.rewardCategory = rewardCategory;\n }\n\n public get printName() {\n if (this.position) {\n return this.position.name;\n } else {\n return this.positionName;\n }\n }\n\n get startDateFormatted() {\n return this.startTime.startOf('day').toFormat('dd.LL.yyyy');\n }\n get startPrintDateFormatted() {\n return this.startTime.startOf('day').toFormat('ccc dd.MM.yyyy', { locale: i18n.locale });\n }\n get startTimeFormatted() {\n return this.startTime.toFormat('HH:mm');\n }\n get endTimeFormatted() {\n return this.endTime.toFormat('HH:mm');\n }\n\n public get timeInfo() {\n var diffInDay = this.endTime.startOf('day').diff(this.startTime.startOf('day'), 'day');\n diffInDay.toObject();\n const daysOffset = this.endTime.day - this.startTime.day;\n return `${this.startTime.toFormat('HH:mm')} - ${this.endTime.toFormat('HH:mm')}` +\n (daysOffset > 1 ? ` (+${daysOffset}${i18n.t('jour_small')})` : '');\n }\n}\n","import { CustomAnswerResumeModel } from './CustomAnswerResumeModel';\nimport { TimeSlotResumeModel } from './TimeSlotResumeModel';\nimport { ParticipationStatus } from './ParticipationModel';\nimport { TagModel } from './TagModel';\nimport { DateTime } from 'luxon';\n\nexport class ParticipationResumeModel {\n\n // Group\n public id: number | null;\n public nbParticipants: number = 1;\n public groupName: string = '';\n\n public validationStatus: ParticipationStatus;\n public validationMessage = '';\n public timeSlot: TimeSlotResumeModel;\n public tags: TagModel[] = [];\n\n\n constructor({\n id = null,\n timeSlot = new TimeSlotResumeModel(),\n nbParticipants = 1,\n groupName = '',\n validationStatus = ParticipationStatus.ACCEPTED,\n validationMessage = '',\n eventTimeZone = '',\n tags = [],\n }: {\n id?: number | null,\n timeSlot?: TimeSlotResumeModel,\n nbParticipants?: number,\n groupName?: string,\n validationStatus?: ParticipationStatus,\n validationMessage?: string,\n eventTimeZone?: string,\n tags?: TagModel[],\n } = {}) {\n this.id = id;\n this.nbParticipants = nbParticipants;\n this.groupName = groupName;\n\n if (timeSlot instanceof TimeSlotResumeModel) {\n this.timeSlot = timeSlot;\n } else {\n (timeSlot as any).startTime = DateTime.fromJSDate((timeSlot as any).startTime).setZone(eventTimeZone);\n (timeSlot as any).endTime = DateTime.fromJSDate((timeSlot as any).endTime).setZone(eventTimeZone);\n this.timeSlot = new TimeSlotResumeModel(timeSlot);\n }\n\n\n this.validationStatus = validationStatus;\n this.validationMessage = validationMessage;\n\n this.tags = tags.map((d: any): TagModel => {\n if (d instanceof TagModel) {\n return d;\n } else {\n return new TagModel(d);\n }\n });\n }\n\n public get locationName() {\n return this.timeSlot.printName;\n }\n public get description() {\n if (!this.timeSlot.sectorDescription && !this.timeSlot.positionDescription) {\n return null;\n }\n\n let desc = this.timeSlot.positionDescription;\n\n if (this.timeSlot.sectorDescription) {\n desc = this.timeSlot.sectorDescription;\n if (this.timeSlot.positionDescription) {\n desc += '\\n\\n | ' + this.timeSlot.positionDescription;\n }\n\n }\n return desc;\n }\n\n public get shiftDay() {\n return this.timeSlot.startDateFormatted;\n }\n}\n","\nimport { EventModel } from '@/models/EventModel';\nimport { TimeSlotModel } from '@/models/TimeSlotModel';\nimport { ParticipationResumeModel } from './ParticipationResumeModel';\n\nexport class EventWithResumeModel extends EventModel {\n // class body\n public participationsResume: ParticipationResumeModel[] = [];\n\n public populateSlots(data: any) {\n this.participationsResume = data.map((d: any): ParticipationResumeModel => {\n let part: ParticipationResumeModel;\n if (d instanceof ParticipationResumeModel) {\n part = d;\n } else {\n d.eventTimeZone = this.timeZone;\n part = new ParticipationResumeModel(d);\n }\n part.timeSlot.eventName = this.name;\n part.timeSlot.eventId = this.id;\n return part;\n });\n }\n\n public get soloValidatedParticipations() {\n return this.participationsResume.filter((p) => p.nbParticipants === 1 && p.validationStatus === 6);\n }\n public get groupValidatedParticipations() {\n return this.participationsResume.filter((p) => p.nbParticipants > 1 && p.validationStatus === 6);\n }\n}\n","import { DateTime, Interval } from 'luxon';\nimport { ShopTransactionTrigger } from './ShopTransactionModel';\n\nexport class ShopTransactionDataModel {\n\n public trigger: string = '';\n public eventName: string;\n public positionName: string;\n public startTime: DateTime;\n public endTime: DateTime;\n\n public eventId: number | null = null;\n public positionId: number | null = null;\n public participationId: number | null = null;\n\n public productName: string | null = null;\n public quantity: number | null = null;\n\n public reason: string | null = null;\n\n constructor({\n eventName = '',\n positionName = '',\n eventId = null,\n positionId = null,\n participationId = null,\n startTime = DateTime.fromMillis(0),\n endTime = DateTime.fromMillis(0),\n productName = null,\n quantity = null,\n reason = null,\n }: {\n eventName?: string,\n positionName?: string,\n eventId?: number | null,\n positionId?: number | null,\n participationId?: number | null,\n startTime?: DateTime,\n endTime?: DateTime,\n productName?: string | null,\n quantity?: number | null,\n reason?: string | null,\n } = {}) {\n this.eventName = eventName;\n this.positionName = positionName;\n this.startTime = startTime;\n this.endTime = endTime;\n this.eventId = eventId;\n this.positionId = positionId;\n this.participationId = participationId;\n this.productName = productName;\n this.quantity = quantity;\n this.reason = reason;\n }\n\n public get detail() {\n if (this.trigger === ShopTransactionTrigger.PRODUCT_PURCHASED || this.trigger === ShopTransactionTrigger.ORDER_CANCELLED) {\n return `${this.quantity}x ${this.productName}`;\n } else if (this.trigger === ShopTransactionTrigger.MANUAL_ADJUSTMENT) {\n return `${this.reason}`;\n } else {\n return `${this.eventName} / ${this.positionName}`;\n }\n }\n}\n","import { ShopTransactionDataModel } from './ShopTransactionDataModel';\nimport i18n from '@/i18n';\n\nexport enum ShopTransactionTrigger {\n PARTICIPATION_ACCEPTED = \"participation_accepted\",\n PARTICIPATION_CANCELLED = \"participation_cancelled\",\n PARTICIPATION_CHANGED = \"participation_changed\",\n TIME_SLOT_CHANGED = \"time_slot_changed\",\n HOURLY_RATE_CHANGED = \"hourly_rate_changed\",\n PRODUCT_PURCHASED = \"product_purchased\",\n MANUAL_ADJUSTMENT = \"manual_adjustment\",\n ORDER_CANCELLED = \"order_cancelled\",\n}\n\nexport class ShopTransactionModel {\n\n public createdAt: Date | null = null;\n public balance: number;\n public pointsDiff: number;\n public trigger: ShopTransactionTrigger;\n public triggerData: ShopTransactionDataModel;\n\n constructor({\n createdAt = null,\n balance = 0,\n pointsDiff = 0,\n trigger = ShopTransactionTrigger.PARTICIPATION_ACCEPTED,\n triggerData = new ShopTransactionDataModel(),\n }: {\n createdAt?: Date | null,\n balance?: number,\n pointsDiff?: number,\n trigger?: ShopTransactionTrigger,\n triggerData?: ShopTransactionDataModel\n } = {}) {\n this.createdAt = createdAt;\n this.balance = balance;\n this.pointsDiff = pointsDiff;\n this.trigger = trigger;\n\n if (triggerData instanceof ShopTransactionDataModel) {\n this.triggerData = triggerData;\n } else {\n this.triggerData = new ShopTransactionDataModel(triggerData);\n }\n this.triggerData.trigger = trigger;\n }\n\n public get triggerActionName() {\n return i18n.t(this.trigger);\n }\n}\n","import { AxiosResponse, AxiosInstance } from 'axios';\nimport { OrganizerAPI } from '@/apis';\nimport { VolunteerModel } from '@/models/VolunteerModel';\nimport { EventWithResumeModel } from '@/models/EventWithResumeModel';\nimport { ParticipationModel } from '@/models/ParticipationModel';\nimport { ManagerModel } from '@/models/ManagerModel';\nimport { TimeSlotModel } from '@/models/TimeSlotModel';\nimport { CustomAnswerModel } from '@/models/CustomAnswerModel';\nimport { VolunteerCategoryModel } from '@/models/VolunteerCategoryModel';\nimport { CampaignModel } from '@/models/CampaignModel';\nimport { EventModel, EventStatus } from '@/models/EventModel';\nimport { CampaignStatus } from '@/models/CampaignModel';\nimport { ShopTransactionModel } from '@/models/ShopTransactionModel';\nimport { ShopProductModel } from '@/models/ShopProductModel';\nimport { ShopOrderModel } from '@/models/ShopOrderModel';\n\n\nexport class VolunteerService {\n private static internal: VolunteerService = new VolunteerService(OrganizerAPI.instance);\n\n public static get instance(): VolunteerService {\n return VolunteerService.internal;\n }\n\n constructor(private api: AxiosInstance) { }\n\n public eventsForManager(email: string, password: string, orgId: string): Promise {\n return this.api.get(\n '/consult_manager/', {\n params: {\n email,\n password,\n orgId,\n },\n },\n ).then((response: AxiosResponse) => {\n return response.data.map((d: any): EventModel => {\n return new EventModel(d);\n });\n });\n }\n\n public EHRO2ListVolunteersForEvent(organizationId: number, eventId: number): Promise {\n return this.api.get(\n `/organization/${organizationId}/event/${eventId}/listvolunteers2/`,\n ).then((response: AxiosResponse) => response.data.map((d: any): VolunteerModel => {\n const vol = new VolunteerModel(d);\n vol.participations = d.participationsResume.map((res: any): ParticipationModel => {\n const resume = new ParticipationModel(res);\n return resume;\n });\n vol.numberSlots = d.numberSlots;\n return vol;\n }));\n }\n\n public EHRO2volunteersForOrganization(organizationId: number,\n withAttributes = false): Promise {\n return this.api.get(\n `/organization/${organizationId}/volunteers2/`, {\n params: {\n custom_attributes: withAttributes,\n },\n },\n ).then((response: AxiosResponse) => response.data.map((d: any): VolunteerModel => {\n const v = new VolunteerModel(d);\n\n //TODO PASQUI\n if (withAttributes && d.customAttributeValues !== undefined) {\n v.customAttributeValues = d.customAttributeValues;\n }\n\n return v;\n }));\n }\n\n public EHRO2VolunteerDetail(organizationId: number, volunteerId: number): Promise {\n return this.api.get(\n `/organization/${organizationId}/volunteers2/${volunteerId}/`,\n ).then((response: AxiosResponse) => new VolunteerModel(response.data));\n }\n\n\n\n public deleteVolunteerParticipation(partID: number, tokenString: string): Promise {\n return this.api.delete(\n `/volunteers/participations/${partID}/`, {\n params: {\n token: tokenString,\n },\n },\n ).then((response: AxiosResponse) => response.data).catch((error: any) => {\n throw error;\n });\n }\n\n\n public bulkUpdateVolunteerCategories(vols: VolunteerModel[], categIds: number[]): Promise {\n const volsIds = vols.map((vol: VolunteerModel): any => {\n return vol.id;\n });\n return this.api.post(\n '/volunteers/bulk_update/', {\n volunteers: volsIds,\n categories: categIds,\n },\n ).then((response: AxiosResponse) => response.data);\n }\n\n public deleteEHRO2Volunteer(orgId: number, volunteer: VolunteerModel): Promise {\n return this.api.delete(\n `/organization/${orgId}/volunteers2/${volunteer.id}/`,\n ).then((response: AxiosResponse) => volunteer);\n }\n\n public EHRO2retrieveParticipations(eventId: number): Promise {\n return this.api.get(\n `/events/${eventId}/participations2/`,\n ).then((response: AxiosResponse) => {\n return response.data.map((d: any): ParticipationModel => new ParticipationModel(d));\n });\n }\n\n public EHRO2retrieveParticipationsManager(eventId: number, manager: ManagerModel): Promise {\n return this.api.get(\n `/events/${eventId}/participations2/`, {\n params: {\n email: manager.email,\n password: manager.password,\n },\n },\n ).then((response: AxiosResponse) => {\n return response.data.map((d: any): ParticipationModel => new ParticipationModel(d));\n });\n }\n\n public updateEHRO2Participation(eventId: number, part: ParticipationModel): Promise {\n return this.api.put(\n `/events/${eventId}/participations2/${part.id}/`,\n part,\n ).then((response: AxiosResponse) => new ParticipationModel(response.data));\n }\n\n public EHRO2UpdateParticipationDetail(\n partId: number,\n refFirstName: string,\n refLastName: string,\n patisserie: string,\n free1: string,\n free2: string,\n ): Promise {\n return this.api.post(\n `/participationUpdate/${partId}/update_part_detail/`, {\n refFirstName,\n refLastName,\n patisserie,\n free1,\n free2,\n },\n ).then((response: AxiosResponse) => response);\n }\n\n public EHRO2ChangeParticipationVol(\n partId: number,\n volId: number,\n ): Promise {\n return this.api.post(\n `/participationUpdate/${partId}/change_volunteer/`, {\n volunteer_id: volId,\n },\n ).then((response: AxiosResponse) => response);\n }\n\n public deleteEHRO2Participation(\n eventId: number,\n partId: number,\n ): Promise {\n return this.api.delete(\n `/events/${eventId}/participations2/${partId}/`,\n ).then((response: AxiosResponse) => response);\n }\n\n public EHRO2BatchParticipations(\n vols: VolunteerModel[],\n slotId: number | null,\n participationId: number | null,\n recurring: boolean = false): Promise {\n const batch = vols.map((vol: VolunteerModel): any => {\n return ({ volunteer: vol.id, timeSlot: slotId, participation: participationId, recurring });\n });\n return this.api.post(\n '/participation/bulk/',\n batch,\n ).then((response: AxiosResponse) => response.data);\n }\n\n\n public retrieveCategories(organizationId: number): Promise {\n return this.api.get(`/organization/${organizationId}/volunteercategories/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): VolunteerCategoryModel => new VolunteerCategoryModel(d));\n });\n }\n\n public createCategory(categ: VolunteerCategoryModel): Promise {\n return this.api.post(`/organization/${categ.organizationId}/volunteercategories/`,\n categ.toJSON()).then((response: AxiosResponse) => {\n return new VolunteerCategoryModel(response.data);\n });\n }\n\n public updateCategory(categ: VolunteerCategoryModel): Promise {\n return this.api.put(\n `/organization/${categ.organizationId}/volunteercategories/${categ.id}/`,\n categ.toJSON(),\n ).then((response: AxiosResponse) => new VolunteerCategoryModel(response.data));\n }\n\n public deleteCategory(categ: VolunteerCategoryModel): Promise {\n return this.api.delete(\n `/organization/${categ.organizationId}/volunteercategories/${categ.id}/`,\n ).then((response: AxiosResponse) => categ);\n }\n\n\n\n public retrieveVolunteerByEmail(orgId: number, email: string): Promise {\n return this.api.get(\n `/organization/${orgId}/publicvolunteers/`, {\n params: {\n email,\n },\n },\n ).then((response: AxiosResponse) => response.data.map((d: any): VolunteerModel => {\n return new VolunteerModel(d);\n }));\n }\n\n public EHRO2retrieveParticipationsByToken(token: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/participations/`,\n ).then((response: AxiosResponse) => {\n const vol = new VolunteerModel(response.data.volunteer);\n const events = this.buildEventsWithAssignments(response.data.events);\n return {\n volunteer: vol,\n events,\n };\n });\n }\n\n public retrieveRegistrationsByToken(token: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/campaign-registrations/`,\n ).then((response: AxiosResponse) => {\n const answers: any[] = [];\n response.data.forEach((d: any) => {\n const cmp = new CampaignModel(d.campaign);\n if (cmp.status === CampaignStatus.Published) {\n answers.push({\n regId: d.id,\n campaign: cmp,\n createdAt: d.createdAt,\n });\n }\n });\n return answers;\n });\n }\n\n public retrieveProductsByToken(token: string): Promise {\n return this.api.get(`/volunteers/by-token/${token}/products/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): ShopProductModel => new ShopProductModel(d));\n });\n }\n public retrieveOrdersByToken(token: string): Promise {\n return this.api.get(`/volunteers/by-token/${token}/orders/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): ShopOrderModel => new ShopOrderModel(d));\n });\n }\n public makeOrderByToken(token: string, productID: number, quantity: number): Promise {\n return this.api.post(`/volunteers/by-token/${token}/orders/`, {\n product: productID,\n quantity,\n }).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public retrieveRegistrationsDetailByToken(token: string, regId: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/campaign-registrations/${regId}`,\n ).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public retrieveVolunteerWithToken(tokenString: string): Promise {\n return this.api.get(\n `/volunteers/participations/`, {\n params: {\n token: tokenString,\n },\n },\n ).then((response: AxiosResponse) => {\n const vol = new VolunteerModel(response.data.volunteer);\n const events = this.buildEventsWithAssignments(response.data.events);\n\n return {\n volunteer: vol,\n events,\n };\n });\n }\n\n public retreivePointsTransaction(token: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/points-transactions/`\n ).then((response: AxiosResponse) => {\n return response.data.map((d: any): ShopTransactionModel => new ShopTransactionModel(d));\n });\n }\n\n public claimVouchers(token: string): Promise {\n return this.api.post(\n `/volunteers/by-token/${token}/vouchers/claim/`\n ).then((response: AxiosResponse) => {\n return response.data;\n });\n }\n\n public login(organizationId: number, email: string): Promise {\n return this.api.post('/volunteers/login/', {\n organization: organizationId, email,\n });\n }\n\n private buildEventsWithAssignments(responseData: any): EventWithResumeModel[] {\n return responseData.map((res: any): EventWithResumeModel => {\n const ev = new EventWithResumeModel(res);\n ev.populateSlots(res.participations);\n return ev;\n });\n }\n}\n","import axios, { AxiosResponse, AxiosInstance } from 'axios';\nimport { OrganizerAPI } from '@/apis';\nimport { EventModel } from '@/models/EventModel';\nimport { ManagerModel } from '@/models/ManagerModel';\n\n\nexport class ManagerService {\n\n private static internal: ManagerService = new ManagerService(OrganizerAPI.instance);\n\n public static get instance(): ManagerService {\n return ManagerService.internal;\n }\n\n constructor(private api: AxiosInstance) { }\n\n public retrieveManagers(orgId: number): Promise {\n return this.api.get('/admin_manager/', {\n params: {\n orgId,\n },\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): ManagerModel => new ManagerModel(d));\n });\n }\n\n public retrieveManager(managerId: number): Promise {\n return this.api.get(`/admin_manager/${managerId}/`)\n .then((response: AxiosResponse) => {\n return new ManagerModel(response.data);\n });\n }\n\n public createManager(manager: ManagerModel): Promise {\n return this.api.post(\n `/admin_manager/`,\n manager.toJSON()).then((response: AxiosResponse) => {\n return new ManagerModel(response.data);\n });\n }\n\n public updateManager(manager: ManagerModel): Promise {\n return this.api.put(\n `/admin_manager/${manager.id}/`,\n manager.toJSON()).then((response: AxiosResponse) => {\n return new ManagerModel(response.data);\n });\n }\n\n public deleteManager(manager: ManagerModel): Promise {\n return this.api.delete(`/admin_manager/${manager.id}/`).then((response: AxiosResponse) => {\n return manager;\n });\n }\n\n}\n","import { EventModel } from './EventModel';\n\nexport class CommunicationHistory {\n public id: number | null = null;\n public eventId: number | null = null;\n public eventName: string | null = null;\n public sender: string = '';\n public subject: string = '';\n public text: string = '';\n public filters: string | null = null;\n public recipientsList: string[] = [];\n public sentAt: Date | null = null;\n\n constructor({\n id = null,\n eventId = null,\n eventName = null,\n sender = '',\n subject = '',\n text = '',\n filters = null,\n recipientsList = [],\n sentAt = null,\n }: {\n id?: number | null,\n eventId?: number | null,\n eventName?: string | null,\n sender?: string,\n subject?: string,\n text?: string,\n filters?: string | null,\n recipientsList?: string[],\n sentAt?: Date | null,\n } = {}) {\n this.id = id;\n this.eventId = eventId;\n this.eventName = eventName;\n this.text = text;\n this.subject = subject;\n this.sender = sender;\n this.filters = filters;\n this.recipientsList = recipientsList;\n this.sentAt = sentAt;\n }\n\n get nbrRecipients() {\n return this.recipientsList.length;\n }\n}\n","import axios, { AxiosResponse, AxiosInstance } from 'axios';\nimport { OrganizerAPI } from '@/apis';\nimport { VolunteerModel } from '@/models/VolunteerModel';\nimport { AuthenticationService } from '@/services';\nimport { ParticipationModel } from '@/models/ParticipationModel';\nimport { CommunicationHistory } from '@/models/CommunicationHistory';\n\n\nexport class EmailService {\n\n public static get instance(): EmailService {\n return EmailService.internal;\n }\n\n private static internal: EmailService = new EmailService(OrganizerAPI.instance);\n\n constructor(private api: AxiosInstance) { }\n\n public async sendBlankTestEmail(eventId: string): Promise {\n const newAuthUser = AuthenticationService.instance.authenticatedUser;\n let config = {};\n if (newAuthUser !== null) {\n config = {\n headers: {\n Authorization: `Token ${newAuthUser.token}`,\n },\n };\n }\n\n return this.api.post('/events/' + eventId + '/test_send_mail/', {\n }, config).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n return error;\n });\n }\n\n public sendRegistrationResumeEmail(eventId: string, part: ParticipationModel): Promise {\n return this.api.post('/events/' + eventId + '/send_resume_mail/', {\n participation: part,\n }).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n return error;\n });\n }\n\n public getCommunicationHistory(token: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/communications/`,\n ).then((response: AxiosResponse) => {\n return response;\n });\n }\n\n public getCommunicationHistoryDetail(token: string, commId: string): Promise {\n return this.api.get(\n `/volunteers/by-token/${token}/communications/${commId}`,\n ).then((response: AxiosResponse) => {\n return response;\n });\n }\n\n\n public async sendEmail(\n eventId: string,\n daysArray: string[],\n positionsArray: number[] | null,\n subDateStart: string | null,\n mailBody: string,\n onlyForOwner: boolean,\n status: string[] | null,\n ): Promise<{ [key: string]: any }> {\n\n const newAuthUser = AuthenticationService.instance.authenticatedUser;\n let config = {};\n\n if (newAuthUser !== null) {\n config = {\n headers: {\n Authorization: `Token ${newAuthUser.token}`,\n },\n };\n }\n\n const body: any = {\n emailBody: mailBody,\n onlyOwner: onlyForOwner,\n days: daysArray,\n positions: positionsArray ? positionsArray : [],\n subscriptionDateStart: subDateStart,\n };\n\n if (status) {\n body.participationValidationStatuses = status;\n }\n\n\n return this.api.post('/events/' + eventId + '/send_mail/', body, config).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n return error;\n });\n }\n\n public async sendEmailToCampaign(\n cmpId: string, mailBody: string, onlyForOwner: boolean): Promise<{ [key: string]: any }> {\n\n const newAuthUser = AuthenticationService.instance.authenticatedUser;\n let config = {};\n\n if (newAuthUser !== null) {\n config = {\n headers: {\n Authorization: `Token ${newAuthUser.token}`,\n },\n };\n }\n\n return this.api.post('/campaigns/' + cmpId + '/send_mail/', {\n emailBody: mailBody,\n onlyOwner: onlyForOwner,\n }, config).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n return error;\n });\n }\n\n public async sendEmailToVols(volArray: number[],\n mailBody: string,\n replyTo: string): Promise<{ [key: string]: any }> {\n\n const newAuthUser = AuthenticationService.instance.authenticatedUser;\n let config = {};\n if (newAuthUser !== null) {\n config = {\n headers: {\n Authorization: `Token ${newAuthUser.token}`,\n },\n };\n }\n\n return this.api.post('/volunteers/send_mail_to_vol/', {\n emailBody: mailBody,\n vols: volArray,\n replyToEmail: replyTo,\n }, config).then((response: AxiosResponse) => {\n return response;\n }).catch((error) => {\n return error;\n });\n }\n\n\n\n public retreiveCommunicationHistory(organizationId: number): Promise {\n return this.api.get(`/organization/${organizationId}/communication/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): CommunicationHistory => new CommunicationHistory(d));\n });\n }\n\n public previewCampaignEmail(campaignId: string, emailBody: string): Promise {\n return this.api.post(\n `/campaigns/${campaignId}/preview_mail/`,\n { body: emailBody },\n ).then((response: AxiosResponse) => {\n return response;\n });\n }\n\n public previewEventEmail(eventId: number, emailBody: string): Promise {\n return this.api.post(\n `/events/${eventId}/preview_mail/`,\n { body: emailBody },\n ).then((response: AxiosResponse) => {\n return response;\n });\n }\n}\n","import { CampaignAnswerModel } from './CampaignAnswerModel';\nimport { VolunteerModel } from './VolunteerModel';\n\nexport class CampaignRegistrationModel {\n public id: number | null = null;\n public volunteer: VolunteerModel;\n public campaignId: number | null = null;\n public createdAt: Date | null = null;\n public modifiedAt: Date | null = null;\n public customAttributeValues: { attribute: number; participation: number | null; value: number | string | boolean | Date }[] = [];\n public isSelectedOnList = false;\n\n constructor({\n id = null,\n volunteer = new VolunteerModel(),\n campaignId = null,\n createdAt = null,\n modifiedAt = null,\n customAttributeValues = [],\n }: {\n id?: number | null,\n volunteer?: VolunteerModel,\n campaignId?: number | null,\n createdAt?: Date | null,\n modifiedAt?: Date | null,\n customAttributeValues?: { attribute: number; participation: number | null; value: number | string | boolean | Date }[],\n } = {}) {\n this.id = id;\n this.campaignId = campaignId;\n this.createdAt = createdAt;\n this.modifiedAt = modifiedAt;\n\n this.customAttributeValues = customAttributeValues;\n\n if (volunteer instanceof VolunteerModel) {\n this.volunteer = volunteer;\n } else {\n this.volunteer = new VolunteerModel(volunteer);\n }\n }\n\n public toJSON(): any {\n return {\n id: this.id,\n volunteer: this.volunteer,\n campaignId: this.campaignId,\n createdAt: this.createdAt,\n modifiedAt: this.modifiedAt,\n };\n }\n}\n\n","import axios, { AxiosResponse, AxiosInstance } from 'axios';\nimport { OrganizerAPI } from '@/apis';\nimport { CampaignModel, CampaignStatus } from '@/models/CampaignModel';\nimport { CampaignAnswerModel } from '@/models/CampaignAnswerModel';\nimport { CampaignRegistrationModel } from '@/models/CampaignRegistrationModel';\nimport { VolunteerModel } from '@/models/VolunteerModel';\n\nexport class CampaignService {\n\n private static internal: CampaignService = new CampaignService(OrganizerAPI.instance);\n\n public static get instance(): CampaignService {\n return CampaignService.internal;\n }\n\n constructor(private api: AxiosInstance) { }\n\n // CHECKED !\n public retrieveCampaigns(organizationId: number): Promise {\n return this.api.get(`/campaigns/`, {\n params: {\n organizationId,\n },\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): CampaignModel => new CampaignModel(d));\n });\n }\n\n public retreivePublicCampaigns(organizationId: number): Promise {\n return this.api.get(`/organization/${organizationId}/public-campaigns/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): CampaignModel => new CampaignModel(d));\n });\n }\n\n public retrieveCampaign(campaignId: string): Promise {\n return this.api.get(`/campaigns/${campaignId}/`, {\n }).then((response: AxiosResponse) => {\n return new CampaignModel(response.data);\n });\n }\n\n public retreiveRegistrations(id: string): Promise {\n return this.api.get(`/campaigns/${id}/registrations/`, {\n }).then((response: AxiosResponse) => {\n return response.data.map((d: any): CampaignRegistrationModel => new CampaignRegistrationModel(d));\n }).catch((error) => {\n throw error;\n });\n }\n\n\n public createCampaign(campaign: CampaignModel): Promise {\n const formData = new FormData();\n\n for (const key in campaign.toJSON()) {\n if (campaign.hasOwnProperty(key)) {\n formData.append(key, campaign.toJSON()[key]);\n }\n }\n const requestConfig = {\n headers: {\n 'Content-Type': 'multipart/form-data;',\n },\n data: formData,\n };\n\n return this.api.post(\n `/campaigns/`,\n formData,\n ).then((response: AxiosResponse) => {\n return new CampaignModel(response.data);\n });\n }\n\n public updateCampaign(campaign: CampaignModel): Promise {\n const formData = new FormData();\n\n for (const key in campaign.toJSON()) {\n if (campaign.hasOwnProperty(key)) {\n formData.append(key, campaign.toJSON()[key]);\n }\n }\n const requestConfig = {\n headers: {\n 'Content-Type': 'multipart/form-data;',\n },\n data: formData,\n };\n return this.api.put