From de6a1c538565bd6a1764d626ba78d3309095f08f Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Sat, 30 May 2026 14:25:02 +0200 Subject: [PATCH 1/2] Actualiser README.md --- README.md | 103 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 445adac6..02b4090a 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,79 @@ -# Gestionnaire de Stocks et Commandes +# PyroFêtes — Système de gestion des stocks et des documents -Cette application web permet de **suivre les stocks**, **automatiser les commandes fournisseurs** et **gérer le cycle complet d’approvisionnement**. -Elle est conçue pour simplifier le travail des entreprises en offrant une vue en temps réel sur les produits, leurs fournisseurs et l’état des livraisons. +> Application web de gestion des stocks, fournisseurs, devis, bons de commande et bons de livraison pour l'entreprise **PyroFêtes**. ---- -## ✨ Fonctionnalités principales +## Sommaire -### 1️⃣ Suivi et réapprovisionnement des stocks -- Définissez un **niveau minimal de stock** pour chaque produit. -- Surveillez les **niveaux en temps réel** grâce à une interface claire. -- Lorsqu’un produit atteint ou descend sous son seuil minimal, le système **génère automatiquement un bon de commande** pour le réapprovisionner. +- [Contexte](#contexte) +- [Fonctionnalités](#fonctionnalités) +- [Stack technique](#stack-technique) +- [Équipe](#équipe) -### 2️⃣ Gestion des fournisseurs -- Enregistrez les informations complètes des fournisseurs : nom, adresse, coordonnées, produits fournis, délais de livraison. -- **Associez un ou plusieurs fournisseurs** à chaque produit. -- Lorsqu’un bon de commande est créé, le système **propose automatiquement les fournisseurs appropriés**. -### 3️⃣ Devis et bons de commande -- Créez des **devis personnalisés** : sélection des produits, quantités, prix, ajout d’un logo, message ou conditions de vente. -- **Imprimez ou exportez** vos devis au format PDF. -- Générez des **bons de commande** en quelques clics, avec personnalisation (logo, conditions d’achat) et exportation en PDF. +## Contexte -### 4️⃣ Suivi des livraisons -- **Transformez un bon de commande en bon de livraison** dès l’expédition des produits par le fournisseur. -- Enregistrez toutes les informations importantes : date d’expédition, transporteur, numéro de suivi, date prévue et date effective de livraison. -- Recevez des **alertes en cas de retard**. -- Gérez la **réception des produits** et vérifiez leur conformité. +PyroFêtes cherchait à remplacer ses processus manuels de gestion des stocks et de génération de documents commerciaux par un outil centralisé. Les objectifs principaux sont : ---- +- Automatiser le réapprovisionnement +- Gérer les fournisseurs et leurs conditions +- Éditer et exporter les documents commerciaux (devis, bons de commande, bons de livraison) +- Assurer un suivi fiable des livraisons et des réceptions -## 🗂️ Livrables prévus -- **Modèle de données** : diagramme de classes commun à tous les groupes. -- **Interface utilisateur** : maquettes ou prototypes interactifs. -- **Code source commenté** pour une meilleure compréhension. -- **Documentation technique** : description des fonctionnalités, architecture de l’application et API. ---- +## Fonctionnalités -## 👥 Équipe -- **Mathys** -- **Enzo** -- **Cristiano** -- **Arsène** +### Gestion des stocks +- Définition de seuils minimaux par produit +- Visualisation en temps réel du stock courant +- Alertes automatiques en cas de stock sous le seuil +- Génération automatique de bons de commande ---- +### Gestion des fournisseurs +- Enregistrement des fournisseurs (nom, adresse, coordonnées, conditions) +- Gestion des délais de livraison par produit +- Association de plusieurs fournisseurs à un produit (prix + délai) +- Suggestion automatique du fournisseur le plus pertinent -## 🚀 Objectif -Fournir un outil complet pour automatiser la gestion des stocks et des commandes, réduisant les erreurs humaines, améliorant le suivi des livraisons et facilitant la communication avec les fournisseurs. \ No newline at end of file +### Devis & Bons de commande +- Création de devis et bons de commande (produits, quantités, prix, remises) +- Personnalisation des documents (logo, message, conditions) +- Export au format **PDF** + +### Bons de livraison & Réceptions +- Transformation d'un bon de commande validé en bon de livraison +- Enregistrement des informations de livraison (transporteur, numéro de suivi, dates) +- Alertes en cas de retard de livraison +- Gestion des réceptions avec mise à jour automatique des stocks + + +## Stack technique + +| Couche | Technologie | +|---|---| +| **Front-end** | Angular + NG-ZORRO + Tailwind CSS | +| **Back-end** | C# / .NET | +| **API** | REST (C#) | +| **Base de données** | SQL Server | +| **Gestion des tâches** | YouTrack | +| **Versioning** | Gitea | +| **Communication** | Discord + Présentiel | + + +## Équipe + +| Membre | Rôle | +|---|---| +| Mathys Sanchez-Vendé | Développeur | +| Enzo Norguet | Développeur | +| Cristiano Henrique Gaspar | Développeur | +| Arsène | Développeur | + +**Clients :** Mr Thibault Ferrand, Mr Douguet + + +## Sécurité + +- Authentification sécurisée +- Gestion des accès et des permissions par rôle (Commercial / Administrateur) +- Protection des données utilisateurs From 697e1431d9fd39de629796744e70909be72b6073 Mon Sep 17 00:00:00 2001 From: sanchezvem Date: Mon, 1 Jun 2026 10:55:32 +0100 Subject: [PATCH 2/2] Added validators to managed users --- .../Deliverers/UpdateDelivererEndpoint.cs | 2 +- .../DeleteProductFromQuotationEndpoint.cs | 2 +- .../Users/ConnectUserDtoValidator.cs | 23 ++++++++++++++++ .../Users/CreateUpdateUserDtoValidator.cs | 26 +++++++++++++++++++ .../Users/CreateUserDtoValidator.cs | 26 +++++++++++++++++++ 5 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 PyroFetes/Validators/Users/ConnectUserDtoValidator.cs create mode 100644 PyroFetes/Validators/Users/CreateUpdateUserDtoValidator.cs create mode 100644 PyroFetes/Validators/Users/CreateUserDtoValidator.cs diff --git a/PyroFetes/Endpoints/Deliverers/UpdateDelivererEndpoint.cs b/PyroFetes/Endpoints/Deliverers/UpdateDelivererEndpoint.cs index c9fd77c2..747e4a2a 100644 --- a/PyroFetes/Endpoints/Deliverers/UpdateDelivererEndpoint.cs +++ b/PyroFetes/Endpoints/Deliverers/UpdateDelivererEndpoint.cs @@ -12,7 +12,7 @@ public class UpdateDelivererEndpoint(DeliverersRepository deliverersRepository, public override void Configure() { Put("/deliverers/{@Id}", x => new { x.Id }); - Roles("Admin"); + Roles("Admin", "Employe"); } public override async Task HandleAsync(UpdateDelivererDto req, CancellationToken ct) diff --git a/PyroFetes/Endpoints/Quotations/DeleteProductFromQuotationEndpoint.cs b/PyroFetes/Endpoints/Quotations/DeleteProductFromQuotationEndpoint.cs index a8578795..c2bcbf5d 100644 --- a/PyroFetes/Endpoints/Quotations/DeleteProductFromQuotationEndpoint.cs +++ b/PyroFetes/Endpoints/Quotations/DeleteProductFromQuotationEndpoint.cs @@ -16,7 +16,7 @@ public class DeleteProductFromQuotationEndpoint(QuotationProductsRepository quot public override void Configure() { Delete("/quotations/{@ProductId}/{@QuotationId}", x => new { x.ProductId, x.QuotationId }); - Roles("Admin"); + Roles("Admin", "Employe"); } public override async Task HandleAsync(DeleteQuotationProductRequest req, CancellationToken ct) diff --git a/PyroFetes/Validators/Users/ConnectUserDtoValidator.cs b/PyroFetes/Validators/Users/ConnectUserDtoValidator.cs new file mode 100644 index 00000000..acf698a9 --- /dev/null +++ b/PyroFetes/Validators/Users/ConnectUserDtoValidator.cs @@ -0,0 +1,23 @@ +using FastEndpoints; +using FluentValidation; +using PyroFetes.DTO.User.Request; + +namespace PyroFetes.Validators.Users; + +public class ConnectUserDtoValidator : Validator +{ + public ConnectUserDtoValidator() + { + RuleFor(x => x.Name) + .NotEmpty() + .WithMessage("Username is required") + .MaximumLength(50) + .WithMessage("Username cannot exceed 50 characters") + .MinimumLength(2) + .WithMessage("Username must exceed 2 characters"); + + RuleFor(x => x.Password) + .NotEmpty() + .WithMessage("Password is required"); + } +} \ No newline at end of file diff --git a/PyroFetes/Validators/Users/CreateUpdateUserDtoValidator.cs b/PyroFetes/Validators/Users/CreateUpdateUserDtoValidator.cs new file mode 100644 index 00000000..f684e03a --- /dev/null +++ b/PyroFetes/Validators/Users/CreateUpdateUserDtoValidator.cs @@ -0,0 +1,26 @@ +using FastEndpoints; +using FluentValidation; +using PyroFetes.DTO.User.Request; + +namespace PyroFetes.Validators.Users; + +public class CreateUpdateUserDtoValidator: Validator +{ + public CreateUpdateUserDtoValidator() + { + RuleFor(x => x.Email) + .NotEmpty() + .WithMessage("L'email est requis") + .MaximumLength(100) + .WithMessage("L'email ne doit pas dépasser plus de 100 caractères") + .EmailAddress() + .WithMessage("Adresse email invalide"); + + RuleFor(x => x.Password) + .NotEmpty() + .WithMessage("Le mot de passe est requis") + .MinimumLength(12) + .WithMessage("Le mot de passe doit contenir au minimum 12 caractères") + .Matches(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*?[#?_!@$%^&*-])"); + } +} \ No newline at end of file diff --git a/PyroFetes/Validators/Users/CreateUserDtoValidator.cs b/PyroFetes/Validators/Users/CreateUserDtoValidator.cs new file mode 100644 index 00000000..e6048b00 --- /dev/null +++ b/PyroFetes/Validators/Users/CreateUserDtoValidator.cs @@ -0,0 +1,26 @@ +using FastEndpoints; +using FluentValidation; +using PyroFetes.DTO.User.Request; + +namespace PyroFetes.Validators.Users; + +public class CreateUserDtoValidator : Validator +{ + public CreateUserDtoValidator() + { + RuleFor(x => x.Email) + .NotEmpty() + .WithMessage("L'email est requis") + .MaximumLength(100) + .WithMessage("L'email ne doit pas dépasser plus de 100 caractères") + .EmailAddress() + .WithMessage("Adresse email invalide"); + + RuleFor(x => x.Password) + .NotEmpty() + .WithMessage("Le mot de passe est requis") + .MinimumLength(12) + .WithMessage("Le mot de passe doit contenir au minimum 12 caractères") + .Matches(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*?[#?_!@$%^&*-])"); + } +} \ No newline at end of file