Skip to content

mikamttr/PublicHolidayAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PublicHolidayAPI

PublicHolidayAPI est une API RESTful développée avec ASP.NET Core, conçue pour fournir une gestion centralisée des jours fériés. Elle permet d'éviter les erreurs liées à la planification sur des dates non ouvrables.

📌 Pourquoi cette API ?

Dans de nombreux systèmes (gestion des congés, planning RH, logiciels de réservation ou de facturation), il est essentiel d’éviter de programmer des événements les week-ends ou les jours fériés.
PublicHolidayAPI permet de :

  • D'accéder à une liste des jours fériés.
  • Ajouter, modifier ou supprimer des jours fériés.
  • Filtrer les jours fériés par année.
  • Intégrer facilement l’API dans une interface utilisateur.
  • Calculer les jours ouvrés entre deux dates, en excluant les samedis, dimanches et jours fériés.

⚙️ Fonctionnalités

  • CRUD des jours fériés (Holiday)
  • Base de données InMemory (prête à être remplacée)
  • Documentation Swagger
  • Authentification JWT
  • CORS configuré pour le frontend
  • Interface frontend de sélection de plages de dates :
    • Calendrier dynamique
    • Plages de dates excluant week-ends et jours fériés
  • Calcul de jours ouvrés via un endpoint dédié

🔐 Authentification

L’API propose un endpoint de login permettant d'obtenir un token JWT (valide 15 min).

Exemple d’utilisateur :

{
  "userName": "jason_admin",
  "password": "MyPass_w0rd"
}

🔑 Une fois connecté, ajoutez votre token JWT dans Swagger pour effectuer les actions sur les end-points protégées.

Endpoints

Méthode Endpoint Description Auth requise
GET /api/Holidays Récupère tous les jours fériés
GET /api/Holidays/year/{year} Jours fériés d'une année spécifique
POST /api/Holidays Ajout d’un ou plusieurs jours fériés
PUT /api/Holidays/{id} Modification d’un jour férié
PATCH /api/Holidays/{id} Modification partielle d’un jour férié
DELETE /api/Holidays/{id} Suppression d’un jour férié
POST /api/Holidays/workdays Calcule le nombre de jours ouvrés entre deux dates
POST /api/Login Connexion (renvoie un token JWT)

📊 Exemple — Calcul de jours ouvrés

Requête :

POST /api/Holidays/workdays
Content-Type: application/json

{
  "startDate": "2025-07-29",
  "endDate": "2025-08-02"
}

Réponse :

3

Si les 29, 30, 31 juillet sont des jours ouvrés et que le 1er août est un week-end ou un jour férié, alors seuls les jours ouvrés sont comptés dans le résultat.

🖥️ Frontend

Le projet inclut une interface frontend légère directement prête à l’emploi et qui permet de :

  • Tester la récupération des dates des jours fériés
  • Visualiser les jours fériés et week-ends désactivés.
  • Sélectionner une plage de dates.

📁 Voir : index.html, script.js, style.css

image

🌐 Comment utiliser l’API dans un frontend

Vous pouvez interroger l’API depuis n’importe quelle application web (HTML, JavaScript, React, Vue, etc.) en utilisant fetch ou axios.

🔓 Appels non protégés (ex. : récupération des jours fériés)

fetch("https://localhost:7057/api/Holidays")
  .then(res => res.json())
  .then(data => console.log(data));

🔐 Appels protégés (ex. : ajout de jour férié)

  1. Obtenez un token JWT via l’endpoint /api/Login :
const loginRes = await fetch("https://localhost:7057/api/Login", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    userName: "jason_admin",
    password: "MyPass_w0rd"
  })
});
const token = await loginRes.text(); // JWT string
  1. Utilisez ce token dans vos requêtes protégées :
fetch("https://localhost:7057/api/Holidays", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${token}`
  },
  body: JSON.stringify([
    { name: "Jour de repos", date: "2025-08-16" }
  ])
})
.then(res => {
  if (res.ok) console.log("Ajouté !");
  else console.warn("Échec");
});

🚀 Démarrage

  1. Cloner le repo
  2. Lancer via Visual Studio ou en ligne de commande :
dotnet run
  1. Accéder à Swagger : https://localhost:7057/swagger/index.html

  • Projet réalisé dans le cadre d'une évaluation ASP.NET Core WebAPI
  • Par : Mika MANTTARI
  • Date : Juillet 2025

About

PublicHolidayAPI est une API RESTful développée avec ASP.NET Core, conçue pour fournir une gestion centralisée des jours fériés. Elle permet d'éviter les erreurs liées à la planification sur des dates non ouvrables.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors