diff --git a/EPAServeur/Controllers/NotesApi.cs b/EPAServeur/Controllers/NotesApi.cs
index 9e82c2d..045c410 100644
--- a/EPAServeur/Controllers/NotesApi.cs
+++ b/EPAServeur/Controllers/NotesApi.cs
@@ -18,6 +18,11 @@ using IO.Swagger.Attributes;
using IO.Swagger.Security;
using Microsoft.AspNetCore.Authorization;
using IO.Swagger.DTO;
+using EPAServeur.IServices;
+using Microsoft.Extensions.Logging;
+using IO.Swagger.ClientCollaborateur;
+using EPAServeur.Exceptions;
+using Microsoft.EntityFrameworkCore;
namespace IO.Swagger.Controllers
{
@@ -26,7 +31,25 @@ namespace IO.Swagger.Controllers
///
[ApiController]
public class NotesApiController : ControllerBase
- {
+ {
+
+ ///
+ /// Service des note
+ ///
+ private readonly INoteService noteService;
+
+ ///
+ /// Logger du contrôleur
+ ///
+ private readonly ILogger logger;
+
+ public NotesApiController(INoteService _noteService, ILogger _logger)
+ {
+ noteService = _noteService;
+ logger = _logger;
+ }
+
+
///
///
///
@@ -39,8 +62,8 @@ namespace IO.Swagger.Controllers
/// Une erreur est survenue sur le serveur
[HttpPost]
[Route("/api/notes/")]
- [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
- [ValidateModelState]
+ //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
+ //[ValidateModelState]
[SwaggerOperation("AddNote")]
[SwaggerResponse(statusCode: 201, type: typeof(DetailsNoteDTO), description: "Note créée avec succès")]
[SwaggerResponse(statusCode: 401, type: typeof(ErreurDTO), description: "L'utilisateur souhaitant accéder à la ressource n'est pas authentifié")]
@@ -49,6 +72,77 @@ namespace IO.Swagger.Controllers
[SwaggerResponse(statusCode: 500, type: typeof(ErreurDTO), description: "Une erreur est survenue sur le serveur")]
public virtual IActionResult AddNote([FromBody]DetailsNoteDTO body)
{
+ try
+ {
+ body = noteService.AjouterNote(body);
+ }
+ catch(ApiException e)
+ {
+ logger.LogError(e.Message);
+ ErreurDTO erreur = new ErreurDTO()
+ {
+ Code = 500,
+ Message = "Une erreur est survenue lors de la récupération des données collaborateurs",
+ };
+ return StatusCode(erreur.Code.Value, erreur);
+ }
+ catch(NoteInvalideException e)
+ {
+ ErreurDTO erreur = new ErreurDTO()
+ {
+ Code = 415,
+ Message = e.Message,
+ };
+ return StatusCode(erreur.Code.Value, erreur.Message);
+ }
+ catch(ReferentNotFoundException e)
+ {
+ ErreurDTO erreur = new ErreurDTO()
+ {
+ Code = 404,
+ Message = e.Message,
+ };
+ return NotFound(erreur);
+ }
+ catch(CollaborateurNotFoundException e)
+ {
+ ErreurDTO erreur = new ErreurDTO()
+ {
+ Code = 404,
+ Message = e.Message,
+ };
+ return NotFound(erreur);
+ }
+ catch(CollaborateurPartiException e)
+ {
+ ErreurDTO erreur = new ErreurDTO()
+ {
+ Code = 415,
+ Message = e.Message,
+ };
+ return StatusCode(erreur.Code.Value,erreur);
+ }
+ catch(DbUpdateException e)
+ {
+ logger.LogError(e.Message);
+ ErreurDTO erreur = new ErreurDTO
+ {
+ Code = 500,
+ Message = "Une erreur est survenue sur le serveur",
+ };
+ return StatusCode(erreur.Code.Value, erreur);
+ }
+ catch(Exception e)
+ {
+ logger.LogError(e.Message);
+ ErreurDTO erreur = new ErreurDTO
+ {
+ Code = 500,
+ Message = "Une erreur inconnue est survenue sur le serveur",
+ };
+ return StatusCode(erreur.Code.Value, erreur);
+ }
+ return Created("",body);
//TODO: Uncomment the next line to return response 201 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(201, default(DetailsNoteDTO));
@@ -63,13 +157,7 @@ namespace IO.Swagger.Controllers
//TODO: Uncomment the next line to return response 500 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(500, default(ErreurDTO));
- string exampleJson = null;
- exampleJson = "{\n \"idAuteur\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"dateCreation\" : \"2000-01-23T04:56:07.000+00:00\",\n \"dateMiseAjour\" : \"2000-01-23T04:56:07.000+00:00\",\n \"titre\" : \"titre\",\n \"texte\" : \"texte\",\n \"id\" : 0,\n \"collaborateur\" : {\n \"businessUnit\" : {\n \"agence\" : {\n \"bu\" : [ null, null ],\n \"id\" : 6,\n \"nom\" : \"nom\"\n },\n \"id\" : 0,\n \"nom\" : \"nom\"\n },\n \"mailApside\" : \"\",\n \"dateArrivee\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"dateDepart\" : \"2000-01-23T04:56:07.000+00:00\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\"\n }\n}";
- var example = exampleJson != null
- ? JsonConvert.DeserializeObject(exampleJson)
- : default(DetailsNoteDTO); //TODO: Change the data returned
- return new ObjectResult(example);
}
///
diff --git a/EPAServeur/IServices/INoteService.cs b/EPAServeur/IServices/INoteService.cs
index 6b69c12..9068a3e 100644
--- a/EPAServeur/IServices/INoteService.cs
+++ b/EPAServeur/IServices/INoteService.cs
@@ -10,7 +10,7 @@ namespace EPAServeur.IServices
{
public interface INoteService
{
- //bool? asc, int? numPage, int? parPAge, string texte, string tri)
+ /*
public IEnumerable GetNotes(bool? asc, int? numPage, int? parPAge, string texte, string tri);
public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPAge, string texte, string tri);
public DetailsNoteDTO GetNoteById(long? idNote);
@@ -18,5 +18,11 @@ namespace EPAServeur.IServices
public DetailsNoteDTO AjouterNote(DetailsNoteDTO nouvelleNote);
public void SupprimerNote(long? idNote);
public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note);
+ */
+ DetailsNoteDTO AjouterNote(DetailsNoteDTO note);
+ Task AjouterNoteAsync(DetailsNoteDTO note);
+
+
+
}
}
diff --git a/EPAServeur/Services/NoteService.cs b/EPAServeur/Services/NoteService.cs
index 5a01e3c..474786f 100644
--- a/EPAServeur/Services/NoteService.cs
+++ b/EPAServeur/Services/NoteService.cs
@@ -2,6 +2,7 @@
using EPAServeur.Exceptions;
using EPAServeur.IServices;
using EPAServeur.Models.Notes;
+using IO.Swagger.ApiCollaborateur;
using IO.Swagger.DTO;
using IO.Swagger.ModelCollaborateur;
using System;
@@ -18,180 +19,290 @@ namespace EPAServeur.Services
public class NoteService : INoteService
{
#region Variables
+ /*
///
- /// API pour accéder aux données collaborateur en passant par le service collaborateur
+ /// Service collaborateur pour récupérer les données collaborateurs
///
private readonly ICollaborateurService collaborateurService;
+ */
+
+ private readonly ICollaborateurApi collaborateurApi;
+
///
/// Contexte pour interagir avec la base de données MySQL du serveur EP
///
private readonly EpContext context;
#endregion
#region Constructeurs
- public NoteService(ICollaborateurService _collaborateurService, EpContext _context)
+ public NoteService(ICollaborateurApi _collaborateurApi, EpContext _context)
{
- collaborateurService = _collaborateurService;
+ //collaborateurService = _collaborateurService;
+ collaborateurApi = _collaborateurApi;
context = _context;
}
#endregion
+ #region Services Sync
///
/// Ajouter une nouvelle note dans la base de données
///
/// La nouvelle note a ajouté en base
- ///
+ /// La nouvelle note ajouté
public DetailsNoteDTO AjouterNote(DetailsNoteDTO nouvelleNote)
{
- if (!IsDetailsNoteValide(nouvelleNote))
- throw new NoteInvalideException();
+ //vérifier qu'il n'y a aucune valeur null
+ CheckNoteValide(nouvelleNote);
+
+ //vérifier que le référent existe
+ Collaborateur auteur = collaborateurApi.ChercherCollabId(nouvelleNote.IdAuteur);
+ CheckReferent(auteur);
+
+ //vérifier que le collaborateur existe
+ Collaborateur collaborateur = collaborateurApi.ChercherCollabId(nouvelleNote.Collaborateur.Id);
+ CheckCollaborateur(collaborateur);
+
+ //transformer la note DTO en Note
Note note = DetailsNoteDTOToNouvelleNote(nouvelleNote);
+
+ //ajouter la note et sauvegarder
context.Note.Add(note);
context.SaveChanges();
- return NoteToDetailSDTO(note);
+ nouvelleNote.Id = note.IdNote;
+ return nouvelleNote;
}
- #region Services
- ///
- /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur
- ///
- /// Id de l'auteur des notes à récupérer
- /// Id du collaborateur pour lesquelles les notes ont été écrites
- /// Précise si la liste est trié dans l'ordre croissant ou décroissant
- /// Numéro de la page qui est affiché du côté front
- /// Nombre de notes à renvoyer
- /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte
- /// Choisir l'attribut par lequel est trié la liste
- /// Retour la liste des notes à afficher
- public IEnumerable GetNotesByCollaborateur(Guid? idAuteur, Guid? idCollaborateur, bool? asc, int? numPage, int? parPage, string texte, string tri)
- {
- //Stopwatch stopwatch = new Stopwatch();
- //stopwatch.Start();
- if (collaborateurService.GetCollaborateurById(idAuteur) == null)
- throw new ReferentNotFoundException();
- //stopwatch.Stop();
- //Console.WriteLine("Durée d'exécution GetProfil 1: {0}", stopwatch.Elapsed.TotalSeconds);
- //stopwatch.Restart();
- if (collaborateurService.GetCollaborateurById(idAuteur) == null || collaborateurService.GetCollaborateurById(idCollaborateur) == null)
- throw new CollaborateurNotFoundException();
- //stopwatch.Stop();
- //Console.WriteLine("Durée d'exécution GetProfil 2: {0}", stopwatch.Elapsed.TotalSeconds);
- if (texte == null)
- texte = "";
- else
- texte = texte.ToLower();
- int skip = (numPage.Value - 1) * parPage.Value;
- int take = parPage.Value;
- IEnumerable AffichageNoteDTO = (from n in context.Note
- where n.IdAuteur == idAuteur && n.IdCollaborateur == idCollaborateur
- select NoteToAffichageDTO(n, collaborateurService));
- AffichageNoteDTO = (from a in AffichageNoteDTO
- where a.Titre.ToLower().Contains(texte)
- select a).Skip(skip).Take(take);
- return AffichageNoteDTO;
- }
+ #endregion
+ #region Services Async
///
- /// Récupérer une note en fonction de son id
+ /// Ajouter une nouvelle note dans la base de données de manière async
///
- /// Id de la note à récupérer
- /// L'objet DTO de la note correspondant à l'id passé en paramètre
- public DetailsNoteDTO GetNoteById(long? idNote)
+ /// La nouvelle note a ajouté en base
+ /// La nouvelle note ajouté
+ public async Task AjouterNoteAsync(DetailsNoteDTO nouvelleNote)
{
- Note note = context.Note.Find(idNote);
- if (note == null)
- throw new NoteNotFoundException();
- return NoteToDetailSDTO(note);
- }
+ //vérifier qu'il n'y a aucune valeur null
+ CheckNoteValide(nouvelleNote);
+
+ //vérifier que le référent existe
+ Collaborateur auteur = await collaborateurApi.ChercherCollabIdAsync((Guid?)nouvelleNote.IdAuteur);
+ CheckReferent(auteur);
+
+ //vérifier que le collaborateur existe
+ Collaborateur collaborateur = await collaborateurApi.ChercherCollabIdAsync(nouvelleNote.Collaborateur.Id);
+ CheckCollaborateur(collaborateur);
- public IEnumerable GetNotes(bool? asc, int? numPage, int? parPage, string texte, string tri)
- {
- throw new NotImplementedException();
- }
+ //transformer la note DTO en Note
+ Note note = DetailsNoteDTOToNouvelleNote(nouvelleNote);
- ///
- /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur
- ///
- /// Id de l'auteur des notes à récupérer
- /// Précise si la liste est trié dans l'ordre croissant ou décroissant
- /// Numéro de la page qui est affiché du côté front
- /// Nombre de notes à renvoyer
- /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte
- /// Choisir l'attribut par lequel est trié la liste
- /// Retour la liste des notes à afficher
- public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPage, string texte, string tri)
- {
- if (collaborateurService.GetCollaborateurById(idAuteur) == null)
- throw new CollaborateurNotFoundException();
- if (texte == null)
- texte = "";
- else
- texte = texte.ToLower();
- int skip = (numPage.Value - 1) * parPage.Value;
- int take = parPage.Value;
- //Stopwatch stopwatch = new Stopwatch();
- //stopwatch.Start();
- IEnumerable AffichageNoteDTO = (from n in context.Note
- where n.IdAuteur == idAuteur
- select NoteToAffichageDTO(n, collaborateurService));
- //stopwatch.Stop();
- //Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds);
- //stopwatch.Restart();
- AffichageNoteDTO = (from a in AffichageNoteDTO
- where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte)
- select a).Skip(skip).Take(take);
- //stopwatch.Stop();
- //Console.WriteLine("Durée d'exécution numéro 2: {0}", stopwatch.Elapsed.TotalSeconds);
- return AffichageNoteDTO;
+ //ajouter la note et sauvegarder
+ await context.Note.AddAsync(note);
+ await context.SaveChangesAsync();
+ nouvelleNote.Id = note.IdNote;
+ return nouvelleNote;
}
+ #endregion
+
+
+ /*
+
+ #region Services
+ ///
+ /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur
+ ///
+ /// Id de l'auteur des notes à récupérer
+ /// Id du collaborateur pour lesquelles les notes ont été écrites
+ /// Précise si la liste est trié dans l'ordre croissant ou décroissant
+ /// Numéro de la page qui est affiché du côté front
+ /// Nombre de notes à renvoyer
+ /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte
+ /// Choisir l'attribut par lequel est trié la liste
+ /// Retour la liste des notes à afficher
+ public IEnumerable GetNotesByCollaborateur(Guid? idAuteur, Guid? idCollaborateur, bool? asc, int? numPage, int? parPage, string texte, string tri)
+ {
+ //Stopwatch stopwatch = new Stopwatch();
+ //stopwatch.Start();
+ if (collaborateurService.GetCollaborateurById(idAuteur) == null)
+ throw new ReferentNotFoundException();
+ //stopwatch.Stop();
+ //Console.WriteLine("Durée d'exécution GetProfil 1: {0}", stopwatch.Elapsed.TotalSeconds);
+ //stopwatch.Restart();
+ if (collaborateurService.GetCollaborateurById(idAuteur) == null || collaborateurService.GetCollaborateurById(idCollaborateur) == null)
+ throw new CollaborateurNotFoundException();
+ //stopwatch.Stop();
+ //Console.WriteLine("Durée d'exécution GetProfil 2: {0}", stopwatch.Elapsed.TotalSeconds);
+
+ if (texte == null)
+ texte = "";
+ else
+ texte = texte.ToLower();
+ int skip = (numPage.Value - 1) * parPage.Value;
+ int take = parPage.Value;
+ IEnumerable AffichageNoteDTO = (from n in context.Note
+ where n.IdAuteur == idAuteur && n.IdCollaborateur == idCollaborateur
+ select NoteToAffichageDTO(n, collaborateurService));
+ AffichageNoteDTO = (from a in AffichageNoteDTO
+ where a.Titre.ToLower().Contains(texte)
+ select a).Skip(skip).Take(take);
+ return AffichageNoteDTO;
+ }
+
+ ///
+ /// Récupérer une note en fonction de son id
+ ///
+ /// Id de la note à récupérer
+ /// L'objet DTO de la note correspondant à l'id passé en paramètre
+ public DetailsNoteDTO GetNoteById(long? idNote)
+ {
+ Note note = context.Note.Find(idNote);
+ if (note == null)
+ throw new NoteNotFoundException();
+ return NoteToDetailSDTO(note);
+ }
+
+ public IEnumerable GetNotes(bool? asc, int? numPage, int? parPage, string texte, string tri)
+ {
+ throw new NotImplementedException();
+ }
+
+ ///
+ /// Récupérer la liste des notes qu'un auteur a écrit sur un collaborateur
+ ///
+ /// Id de l'auteur des notes à récupérer
+ /// Précise si la liste est trié dans l'ordre croissant ou décroissant
+ /// Numéro de la page qui est affiché du côté front
+ /// Nombre de notes à renvoyer
+ /// permet de récupérer les notes les informations du collaborateur ou le titre de la note contient le texte
+ /// Choisir l'attribut par lequel est trié la liste
+ /// Retour la liste des notes à afficher
+ public IEnumerable GetNotesByAuteur(Guid? idAuteur, bool? asc, int? numPage, int? parPage, string texte, string tri)
+ {
+ if (collaborateurService.GetCollaborateurById(idAuteur) == null)
+ throw new CollaborateurNotFoundException();
+ if (texte == null)
+ texte = "";
+ else
+ texte = texte.ToLower();
+ int skip = (numPage.Value - 1) * parPage.Value;
+ int take = parPage.Value;
+ //Stopwatch stopwatch = new Stopwatch();
+ //stopwatch.Start();
+ IEnumerable AffichageNoteDTO = (from n in context.Note
+ where n.IdAuteur == idAuteur
+ select NoteToAffichageDTO(n, collaborateurService));
+ //stopwatch.Stop();
+ //Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds);
+ //stopwatch.Restart();
+ AffichageNoteDTO = (from a in AffichageNoteDTO
+ where a.Collaborateur.ToLower().Contains(texte) || a.Titre.ToLower().Contains(texte)
+ select a).Skip(skip).Take(take);
+ //stopwatch.Stop();
+ //Console.WriteLine("Durée d'exécution numéro 2: {0}", stopwatch.Elapsed.TotalSeconds);
+ return AffichageNoteDTO;
+ }
+
+ ///
+ /// Supprimer une note en fonction de son Id
+ ///
+ /// Id de la note à supprimer
+ /// Si oui ou non la notea bien été supprimé
+ public void SupprimerNote(long? idNote)
+ {
+ Note note = context.Note.Find(idNote);
+ if (note == null)
+ throw new NoteNotFoundException();
+ context.Remove(note);
+ context.SaveChanges();
+ }
+
+ ///
+ /// Mettre à jour une note
+ ///
+ /// Id de la note à modifier
+ ///
+ ///
+ public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note)
+ {
+ if (idNote != note.Id)
+ throw new NoteIdImcompatibleException();
+ if (!CheckNoteValide(note))
+ throw new NoteInvalideException();
+ Note noteToUpdate = context.Note.Find(idNote);
+ noteToUpdate.Titre = note.Titre;
+ noteToUpdate.Texte = note.Texte;
+ noteToUpdate.DateMiseAJour = DateTime.Now;
+ context.SaveChanges();
+ return NoteToDetailSDTO(noteToUpdate);
+ }
+ ///
+ /// Vérifier si un objet DetailsNoteDTO possède est valide pour ajout ou mise à jour
+ ///
+ /// Un objet DetailsNoteDTO est valide si aucune de ses propriétés n'est à null
+ ///
+ /// true si l'objet est valide, false sinon
+ private bool CheckNoteValide(DetailsNoteDTO note)
+ {
+ return !(note == null || note.IdAuteur == null || note.Collaborateur == null || note.Collaborateur.Id == null || note.Titre == null || note.Texte == null) ;
+ }
+ #endregion
+
+ */
+
+ #region fonctions privees
///
- /// Supprimer une note en fonction de son Id
+ /// Vérfier si la note est valide
///
- /// Id de la note à supprimer
- /// Si oui ou non la notea bien été supprimé
- public void SupprimerNote(long? idNote)
+ /// La note a vérifié
+ private void CheckNoteValide(DetailsNoteDTO note)
{
- Note note = context.Note.Find(idNote);
+ //vérifier que la note n'est pas null
if (note == null)
- throw new NoteNotFoundException();
- context.Remove(note);
- context.SaveChanges();
+ throw new NoteInvalideException("Aucune note n'a été reçue");
+
+ //vérfier que la note a bien un auteur
+ if (note.IdAuteur == null || !note.IdAuteur.HasValue)
+ throw new NoteInvalideException("Il impossible d'enregistrer sans donnée sur la personne qui l'a écrite");
+
+ //vérifier que la note est bien lié à un collaboarteur identifiable sur le serveur distant (avec une id)
+ if (note.Collaborateur == null || note.Collaborateur.Id == null || !note.Collaborateur.Id.HasValue)
+ throw new NoteInvalideException("Il est impossible d'enregistrer une note qui n'est pas lié à un collaborateur");
+
+ //vérifier que le titre de la note est valide
+ if (note.Titre == null || note.Titre == "" || note.Titre.Length < 3)
+ throw new NoteInvalideException("Vous devez saisir un titre d'au moins 3 caractères");
+
+ //vérifier que le texte de la note est valide
+ if(note.Texte == null || note.Texte == "" || note.Texte.Length < 3)
+ throw new NoteInvalideException("Vous devez saisir une note d'au moins 3 caractères");
}
///
- /// Mettre à jour une note
+ /// Vérifier que l'auteur de la note existe et est toujours présent dans l'entreprise
///
- /// Id de la note à modifier
- ///
- ///
- public DetailsNoteDTO UpdateNote(long? idNote, DetailsNoteDTO note)
+ /// L'auteur de la note
+ private void CheckReferent(Collaborateur auteur)
{
- if (idNote != note.Id)
- throw new NoteIdImcompatibleException();
- if (!IsDetailsNoteValide(note))
- throw new NoteInvalideException();
- Note noteToUpdate = context.Note.Find(idNote);
- noteToUpdate.Titre = note.Titre;
- noteToUpdate.Texte = note.Texte;
- noteToUpdate.DateMiseAJour = DateTime.Now;
- context.SaveChanges();
- return NoteToDetailSDTO(noteToUpdate);
+ if (auteur == null)
+ throw new ReferentNotFoundException("Les informations de l'auteur de la note n'ont pas été trouvé");
+ if (auteur.DateDepart.HasValue)
+ throw new CollaborateurPartiException("Vous ne pouvez pas créer ou modifier de note si vous avez quitté l'entreprise");
}
///
- /// Vérifier si un objet DetailsNoteDTO possède est valide pour ajout ou mise à jour
+ /// Vérifier que le collaborateur concerné par la note existe et est toujorus présent dans l'entreprise
///
- /// Un objet DetailsNoteDTO est valide si aucune de ses propriétés n'est à null
- ///
- /// true si l'objet est valide, false sinon
- private bool IsDetailsNoteValide(DetailsNoteDTO note)
+ /// Le collaborateur concerné
+ private void CheckCollaborateur(Collaborateur collaborateur)
{
- return !(note == null || note.IdAuteur == null || note.Collaborateur == null || note.Collaborateur.Id == null || note.Titre == null || note.Texte == null) ;
+ if (collaborateur == null)
+ throw new CollaborateurNotFoundException("Le collaborateur pour qui la note est écrite n'a pas été trouvé");
+ if (collaborateur.DateDepart.HasValue)
+ throw new CollaborateurPartiException("Vous ne pouvez pas créer ou modifier de note si vous avez quitté l'entreprise");
}
- #endregion
-
+ #endregion
#region ObjectToDTO
///
/// Transformer un objet note en objet pour afficher un note dans dans un tableau
@@ -199,9 +310,10 @@ namespace EPAServeur.Services
/// Note à transformer
/// Service collaborateur pour récupérer les informations des collaborateurs
/// La note transformée pour être affichée
- private static AffichageNoteDTO NoteToAffichageDTO(Note note, ICollaborateurService collaborateurService)
+ private AffichageNoteDTO NoteToAffichageDTO(Note note)
{
- CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur);
+ //CollaborateurDTO collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur);
+ Collaborateur collaborateur = collaborateurApi.ChercherCollabId((Guid?)note.IdCollaborateur);
AffichageNoteDTO affichage = new AffichageNoteDTO()
{
Id = note.IdNote,
@@ -228,7 +340,7 @@ namespace EPAServeur.Services
Titre = note.Titre,
Texte = note.Texte,
IdAuteur = note.IdAuteur,
- Collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur)
+ //Collaborateur = collaborateurService.GetCollaborateurById(note.IdCollaborateur)
};
return details;
}