attendances.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div>
  3. <LayoutCommonSection v-if="organizationProfile.isSchool">
  4. <h4>{{ $t('alert_configuration') }}</h4>
  5. <UiLoadingPanel v-if="pending" />
  6. <UiForm v-else-if="parameters !== null" v-model="parameters">
  7. <v-row>
  8. <v-col cols="12">
  9. <UiInputCheckbox
  10. v-model="parameters.sendAttendanceEmail"
  11. field="sendAttendanceEmail"
  12. label="sendAttendanceEmail"
  13. />
  14. <UiInputCheckbox
  15. v-model="parameters.sendAttendanceSms"
  16. field="sendAttendanceSms"
  17. />
  18. <UiInputCheckbox
  19. v-model="parameters.notifyAdministrationAbsence"
  20. field="notifyAdministrationAbsence"
  21. />
  22. <UiInputNumber
  23. v-if="parameters.notifyAdministrationAbsence"
  24. v-model="parameters.numberConsecutiveAbsences"
  25. field="numberConsecutiveAbsences"
  26. :rules="rules()"
  27. />
  28. </v-col>
  29. </v-row>
  30. </UiForm>
  31. </LayoutCommonSection>
  32. <LayoutCommonSection>
  33. <LayoutParametersEntityTable
  34. :model="AttendanceBookingReason"
  35. :title="$t('attendanceBookingReasons')"
  36. :columns-definitions="[{ property: 'reason' }]"
  37. />
  38. </LayoutCommonSection>
  39. </div>
  40. </template>
  41. <script setup lang="ts">
  42. import type { AsyncData } from '#app'
  43. import Parameters from '~/models/Organization/Parameters'
  44. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  45. import { useOrganizationProfileStore } from '~/stores/organizationProfile'
  46. import UrlUtils from '~/services/utils/urlUtils'
  47. import AttendanceBookingReason from '~/models/Booking/AttendanceBookingReason'
  48. definePageMeta({
  49. name: 'parameters_attendances_page',
  50. })
  51. const { fetch } = useEntityFetch()
  52. const i18n = useI18n()
  53. const organizationProfile = useOrganizationProfileStore()
  54. if (organizationProfile.parametersId === null) {
  55. throw new Error('Missing organization parameters id')
  56. }
  57. const { data: parameters, pending } = fetch(
  58. Parameters,
  59. organizationProfile.parametersId,
  60. ) as AsyncData<Parameters | null, Error | null>
  61. const rules = () => [
  62. (numberConsecutiveAbsences: string | null) =>
  63. (numberConsecutiveAbsences !== null &&
  64. parseInt(numberConsecutiveAbsences) > 0) ||
  65. i18n.t('please_enter_a_value'),
  66. ]
  67. </script>