feat(holiday-settings): implement organization holiday settings management

- Added SQL migration for creating organization holiday settings and state holidays tables with necessary constraints and indexes.
- Implemented API endpoints in AdminCenterController for retrieving and updating organization holiday settings.
- Updated admin-center API router to include routes for holiday settings management.
- Enhanced localization files to support new holiday settings UI elements in multiple languages.
- Improved holiday calendar component to display working days and integrate holiday settings.
This commit is contained in:
chamikaJ
2025-07-28 13:07:15 +05:30
parent c18b289e4f
commit f81d0f9594
21 changed files with 1265 additions and 207 deletions

View File

@@ -28,5 +28,45 @@
"manDaysCalculationDescription": "Të gjitha kostot e projektit do të llogariten duke përdorur ditët e vlerësuara të njeriut × normat ditore",
"calculationMethodTooltip": "Ky cilësim zbatohet për të gjitha projektet në organizatën tuaj",
"calculationMethodUpdated": "Metoda e llogaritjes së organizatës u përditësua me sukses",
"calculationMethodUpdateError": "Dështoi përditësimi i metodës së llogaritjes"
"calculationMethodUpdateError": "Dështoi përditësimi i metodës së llogaritjes",
"holidayCalendar": "Kalnedari i Festave",
"addHoliday": "Shto Festë",
"editHoliday": "Redakto Festë",
"holidayName": "Emri i Festës",
"holidayNameRequired": "Ju lutemi shkruani emrin e festës",
"description": "Përshkrim",
"date": "Data",
"dateRequired": "Ju lutemi zgjidhni një datë",
"holidayType": "Lloji i Festës",
"holidayTypeRequired": "Ju lutemi zgjidhni një lloj feste",
"recurring": "Përsëritëse",
"save": "Ruaj",
"update": "Përditëso",
"cancel": "Anulo",
"holidayCreated": "Festa u krijua me sukses",
"holidayUpdated": "Festa u përditësua me sukses",
"holidayDeleted": "Festa u fshi me sukses",
"errorCreatingHoliday": "Gabim gjatë krijimit të festës",
"errorUpdatingHoliday": "Gabim gjatë përditësimit të festës",
"errorDeletingHoliday": "Gabim gjatë fshirjes së festës",
"importCountryHolidays": "Importo Festat e Vendit",
"country": "Vendi",
"countryRequired": "Ju lutemi zgjidhni një vend",
"selectCountry": "Zgjidhni një vend",
"year": "Viti",
"import": "Importo",
"holidaysImported": "U importuan me sukses {{count}} festa",
"errorImportingHolidays": "Gabim gjatë importimit të festave",
"addCustomHoliday": "Shto Festë të Përshtatur",
"officialHolidaysFrom": "Festat zyrtare nga",
"workingDay": "Ditë Pune",
"holiday": "Festë",
"today": "Sot",
"cannotEditOfficialHoliday": "Nuk mund të redaktoni festat zyrtare",
"customHoliday": "Festë e Përshtatur",
"officialHoliday": "Festë Zyrtare",
"delete": "Fshi",
"deleteHolidayConfirm": "A jeni i sigurt që dëshironi të fshini këtë festë?",
"yes": "Po",
"no": "Jo"
}

View File

@@ -13,5 +13,21 @@
"sunday": "E Dielë",
"saveButton": "Ruaj",
"saved": "Cilësimet u ruajtën me sukses",
"errorSaving": "Gabim gjatë ruajtjes së cilësimeve"
"errorSaving": "Gabim gjatë ruajtjes së cilësimeve",
"holidaySettings": "Cilësimet e pushimeve",
"country": "Vendi",
"countryRequired": "Ju lutemi zgjidhni një vend",
"selectCountry": "Zgjidhni vendin",
"state": "Shteti/Provinca",
"selectState": "Zgjidhni shtetin/provincën (opsionale)",
"autoSyncHolidays": "Sinkronizo automatikisht pushimet zyrtare",
"saveHolidaySettings": "Ruaj cilësimet e pushimeve",
"holidaySettingsSaved": "Cilësimet e pushimeve u ruajtën me sukses",
"errorSavingHolidaySettings": "Gabim gjatë ruajtjes së cilësimeve të pushimeve",
"addCustomHoliday": "Shto Festë të Përshtatur",
"officialHolidaysFrom": "Festat zyrtare nga",
"workingDay": "Ditë Pune",
"holiday": "Festë",
"today": "Sot",
"cannotEditOfficialHoliday": "Nuk mund të redaktoni festat zyrtare"
}

View File

@@ -28,5 +28,45 @@
"manDaysCalculationDescription": "Alle Projektkosten werden anhand geschätzter Mann-Tage × Tagessätze berechnet",
"calculationMethodTooltip": "Diese Einstellung gilt für alle Projekte in Ihrer Organisation",
"calculationMethodUpdated": "Organisations-Berechnungsmethode erfolgreich aktualisiert",
"calculationMethodUpdateError": "Fehler beim Aktualisieren der Berechnungsmethode"
"calculationMethodUpdateError": "Fehler beim Aktualisieren der Berechnungsmethode",
"holidayCalendar": "Feiertagskalender",
"addHoliday": "Feiertag hinzufügen",
"editHoliday": "Feiertag bearbeiten",
"holidayName": "Feiertagsname",
"holidayNameRequired": "Bitte geben Sie den Feiertagsnamen ein",
"description": "Beschreibung",
"date": "Datum",
"dateRequired": "Bitte wählen Sie ein Datum aus",
"holidayType": "Feiertagstyp",
"holidayTypeRequired": "Bitte wählen Sie einen Feiertagstyp aus",
"recurring": "Wiederkehrend",
"save": "Speichern",
"update": "Aktualisieren",
"cancel": "Abbrechen",
"holidayCreated": "Feiertag erfolgreich erstellt",
"holidayUpdated": "Feiertag erfolgreich aktualisiert",
"holidayDeleted": "Feiertag erfolgreich gelöscht",
"errorCreatingHoliday": "Fehler beim Erstellen des Feiertags",
"errorUpdatingHoliday": "Fehler beim Aktualisieren des Feiertags",
"errorDeletingHoliday": "Fehler beim Löschen des Feiertags",
"importCountryHolidays": "Landesfeiertage importieren",
"country": "Land",
"countryRequired": "Bitte wählen Sie ein Land aus",
"selectCountry": "Ein Land auswählen",
"year": "Jahr",
"import": "Importieren",
"holidaysImported": "{{count}} Feiertage erfolgreich importiert",
"errorImportingHolidays": "Fehler beim Importieren der Feiertage",
"addCustomHoliday": "Benutzerdefinierten Feiertag hinzufügen",
"officialHolidaysFrom": "Offizielle Feiertage aus",
"workingDay": "Arbeitstag",
"holiday": "Feiertag",
"today": "Heute",
"cannotEditOfficialHoliday": "Offizielle Feiertage können nicht bearbeitet werden",
"customHoliday": "Benutzerdefinierter Feiertag",
"officialHoliday": "Offizieller Feiertag",
"delete": "Löschen",
"deleteHolidayConfirm": "Sind Sie sicher, dass Sie diesen Feiertag löschen möchten?",
"yes": "Ja",
"no": "Nein"
}

View File

@@ -13,5 +13,21 @@
"sunday": "Sonntag",
"saveButton": "Speichern",
"saved": "Einstellungen erfolgreich gespeichert",
"errorSaving": "Fehler beim Speichern der Einstellungen"
"errorSaving": "Fehler beim Speichern der Einstellungen",
"holidaySettings": "Feiertagseinstellungen",
"country": "Land",
"countryRequired": "Bitte wählen Sie ein Land aus",
"selectCountry": "Land auswählen",
"state": "Bundesland/Provinz",
"selectState": "Bundesland/Provinz auswählen (optional)",
"autoSyncHolidays": "Offizielle Feiertage automatisch synchronisieren",
"saveHolidaySettings": "Feiertagseinstellungen speichern",
"holidaySettingsSaved": "Feiertagseinstellungen erfolgreich gespeichert",
"errorSavingHolidaySettings": "Fehler beim Speichern der Feiertagseinstellungen",
"addCustomHoliday": "Benutzerdefinierten Feiertag hinzufügen",
"officialHolidaysFrom": "Offizielle Feiertage aus",
"workingDay": "Arbeitstag",
"holiday": "Feiertag",
"today": "Heute",
"cannotEditOfficialHoliday": "Offizielle Feiertage können nicht bearbeitet werden"
}

View File

@@ -56,5 +56,17 @@
"year": "Year",
"import": "Import",
"holidaysImported": "Successfully imported {{count}} holidays",
"errorImportingHolidays": "Error importing holidays"
"errorImportingHolidays": "Error importing holidays",
"addCustomHoliday": "Add Custom Holiday",
"officialHolidaysFrom": "Official holidays from",
"workingDay": "Working Day",
"holiday": "Holiday",
"today": "Today",
"cannotEditOfficialHoliday": "Cannot edit official holidays",
"customHoliday": "Custom Holiday",
"officialHoliday": "Official Holiday",
"delete": "Delete",
"deleteHolidayConfirm": "Are you sure you want to delete this holiday?",
"yes": "Yes",
"no": "No"
}

View File

@@ -13,5 +13,15 @@
"sunday": "Sunday",
"saveButton": "Save",
"saved": "Settings saved successfully",
"errorSaving": "Error saving settings"
"errorSaving": "Error saving settings",
"holidaySettings": "Holiday Settings",
"country": "Country",
"countryRequired": "Please select a country",
"selectCountry": "Select country",
"state": "State/Province",
"selectState": "Select state/province (optional)",
"autoSyncHolidays": "Automatically sync official holidays",
"saveHolidaySettings": "Save Holiday Settings",
"holidaySettingsSaved": "Holiday settings saved successfully",
"errorSavingHolidaySettings": "Error saving holiday settings"
}

View File

@@ -28,5 +28,45 @@
"manDaysCalculationDescription": "Todos los costos del proyecto se calcularán usando días hombre estimados × tarifas diarias",
"calculationMethodTooltip": "Esta configuración se aplica a todos los proyectos en su organización",
"calculationMethodUpdated": "Método de cálculo de la organización actualizado exitosamente",
"calculationMethodUpdateError": "Error al actualizar el método de cálculo"
"calculationMethodUpdateError": "Error al actualizar el método de cálculo",
"holidayCalendar": "Calendario de Días Festivos",
"addHoliday": "Agregar Día Festivo",
"editHoliday": "Editar Día Festivo",
"holidayName": "Nombre del Día Festivo",
"holidayNameRequired": "Por favor ingrese el nombre del día festivo",
"description": "Descripción",
"date": "Fecha",
"dateRequired": "Por favor seleccione una fecha",
"holidayType": "Tipo de Día Festivo",
"holidayTypeRequired": "Por favor seleccione un tipo de día festivo",
"recurring": "Recurrente",
"save": "Guardar",
"update": "Actualizar",
"cancel": "Cancelar",
"holidayCreated": "Día festivo creado exitosamente",
"holidayUpdated": "Día festivo actualizado exitosamente",
"holidayDeleted": "Día festivo eliminado exitosamente",
"errorCreatingHoliday": "Error al crear el día festivo",
"errorUpdatingHoliday": "Error al actualizar el día festivo",
"errorDeletingHoliday": "Error al eliminar el día festivo",
"importCountryHolidays": "Importar Días Festivos del País",
"country": "País",
"countryRequired": "Por favor seleccione un país",
"selectCountry": "Seleccionar un país",
"year": "Año",
"import": "Importar",
"holidaysImported": "{{count}} días festivos importados exitosamente",
"errorImportingHolidays": "Error al importar días festivos",
"addCustomHoliday": "Agregar Día Festivo Personalizado",
"officialHolidaysFrom": "Días festivos oficiales de",
"workingDay": "Día Laboral",
"holiday": "Día Festivo",
"today": "Hoy",
"cannotEditOfficialHoliday": "No se pueden editar los días festivos oficiales",
"customHoliday": "Día Festivo Personalizado",
"officialHoliday": "Día Festivo Oficial",
"delete": "Eliminar",
"deleteHolidayConfirm": "¿Está seguro de que desea eliminar este día festivo?",
"yes": "Sí",
"no": "No"
}

View File

@@ -13,5 +13,21 @@
"sunday": "Domingo",
"saveButton": "Guardar",
"saved": "Configuración guardada exitosamente",
"errorSaving": "Error al guardar la configuración"
"errorSaving": "Error al guardar la configuración",
"holidaySettings": "Configuración de días festivos",
"country": "País",
"countryRequired": "Por favor seleccione un país",
"selectCountry": "Seleccionar país",
"state": "Estado/Provincia",
"selectState": "Seleccionar estado/provincia (opcional)",
"autoSyncHolidays": "Sincronizar automáticamente los días festivos oficiales",
"saveHolidaySettings": "Guardar configuración de días festivos",
"holidaySettingsSaved": "Configuración de días festivos guardada exitosamente",
"errorSavingHolidaySettings": "Error al guardar la configuración de días festivos",
"addCustomHoliday": "Agregar Día Festivo Personalizado",
"officialHolidaysFrom": "Días festivos oficiales de",
"workingDay": "Día Laboral",
"holiday": "Día Festivo",
"today": "Hoy",
"cannotEditOfficialHoliday": "No se pueden editar los días festivos oficiales"
}

View File

@@ -28,5 +28,45 @@
"manDaysCalculationDescription": "Todos os custos do projeto serão calculados usando dias homem estimados × taxas diárias",
"calculationMethodTooltip": "Esta configuração se aplica a todos os projetos em sua organização",
"calculationMethodUpdated": "Método de cálculo da organização atualizado com sucesso",
"calculationMethodUpdateError": "Erro ao atualizar o método de cálculo"
"calculationMethodUpdateError": "Erro ao atualizar o método de cálculo",
"holidayCalendar": "Calendário de Feriados",
"addHoliday": "Adicionar Feriado",
"editHoliday": "Editar Feriado",
"holidayName": "Nome do Feriado",
"holidayNameRequired": "Por favor, digite o nome do feriado",
"description": "Descrição",
"date": "Data",
"dateRequired": "Por favor, selecione uma data",
"holidayType": "Tipo de Feriado",
"holidayTypeRequired": "Por favor, selecione um tipo de feriado",
"recurring": "Recorrente",
"save": "Salvar",
"update": "Atualizar",
"cancel": "Cancelar",
"holidayCreated": "Feriado criado com sucesso",
"holidayUpdated": "Feriado atualizado com sucesso",
"holidayDeleted": "Feriado excluído com sucesso",
"errorCreatingHoliday": "Erro ao criar feriado",
"errorUpdatingHoliday": "Erro ao atualizar feriado",
"errorDeletingHoliday": "Erro ao excluir feriado",
"importCountryHolidays": "Importar Feriados do País",
"country": "País",
"countryRequired": "Por favor, selecione um país",
"selectCountry": "Selecionar um país",
"year": "Ano",
"import": "Importar",
"holidaysImported": "{{count}} feriados importados com sucesso",
"errorImportingHolidays": "Erro ao importar feriados",
"addCustomHoliday": "Adicionar Feriado Personalizado",
"officialHolidaysFrom": "Feriados oficiais de",
"workingDay": "Dia de Trabalho",
"holiday": "Feriado",
"today": "Hoje",
"cannotEditOfficialHoliday": "Não é possível editar feriados oficiais",
"customHoliday": "Feriado Personalizado",
"officialHoliday": "Feriado Oficial",
"delete": "Excluir",
"deleteHolidayConfirm": "Tem certeza de que deseja excluir este feriado?",
"yes": "Sim",
"no": "Não"
}

View File

@@ -13,5 +13,21 @@
"sunday": "Domingo",
"saveButton": "Salvar",
"saved": "Configurações salvas com sucesso",
"errorSaving": "Erro ao salvar configurações"
"errorSaving": "Erro ao salvar configurações",
"holidaySettings": "Configurações de feriados",
"country": "País",
"countryRequired": "Por favor, selecione um país",
"selectCountry": "Selecionar país",
"state": "Estado/Província",
"selectState": "Selecionar estado/província (opcional)",
"autoSyncHolidays": "Sincronizar automaticamente feriados oficiais",
"saveHolidaySettings": "Salvar configurações de feriados",
"holidaySettingsSaved": "Configurações de feriados salvas com sucesso",
"errorSavingHolidaySettings": "Erro ao salvar configurações de feriados",
"addCustomHoliday": "Adicionar Feriado Personalizado",
"officialHolidaysFrom": "Feriados oficiais de",
"workingDay": "Dia de Trabalho",
"holiday": "Feriado",
"today": "Hoje",
"cannotEditOfficialHoliday": "Não é possível editar feriados oficiais"
}

View File

@@ -28,5 +28,45 @@
"manDaysCalculationDescription": "所有项目成本将使用估算人天数 × 日费率计算",
"calculationMethodTooltip": "此设置适用于您组织中的所有项目",
"calculationMethodUpdated": "组织计算方法更新成功",
"calculationMethodUpdateError": "更新计算方法失败"
"calculationMethodUpdateError": "更新计算方法失败",
"holidayCalendar": "假期日历",
"addHoliday": "添加假期",
"editHoliday": "编辑假期",
"holidayName": "假期名称",
"holidayNameRequired": "请输入假期名称",
"description": "描述",
"date": "日期",
"dateRequired": "请选择日期",
"holidayType": "假期类型",
"holidayTypeRequired": "请选择假期类型",
"recurring": "循环",
"save": "保存",
"update": "更新",
"cancel": "取消",
"holidayCreated": "假期创建成功",
"holidayUpdated": "假期更新成功",
"holidayDeleted": "假期删除成功",
"errorCreatingHoliday": "创建假期时出错",
"errorUpdatingHoliday": "更新假期时出错",
"errorDeletingHoliday": "删除假期时出错",
"importCountryHolidays": "导入国家假期",
"country": "国家",
"countryRequired": "请选择国家",
"selectCountry": "选择国家",
"year": "年份",
"import": "导入",
"holidaysImported": "成功导入{{count}}个假期",
"errorImportingHolidays": "导入假期时出错",
"addCustomHoliday": "添加自定义假期",
"officialHolidaysFrom": "官方假期来自",
"workingDay": "工作日",
"holiday": "假期",
"today": "今天",
"cannotEditOfficialHoliday": "无法编辑官方假期",
"customHoliday": "自定义假期",
"officialHoliday": "官方假期",
"delete": "删除",
"deleteHolidayConfirm": "您确定要删除这个假期吗?",
"yes": "是",
"no": "否"
}

View File

@@ -13,5 +13,21 @@
"sunday": "星期日",
"saveButton": "保存",
"saved": "设置保存成功",
"errorSaving": "保存设置时出错"
"errorSaving": "保存设置时出错",
"holidaySettings": "假期设置",
"country": "国家",
"countryRequired": "请选择一个国家",
"selectCountry": "选择国家",
"state": "州/省",
"selectState": "选择州/省(可选)",
"autoSyncHolidays": "自动同步官方假期",
"saveHolidaySettings": "保存假期设置",
"holidaySettingsSaved": "假期设置保存成功",
"errorSavingHolidaySettings": "保存假期设置时出错",
"addCustomHoliday": "添加自定义假期",
"officialHolidaysFrom": "官方假期来自",
"workingDay": "工作日",
"holiday": "假期",
"today": "今天",
"cannotEditOfficialHoliday": "无法编辑官方假期"
}