Vous êtes sur la page 1sur 6

EXAMEN

Semestre : 1 2
Session : Principale Rattrapage

Module : Architecture n-tiers .NET


Enseignants : Equipe .NET
Classes : 4Sim
Documents autorisés  : OUI NON Nombre de pages : 4
Date :28/10/2014Heure 13h30Durée : 1h30mn
ETUDIANT(e)
N° Carte : Classe : ………………
…………………………………………………………... Salle : ………………
Nom et Prénom :
……………………………………………… ..

Enoncé du problème :
Vous êtes appelés à développer une application de gestion des recrutements.

NB :Toute carte Wifi active est une tentative de fraude


- L’enseignant vous fournira un projet que vous devez compléter afin de répondre
aux questions en respectant l’architecture vue en cours et les patrons de
conceptions étudiés.
Diagramme de classes
- Un candidat peut être un candidat externe (Candidat) ou bien un candidat interne
(InternalCandidate).
- Un candidat a un ensemble d’expérience.
- Un candidat a une adresse.
- Un candidat peut postuler à plusieurs offres d’emplois (JobOffer).
- « Address » est un type complexe

Partie I : Entity-Framework
1. Ajouter les propriétés de navigation ainsi que les propriétés représentant les clés
étrangères en respectant le diagramme de classes.
2. En utilisant les annotations, configurer les propriétés selon ces contraintes :
La propriété FirstName dans la classe Candidatedoit être :
- Obligatoire sinon l’application affiche le message d’erreur suivant : Vous devez
indiquer votre prénom.
- De longueur maximale de 25 caractères sinon l’application affiche le message
d’erreur suivant : La longueur maximale est 25 caractères.
- La colonne de la Base de données qui lui correspond doit être de taille 20.
- Affichée dans les vues comme suit : «Prénom».
La propriété Emaildans la classe Candidate doit être :
- Obligatoire sinon l’application affiche le message d’erreur suivant : Vous devez
indiquer votre adresse mail.
- De type Email Address.
- Affichée dans les vues comme suit : «Email».
La propriété Passworddans la classe Candidate doit être :
- Obligatoire.
- De longueur minimale de 6 caractères.
- Affichée dans les vues comme suit : «Mot de passe».
- De type Password
La propriété DateOfBirthdans la classe Candidate doit être :
- Obligatoire
- De type Date.
- Affichée dans les vues comme suit : «Date de naissance».
La propriété CvFileName dans la classe Candidate doit être :
- De type ImageUrl
- Affichée dans les vues comme suit : «CV».
3. En utilisant la fluent API :
Dans le dossier Configurations développer:
- La classe CandidateConfiguration qui permet:
a) De configurer les relations  Many to Many entre les entités Candidate et JobOffer,
spécifier « Application » comme nom de table d’association.
b) De configurer les entités Candidate et InternalCandidate de façon que ces entités
soient mappées à une seule Table nommé «Candidates», la colonne de la base de
données qui permet de différencier entre les entités héritées doit être nommée
«IsInternal».
c) De configurer la relation entre les entités Candidate et Experience (delete cascade
désactivé).
- La classe ExperienceConfiguration qui permet de configurer la propriété
ExperienceId de la classe Experience pour qu’elle soit une clé primaire.
- La classe AddressConfiguration permet de configurer les propriétés suivantes  du
type complexe « Address »:
La propriété StreetAddressdans la classe Address doit être obligatoire, et doitavoir une
taille fixe de 20 caractères.
Les autres propriétés de la classe Address sont optionnelles.
4. Completez la classe RecrutementsContext
NB : Ne pas implémenter la classe Initializer.
5. Compléter les classes repositoriesdans le repertoire Repositories.
6. Dans la couche Service implémenter les méthodes suivantes dans la classe
CandidateService:
a) void CreateCandidate(Candidate candidate)
Cette fonction permet d’ajouter un candidat.
b) IEnumerable<Candidate> GetCandidates();
Cette fonction retourne la liste des candidats.
c) IEnumerable<InternalCandidate> GetInternalCandidates()
Cette fonction retourne la liste des candidats internes (InternalCandidate).
d) Candidate GetCandidateById(int CandidateId)
Cette fonction fait la recherche d’un candidat selon son ID passé en paramètre.
e) InternalCandidate GetInternalCandidateById(int InternalCandidateId)
Cette fonction fait la recherche d’un candidat interne selon son ID passé en
paramètre.
f) IEnumerable<InternalCandidate> GetInternalCandidatesWithGreatExperience()
Cette fonction retourne la liste des candidats internes (InternalCandidate) qui ont plus
que 3 ans d’expérience.
---------------------------------------------------------------------------------------------------------------

Partie II : MVC 


Toute cette partie se déroulera dans le projet ASP MVC intitulé :
« GestionRecrutements.Web» Les actions seront développées dans la classe
« CandidateController».
1) Implémenter l’action Index en mode GET et sa vue correspondante qui permet
d’afficher tous les Candidats.
2) Implémenter l’action CreateInternalCandidate en mode Get avec et sa vue
correspondante qui permet d’ajouter un candidat interne.
3) Implémenter l’action CreateInternalCandidate en mode Post qui permet de :
a. Valider les données du candidat interne saisie.
b. Récupérer les informations du formulaire et les sauvegarder dans la session de
l’utilisateur.
c. Enregistrer le CV du candidat dans le dossier CV sous le répertoire Content
d. Rediriger l’utilisateur vers la liste des candidats internes.

Liste des candidats internes


4) Affichage du CV du candidat :
a) Implémenter l’action et générer la vue « InternalCandidateCvPage » dans laquelle
s’affichent les informations du candidat.
b) Ajouter la vue partielle «_ShowExperiences » qui affiche les expériences d’un
candidat.
c) Ajouter la vue partielle «_ShowExperiences » à la vue « InternalCandidateCvPage »
pour former le CV du candidat.

Affichage du CV du candidat
Bon Travail

Vous aimerez peut-être aussi