Beispiel #1
0
 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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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&lt;T&gt; 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;
 }