public void UpdateFromModel(temps t) { this.id_temps = t.id_temps; this.dateAbsence = t.date_debut; this.debutAbsence = t.date_debut.ToShortTimeString(); this.finAbsence = t.date_fin.ToShortTimeString(); this.type_absence = t.id_type_temps; this.id_employe = t.id_employe; this.commentairesTemps = t.commentaires; }
public temps ClonerPourDupliquer() { temps tps = new temps(); tps.id_employe =this.id_employe; tps.commentaires = this.commentaires; tps.id_type_temps = this.id_type_temps; tps.id_tache = this.id_tache; tps.id_projet = this.id_projet; tps.repas_ext = false; return tps; }
public void UpdateFromModel(temps t) { this.id_temps = t.id_temps; this.dateTravail = t.date_debut; this.debutTravail = t.date_debut.ToShortTimeString(); this.finTravail = t.date_fin.ToShortTimeString(); this.type_travail = t.id_type_temps; this.id_employe = t.id_employe; this.id_tache = t.id_tache; this.id_projet = t.id_projet; this.commentairesTemps = t.commentaires; this.repas_ext = (bool)t.repas_ext; if (t.frais != null) { this.commentairesFrais = t.frais.commentaires; this.kilometres = t.frais.kilometres; this.peage = t.frais.peage; this.hotel_resto = t.frais.hotel_resto; this.divers = t.frais.divers; } }
public bool IsThereAchevauchement(temps tps, bool absence) { //recherche de tous les temps qui appartiennent à l'employé et qui sont à cheval avec l'intervalle var tempss = cnx.temps.Where(t => t.date_fin > tps.date_debut && t.date_debut < tps.date_fin && t.id_employe == tps.id_employe); // exclure celui qui correspond à notre temps si cas de modification tempss = (tps.id_temps == 0) ? tempss : tempss.Where(t => t.id_temps != tps.id_temps); // dans le cas d'une astreinte pas de limitation superposition absence et astreinte if (tps.id_type_temps == 1) return tempss.Where(t => t.id_type_temps == 1).Any(); // sinon dans le cas d'une absence, possibilité de recouvrir uen astreinte // dans le cas d'un temps de travail pas de possibilité de recouvrement d'une absence //cette ligne permet la superposition de 2 temps de travail return (absence == true) ? tempss.Where(t => t.id_type_temps != 1 && (t.projet.z_actif == true)||(t.projet==null)).Any() : tempss.Where(t => t.type_temps.absence == true).Any(); //cette ligne ne permet pas la superposition de 2 temps de travail hormis astreinte //return (absence == true) ? tempss.Where(t => t.id_type_temps != 1 && (t.projet.z_actif == true) || (t.projet == null)).Any() : tempss.Any(); }
public JsonResult EnregistrerTravail(int? id, TravailView travailview) { //On utilise les annotations pour vérifier la validité de l'objet if (ModelState.IsValid) { // on teste l'id envoyé dans l'URL. S'il n'y en a pas, c'est que cela est un nouveau temps. if (id == null) { // on instancie le nouveau temps et le met en jour grâce aux données de la vue du formulaire temps travail = new temps(); travail.UpdateFromView(travailview); // si le temps a des frais on instancie un nouvel objet frais lié à ce temps if (travailview.hasFrais()) { frais frs = new frais(); frs.updateFromView(travailview); travail.frais = frs; cnx.AddTofrais(frs); } // s'assurer qu'il n'y a pas de congés en même temps sinon on rajoute une erreur au ModelState if (this.IsThereAchevauchement(travail, false) == false) { // on rajoute à l'EntityManager l'objet créé et on sauvegarde cnx.AddTotemps(travail); cnx.SaveChanges(); // on renvoie un objet anonyme précisant si cela a fonctionné, si c'est une création // et une version de l'objet travail pour qu'il soit intégré par le plugin FullCalendar return Json(new { succes = 1, creation = 1, temps = travail.PourJson() }); } else { // on rajoute une erreur à l'objet ModelState ModelState.AddModelError("", "Les dates ne conviennent pas. (superposition d'absence et de travail) "); } } else { // dans le cas d'une modification on recherche le temps concerné par l'id temps travail = cnx.temps.Where(t => t.id_temps == id).Single(); // on le met en jour grâce aux données de la vue du formulaire travail.UpdateFromView(travailview); // on recherche les frais associés à ce temps frais frs = travail.frais; // s'il n'y en pas if (frs != null) { // on vérifie que le formulaire a les champs frais renseignés if (travailview.hasFrais()) { // si c'est le cas, on met à jour l'objet frais associé et on le sauvegarde frs.updateFromView(travailview); cnx.ObjectStateManager.ChangeObjectState(frs, EntityState.Modified); } else { // on supprime l'objet associé cnx.DeleteObject(frs); travail.frais = null; } } else { // si le travail n'avait pas frasi et que le formuakire en a if (travailview.hasFrais()) { // on crée l'objet frais, on l'associe à Temps et on sauvegarde frs = new frais(); frs.updateFromView(travailview); travail.frais = frs; cnx.AddTofrais(frs); } } // s'assurer qu'il n'y a pas de congés en même temps sinon lancer une erreur if (this.IsThereAchevauchement(travail, false) == false) { // on enregsitre l'objet modifié et on renvoie l'objet anonyme en Json précisant le succes cnx.ObjectStateManager.ChangeObjectState(travail, EntityState.Modified); cnx.SaveChanges(); return Json(new { succes = 1 }); } else { // on rajoute une erreur à l'objet ModelState ModelState.AddModelError("", "Les dates ne conviennent pas. (superposition d'absence et de travail) "); } } } // on renvoie un objet anonyme indiquant que l'objet n'a pas été enregistré correctement // et on renvoie la liste des erreurs. return Json(new { succes = 0, erreurs = ModelState.ListeErreurs() }); }
public JsonResult EnregistrerAbsence(int? id, AbsenceView absenceview) { if (ModelState.IsValid) { if (!id.HasValue) { temps absence = new temps(); absence.UpdateFromView(absenceview); var employe = cnx.employe.Where(e => e.id_employe == absence.id_employe).Single(); absence.CorrigerEnDemiJournee(employe.horaires_matin, employe.horaires_matin_fin, employe.horaires_apresmidi, employe.horaires_apresmidi_fin); // s'assurer qu'il n'y a pas d'autres congés en même temps sinon lancer une erreur if (this.IsThereAchevauchement(absence, true) == false) { cnx.AddTotemps(absence); cnx.SaveChanges(); return Json(new { succes = 1, creation = 1, temps = absence.PourJson() }); } else { ModelState.AddModelError("", "Les dates ne conviennent pas. (superposition d'absence et de travail) "); } } else { temps absence = cnx.temps.Where(t => t.id_temps == id).Single(); absence.UpdateFromView(absenceview); // va faire coller l'absence à exactement à une demi journée en comprant avec la date de début de l'évenement absence.CorrigerEnDemiJournee(absence.employe.horaires_matin, absence.employe.horaires_matin_fin, absence.employe.horaires_apresmidi, absence.employe.horaires_apresmidi_fin); // dans le cas d'une modification d'un évenement de travail en congé s'assurer que tous les frais ont bien été enlevé if (absence.id_frais.HasValue) { cnx.DeleteObject(absence.frais); absence.id_frais = null; } // s'assurer qu'il n'y a pas d'autres congés en même temps sinon lancer une erreur if (this.IsThereAchevauchement(absence, true) == false) { cnx.ObjectStateManager.ChangeObjectState(absence, EntityState.Modified); cnx.SaveChanges(); return Json(new { succes = 1 }); } else { ModelState.AddModelError("", "Les dates ne conviennent pas. (superposition d'absence et de travail) "); } } } return Json(new { succes = 0, erreurs = ModelState.ListeErreurs() }); }
/// <summary> /// Deprecated Method for adding a new object to the temps EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddTotemps(temps temps) { base.AddObject("temps", temps); }
/// <summary> /// Create a new temps object. /// </summary> /// <param name="id_temps">Initial value of the id_temps property.</param> /// <param name="id_employe">Initial value of the id_employe property.</param> /// <param name="id_type_temps">Initial value of the id_type_temps property.</param> /// <param name="date_debut">Initial value of the date_debut property.</param> /// <param name="date_fin">Initial value of the date_fin property.</param> public static temps Createtemps(global::System.Int32 id_temps, global::System.Int32 id_employe, global::System.Int32 id_type_temps, global::System.DateTime date_debut, global::System.DateTime date_fin) { temps temps = new temps(); temps.id_temps = id_temps; temps.id_employe = id_employe; temps.id_type_temps = id_type_temps; temps.date_debut = date_debut; temps.date_fin = date_fin; return temps; }