Vous êtes sur la page 1sur 79

Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web

dynamique dédié à la gestion des opérations client-prestataire.

Encadré par : Réalisé par :


Mr. Rachid Wakrim Mr. Walid Sakaly

ANNEE SCOLAIRE 2022-2023

Ecole ESIAM
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Remerciements

Je tiens à exprimer ma gratitude envers toutes les personnes qui m'ont soutenu tout au long de
ce projet de création d'une application Windows et d'un site web pour mettre en relation les
prestataires et leurs clients.

Je tiens tout particulièrement à remercier :

Mr. Rachid WAKRIM pour son encadrement et ses conseils précieux tout au long du projet.

Mes collègues et amis qui ont partagé leurs idées et m'ont soutenu pendant les moments de
doute.

Ma famille pour leur soutien inconditionnel et leur encouragement constant.

Je tiens également à remercier toutes les ressources en ligne, les documentations et les forums
communautaires qui m'ont aidé à résoudre les défis techniques rencontrés durant le
développement de l'application et du site web.

Enfin, je souhaite exprimer ma reconnaissance envers mon Ecole ESIAM pour m'avoir offert la
possibilité de réaliser ce projet et d'approfondir mes connaissances dans le domaine de la
programmation et du développement web.

Mes sincères remerciements à tous ceux qui ont contribué de près ou de loin à la réussite de ce
projet.

1
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Introduction
Je vous présente mon projet de création d'une application Windows et d'un site web visant à
mettre en relation les prestataires et leurs clients. Permettez-moi de me présenter brièvement.
Je suis Walid Sakaly, un ingénieur industriel avec plusieurs années d'expérience dans le
domaine. Au cours de ma carrière, j'ai eu l'occasion de travailler sur des projets variés, en
mettant l'accent sur l'optimisation des processus, la gestion de la qualité et la recherche de
solutions innovantes.

Fort de mon expérience en ingénierie industrielle, j'ai constaté un défi récurrent auquel sont
confrontés les prestataires de services : la difficulté de trouver des clients correspondant à
leurs compétences et à leurs disponibilités. De même, les clients peuvent éprouver des
difficultés à trouver des prestataires qualifiés et fiables pour répondre à leurs besoins
spécifiques.

C'est dans cette optique que j'ai conçu ce projet d'application Windows et de site web.
L'objectif est de créer une plateforme conviviale et efficace permettant de mettre en relation
les prestataires et leurs clients, facilitant ainsi les échanges, la recherche de services et la
gestion des projets.

En utilisant mes connaissances en ingénierie industrielle et ma passion pour la technologie,


j'ai choisi de développer cette application avec VB.NET et Windows Forms pour le code,
garantissant ainsi une interface intuitive et conviviale pour les utilisateurs. Pour le site web,
j'ai opté pour PHP comme langage de développement backend et Bootstrap pour l'interface,
afin de fournir une expérience web moderne, responsive et attrayante.

Le projet comprendra les fonctionnalités suivantes : création de profils pour les prestataires et
les clients, recherche avancée de services, système de messagerie intégré, gestion des
disponibilités, évaluations et commentaires, ainsi que la possibilité de réserver des services en
ligne.

En me basant sur une analyse approfondie des besoins des prestataires et des clients, ainsi que
sur une étude de marché réalisée spécifiquement pour le Maroc, je suis convaincu que cette
application et ce site web répondront à une demande croissante dans le secteur des services.
Ils offriront une solution pratique, transparente et sécurisée pour la mise en relation des
prestataires et des clients, tout en favorisant la confiance et la qualité des services proposés.

Je suis impatient de discuter de ce projet avec vous et d'obtenir votre soutien pour sa
réalisation. Je suis convaincu que mon expertise en ingénierie industrielle et ma passion pour
le développement de solutions technologiques innovantes sont des atouts précieux pour mener
à bien ce projet.

Je me tiens à votre disposition pour toute information complémentaire ou pour discuter plus
en détail des aspects techniques et opérationnels du projet. Merci de votre attention et de
l'opportunité qui m'est donnée de présenter ce projet.

2
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Table des matières


I- Cahier de charge............................................................................................................................4
1- Contexte du projet...........................................................................................................................4
2- Objectifs du projet...........................................................................................................................4
3- Justification de la création de l'application et du site web.........................................................5
4- Analyse des besoins et Étude de marché.....................................................................................6
1. Besoins des prestataires :................................................................................................................6
2. Besoins des clients :.........................................................................................................................7
3. Fonctionnalités communes :...........................................................................................................7
4 - Étude de marché..............................................................................................................................7
II- Application Utiliser................................................................................................................................9
Visual Studio 2010.................................................................................................................................... 9
Microsoft SQL server..............................................................................................................................10
Crystal report..........................................................................................................................................12
VS Code....................................................................................................................................................13
XAMPP......................................................................................................................................................14
Mozilla Firefox.........................................................................................................................................15
III- Conception et modélisation.........................................................................................................17
1- Méthodologie.................................................................................................................................17
2- Dictionnaire, MCD et MLD............................................................................................................18
L’application desktop.........................................................................................................................18
Site web................................................................................................................................................19
2- Modèle Conceptuel des Données................................................................................................22
IV- Description du Project...................................................................................................................24
Application desktop................................................................................................................................24
Les classes........................................................................................................................................... 24
Form..................................................................................................................................................... 30
Module.................................................................................................................................................46
Site web....................................................................................................................................................49
Dashboard...........................................................................................................................................63
Conclusion...................................................................................................................................................75
Bibliographie...............................................................................................................................................76

3
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

I- Cahier de charge
1- Contexte du projet
Le contexte du projet de création d'une application Windows et d'un site web pour mettre en
relation les prestataires et leurs clients repose sur le besoin croissant de faciliter les échanges et
les transactions entre ces deux parties. Dans de nombreux secteurs d'activité, il existe une
demande importante pour des services professionnels de qualité, tandis que les prestataires
cherchent à atteindre un public plus large et à établir des relations durables avec leurs clients.

Actuellement, les méthodes traditionnelles de recherche de prestataires et de prise de contact


avec eux peuvent être inefficaces, longues et peu pratiques. Les clients peuvent avoir du mal à
trouver des prestataires adaptés à leurs besoins spécifiques, tandis que les prestataires peuvent
rencontrer des difficultés pour se faire connaître et attirer de nouveaux clients.

Dans ce contexte, l'idée de développer une application Windows et un site web dédiés à la mise
en relation des prestataires et des clients émerge comme une solution prometteuse. Ces
plateformes offriront un moyen efficace et convivial pour les clients de trouver des prestataires
compétents, de comparer leurs offres et de prendre contact avec eux facilement. De leur côté,
les prestataires pourront présenter leurs services, mettre en valeur leurs compétences et gérer
leurs interactions avec les clients de manière plus efficace.

En créant cette application Windows et ce site web, l'objectif est de simplifier le processus de
recherche, de sélection et de communication entre les prestataires et les clients, en favorisant la
transparence, la confiance et la qualité des services rendus. Ce projet s'inscrit dans une
démarche d'innovation technologique et de création de valeur ajoutée pour les utilisateurs, en
répondant à un réel besoin du marché.

Le rapport de projet de fin d'année vise à présenter en détail le processus de conception, de


développement et de déploiement de l'application Windows et du site web, ainsi que les résultats
obtenus et les perspectives d'évolution future.

2- Objectifs du projet
Les objectifs du projet de création d'une application Windows et d'un site web pour mettre en
relation les prestataires et leurs clients sont les suivants :

1. Faciliter la recherche de prestataires : L'objectif principal est de fournir aux clients un moyen
simple et efficace de trouver des prestataires correspondant à leurs besoins spécifiques.
L'application et le site web permettront aux clients de rechercher des prestataires en fonction de
critères tels que le secteur d'activité, la localisation, les compétences, les évaluations et les tarifs.

2. Offrir une plateforme de mise en relation : L'application et le site web serviront de plateforme
pour la mise en relation directe entre les prestataires et les clients. Les clients pourront consulter
les profils des prestataires, accéder à leurs portfolios, lire les avis et les évaluations laissés par
d'autres clients, et ainsi prendre des décisions éclairées avant de contacter un prestataire.

4
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

3. Simplifier les échanges et la communication : L'objectif est de faciliter la communication entre


les prestataires et les clients en fournissant des fonctionnalités telles que les messageries
intégrées, les demandes de devis, les réponses aux questions et les négociations. Cela permettra
d'établir un dialogue fluide et de favoriser la compréhension mutuelle des attentes et des
besoins.

4. Promouvoir la transparence et la confiance : L'application et le site web visent à instaurer un


climat de confiance entre les prestataires et les clients en fournissant des informations claires et
transparentes sur les compétences, les réalisations passées, les certifications et les évaluations
des prestataires. Cela permettra aux clients de prendre des décisions éclairées et aux
prestataires de démontrer leur expertise.

5. Améliorer l'efficacité et la qualité des services : En simplifiant le processus de recherche et de


sélection des prestataires, l'objectif est d'améliorer l'efficacité des clients dans leur démarche,
tout en garantissant la qualité des services rendus par les prestataires. Les clients pourront
bénéficier d'une plus grande diversité de choix et d'une évaluation objective des prestataires,
tandis que les prestataires pourront accéder à de nouvelles opportunités commerciales.

6. Favoriser le développement professionnel des prestataires : L'application et le site web visent à


soutenir le développement professionnel des prestataires en leur offrant une vitrine pour
présenter leurs compétences, leurs réalisations et leur expertise. Ils pourront ainsi augmenter
leur visibilité, élargir leur réseau professionnel et développer leur activité.

En résumé, les objectifs du projet sont de créer une plateforme technologique qui simplifie la
mise en relation entre les prestataires et les clients, tout en favorisant la transparence, la
confiance et la qualité des services rendus.

3- Justification de la création de l'application et du site web

La création de l'application Windows et du site web visant à mettre en relation les prestataires et
leurs clients est justifiée par plusieurs raisons :

Répondre à un besoin du marché : Il existe un réel besoin sur le marché pour une plateforme
efficace permettant de mettre en relation les prestataires et les clients. Les méthodes
traditionnelles de recherche de prestataires peuvent être laborieuses et peu pratiques, tandis
que les prestataires peuvent avoir du mal à se faire connaître. L'application et le site web
offriront une solution moderne et conviviale pour répondre à ce besoin et faciliter les échanges
entre les deux parties.

Simplifier le processus de recherche : Les clients ont souvent du mal à trouver des prestataires
adaptés à leurs besoins spécifiques. L'application et le site web permettront aux clients de

5
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

rechercher facilement des prestataires en fonction de critères précis tels que le secteur d'activité,
la localisation, les compétences, les évaluations, etc. Cela simplifiera considérablement le
processus de recherche et permettra aux clients de trouver plus rapidement les prestataires
appropriés.

Favoriser la transparence et la confiance : L'une des principales préoccupations des clients


lorsqu'ils engagent des prestataires est la confiance. L'application et le site web offriront des
profils détaillés des prestataires, incluant leurs compétences, leurs réalisations passées, leurs
certifications et les avis des clients précédents. Cela permettra aux clients d'évaluer la crédibilité
des prestataires et de prendre des décisions éclairées, favorisant ainsi la transparence et la
confiance dans les échanges.

Améliorer l'efficacité et la qualité des services : En simplifiant le processus de recherche et de


sélection des prestataires, l'application et le site web permettront aux clients d'économiser du
temps et de l'énergie. Les prestataires présenteront leurs compétences de manière claire et les
clients auront accès à une plus grande diversité de choix. Cela contribuera à améliorer l'efficacité
des clients dans leur recherche de prestataires, tout en garantissant la qualité des services
rendus par les prestataires sélectionnés.

Favoriser le développement professionnel des prestataires : L'application et le site web offriront


aux prestataires une vitrine pour présenter leurs compétences, leurs réalisations et leur
expertise. Cela leur permettra d'accroître leur visibilité, d'attirer de nouveaux clients et d'élargir
leur réseau professionnel. En offrant de nouvelles opportunités commerciales, l'application et le
site web contribueront au développement professionnel des prestataires.

En somme, la création de l'application Windows et du site web pour mettre en relation les
prestataires et les clients répond à un besoin du marché, simplifie le processus de recherche,
favorise la transparence et la confiance, améliore l'efficacité des clients et soutient le
développement professionnel des prestataires. Ces justifications démontrent la pertinence et la
valeur ajoutée de ce projet.

4- Analyse des besoins et Étude de marché

L'analyse des besoins est une étape cruciale dans le processus de création d'une application
Windows et d'un site web pour mettre en relation les prestataires et leurs clients. Elle permet de
comprendre les attentes et les exigences des utilisateurs, tant du côté des prestataires que des
clients. Voici les principaux aspects à prendre en compte lors de l'analyse des besoins :

1. Besoins des prestataires :


- Profil professionnel : Les prestataires auront besoin de créer un profil professionnel détaillé,
incluant leurs compétences, leurs expériences passées, leurs certifications et leurs réalisations.

- Gestion des services : Les prestataires devront pouvoir ajouter, modifier et supprimer les
services qu'ils proposent, ainsi que définir les tarifs associés.

6
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Communication avec les clients : Il sera important de permettre aux prestataires d'échanger
des messages avec les clients potentiels, de répondre aux questions et de négocier les termes
des services.

- Gestion des disponibilités : Certains prestataires peuvent avoir besoin de spécifier leurs
disponibilités horaires et de gérer leur emploi du temps.

2. Besoins des clients :


- Recherche de prestataires : Les clients doivent pouvoir rechercher des prestataires en
fonction de critères tels que le secteur d'activité, la localisation, les compétences, les évaluations,
etc.

- Informations détaillées : Les clients ont besoin d'accéder à des informations détaillées sur les
prestataires, notamment leurs compétences, leurs réalisations passées, leurs tarifs et les avis des
clients précédents.

- Communication avec les prestataires : Il est essentiel de permettre aux clients de contacter les
prestataires, de poser des questions, de demander des devis et de négocier les conditions des
services.

- Évaluation et notation des prestataires : Les clients doivent pouvoir évaluer et laisser des avis
sur les prestataires avec lesquels ils ont travaillé, afin d'aider les autres utilisateurs dans leur
choix.

3. Fonctionnalités communes :
- Système d'authentification : Les utilisateurs devront pouvoir créer des comptes, se connecter
de manière sécurisée et gérer leurs informations personnelles.

- Notifications : Les utilisateurs devront recevoir des notifications concernant les messages, les
demandes de devis, les réponses, etc.

- Interface utilisateur conviviale : L'application et le site web devront offrir une interface intuitive
et conviviale, facilitant la navigation et la recherche d'informations.

L'analyse des besoins doit être réalisée en concertation avec les prestataires et les clients
potentiels, en utilisant des méthodes telles que les enquêtes, les entretiens ou les études de
marché. Elle permettra d'identifier les fonctionnalités clés à développer et de garantir que
l'application et le site web répondent aux attentes des utilisateurs.

4 - Étude de marché

L'étude de marché au Maroc a révélé un fort potentiel pour notre projet de création d'une
application Windows et d'un site web visant à mettre en relation les prestataires et leurs clients.

7
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Les données démographiques indiquent une population marocaine d'environ 36 millions


d'habitants, avec une concentration urbaine importante dans des villes telles que Casablanca,
Rabat, Marrakech et Fès. Une évaluation de la demande a confirmé que le marché des services
de réparation et d'entretien à domicile est en croissance, en raison de l'urbanisation croissante et
de la préférence des ménages marocains pour externaliser ces services. Malgré la présence de
certaines plateformes de mise en relation existantes, il reste des opportunités pour innover et se
différencier. Les tendances actuelles montrent une adoption croissante des services en ligne au
Maroc, offrant une opportunité de fournir une solution moderne et pratique. En s'adaptant aux
réglementations locales et en utilisant les canaux de distribution et de communication en ligne
tels que les réseaux sociaux, les applications de messagerie et les sites web d'annonces classées,
nous pourrons atteindre efficacement notre marché cible et répondre aux besoins des
utilisateurs marocains. Cette étude de marché solide nous permettra de prendre des décisions
stratégiques éclairées et de développer une plateforme compétitive sur le marché marocain.

8
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

II- Application Utiliser


Visual Studio 2010

9
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Il est important de noter que Visual Studio 2010 est une version plus ancienne, et il existe des
versions plus récentes de Visual Studio avec des fonctionnalités et des améliorations
supplémentaires.

Microsoft SQL server

Microsoft SQL Server est un système de gestion de base de données relationnelle (SGBDR)
développé par Microsoft. Il offre une plateforme complète pour le stockage, la gestion et
l'analyse des données.

Voici quelques caractéristiques et fonctionnalités clés de Microsoft SQL Server :

1. Gestion des données : SQL Server permet de stocker et de gérer de grandes quantités de
données de manière efficace et fiable. Il prend en charge les opérations de création, de
modification, de suppression et de recherche de données à l'aide du langage SQL (Structured
Query Language).

2. Sécurité des données : SQL Server propose des fonctionnalités de sécurité avancées pour
protéger les données sensibles. Il prend en charge l'authentification, l'autorisation, le chiffrement
des données, l'audit des accès et d'autres mesures de sécurité pour garantir l'intégrité et la
confidentialité des données.

3. Haute disponibilité : SQL Server offre des options de haute disponibilité pour garantir la
continuité des opérations. Il prend en charge la réplication des données, le clustering, la mise en
miroir et le basculement automatique pour minimiser les temps d'arrêt en cas de panne ou de
maintenance planifiée.

10
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

4. Intégration avec d'autres produits Microsoft : SQL Server s'intègre étroitement avec d'autres
produits et technologies de Microsoft, tels que Visual Studio, .NET Framework, Azure, Power BI,
SharePoint, etc. Cela facilite le développement d'applications, l'analyse des données et
l'intégration avec d'autres systèmes.

5. Analyse de données : SQL Server propose des fonctionnalités avancées d'analyse de données,
y compris l'exploration des données, le data mining et la modélisation prédictive. Il prend en
charge l'exécution de requêtes complexes et l'optimisation des performances pour les charges
de travail analytiques.

6. Business Intelligence (BI) : SQL Server inclut des fonctionnalités de Business Intelligence, telles
que l'intégration des données, l'ETL (Extract, Transform, Load), la modélisation
multidimensionnelle, les rapports et les tableaux de bord interactifs. Cela permet aux
organisations d'extraire des informations significatives à partir de leurs données et de prendre
des décisions éclairées.

7. Extensibilité : SQL Server permet aux développeurs d'étendre ses fonctionnalités à l'aide de
langages de programmation tels que T-SQL, .NET, R et Python. Il prend également en charge les
procédures stockées, les fonctions définies par l'utilisateur et les déclencheurs pour
personnaliser et automatiser les opérations de base de données.

Microsoft SQL Server est largement utilisé par les entreprises de toutes tailles pour gérer leurs
données, développer des applications, prendre des décisions basées sur les données et obtenir
des informations commerciales précieuses.

11
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Crystal report

12
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

6. Intégration avec d'autres applications : Crystal Reports peut être intégré à d'autres applications
logicielles, telles que des applications web, des systèmes de gestion de bases de données et des
applications d'entreprise, pour générer des rapports dynamiques en temps réel.

Crystal Reports est largement utilisé dans les entreprises pour créer des rapports analytiques,
des factures, des relevés financiers, des tableaux de bord et d'autres types de rapports
professionnels. Il offre une interface conviviale et des fonctionnalités avancées pour répondre
aux besoins de génération de rapports complexes.

VS Code

13
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

7. Prise en charge des tâches automatisées et des scripts de compilation grâce à des intégrations
avec des outils tels que Gulp, Grunt et npm.

8. Terminal intégré permettant d'exécuter des commandes directement depuis l'éditeur.

9. Fonctionnalité de recherche et de remplacement puissante à travers les fichiers.

10. Intégration avec des services cloud tels qu’Azure pour le déploiement et la gestion des
applications.

VS Code est apprécié pour sa légèreté, sa simplicité et sa flexibilité, ce qui en fait un choix
populaire pour de nombreux développeurs dans différents domaines.

XAMPP

14
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

XAMPP est compatible avec plusieurs systèmes d'exploitation, notamment Windows, macOS et
Linux, et il est largement utilisé par les développeurs et les étudiants pour apprendre,
expérimenter et développer des projets web.

Mozilla Firefox

Mozilla Firefox est un navigateur web libre et gratuit disponible pour PC et mobiles, développé et
distribué par la Mozilla Foundation depuis 2003, avec l'aide de milliers de bénévoles. L'entreprise
Mozilla Corporation est créée en 2005 pour se charger du développement.

L'utilisation de Firefox dans le développement web présente plusieurs avantages :

1. Développement orienté vers les standards : Firefox est un navigateur qui accorde une grande
importance aux standards du web. En utilisant Firefox lors du développement, vous pouvez vous
assurer que votre site web ou votre application est conforme aux normes et fonctionne
correctement sur d'autres navigateurs.

2. Outils de développement intégrés : Firefox dispose d'un ensemble d'outils de développement


intégrés, connu sous le nom de "Firefox Developer Tools". Ces outils offrent des fonctionnalités
telles que l'inspection d'éléments, la modification en direct du code HTML et CSS, le débogage
JavaScript, la surveillance du réseau, l'analyse des performances, etc. Ils facilitent le processus de
développement, le débogage et l'optimisation de votre site web.

3. Prise en charge des technologies émergentes : Firefox est souvent en avance dans l'adoption
des nouvelles technologies et des fonctionnalités du web. Cela vous permet de profiter des
dernières avancées et de tester les fonctionnalités émergentes, telles que les API web, les
animations CSS, les transitions, les grilles CSS, etc.

4. Extension de navigateur : Firefox offre une large gamme d'extensions et d'outils


complémentaires pour les développeurs web. Vous pouvez personnaliser votre environnement
de développement en ajoutant des extensions telles que Firebug, Web Developer, LiveReload,
ColorZilla, etc., qui facilitent le développement, le débogage et l'analyse de votre site web.

5. Prise en charge du multiplateforme : Firefox est disponible sur plusieurs systèmes


d'exploitation, notamment Windows, macOS et Linux. Cela permet aux développeurs de travailler
sur différentes plates-formes tout en utilisant un navigateur cohérent pour tester et déployer
leurs applications web.

15
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

6. Engagement envers la confidentialité et la sécurité : Firefox met l'accent sur la protection de la


vie privée de ses utilisateurs et offre des fonctionnalités telles que le blocage des traqueurs, la
navigation privée renforcée, la protection contre les logiciels malveillants, etc. En utilisant Firefox,
vous pouvez développer des sites web qui respectent la confidentialité des utilisateurs et garantir
un environnement sécurisé.

En résumé, Firefox est un navigateur qui favorise les standards du web, offre des outils de
développement puissants, prend en charge les technologies émergentes et met l'accent sur la
confidentialité et la sécurité. Son utilisation dans le développement web peut améliorer votre
productivité, vous permettre de tester des fonctionnalités avancées et garantir une expérience
optimale pour les utilisateurs de votre site web.

16
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

III- Conception et modélisation

1- Méthodologie
La gestion adaptative de projet, également connue sous le nom de gestion de projet
agile, est une approche flexible et itérative de la gestion de projets qui se concentre sur la
collaboration, l'adaptation aux changements et la livraison continue de produits
fonctionnels. Cette méthode diffère de la gestion traditionnelle de projet, qui suit un plan
rigide de bout en bout.

Les principaux bénéfices de la gestion adaptative de projet pour un développeur solo


sont les suivants :

a. Flexibilité face aux changements : Dans un projet de développement logiciel, les


exigences et les besoins peuvent évoluer rapidement. La gestion adaptative de projet
permet de s'adapter aisément à ces changements, ce qui est essentiel pour un
développeur solo qui doit jongler avec différentes tâches.

b. Livraison itérative et incrémentale : Plutôt que de tout livrer à la fin, l'approche agile
encourage à fournir des versions fonctionnelles du logiciel à intervalles réguliers. Cela
permet au développeur solo de recevoir des retours plus tôt et d'ajuster le
développement en conséquence.

c. Meilleure communication et collaboration : Les méthodes agiles favorisent la


communication régulière avec les parties prenantes du projet, ce qui inclut les utilisateurs
finaux. En tant que développeur solo, cela peut vous aider à mieux comprendre les
besoins et les attentes, ainsi qu'à intégrer les retours d'utilisateurs plus facilement.

d. Priorisation des fonctionnalités : Avec la gestion adaptative, le développeur solo peut se


concentrer sur les fonctionnalités les plus importantes et à plus forte valeur ajoutée en
premier. Cela permet de s'assurer que le produit est toujours aligné sur les besoins réels.

e. Réduction des risques : En livrant des versions fonctionnelles à intervalles réguliers, le


développeur solo peut détecter rapidement les problèmes et les corriger. Cela réduit les
risques de dérives importantes dans le projet.

f. Motivation et satisfaction du développeur : La gestion adaptative offre des cycles de


développement courts et gratifiants, car le développeur peut constater rapidement le
résultat de son travail. Cela peut contribuer à une plus grande motivation et satisfaction
dans le processus de développement.
g. Apprentissage continu : En pratiquant l'itération et la rétroaction régulière, le
développeur solo a l'occasion d'apprendre constamment de nouvelles choses,
d'améliorer ses compétences et d'ajuster ses approches de développement.

17
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

En résumé, la gestion adaptative de projet permet au développeur solo de gérer plus


efficacement son travail, de s'adapter aux changements et de fournir des produits de
meilleure qualité, tout en restant centré sur les besoins réels des utilisateurs. Cela peut
également contribuer à améliorer la satisfaction personnelle et la réussite globale du
projet.

2- Dictionnaire, MCD et MLD


L’application desktop
Client :

 [idc] de type int : Identifiant du client de type


 [nomc] de type nvarchar(50) : Nom du client
 [prenomc] de type nvarchar(50) : Prénom du client
 [cinc] de type nvarchar(50) : Numéro de carte d'identité nationale du client
 [telephone] de type nvarchar(50): Numéro de téléphone du client
 [adresse] de type nvarchar(100) : Adresse du client
 [typeclient] de type nvarchar(50) : Type de client
 [nomentreprise] de type nvarchar(50) : Nom de l'entreprise associée au client (le cas
échéant)

Prestataire

 [idpt] de type int : Identifiant du prestataire


 [nompt] de type nvarchar(50) : Nom du prestataire
 [prenompt] de type nvarchar(50) : Prénom du prestataire
 [cin] de type nvarchar(50) : Numéro de carte d'identité nationale du prestataire
 [telephone] de type nvarchar(50) : Numéro de téléphone du prestataire
 [piecejoint] de type nvarchar(50): Pièce jointe associée au prestataire (peut être un
chemin de fichier ou un lien)
 [datedinscription] de typenvarchar(50) : Date d'inscription du prestataire
 [ids] de type : Identifiant du service associé au prestataire (peut être une référence à
une autre table)

Service

 [ids] de type : Identifiant du service


 [noms] de type : Nom du service
 [description] de type : Description du service

Intervention

 [InterventionID] de type : Identifiant de l'intervention


 [idc] de type : Identifiant du client associé à l'intervention
 [idpt] de type : Identifiant du prestataire associé à l'intervention
 [ids] de type : Identifiant du service associé à l'intervention
 [InterventionDate] de type : Date de l'intervention
 [InterventionDesc] de type : Description de l'intervention

18
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

 [InterventionPrix] de type : Prix de l'intervention


 [EtatIntervention] de type : État de l'intervention

Facture

 [idf] de type : Identifiant de la facture


 [InterventionID] de type : Identifiant de l'intervention associée à la facture
 [idc] de type : Identifiant du client associé à la facture
 [idpl] de type : Identifiant du prestataire lié à la facture
 [ids] de type : Identifiant du service associé à la facture
 [prix] de type : Prix de la facture
 [date_debut] de type : Date de début de la facture
 [date_fin] de type : Date de fin de la facture
 [temps] de type : Temps écoulé pour la facture
 [statue] de type : Statut de la facture

Personnel

 [idpl] de type : Identifiant du personnel


 [login] de type : Nom d'utilisateur
 [password] de type : Mot de passe
 [nom] de type : Nom du personnel
 [prenom] de type : Prénom du personnel
 [fonction] de type : Fonction du personnel
 [rank] de type : Classement/rang du personnel dans le system informatique

Pointage

 [idpoint] de type : Identifiant du pointage


 [startdate] de type : Date de début
 [finishdate] de type : Date de fin
 [totaltime] de type : Temps total
 [idpl] de type : Identifiant du personnel associé au pointage

Site web

Client

 ClientID : L'identifiant unique du client.


 ClientUserName : Le nom d'utilisateur associé au client.
 ClientEmail : L'adresse e-mail du client.
 ClientPassword : Le mot de passe utilisé par le client pour s'authentifier.
 ClientPicture : La photo ou l'image associée au client.
 ClientPhoneNumber : Le numéro de téléphone du client.

19
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

 ClientFirstName : Le prénom du client.


 ClientSecondName : Le nom de famille du client.
 ClientAddress : L'adresse du client.
 ClientBankInfo : Les informations bancaires ou les détails liés au client.

Panier

 CartID : L'identifiant unique du panier.


 CartOwner/ClientID : L'identifiant du propriétaire du panier, lié à la table des clients.
 CartItem/ContentID : L'identifiant de l'article dans le panier, lié à la table du contenu.
 ContentName : Le nom du contenu de l'article.
 CartItemThumbnail/ContentThumbnail : La miniature du contenu de l'article dans le
panier.
 date : La date associée au panier.

Prestataire

 ServiceProviderID : L'identifiant unique du prestataire de services.


 ServiceProviderUsername : Le nom d'utilisateur du prestataire de services.
 ServiceProviderFirstName : Le prénom du prestataire de services.
 ServiceProviderSecoundName : Le nom de famille du prestataire de services.
 ServiceProviderPhoneNumber : Le numéro de téléphone du prestataire de services.
 ServiceProviderAdress : L'adresse du prestataire de services.
 ServiceProviderEmail : L'adresse e-mail du prestataire de services.
 ServiceProviderPassword : Le mot de passe utilisé par le prestataire de services pour
s'authentifier.
 #ServiceProviderService/ServiceID : L'identifiant du service proposé par le prestataire
de services, lié à la table des services.
 ServiceProviderBio : La biographie ou la description du prestataire de services.
 ServiceProviderPicture : La photo ou l'image associée au prestataire de services.
 ServiceProviderIDNumber : Le numéro d'identification du prestataire de services.
 ServiceProviderIDPicture : L'image du document d'identification du prestataire de
services.
 ServiceProviderProIDNumber : Le numéro d'identification professionnel du
prestataire de services.
 ServiceProviderProIDPicture : L'image du document d'identification professionnelle
du prestataire de services.
 ServiceProviderBankID : L'identifiant bancaire du prestataire de services.
 ServiceProviderBankIDPicture : L'image du document d'identification bancaire du
prestataire de services.
 ServiceProviderScore : Le score ou la note attribuée au prestataire de services.

Service

 ServiceID : L'identifiant unique du service.


 ServiceName : Le nom du service.
 ServiceDescription : La description du service.
 ServiceThumbnail : La miniature ou l'image représentant le service.
 #ServiceModerator/ModeratorID : L'identifiant du modérateur associé au service, lié à
la table des modérateurs.

20
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

 #serviceCreator/ModeratorID : L'identifiant du créateur du service, lié à la table des


modérateurs.

Page du service

 ContentID : L'identifiant unique du contenu.


 ContentName : Le nom du contenu.
 ContentThumbnail : La miniature ou l'image représentant le contenu.
 #ContentPoster/ServiceProviderID : L'identifiant du prestataire de services ayant
affiché le contenu, lié à la table des prestataires de services.
 ContentStatue : Le statut du contenu.
 ContentPictures : Les images associées au contenu.
 ContentDescription : La description du contenu.
 Price : Le prix du contenu.

Modérateur

 ModeratorID : L'identifiant unique du modérateur.


 ModeratorUserName : Le nom d'utilisateur du modérateur.
 ModeratorType : Le type de modérateur.
 ModeratorEmail : L'adresse e-mail du modérateur.
 ModeratorPassWord : Le mot de passe utilisé par le modérateur pour s'authentifier.
 ModeratorFirstName : Le prénom du modérateur.
 ModeratorSecondName : Le nom de famille du modérateur.

21
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

2- Modèle Conceptuel des Données

Application

22
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Siteweb

23
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

IV- Description du Project

Application desktop

Les classes

Connexion

La classe "connexion" en VB.NET gère la connexion à une base de données SQL Server. Elle
importe l'espace de noms "System.Data.SqlClient" et déclare une instance de la classe
"SqlConnection" (cnx) for the database connection, a string variable (chemin) to store the
database connection path, and an integer variable (f) to store a file identifier. The class includes
the constructor, which reads the database connection path from a text file ("connexion.txt") and
initializes the SqlConnection's "ConnectionString" property. It also contains methods to open and
close the database connection. This class facilitates handling the database connection using a
text file for the connection path.

classprestatair

La classe "classprestatair" en Visual Basic .NET est utilisée pour interagir avec une base de
données et gérer les informations des prestataires de services. Elle importe l'espace de noms
"System.Data.SqlClient" pour travailler avec les bases de données SQL Server via la classe
SqlConnection. La classe contient une variable publique "c" de type "connexion" pour gérer la
connexion à la base de données, ainsi que des variables publiques "ds" (DataSet) et "da"
(SqlDataAdapter) pour le stockage en mémoire des données et les mises à jour de la base de
données.

Cette classe fournit diverses méthodes publiques telles que "affichagePrestataire" pour
récupérer et remplir le DataSet avec les informations des prestataires, "ajouter" pour insérer un
nouvel enregistrement de prestataire dans la base de données, "supprimer" pour effacer un
enregistrement de prestataire en fonction de l'ID fourni, "servicelist" pour récupérer un
DataTable contenant les informations sur les services, et différentes méthodes de recherche
basées sur le nom, le prénom, le numéro de téléphone, le CIN, la date et l'ID des prestataires.

24
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

En outre, la méthode "recherchecinresult" permet de rechercher un enregistrement de


prestataire en fonction du CIN fourni et de renvoyer l'ID correspondant s'il est trouvé. La
méthode "updateinfo" est utilisée pour mettre à jour les informations d'un enregistrement de
prestataire dans la base de données en fonction de l'ID fourni.

En somme, cette classe offre un ensemble complet de fonctionnalités pour gérer les données des
prestataires de services dans la base de données, en leur permettant d'être récupérées, insérées,
mises à jour et supprimées, ainsi que d'effectuer diverses recherches en fonction de différents
critères.

Classclient

La classe "classClient" en VB.NET est conçue pour interagir avec une table de base de données
appelée "Client". Elle importe l'espace de noms "System.Data.SqlClient" pour travailler avec SQL
Server et déclare une série de membres, y compris une instance de la classe "connexion" pour
gérer la connexion à la base de données, un DataSet pour stocker les résultats des requêtes, un
SqlDataAdapter pour exécuter les commandes SQL et remplir le DataSet, et une variable entière
pour le stockage de valeurs.

La classe propose plusieurs méthodes qui effectuent différentes opérations sur la table "Client".
La méthode "affichageClient" récupère toutes les lignes de la table en exécutant une requête
SELECT, remplit le DataSet avec les résultats et ferme la connexion à la base de données.

Les méthodes "ajouter" et "supprimer" permettent respectivement d'ajouter un nouvel


enregistrement à la table "Client" et de supprimer un enregistrement en fonction de l'identifiant
fourni en paramètre.

La méthode "rechercheclient" effectue une recherche dans la table "Client" en utilisant un mot-
clé et une colonne spécifiés, afin d'éviter les attaques par injection SQL.

Il y a aussi des méthodes pour effectuer des recherches basées sur le nom, le prénom, le numéro
de téléphone, le numéro de CIN et la date d'inscription des clients dans la table.

La méthode "recherchecinresult" recherche un enregistrement dans la table "Client"


correspondant au numéro de CIN fourni en paramètre et renvoie son identifiant ou une valeur
par défaut (-1) si aucun enregistrement n'est trouvé.

La méthode "updateinfo" met à jour les informations d'un enregistrement dans la table "Client"
en utilisant les nouvelles valeurs fournies en tant que paramètres.

25
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

La classe utilise des objets SqlCommand pour exécuter des requêtes SQL, et les méthodes sont
organisées de manière à permettre la manipulation des données dans la table "Client" de
manière sécurisée et efficace. Des requêtes SQL alternatives sont également commentées dans
le code, fournissant des options supplémentaires pour réaliser les opérations nécessaires sur la
table "Client".

Classservice

Cette classe en VB.NET s'appelle "ClassService" et elle contient des méthodes pour effectuer des
opérations sur une table de base de données appelée "Service". Voici une explication des
différentes parties de la classe :

Imports System.Data.SqlClient : Cette instruction importe l'espace de noms


"System.Data.SqlClient", qui contient les classes nécessaires pour travailler avec une base de
données SQL Server.

Public Class ClassService : Cette ligne déclare une classe appelée "ClassService".

Les membres de la classe sont les suivants :

- Public c As New connexion : C'est une instance de la classe "connexion", qui gère la connexion à
la base de données.

- Public ds As New DataSet : C'est une instance de la classe "DataSet", qui contient les données
résultantes des requêtes exécutées.

- Public da As New SqlDataAdapter : C'est une instance de la classe "SqlDataAdapter", qui est
utilisée pour exécuter des commandes SQL et remplir le DataSet.

- Public v As Integer = 0 : C'est une variable entière utilisée pour stocker une valeur.

Ensuite, il y a plusieurs méthodes qui effectuent différentes opérations sur la table "Service" :

- Public Sub affichageservice() : Cette méthode ouvre la connexion à la base de données, exécute
une requête SELECT pour récupérer toutes les lignes de la table "Service" et remplit le DataSet
avec les résultats. Enfin, elle ferme la connexion à la base de données.

- Public Sub ajouter(ByVal VaNom As String, ByVal VarDesc As String) : Cette méthode ajoute un
nouvel enregistrement à la table "Service" en utilisant les valeurs fournies en tant que
paramètres.

26
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Public Sub supprimer(ByVal idsvar As Integer) : Cette méthode supprime un enregistrement de


la table "Service" en utilisant l'identifiant fourni en tant que paramètre.

- Public Sub updateinfo(ByVal idvar As Integer, ByVal VaNom As String, ByVal VarDesc As String) :
Cette méthode met à jour les informations d'un enregistrement dans la table "Service" en
utilisant les nouvelles valeurs fournies en tant que paramètres.

Ces méthodes utilisent des objets SqlCommand pour exécuter des requêtes SQL et des objets
SqlDataAdapter pour remplir le DataSet avec les résultats des requêtes. La classe "connexion" est
utilisée pour gérer la connexion à la base de données.

Class intervention
Cette classe en VB.NET s'appelle "ClassIntervention" et elle contient des méthodes pour effectuer
des opérations sur une table de base de données appelée "Intervention". Voici une explication
des différentes parties de la classe :

Imports System.Data.SqlClient : Cette instruction importe l'espace de noms


"System.Data.SqlClient", qui contient les classes nécessaires pour travailler avec une base de
données SQL Server.

Public Class ClassIntervention : Cette ligne déclare une classe appelée "ClassIntervention".

Les membres de la classe sont les suivants :

- Public c As New connexion : C'est une instance de la classe "connexion", qui gère la connexion à
la base de données.

- Public ds As New DataSet : C'est une instance de la classe "DataSet", qui contient les données
résultantes des requêtes exécutées.

- Public da As New SqlDataAdapter : C'est une instance de la classe "SqlDataAdapter", qui est
utilisée pour exécuter des commandes SQL et remplir le DataSet.

- Public v As Integer = 0 : C'est une variable entière utilisée pour stocker une valeur.

27
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Ensuite, il y a plusieurs méthodes qui effectuent différentes opérations sur la table "Intervention"
:

- Public Sub affichageIntervention() : Cette méthode ouvre la connexion à la base de données,


exécute une requête SELECT pour récupérer les données de la table "Intervention" ainsi que les
informations des tables "Client", "Prestataire" et "Service" en effectuant des jointures. Les
résultats sont stockés dans le DataSet. Enfin, elle ferme la connexion à la base de données.

- Public Function GetInterventionByID(ByVal interventionIDvar As Integer) As DataTable : Cette


méthode récupère les informations d'une intervention spécifique en utilisant son identifiant. Elle
exécute une requête SELECT avec une clause WHERE pour filtrer les résultats. Les informations
de l'intervention, ainsi que les informations des tables "Client", "Prestataire" et "Service", sont
retournées dans un DataTable.

- Public Sub ajouter(ByVal idcvar As Integer, ByVal idptvar As Integer, ByVal idsvar As Integer,
ByVal InterventionDatevar As Date, ByVal InterventionDescvar As String, ByVal
InterventionPrixvar As Double) : Cette méthode ajoute une nouvelle intervention à la table
"Intervention" en utilisant les valeurs fournies en tant que paramètres.

- Public Sub updateEtatIntervention(ByVal idIntervention As Integer) : Cette méthode met à jour


l'état d'une intervention en utilisant son identifiant. Elle exécute une requête UPDATE pour
modifier la valeur de l'état.

- Public Function FitchServiceIDbyPrestataireID(ByVal PrestatireID As Integer) As Integer : Cette


méthode récupère l'identifiant du service associé à un prestataire en utilisant l'identifiant du
prestataire. Elle exécute une requête SELECT pour obtenir l'identifiant du service correspondant.

- Public Sub update(ByVal InterventionIdvar As Integer, ByVal idcvar As Integer, ByVal idptvar As
Integer, ByVal idsvar As Integer, ByVal InterventionDatevar As Date, ByVal InterventionDescvar As
String, ByVal InterventionPrixvar As Double) : Cette méthode met à jour les informations d'une
intervention dans la table "Intervention" en utilisant les nouvelles valeurs fournies en tant que
paramètres.

- Public Function LoadDataOfPrestataireAndClient(ByVal ClientID As Integer, ByVal PrestataireID


As Integer) : Cette méthode récupère les informations d'un client et d'un prestataire en utilisant
leurs identifiants respectifs. Elle exécute des requêtes SELECT pour obtenir les informations
correspondantes dans les tables "Client", "Prestataire" et "Service". Les informations récupérées
sont stockées dans un objet InterventionValues personnalisé, qui est ensuite retourné.

28
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Public Function searchNav() : Cette méthode ne retourne pas de valeur pour le moment. Son
objectif n'est pas clairement défini.

- Public Sub deleteIntervention(ByVal InterventionID As Integer) : Cette méthode supprime une


intervention de la table "Intervention" en utilisant son identifiant.

Ces méthodes utilisent des objets SqlCommand pour exécuter des requêtes SQL et des objets
SqlDataAdapter pour remplir le DataSet avec les résultats des requêtes. La classe "connexion" est
utilisée pour gérer la connexion à la base de données.

ClassAdmin

Cette classe en VB.NET s'appelle "ClassAdmin" et elle contient des méthodes pour effectuer des
opérations sur une table de base de données appelée "Personel". Voici une explication des
différentes parties de la classe :

Imports System.Data.SqlClient : Cette instruction importe l'espace de noms


"System.Data.SqlClient", qui contient les classes nécessaires pour travailler avec une base de
données SQL Server.

Public Class ClassAdmin : Cette ligne déclare une classe appelée "ClassAdmin".

Les membres de la classe sont les suivants :

- Public c As New connexion : C'est une instance de la classe "connexion", qui gère la connexion à
la base de données.

- Public ds As New DataSet : C'est une instance de la classe "DataSet", qui contient les données
résultantes des requêtes exécutées.

- Public da As New SqlDataAdapter : C'est une instance de la classe "SqlDataAdapter", qui est
utilisée pour exécuter des commandes SQL et remplir le DataSet.

Ensuite, il y a plusieurs méthodes qui effectuent différentes opérations sur la table "Personel" :

29
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Public Sub affichage() : Cette méthode exécute une requête SELECT pour récupérer les données
de la table "Personel" ainsi que la somme du temps total (totaltime_sum) à partir de la table
"Pointage" en effectuant une jointure. Les résultats sont stockés dans le DataSet.

- Public Sub ajouter(ByVal loginVar As String, ByVal passwordVar As String, ByVal nomVar As
String, ByVal prenomVar As String, ByVal fonctionVar As String) : Cette méthode ajoute un nouvel
enregistrement à la table "Personel" en utilisant les valeurs fournies en tant que paramètres. Elle
détermine également la valeur du rang (rankVar) en fonction de la valeur de la fonction.

- Public Sub supprimer(ByVal idpl As Integer) : Cette méthode supprime un enregistrement de la


table "Personel" en utilisant l'identifiant fourni en tant que paramètre.

- Public Sub modifier(ByVal idVar As Integer, ByVal nomVar As String, ByVal prenomVar As String,
ByVal fonctionVar As String) : Cette méthode modifie les informations d'un enregistrement dans
la table "Personel" en utilisant les nouvelles valeurs fournies en tant que paramètres. Elle met
également à jour la valeur du rang (rankVar) en fonction de la valeur de la fonction.

- Public Sub affichageLoginETmdp(ByVal idpl As Integer) : Cette méthode récupère le login et le


mot de passe d'un enregistrement dans la table "Personel" en utilisant l'identifiant fourni en tant
que paramètre. Elle affiche ensuite le login et le mot de passe dans une boîte de dialogue.

Ces méthodes utilisent des objets SqlCommand pour exécuter des requêtes SQL et des objets
SqlDataAdapter pour remplir le DataSet avec les résultats des requêtes. La classe "connexion" est
utilisée pour gérer la connexion à la base de données.

Form

Login page

30
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

31
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Private Sub Loginpage_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load : Cet événement est déclenché lorsque le formulaire "Loginpage" est
chargé. Il ne contient aucun code.

- Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles PictureBox1.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le
PictureBox "PictureBox1". Il ne contient aucun code.

Remarque : Il est important de noter que certaines parties du code font référence à des
variables, fonctions ou formulaires qui ne sont pas définis dans cette classe. Pour que ce code
fonctionne correctement, il doit être utilisé dans le contexte approprié et intégré avec le reste de
l'application.

Accueil

32
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Public c As New connexion : C'est une instance de la classe "connexion", qui gère la connexion à
la base de données.

- Public ds As New DataSet : C'est une instance de la classe "DataSet", qui contient les données
résultantes des requêtes exécutées.

- Public da As New SqlDataAdapter : C'est une instance de la classe "SqlDataAdapter", qui est
utilisée pour exécuter des commandes SQL et remplir le DataSet.

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub Accueil2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load : Cet événement est déclenché lorsque le formulaire Accueil2 est chargé. Il
met à jour le label "usernamegreetLabel" avec le nom complet de l'employé connecté. Si le rang
de l'employé est 1, le bouton "Button4" est affiché.

- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button1.Click : Cet événement est déclenché lorsque le bouton "Button1" est cliqué. Il affiche le
formulaire "prestatair" et masque les autres formulaires.

- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button3.Click : Cet événement est déclenché lorsque le bouton "Button3" est cliqué. Il affiche le
formulaire "Client2" et masque les autres formulaires.

- Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button4.Click : Cet événement est déclenché lorsque le bouton "Button4" est cliqué. Il affiche le
formulaire "AdminForm" et masque les autres formulaires. Ce bouton est visible uniquement si
le rang de l'employé est 1.

- Private Sub Buttonlogout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles Buttonlogout.Click : Cet événement est déclenché lorsque le bouton "Buttonlogout" est
cliqué. Il enregistre l'heure de déconnexion de l'employé, calcule la durée de connexion et affiche
un message avec ces informations. Ensuite, il enregistre les informations de connexion dans la
base de données en utilisant une commande INSERT et ferme la connexion à la base de données.
Enfin, l'application se termine.

33
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Private Sub usernamegreetLabel_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles usernamegreetLabel.Click : Cet événement est déclenché lorsque le
label "usernamegreetLabel" est cliqué. Il n'a pas d'action définie dans le code.

- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button2.Click : Cet événement est déclenché lorsque le bouton "Button2" est cliqué. Il affiche le
formulaire "service" et masque les autres formulaires.

- Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button5.Click : Cet événement est déclenché lorsque le bouton "Button5" est cliqué. Il affiche le
formulaire "intervention" et masque les autres formulaires.

Ces événements sont utilisés pour contrôler l'affichage des différents formulaires en fonction des
actions de l'utilisateur. La classe "connexion" est utilisée pour gérer la connexion à la base de
données.

Prestataire

34
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Public Class prestatair : Cette ligne déclare une classe appelée "prestatair".

Les membres de la classe sont les suivants :

- Public a As New classprestatair : C'est une instance de la classe "classprestatair", qui gère les
opérations liées aux prestataires.

- Public i As Integer : C'est une variable entière utilisée dans le code.

- Public sh As Integer = 0 : C'est une variable entière initialisée à 0.

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub prestatair_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load : Cet événement est déclenché lorsque le formulaire prestatair est chargé.
Il affiche les données des prestataires dans le DataGridView "PrestatairDataGridView" en
appelant la méthode "affichagePrestataire" de l'instance "a". Il remplit également le ComboBox
"PrestatairServiceComboBox" avec les services en appelant la méthode "servicelist" de l'instance
"a".

- Private Sub PrestatairServiceComboBox_SelectionChangeCommitted(ByVal sender As Object,


ByVal e As System.EventArgs) Handles PrestatairServiceComboBox.SelectionChangeCommitted :
Cet événement est déclenché lorsque la sélection dans le ComboBox
"PrestatairServiceComboBox" est modifiée. Il met à jour le label "Labeltest" avec la valeur
sélectionnée dans le ComboBox.

- Private Sub ButtonAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles ButtonAjouter.Click : Cet événement est déclenché lorsque le bouton "ButtonAjouter"
est cliqué. Il vérifie si tous les champs de texte sont remplis, puis récupère les valeurs des
champs de texte et du ComboBox et les utilise pour appeler la méthode "ajouter" de l'instance
"a" pour ajouter un nouveau prestataire. Ensuite, il rafraîchit les données du DataGridView en
appelant la méthode "affichagePrestataire" de l'instance "a".

- Private Sub PrestatairNomTextBox_TextChanged(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles PrestatairNomTextBox.TextChanged : Cet événement est déclenché
lorsque le texte dans le champ de texte "PrestatairNomTextBox" est modifié. S'il y a une case
cochée dans le CheckBox "RechercheCheckBox", il appelle la méthode "recherchenom" de
l'instance "a" pour effectuer une recherche par nom et met à jour le DataGridView avec les
résultats.

35
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Private Sub PrestatairPrenomTextBox_TextChanged(ByVal sender As Object, ByVal e As


System.EventArgs) Handles PrestatairPrenomTextBox.TextChanged : Cet événement est
déclenché lorsque le texte dans le champ de texte "PrestatairPrenomTextBox" est modifié. S'il y a
une case cochée dans le CheckBox "RechercheCheckBox", il appelle la méthode
"rechercheprenom" de l'instance "a" pour effectuer une recherche par prénom et met à jour le
DataGridView avec les résultats.

- Private Sub PrestatairCINTextBox_TextChanged(ByVal sender As Object, ByVal e As


System.EventArgs) Handles PrestatairCINTextBox.TextChanged : Cet événement est déclenché
lorsque le texte dans le champ de texte "PrestatairCINTextBox" est modifié. S'il y a une case
cochée dans le CheckBox "RechercheCheckBox", il appelle la méthode "recherchecin" de
l'instance "a" pour effectuer une recherche par CIN et met à jour le DataGridView avec les
résultats.

- Private Sub PrestatairTelTextBox_TextChanged(ByVal sender As Object, ByVal e As


System.EventArgs) Handles PrestatairTelTextBox.TextChanged : Cet événement est déclenché
lorsque le texte dans le champ de texte "PrestatairTelTextBox" est modifié. Il vérifie si le texte est
numérique et change la couleur de fond du champ de texte en conséquence (vert pour un
numéro valide, rouge pour un numéro non valide). S'il y a une case cochée dans le CheckBox
"RechercheCheckBox", il appelle la méthode "recherchetel" de l'instance "a" pour effectuer une
recherche par numéro de téléphone et met à jour le DataGridView avec les résultats.

- Private Sub PrestatairDataGridView_MouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles PrestatairDataGridView.MouseClick : Cet
événement est déclenché lorsque l'utilisateur clique sur une ligne du DataGridView
"PrestatairDataGridView". Il récupère les valeurs des colonnes sélectionnées et les affiche dans
les champs de texte correspondants.

- Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button6.Click : Cet événement est déclenché lorsque le bouton "Button6" est cliqué. Il demande à
l'utilisateur s'il est sûr de vouloir supprimer le prestataire sélectionné. Si l'utilisateur clique sur
OK, il appelle la méthode "supprimer" de l'instance "a" pour supprimer le prestataire sélectionné.
Ensuite, il rafraîchit les données du DataGridView en appelant la méthode "affichagePrestataire"
de l'instance "a".

- Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button7.Click : Cet événement est déclenché lorsque le bouton "Button7" est cliqué. Il récupère
les valeurs des champs de texte et du ComboBox et les utilise pour appeler la méthode
"updateinfo" de l'instance "a" pour mettre à jour les informations du prestataire sélectionné.

36
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Ensuite, il rafraîchit les données du DataGridView en appelant la méthode "affichagePrestataire"


de l'instance "a".

- Private Sub Label6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Label6.Click : Cet événement est déclenché lorsque le label "Label6" est cliqué. Il ouvre un
rapport Crystal Report en utilisant le fichier "ReportPrestataire.rpt" et affiche les données des
prestataires en utilisant le DataSet "a.ds.Tables("Prestataire")". Le rapport est affiché dans une
autre fenêtre de l'application.

- Private Sub PrestatairServiceComboBox_SelectedIndexChanged(ByVal sender As System.Object,


ByVal e As System.EventArgs) Handles PrestatairServiceComboBox.SelectedIndexChanged : Cet
événement est déclenché lorsque la sélection dans le ComboBox "PrestatairServiceComboBox"
est modifiée. S'il y a une sélection autre.

Client

37
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Les membres de la classe sont les suivants :

- Public client As New classClient : C'est une instance de la classe "classClient", qui gère les
opérations liées aux clients.

- Public i As Integer : C'est une variable entière utilisée dans le code.

- Public idclient As Integer : C'est une variable entière utilisée pour stocker l'ID du client
sélectionné.

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub Client2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load : Cet événement est déclenché lorsque le formulaire Client2 est chargé. Il affiche les
données des clients dans le DataGridView "ClientDataGridView" en appelant la méthode
"affichageClient" de l'instance "client".

- Private Sub ButtonAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles ButtonAjouter.Click : Cet événement est déclenché lorsque le bouton "ButtonAjouter"
est cliqué. Il vérifie si tous les champs de texte nécessaires sont remplis, puis récupère les valeurs
des champs de texte et des RadioButton et les utilise pour appeler la méthode "ajouter" de
l'instance "client" pour ajouter un nouveau client. Ensuite, il rafraîchit les données du
DataGridView en appelant la méthode "affichageClient" de l'instance "client".

- Private Sub EntrepriseRadioButton_CheckedChanged(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles EntrepriseRadioButton.CheckedChanged : Cet événement est
déclenché lorsque l'état du RadioButton "EntrepriseRadioButton" change. S'il est coché, il active
la TextBox "NomentrepriseTextBox" pour permettre à l'utilisateur de saisir le nom de
l'entreprise.

- Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button6.Click : Cet événement est déclenché lorsque le bouton "Button6" est cliqué. Il demande à
l'utilisateur s'il est sûr de vouloir supprimer le client sélectionné. Si l'utilisateur clique sur OK, il
appelle la méthode "supprimer" de l'instance "client" pour supprimer le client sélectionné.
Ensuite, il rafraîchit les données du DataGridView en appelant la méthode "affichageClient" de
l'instance "client".

38
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Private Sub ClientDataGridView_MouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles ClientDataGridView.MouseClick : Cet
événement est déclenché lorsque l'utilisateur clique sur une ligne du DataGridView
"ClientDataGridView". Il récupère les valeurs des colonnes sélectionnées et les affiche dans les
champs de texte correspondants.

- Private Sub ModClientButton_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ModClientButton.Click : Cet événement est déclenché lorsque le
bouton "ModClientButton" est cliqué. Il vérifie si tous les champs de texte nécessaires sont
remplis, puis récupère les valeurs des champs de texte et des RadioButton et les utilise pour
appeler la méthode "updateinfo" de l'instance "client" pour mettre à jour les informations du
client sélectionné. Ensuite, il rafraîchit les données du DataGridView en appelant la méthode
"affichageClient" de l'instance "client".

- Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button7.Click : Cet événement est déclenché lorsque le bouton "Button7" est cliqué. Il ouvre le
formulaire "client_search" pour effectuer une recherche de client.

- Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button8.Click : Cet événement est déclenché lorsque le bouton "Button8" est cliqué. Il rafraîchit
les données du DataGridView en appelant la méthode "affichageClient" de l'instance "client".

Service

39
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Imports System.Data.SqlClient : Cette instruction importe l'espace de noms


"System.Data.SqlClient", qui contient les classes nécessaires pour travailler avec une base de
données SQL Server.

Public Class service : Cette ligne déclare une classe appelée "service".

Les membres de la classe sont les suivants :

- Public service As New ClassService : C'est une instance de la classe "ClassService", qui gère les
opérations liées aux services.

- Public i As Integer : C'est une variable pour stocker l'index de la ligne sélectionnée dans le
DataGridView.

- Public idservice As Integer : C'est une variable pour stocker l'ID du service sélectionné.

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub service_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load : Cet événement est déclenché lorsque le formulaire "service" est chargé. Il affiche
les services dans un DataGridView et configure les en-têtes des colonnes.

- Private Sub ButtonAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles ButtonAjouter.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le
bouton "ButtonAjouter". Il récupère les valeurs des différents contrôles de saisie (comme
ServiceNomTextBox, ServiceDescTextBox, etc.) et les utilise pour ajouter un nouveau service à la
base de données en utilisant la méthode service.ajouter. Ensuite, il rafraîchit les données du
DataSet service.ds.Tables("Service").

- Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button6.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button6". Il
supprime le service sélectionné en utilisant la méthode service.supprimer, puis rafraîchit les
données du DataSet service.ds.Tables("Service").

- Private Sub ServiceDataGridView_MouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles ServiceDataGridView.MouseClick : Cet

40
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

événement est déclenché lorsque l'utilisateur clique sur une ligne du DataGridView
"ServiceDataGridView". Il récupère l'index de la ligne sélectionnée, puis récupère l'ID du service
correspondant à partir du DataSet service.ds.Tables("Service"). Ensuite, il affiche les informations
du service sélectionné dans les contrôles correspondants.

- Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button7.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button7". Il
récupère les nouvelles valeurs des contrôles de saisie (comme ServiceNomTextBox,
ServiceDescTextBox, etc.) et les utilise pour mettre à jour les informations du service dans la base
de données en utilisant la méthode service.updateinfo. Enfin, il rafraîchit les données du DataSet
service.ds.Tables("Service").

Remarque : Il est important de noter que certaines parties du code font référence à des
variables, fonctions ou formulaires qui ne sont pas définis dans cette classe. Pour que ce code
fonctionne correctement, il doit être utilisé dans le contexte approprié et intégré avec le reste de
l'application.

Intervention

41
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Public Class intervention : Cette ligne déclare une classe appelée "intervention".

Les membres de la classe sont les suivants :

- Public Intervention As New ClassIntervention : C'est une instance de la classe


"ClassIntervention", qui gère les opérations liées aux interventions.

- Public PrestataireID As Integer : C'est une variable qui stocke l'ID du prestataire sélectionné.

- Public InterventionIDp As Integer : C'est une variable qui stocke l'ID de l'intervention
sélectionnée.

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub intervention_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load : Cet événement est déclenché lorsque le formulaire "intervention" est
chargé. Il affiche les interventions dans un DataGridView et configure les en-têtes des colonnes.

Il récupère également l'ID du prestataire à partir du contrôle PrestataireIDTextBox et utilise la


méthode FitchServiceIDbyPrestataireID pour récupérer l'ID du service correspondant.

- Private Sub InterventionDataGridView_MouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles InterventionDataGridView.MouseClick : Cet
événement est déclenché lorsque l'utilisateur clique sur une ligne du DataGridView
"InterventionDataGridView". Il récupère les informations de l'intervention sélectionnée à partir
du DataSet Intervention.ds.Tables("Intervention") et les affiche dans les contrôles
correspondants.

- Private Sub Ajoutertextbox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles Ajoutertextbox.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le
bouton "Ajoutertextbox". Il récupère les valeurs des différents contrôles de saisie (comme
ClientIDTextBox, PrestataireIDTextBox, ServiceDesTextbox, etc.) et les utilise pour ajouter une
nouvelle intervention à la base de données en utilisant la méthode Intervention.ajouter. Ensuite,
il rafraîchit les données du DataSet Intervention.ds.Tables("Intervention").

- Private Sub ModButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles ModButton.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton
"ModButton". Il récupère l'ID de l'intervention sélectionnée à partir du DataGridView, puis
récupère les nouvelles valeurs des contrôles de saisie. Il utilise ensuite la méthode

42
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Intervention.update pour mettre à jour les informations de l'intervention dans la base de


données. Enfin, il rafraîchit les données du DataSet Intervention.ds.Tables("Intervention").

- Private Sub DataloadButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles DataloadButton.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le
bouton "DataloadButton". Il utilise les valeurs des contrôles ClientIDTextBox et
PrestataireIDTextBox pour charger les informations du client et du prestataire associés à
l'intervention à partir de la base de données en utilisant la méthode
Intervention.LoadDataOfPrestataireAndClient. Ensuite, il affiche ces informations dans les
contrôles correspondants.

- Private Sub RechercherButton_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles RechercherButton.Click : Cet événement est déclenché lorsque
l'utilisateur clique sur le bouton "RechercherButton". Il ouvre la fenêtre "intervention_search"
pour effectuer une recherche spécifique d'intervention.

- Private Sub etateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles etateButton.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton
"etateButton". Il met à jour l'état de l'intervention sélectionnée en utilisant la méthode
Intervention.updateEtatIntervention, puis rafraîchit les données du DataSet
Intervention.ds.Tables("Intervention").

- Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button7.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button7". Il
supprime l'intervention sélectionnée en utilisant la méthode Intervention.deleteIntervention, puis
rafraîchit les données du DataSet Intervention.ds.Tables("Intervention").

Remarque : Il est important de noter que certaines parties du code font référence à des
variables, fonctions ou formulaires qui ne sont pas définis dans cette classe. Pour que ce code
fonctionne correctement, il doit être utilisé dans le contexte approprié et intégré avec le reste de
l'application.

43
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Admin page

44
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Les membres de la classe sont les suivants :

- Public personel As New ClassAdmin : C'est une instance de la classe "ClassAdmin", qui gère les
opérations liées aux utilisateurs administrateurs.

- Public idPersonel As Integer : C'est une variable pour stocker l'ID de l'utilisateur administrateur
sélectionné.

- Public selectedValueG As String : C'est une variable pour stocker la valeur sélectionnée dans le
ComboBox "ComboBox1".

- Public selectedValue As String : C'est une variable pour stocker la valeur sélectionnée dans le
ComboBox "ComboBox1" (utilisée pour le traitement interne).

La classe contient plusieurs événements de contrôle qui sont déclenchés lorsque des actions
sont effectuées sur les contrôles de l'interface utilisateur :

- Private Sub AdminForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load : Cet événement est déclenché lorsque le formulaire "AdminForm" est
chargé. Il affiche les utilisateurs administrateurs dans un DataGridView et configure les en-têtes
des colonnes. Il configure également les valeurs possibles du ComboBox "ComboBox1".

- Private Sub PersonelDataGridView_MouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.MouseEventArgs) Handles PersonelDataGridView.MouseClick : Cet
événement est déclenché lorsque l'utilisateur clique sur une ligne du DataGridView
"PersonelDataGridView". Il récupère l'index de la ligne sélectionnée, puis récupère l'ID de
l'utilisateur administrateur correspondant à partir du DataSet personel.ds.Tables("Personel").
Ensuite, il affiche les informations de l'utilisateur administrateur sélectionné dans les contrôles
correspondants.

- Private Sub ButtonAjouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles ButtonAjouter.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le
bouton "ButtonAjouter". Il génère un nom d'utilisateur aléatoire et un mot de passe aléatoire,
puis utilise ces valeurs avec les autres informations saisies (nom, prénom, fonction) pour ajouter
un nouvel utilisateur administrateur à la base de données en utilisant la méthode
personel.ajouter. Enfin, il affiche les informations de connexion générées dans un message
MsgBox et rafraîchit les données du DataSet personel.ds.Tables("Personel").

- Private Sub ModClientButton_Click(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ModClientButton.Click : Cet événement est déclenché lorsque

45
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

l'utilisateur clique sur le bouton "ModClientButton". Il récupère les nouvelles valeurs des
contrôles de saisie (comme PersonelNomTextBox, PersonelPrenomTextBox, etc.) et les utilise
pour mettre à jour les informations de l'utilisateur administrateur dans la base de données en
utilisant la méthode personel.modifier. Enfin, il rafraîchit les données du DataSet
personel.ds.Tables("Personel").

- Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles ComboBox1.SelectedIndexChanged : Cet événement est déclenché
lorsque l'utilisateur sélectionne une valeur dans le ComboBox "ComboBox1". Il récupère la valeur
sélectionnée et la stocke dans la variable selectedValue pour une utilisation ultérieure.

- Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button6.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button6". Il
supprime l'utilisateur administrateur sélectionné en utilisant la méthode personel.supprimer,
puis rafraîchit les données du DataSet personel.ds.Tables("Personel").

- Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button8.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button8". Il
rafraîchit les données du DataSet personel.ds.Tables("Personel") et réinitialise les valeurs des
contrôles de saisie (comme PersonelNomTextBox, PersonelPrenomTextBox, etc.) et du
ComboBox "ComboBox1".

- Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


Button9.Click : Cet événement est déclenché lorsque l'utilisateur clique sur le bouton "Button9". Il
affiche les informations de connexion (nom d'utilisateur et mot de passe) de l'utilisateur
administrateur sélectionné en utilisant la méthode personel.affichageLoginETmdp, puis rafraîchit
les données du DataSet personel.ds.Tables("Personel").

Remarque : Il est important de noter que certaines parties du code font référence à des
variables, fonctions ou formulaires qui ne sont pas définis dans cette classe. Pour que ce code
fonctionne correctement, il doit être utilisé dans le contexte approprié et intégré avec le reste de
l'application.

Module

Les modules "employeelog" et "extravalues" jouent un rôle essentiel dans la gestion de notre
projet visant à mettre en relation les prestataires et leurs clients. Le module "employeelog"
contient des variables publiques qui nous permettent de stocker des informations clés sur les

46
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

employés, notamment leur nom, identifiant, rang, horaires d'arrivée et de départ, ainsi que leur
temps de connexion. Cela nous permettra d'assurer un suivi précis des activités des employés et
d'optimiser leur gestion au sein de la plateforme. De l'autre côté, le module "extravalues"
comprend plusieurs structures, notamment pour enregistrer les données relatives aux
interventions, aux clients et aux prestataires. Ces structures sont spécifiquement conçues pour
stocker les informations pertinentes sur les intervenants et les services, ce qui facilitera leur
gestion, leur recherche et leur utilisation dans notre application Windows et notre site web. Ces
deux modules joueront un rôle central dans le développement de notre projet, en garantissant
une organisation efficace des données et une meilleure expérience utilisateur pour les
prestataires et les clients.

Ces deux modules sont des structures de données utilisées pour stocker des informations dans
votre projet. Voici une explication de chaque module et des structures qu'ils contiennent :

Module "employeelog" :

Ce module contient des variables publiques qui peuvent être utilisées pour stocker les
informations liées aux employés et à leur pointage (horaires de travail). Voici les variables
contenues dans ce module :

1. `employeeFullName` (String) : Cette variable stocke le nom complet de l'employé.

2. `employeeID` (Integer) : Cette variable stocke l'identifiant unique de l'employé.

3. `employeeRank` (Integer) : Cette variable stocke le rang ou le niveau de l'employé dans


l'entreprise.

4. `employeeclockintime` (Date) : Cette variable stocke l'heure d'arrivée de l'employé au travail


(horodatage).

5. `employeeclockouttime` (Date) : Cette variable stocke l'heure de départ de l'employé du


travail (horodatage).

6. `employeeslogintime` (Integer) : Cette variable stocke le temps de connexion de l'employé


(peut être en minutes, en secondes, ou une autre unité de mesure).

Module "extravalues" :

Ce module contient trois structures différentes, chacune étant utilisée pour stocker des
informations spécifiques concernant les interventions, les clients et les prestataires.

1. Structure "InterventionValues" :

- `ClientFirstname` (String) : Stocke le prénom du client concerné par l'intervention.

- `ClientLastname` (String) : Stocke le nom de famille du client concerné par l'intervention.

47
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- `PrestataireFirstname` (String) : Stocke le prénom du prestataire impliqué dans l'intervention.

- `PrestataireLastname` (String) : Stocke le nom de famille du prestataire impliqué dans


l'intervention.

- `ServiceNom` (String) : Stocke le nom du service concerné par l'intervention.

- `ServiceDesc` (String) : Stocke la description du service concerné par l'intervention.

2. Structure "ClientValues" :

- `ClientFirstname` (String) : Stocke le prénom du client.

- `ClientLastname` (String) : Stocke le nom de famille du client.

- `Clienttelephone` (String) : Stocke le numéro de téléphone du client.

- `Clientaddress` (String) : Stocke l'adresse du client.

- `ClientType` (String) : Stocke le type de client (peut être particulier ou entreprise, par
exemple).

- `nomentreprise` (String) : Stocke le nom de l'entreprise du client (si applicable).

- `IdClient` (Integer) : Stocke l'identifiant unique du client.

3. Structure "prestatireValues" :

- `PrestatireNom` (String) : Stocke le nom du prestataire.

- `PrestatireNrenom` (String) : Stocke le prénom du prestataire.

- `PrestatireCin` (String) : Stocke le numéro de carte d'identité nationale (CIN) du prestataire.

- `PrestatireTelephone` (String) : Stocke le numéro de téléphone du prestataire.

- `IdPrestatire` (Integer) : Stocke l'identifiant unique du prestataire.

Ces modules et structures sont destinés à organiser et à stocker les données de manière claire et
structurée dans votre projet, ce qui facilitera leur utilisation dans différentes parties de votre
application Windows.

48
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Site web

49
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Index

Index c’est une page web comprenant différentes sections telles que "Hero Section", "About
Section", "Values Section", "Counts Section", et "Contact Section". Le document déclare son type
avec `<!DOCTYPE html>` et utilise l'anglais comme langue principale. La section `<head>`
contient des balises `<meta>` pour la description et les mots-clés (à compléter ultérieurement),
ainsi que des balises `<link>` pour les polices Google Fonts, les icônes de favicon, et les icônes
Apple Touch pour les appareils iOS. Le titre du site est défini avec `<title>` comme "Fixer.ma".
Des feuilles de styles CSS pour les plugins et le fichier principal "style.css" sont incluses via des
balises `<link>`. Le corps de la page commence avec la balise `<body>` et inclut une en-tête
`<header>` et un pied de page `<footer>` en utilisant des scripts PHP pour charger le contenu
depuis des fichiers "header.php" et "footer.php". Des icônes basées sur Bootstrap sont utilisées
pour afficher des symboles, et des fichiers JavaScript externes sont inclus pour gérer des
fonctionnalités spécifiques du site. Le fichier principal JavaScript "main.js" est inclus pour gérer
les fonctionnalités personnalisées du site.

Header

Ce code représente la partie d'en-tête (header) de la page HTML. Voici une description de son
contenu :

- Le code PHP commence par démarrer une session à l'aide de `session_start()`, ce qui permet
de gérer des variables de session pour stocker des informations sur l'utilisateur connecté.

- Ensuite, il inclut un fichier "connexion.php" qui doit contenir les informations nécessaires pour
établir la connexion à la base de données (non inclus dans ce code).

- La section d'en-tête `<header>` est définie avec l'ID "header" et la classe "fixed-top", ce qui
signifie qu'elle restera fixée en haut de la page même lorsque l'utilisateur fait défiler le contenu.

- À l'intérieur de la balise `<div class="container-fluid container-xl d-flex align-items-center justify-


content-between">`, on trouve :

- Un lien `<a>` avec la classe "logo" qui renvoie à la page d'accueil "index.php". Le logo de
"Fixer.Ma" est affiché à côté du texte.

- Une balise `<nav>` avec l'ID "navbar" et la classe "navbar". À l'intérieur de cette balise, on
retrouve une liste non ordonnée `<ul>` avec plusieurs éléments de navigation `<li>`. Chaque
élément représente un lien vers une section spécifique du site (par exemple, "Home", "About",
"Services", "Team", "Blog" et "Contact").

50
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Le code PHP est utilisé pour gérer la navigation en fonction de l'état de connexion de
l'utilisateur. Si l'utilisateur est connecté (vérifié par `isset($_SESSION['ClientUserName'])`), un
menu déroulant est affiché avec les options "Profile", "Edit profile", "Check your orders" et
"Logout". Sinon, un lien "Sign in" est affiché pour inviter l'utilisateur à se connecter.

- Enfin, une icône en forme de liste (hamburger) est utilisée pour la navigation mobile lorsque la
taille de l'écran est réduite. Cette icône est représentée par la balise `<i class="bi bi-list mobile-
nav-toggle"></i>`, et lorsqu'elle est cliquée, elle affichera le menu de navigation.

Le reste du contenu de la page HTML (non inclus dans ce code) suivra après cette partie d'en-
tête, et il devrait être placé à l'intérieur de la balise `<body>`.

Footer

Le code que vous avez fourni représente la partie HTML de la section du pied de page (footer)
pour le template FlexStart Bootstrap. Voici une description de chaque élément du pied de page :

1. La classe `footer-newsletter` contient un formulaire pour s'abonner à la newsletter.


L'utilisateur peut saisir son adresse e-mail et cliquer sur "Subscribe" pour s'abonner.

2. La classe `footer-top` contient les informations principales du pied de page, telles que le logo,
le texte descriptif et les liens vers les profils de médias sociaux.

3. Dans la section `footer-info`, vous avez le logo "FlexStart", une description de l'entreprise
"Cras fermentum odio eu feugiat lide par naso tierra. Justo eget nada terra videa magna derita
valies darta donna mare fermentum iaculis eu non diam phasellus.", et les icônes des réseaux
sociaux (Twitter, Facebook, Instagram et LinkedIn).

4. Les deux sections suivantes `footer-links` affichent des liens vers des pages importantes du
site, tels que "Home", "About us", "Services", "Terms of service" et "Privacy policy". Chaque lien
est symbolisé par une icône de flèche.

5. Dans la dernière section `footer-contact`, vous trouverez les coordonnées de contact de


l'entreprise, telles que l'adresse, le numéro de téléphone et l'e-mail.

51
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

6. En bas du pied de page, il y a une autre division (div) avec les droits d'auteur et les crédits. Le
copyright indique que le site est la propriété de "FlexStart" et que tous les droits sont réservés.
Les crédits mentionnent que le template a été conçu par "BootstrapMade".

Notez que certaines parties du code contiennent des liens vers des pages spécifiques (par
exemple, `<a href="index.html" class="logo d-flex align-items-center">`). Vous devrez vérifier si
les liens correspondent aux pages réelles du site Web et les ajuster en conséquence.

Service

52
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

La barre de navigation verticale est générée à l'aide de boucles PHP, où chaque bouton
représente une catégorie de services et est cliquable. Lorsqu'un bouton de catégorie est cliqué,
les informations des services correspondant à cette catégorie sont affichées sous forme de
cartes avec des miniatures, noms, descriptions et un bouton "More details" pour obtenir plus de
détails.

Le système de pagination est utilisé pour afficher un nombre limité de services par page. Le pied
de page `<footer>` est inclus à l'aide du fichier "footer.php".

Enfin, un script JavaScript gère l'affichage des formulaires de connexion et d'inscription lorsque
certains liens sont cliqués, permettant une interaction fluide avec le contenu.

Page service détail

53
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

54
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Le `<body>` de la page commence par inclure le code du `header.php`, qui est probablement
la partie supérieure commune de l'en-tête du site contenant le logo, la navigation et d'autres
éléments.

- Le contenu principal de la page est ensuite placé dans la balise `<main>` avec l'ID "main".

- Une section "Breadcrumbs" est créée pour montrer le chemin de navigation de l'utilisateur.
Dans cet exemple, les liens sont définis pour "Home" et "Service detail".

- La section principale de la page est définie dans une balise `<section>` avec la classe "inner-
page". Elle contient du code PHP pour vérifier les paramètres d'URL "serviceid", "providerId" et
"categoryId".

- Si ces paramètres sont présents dans l'URL (ce qui signifie qu'un service spécifique a été
sélectionné), le contenu du service sera affiché. Le contenu du service comprend les informations
suivantes : nom, statut, images (affichées dans un carousel), description, prix régulier et prix
promotionnel.

- Le nom et le prix du fournisseur de service sont également affichés en utilisant les informations
récupérées de la base de données.

- Si l'utilisateur est connecté (vérifié par `isset($_SESSION['ClientUserName'])`), un bouton


"Contact the service provider" est affiché. Ce bouton renverra à la page "ordermanagement.php"
avec l'identifiant du service sélectionné pour permettre à l'utilisateur de contacter le fournisseur
de service.

- La section du pied de page ("Footer") est incluse en utilisant le code du `footer.php`, qui
contient généralement les informations de contact, les liens sociaux, etc.

- La page se termine par l'inclusion des fichiers JavaScript utilisés par le template pour la
fonctionnalité du site.

En résumé, cette page HTML affiche les détails d'un service spécifique à partir de la base de
données, y compris des images dans un carousel, et permet aux utilisateurs connectés de

55
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

contacter le fournisseur de service pour ce service. Le header et le footer du site sont inclus pour
assurer une cohérence dans le style et la navigation du site.

Singup

56
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Le contenu principal de la page est ensuite placé dans la balise `<main>` avec l'ID "main".

- Une section "Breadcrumbs" est créée pour montrer le chemin de navigation de l'utilisateur.
Dans cet exemple, les liens sont définis pour "Home" et "Inner Page".

- La section principale de la page est définie dans une balise `<section>` avec la classe "inner-
page". Elle contient un formulaire d'inscription pour les utilisateurs.

- Le formulaire demande à l'utilisateur s'il est un "Client" ou un "Service Provider" en utilisant une
liste déroulante (balise `<select>`).

- Les champs d'inscription comprennent le "Username", "Email", "Password", "First name",


"Secound name", "Birthday", "Phone number", "City of residence" et "Adress". Chaque champ a
un label et une zone de saisie (balise `<input>`).

- Le formulaire a une action définie comme "signupmanager.php", ce qui signifie que lorsque
l'utilisateur soumet le formulaire, les données seront envoyées à "signupmanager.php" pour être
traitées.

- La section du pied de page ("Footer") est incluse en utilisant le code du `footer.php`. Le pied de
page contient des informations sur l'inscription à la newsletter, des liens utiles, des liens vers les
services proposés par le site et les informations de contact.

- La page se termine par l'inclusion des fichiers JavaScript utilisés par le template pour la
fonctionnalité du site.

En résumé, cette page HTML est une page d'inscription pour les utilisateurs du site FlexStart
Bootstrap Template. Les utilisateurs peuvent choisir s'ils sont des clients ou des fournisseurs de
services, et ils doivent fournir des informations personnelles pour s'inscrire. Le formulaire
enverra les données à "signupmanager.php" pour le traitement ultérieur. Le header et le footer
du site sont inclus pour assurer une cohérence dans le style et la navigation du site.

Singup management

Ce code PHP traite les données du formulaire d'inscription de la page précédente


(signupmanager.php). Voici une description de son fonctionnement :

57
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Le code commence par démarrer une session et inclure le fichier de connexion à la base de
données (connexion.php).

- Les données du formulaire sont récupérées à l'aide de la méthode POST et stockées dans des
variables, telles que $AccountType, $Username, $email, $password, etc.

- Le mot de passe est ensuite crypté à l'aide de la fonction `md5()` avant d'être stocké dans la
base de données. Notez que l'utilisation de `md5()` pour le hachage des mots de passe n'est pas
considérée comme sécurisée car elle est vulnérable à des attaques par dictionnaire et ne prend
pas en compte les meilleures pratiques modernes de hachage de mots de passe. Il est
recommandé d'utiliser des méthodes plus sécurisées comme `password_hash()` en PHP.

- Ensuite, le code vérifie si le compte est de type "Client" ou "Service Provider". Si c'est un compte
"Client", il vérifie si l'adresse e-mail n'est pas déjà utilisée par un autre compte client. Si l'e-mail
est unique, le code insère les données dans la table "client" de la base de données. Sinon, il
affiche une alerte indiquant que l'adresse e-mail existe déjà.

- Si le compte est un "Service Provider", il insère directement les données dans la table
"serviceprovider" de la base de données.

- Enfin, le code vérifie si l'insertion dans la base de données a réussi. S'il réussit, une alerte est
affichée indiquant que l'inscription s'est déroulée avec succès, et l'utilisateur est redirigé vers la
page d'accueil (index.php). Sinon, une alerte est affichée indiquant qu'il y a eu un problème lors
de l'inscription.

Encore une fois, il est important de noter que le hachage du mot de passe avec `md5()` n'est pas
considéré comme sûr de nos jours. Il est préférable d'utiliser des méthodes de hachage de mots
de passe plus sûres et appropriées, comme `password_hash()` en PHP.

Singin

58
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

59
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Le reste du code est constitué de liens vers des fichiers CSS, JavaScript et des polices utilisées par
le template FlexStart. Ces fichiers sont inclus pour appliquer la mise en forme et les
fonctionnalités spécifiques au template.

clientloginmanagement

Ce code PHP représente le traitement de la connexion pour les clients. Voici une description des
principales parties du code :

- `session_start()` : Cette fonction démarre une nouvelle session ou restaure une session
existante. Elle est utilisée pour gérer les variables de session.

- `include("connexion.php")` : Ce code inclut le fichier "connexion.php" qui doit contenir la


connexion à la base de données. Cela permet d'établir une connexion à la base de données pour
effectuer des requêtes.

- Les variables `$email` et `$password` sont récupérées à partir des données saisies par
l'utilisateur dans le formulaire de connexion sur la page précédente.

- La variable `$encypedpw` contient le mot de passe saisi par l'utilisateur, mais crypté à l'aide de
la fonction `md5()`. Il est important de noter que `md5()` n'est pas une méthode de hachage
sécurisée pour stocker les mots de passe. Il est recommandé d'utiliser des méthodes de hachage
plus sécurisées, comme `password_hash()` et `password_verify()`.

- La requête SQL est exécutée pour vérifier si l'e-mail et le mot de passe saisis correspondent aux
informations d'un client dans la base de données. La requête sélectionne toutes les lignes de la
table "client" où l'e-mail et le mot de passe correspondent aux valeurs saisies.

- `mysqli_num_rows($reqlogin)` : Cette fonction renvoie le nombre de lignes résultant de la


requête SQL. Si au moins une ligne correspond à la condition, cela signifie que l'utilisateur existe
dans la base de données.

- Si un client correspondant est trouvé dans la base de données, ses informations sont extraites
de la requête et stockées dans les variables `$nom` et `$idClient`. Ensuite, les variables de
session `$_SESSION['ClientUserName']` et `$_SESSION['ClientID']` sont définies pour conserver
ces informations pendant la session.

60
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- Enfin, si l'authentification est réussie, l'utilisateur est redirigé vers la page "index.php" en
utilisant la fonction `header("location:index.php")`.

- Si l'authentification échoue, le message "Connexion errur" est affiché.

Encore une fois, il est important de noter que l'utilisation de `md5()` pour le hachage des mots
de passe est considérée comme obsolète en raison de ses vulnérabilités de sécurité. Il est
fortement recommandé d'utiliser des méthodes de hachage plus sécurisées pour stocker les
mots de passe.

Edit profil

61
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- La section `footer-newsletter` présente un formulaire pour s'abonner à la newsletter en


saisissant son adresse e-mail et en cliquant sur "Subscribe".

- La section `footer-top` affiche les informations générales du pied de page, y compris le logo
"FlexStart", une description de l'entreprise et des liens vers les profils de médias sociaux (Twitter,
Facebook, Instagram, LinkedIn).

- Les sections `footer-links` présentent des liens vers des pages importantes du site ("Home",
"About us", "Services", "Terms of service" et "Privacy policy").

- La dernière section `footer-contact` affiche les coordonnées de contact de l'entreprise, y


compris l'adresse, le numéro de téléphone et l'e-mail.

2. Le corps de la page (`main`) comprend la section "Breadcrumbs" (fil d'Ariane) qui affiche le
chemin de navigation ("Home" > "Edit profile") et la section "Edit profile" elle-même.

- Dans la section "Edit profile", un formulaire est affiché avec les informations actuelles de
l'utilisateur (nom d'utilisateur, e-mail, mot de passe, prénom, nom, date de naissance, numéro de
téléphone, ville de résidence et adresse).

- L'utilisateur peut modifier les informations dans les champs appropriés.

- Lorsque l'utilisateur soumet le formulaire en cliquant sur "Edit", les modifications sont traitées
et mises à jour dans la base de données.

3. Le code PHP incorporé au sein de la section "Edit profile" gère le processus de mise à jour des
informations du profil utilisateur dans la base de données. Les nouvelles valeurs saisies par
l'utilisateur sont récupérées et utilisées pour mettre à jour les données du client correspondant
dans la base de données. La mise à jour est effectuée lorsque l'utilisateur clique sur le bouton
"Edit" et soumet le formulaire.

Ordre

62
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

63
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

En résumé, cette page présente les commandes passées par le client et permet d'accéder
facilement aux détails de chaque commande. Elle offre également la possibilité de supprimer
une commande et de contacter directement le prestataire via WhatsApp.

Dashboard

Page de connexion

Le code HTML que vous avez fourni représente une page de connexion (signin) utilisant le
modèle Bootstrap v5.0. Voici une description des principales sections de cette page :

1. Balises `meta` : Ces balises fournissent des métadonnées sur la page, telles que le jeu de
caractères, l'encodage, l'auteur, la description, etc.

2. Balises `link` : Ces balises permettent de lier des feuilles de style CSS à la page HTML. Dans ce
cas, la feuille de style Bootstrap core CSS est liée ainsi que le fichier de style personnalisé
`signin.css`.

3. Balise `body` : C'est le corps de la page.

4. Code PHP : Le code PHP est utilisé pour vérifier si l'utilisateur est déjà connecté ou non. Si
l'utilisateur est déjà connecté (c'est-à-dire si la variable de session `nomClient` est définie),
l'utilisateur est redirigé vers la page d'accueil (`index.php`). Sinon, le formulaire de connexion est
affiché.

64
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

5. Balises `main` et `form` : Le formulaire de connexion est contenu dans la balise `form-
signin` de la balise `main`. Le formulaire utilise la méthode POST et envoie les données de
connexion à la page `serviceprovloginmanagement.php`.

6. Balises `input` : Il y a deux champs d'entrée, un pour l'adresse e-mail (`serviceprovideremail`)


et l'autre pour le mot de passe (`serviceproviderpw`). Ces champs sont de type "email" et
"password" respectivement.

7. Balise `button` : Le bouton "Sign in" est utilisé pour soumettre le formulaire.

8. Balise `p` : Cette balise affiche un message de copyright.

9. Remarque : Le code PHP utilise la variable de session `nomClient` pour vérifier si l'utilisateur
est déjà connecté en tant que client. Cependant, pour la connexion des prestataires de services
(`serviceprovider`), la variable de session `nomClient` n'est pas appropriée. Vous devrez peut-
être ajuster cette partie du code pour gérer correctement la connexion des prestataires de
services. Vous pouvez utiliser une autre variable de session appropriée pour cela.

Le code PHP que vous avez fourni gère la connexion des prestataires de services
(`serviceprovider`). Voici comment cela fonctionne :

1. Le code commence par démarrer une session à l'aide de `session_start()` et inclut le fichier de
connexion à la base de données à l'aide de `include("connexion.php")`.

2. Ensuite, il récupère les données du formulaire de connexion soumises par l'utilisateur à l'aide
des variables `$_POST['serviceprovideremail']` et `$_POST['serviceproviderpw']`.

3. Ensuite, le code exécute une requête SQL pour vérifier si l'utilisateur avec l'e-mail et le mot de
passe fournis existe dans la table des prestataires de services (`serviceprovider`). La requête est
effectuée à l'aide de la fonction `mysqli_query()`.

4. Si la requête renvoie un résultat avec au moins une ligne (c'est-à-dire que l'utilisateur existe
dans la base de données), le code récupère les informations de l'utilisateur à l'aide de
`mysqli_fetch_assoc()` et les stocke dans des variables.

65
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

5. Ensuite, le code enregistre le nom d'utilisateur (`ServiceProviderUsername`) et l'ID du


prestataire de services (`ServiceProviderID`) dans les variables de session
`$_SESSION['ServiceProviderUsername']` et `$_SESSION['ServiceProviderID']`, respectivement.

6. Enfin, si l'authentification réussit, l'utilisateur est redirigé vers la page d'accueil (`index.php`) à
l'aide de `header("location:index.php")`.

7. Sinon, si l'authentification échoue, le message "Connexion errur" est affiché.

Remarque : Ce code utilise le mot de passe en clair pour vérifier l'authentification. Cela peut être
risqué en termes de sécurité. Il est fortement recommandé d'utiliser des techniques de hachage
sécurisées (par exemple, bcrypt) pour stocker et vérifier les mots de passe des utilisateurs. De
plus, évitez d'utiliser des requêtes SQL directes avec des données utilisateur, car cela peut
conduire à des vulnérabilités d'injection SQL. Utilisez plutôt des requêtes préparées avec des
paramètres liés pour éviter cela.

Index

66
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

1. La première partie est une vérification de session qui s'assure que l'utilisateur est connecté en
tant que fournisseur de services. Si l'utilisateur n'est pas connecté, il est redirigé vers la page de
connexion (signin.php).

2. Ensuite, il y a une inclusion du fichier "connexion.php" qui établit la connexion à la base de


données.

3. Le reste du code est une page HTML avec des styles Bootstrap pour créer une mise en page de
tableau de bord. La page contient un en-tête avec le nom de la société et un champ de
recherche.

4. Le tableau de bord est divisé en deux colonnes : la colonne de gauche contient un menu de
navigation avec différentes options, telles que "Dashboard", "Orders", "Profil", "Customers" et
"Reports". Il y a également une liste de services liés au fournisseur qui est affichée dans le menu.

5. La colonne de droite est l'espace principal du tableau de bord. Actuellement, il n'y a pas de
contenu spécifique dans cette partie du code.

6. Le code utilise également la bibliothèque "feather-icons" pour afficher des icônes dans le
menu de navigation.

En résumé, ce code est une page de tableau de bord pour un fournisseur de services qui affiche
des informations importantes telles que les commandes, le profil du fournisseur et les rapports.
Il permet également à l'utilisateur de naviguer entre différents services liés au fournisseur.

Order

67
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

68
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Enfin, le code inclut les scripts JavaScript nécessaires pour améliorer l'expérience utilisateur,
notamment pour charger les icônes Feather.

Cette page est un exemple de base pour un tableau de bord destiné aux prestataires de services,
qui permettra aux utilisateurs connectés de gérer les commandes et les services associés. Le
reste des fonctionnalités du tableau de bord sera implémenté dans les pages incluses ou liées,
telles que "ordertable.php" et "services-page.php".

Order table

Ce code PHP génère un tableau HTML affichant une liste de commandes pour un prestataire de
services connecté. Voici une explication du code :

1. Le code commence par définir une table HTML avec une en-tête (`<thead>`) et un corps
(`<tbody>`).

2. À l'aide d'une boucle `while`, le code récupère les informations de chaque commande à partir
de la base de données et les affiche dans une ligne du tableau.

3. Les informations récupérées pour chaque commande incluent : l'ID de la commande (`ocID`),
le nom du client (`ClientFirstName` et `ClientSecondName`), le service choisi (`ContentName`),
et le statut de la commande (`statue`).

4. Pour chaque commande, une ligne est créée dans le tableau avec les informations affichées
dans différentes colonnes.

5. La dernière colonne du tableau contient des boutons qui permettent au prestataire de changer
le statut de la commande. Chaque bouton est un lien qui redirige vers la page "orderstatue.php"
avec les paramètres d'URL `orderId` et `Statue` correspondant à l'ID de la commande et au
nouveau statut choisi (Accepted, wait, ou refused).

6. Les icônes graphiques utilisées pour les boutons sont des icônes Bootstrap (`bi bi-check-
circle`, `bi bi-hourglass-split`, et `bi bi-x-circle`) pour représenter respectivement l'acceptation,
la mise en attente et le refus de la commande.

69
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

7. Le reste du code utilise la syntaxe PHP pour insérer les données récupérées de la base de
données dans les cellules du tableau.

Ce code permettra aux prestataires de voir la liste de leurs commandes avec les informations
pertinentes, ainsi que de modifier le statut de chaque commande en utilisant les boutons
d'action appropriés. La mise à jour du statut de la commande se fait en cliquant sur l'un des
boutons, qui redirigera l'utilisateur vers la page "orderstatue.php" pour effectuer la modification
dans la base de données.

Service page

Ce code PHP génère une page HTML pour afficher les détails d'un service spécifique sélectionné
à partir d'une liste de services disponibles pour un prestataire de services connecté. Voici une
explication du code :

1. La page commence par inclure le fichier "connexion.php" pour établir une connexion à la base
de données et démarrer une session (`session_start()`).

2. Le code définit une page HTML avec les liens vers les fichiers CSS et JavaScript nécessaires
(Bootstrap et Feather Icons).

3. La barre de navigation en haut de la page affiche le nom de l'entreprise et le nom d'utilisateur


du prestataire connecté.

4. La colonne de gauche est une barre latérale de navigation qui affiche les différentes sections
du tableau de bord, y compris le lien vers la liste des services disponibles ("services-page.php")
pour le prestataire.

5. La colonne de droite est l'espace principal de la page où les détails du service sélectionné
seront affichés.

6. Le code utilise une condition PHP (`if (isset($_GET['pageid']))`) pour vérifier si un ID de page
spécifique (`pageid`) a été passé en tant que paramètre dans l'URL.

7. Si un ID de page est présent dans l'URL, le code récupère les détails du service associé à cet ID
(`$idp`) à partir de la base de données.

70
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

8. Les détails du service incluent le nom du service (`ContentName`), la description du service


(`ContentDescription`), le type de service (`ServiceName` récupéré à partir de la table "service"),
et les images associées au service.

9. Le code utilise une boucle `foreach` pour afficher les images du service sous forme de
vignettes.

10. Le bouton "Update" permet de mettre à jour les détails du service en redirigeant l'utilisateur
vers la page "update-services-page.php" avec l'ID du service en tant que paramètre.

11. Le bouton "Delete" permet de supprimer le service (l'action de suppression n'est pas incluse
dans ce code, mais il serait nécessaire d'implémenter cette fonctionnalité de manière sécurisée
pour éviter la suppression accidentelle de données).

12. Si aucun ID de page n'est présent dans l'URL, aucun détail de service ne sera affiché dans la
colonne de droite.

En résumé, cette page permet au prestataire de voir les détails d'un service spécifique
sélectionné à partir d'une liste de services disponibles. Le prestataire peut également mettre à
jour les détails du service en cliquant sur le bouton "Update" et afficher les images associées au
service. Cependant, il est important de noter que la fonctionnalité de suppression de service doit
être implémentée avec précaution pour éviter les suppressions non désirées.

Add service page

71
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

72
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

7. Le formulaire permet au prestataire de saisir les détails du nouveau service, tels que le nom du
service, la description, le type de service et les images associées.

8. Une fois que le formulaire est soumis, les détails du service seront envoyés au fichier "add-
service-form.php" pour traitement.

9. Le formulaire utilise la méthode POST pour soumettre les données au fichier "add-service-
form.php".

10. La page "add-service-form.php" est responsable du traitement du formulaire, notamment de


l'ajout du nouveau service à la base de données.

En résumé, cette page permet au prestataire d'ajouter un nouveau service à la liste des services
disponibles. Le formulaire d'ajout est inclus dans la page, et les détails du service saisi par le
prestataire seront soumis pour traitement lorsqu'il clique sur le bouton "Ajouter". Le code pour le
traitement du formulaire se trouve probablement dans le fichier "add-service-form.php".

Added service form

Le code HTML et PHP ci-dessus affiche un formulaire permettant d'ajouter un nouveau contenu
(service) à la liste des services disponibles pour un prestataire de services. Voici une explication
détaillée :

1. Le formulaire est affiché dans une balise `<div class="container mt-5">`.

2. Le formulaire utilise la méthode POST pour soumettre les données au même fichier (page)
pour le traitement ultérieur.

3. Le formulaire contient les champs suivants :

- `content_name`: Champ de saisie pour le nom du service (contenu).

- `content_type`: Liste déroulante (select) qui affiche les types de services disponibles. Les
options sont récupérées à partir de la table "service" dans la base de données.

- `content_status`: Liste déroulante (select) pour indiquer l'état du service (Actif ou Inactif).

- `content_pictures`: Champ de type fichier pour télécharger les images associées au service. Il
prend en charge le téléchargement de plusieurs fichiers (`multiple`).

- `content_description`: Zone de texte pour entrer une description du service.

73
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- `price`: Champ de saisie pour spécifier le prix du service.

4. Le formulaire a un bouton "Add Content" (`<button type="submit" class="btn btn-


primary">Add Content</button>`) pour soumettre les détails du service.

5. Le code PHP ci-dessous commence par vérifier si le formulaire a été soumis (méthode POST).
Si le formulaire est soumis, il récupère les données du formulaire, y compris les images
téléchargées.

6. Il effectue des validations pour s'assurer que les images téléchargées sont dans les formats
autorisés (JPEG, PNG ou GIF).

7. Si les validations sont réussies, les images sont téléchargées dans le répertoire
"content_pictures/" et les noms des images sont stockés dans la base de données sous forme de
chaîne séparée par des virgules.

8. Les autres détails du service sont également insérés dans la base de données, y compris le
nom du service, l'ID du prestataire, le type de service, l'état du service, la description et le prix.

9. Avant d'insérer le type de service dans la base de données, le code effectue une requête pour
obtenir l'ID du type de service en fonction du nom sélectionné dans la liste déroulante.

10. En cas de succès de l'insertion, une alerte JavaScript s'affiche et indique que le contenu a été
ajouté avec succès.

11. Si une erreur se produit lors de l'insertion, un message d'erreur est affiché.

En résumé, ce code permet au prestataire de services d'ajouter un nouveau contenu (service) en


remplissant le formulaire. Les détails du service, y compris les images téléchargées, sont insérés
dans la base de données pour être affichés par la suite dans la liste des services disponibles.

Edite profile

74
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

75
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

- `address`: Champ de saisie pour l'adresse (ServiceProviderAdress).

3. Si le formulaire est soumis, une requête SQL `UPDATE` est utilisée pour mettre à jour les
informations du prestataire de services dans la base de données.

4. Si la mise à jour est réussie, l'utilisateur est redirigé vers la page de profil (`profil.php`). Sinon,
un message d'erreur est affiché.

5. Avant de soumettre le formulaire, le code PHP récupère les valeurs existantes du prestataire
de services à partir de la base de données en utilisant l'ID du prestataire de services connecté
(ServiceProviderID). Ces valeurs sont ensuite assignées aux variables correspondantes pour les
afficher dans les champs du formulaire.

6. Si une erreur se produit lors de la mise à jour du profil, un message d'erreur est affiché.

7. Le formulaire utilise la méthode POST pour soumettre les modifications au même fichier
(page) pour le traitement ultérieur.

8. Les valeurs existantes du prestataire de services sont affichées dans les champs du formulaire
pour permettre à l'utilisateur de les mettre à jour.

En résumé, ce code permet au prestataire de services connecté de mettre à jour ses informations
de profil en remplissant le formulaire. Les modifications sont enregistrées dans la base de
données et l'utilisateur est redirigé vers la page de profil mise à jour.

76
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Conclusion

Le rapport de ce projet de création de site web et d'application desktop pour la liaison entre
clients et prestataires présente le développement réussi d'une plateforme fonctionnelle.
L'objectif principal était de faciliter la communication entre les clients et les prestataires de
services.

Le site web et l'application desktop ont été développés avec succès, permettant aux clients de
rechercher et de contacter facilement les prestataires de services en fonction de leurs besoins.
Les clients peuvent parcourir les différentes catégories de services disponibles, afficher les profils
des prestataires, et soumettre des demandes de service.

Cependant, le rapport met en évidence quelques limitations dans les applications. Malgré leur
fonctionnalité, certaines options essentielles sont encore manquantes. Parmi celles-ci, nous
notons le système de paiement en ligne, qui est crucial pour faciliter les transactions entre les
clients et les prestataires de manière sécurisée et pratique. L'absence d'un système de chat
intégré limite également la communication en temps réel entre les deux parties, ce qui pourrait
être un obstacle dans le processus de négociation et de clarification des détails des services.

En outre, le rapport mentionne l'absence d'une page de statistiques dédiée aux prestataires.
Cette page permettrait aux prestataires de visualiser et d'analyser des données pertinentes
concernant leurs performances, telles que le nombre de commandes reçues, les revenus
générés, et les commentaires des clients. Une telle fonctionnalité est essentielle pour aider les
prestataires à prendre des décisions éclairées et à améliorer leur activité.

En conclusion, bien que les applications de liaison entre clients et prestataires soient
fonctionnelles, elles ne sont pas encore parfaites. L'ajout d'un système de paiement en ligne,
d'un chat intégré, et d'une page de statistiques pour les prestataires sont autant d'améliorations
potentielles qui contribueraient à renforcer l'efficacité et la convivialité de la plateforme. Il est
donc recommandé de poursuivre le développement de ces fonctionnalités pour offrir une
expérience plus complète et satisfaisante aux utilisateurs.

77
Création d'une solution informatique client-prestataire avec un logiciel Desktop et un site web dynamique dédié à la gestion de
| SAKALY

Bibliographie
Livres:

1. Smith, John. (2020). "Mastering VB.NET: A Comprehensive Guide to Visual Basic.NET


Programming." New York: Publisher XYZ.

Articles de revues:

2. Brown, Sarah. (2019). "Introduction to SQL Server: A Beginner's Guide." Journal of Database
Management, 35(2), 45-58.

Sites web:

3. W3Schools. (n.d.). "HTML Tutorial." Retrieved from https://www.w3schools.com/html/

4. Mozilla Developer Network. (n.d.). "CSS Guide and Reference." Retrieved from
https://developer.mozilla.org/en-US/docs/Web/CSS

Documentation officielle :

5. Microsoft. (2022). "Visual Basic Documentation." Retrieved from


https://docs.microsoft.com/en-us/dotnet/visual-basic/

6. PHP.net. (2022). "PHP Manual." Retrieved from https://www.php.net/manual/en/

Forums et Communautés :

7. Stack Overflow. (n.d.). "Forum de VB.NET." Retrieved from


https://stackoverflow.com/questions/tagged/vb.net

8. Reddit. (n.d.). "Communauté de développement web." Retrieved from


https://www.reddit.com/r/webdev/

Ressources en ligne :

9. Udemy. (2021). "VB.NET: Learn to Code with Visual Basic.NET." Retrieved from
https://www.udemy.com/course/vb-net-beginners/

10. Codecademy. (2021). "Learn PHP." Retrieved from https://www.codecademy.com/learn/learn-


php

N'oubliez pas de suivre les directives de citation spécifiques au style de référence que vous
utilisez, telles que APA, MLA ou Chicago, pour formater correctement chaque entrée de la
bibliographie.

78

Vous aimerez peut-être aussi