예제 #1
0
 public int GetSearchCount(EmployeSearchDto emp)
 {
     //Nombre d'employés pour une compangie par rapport aux critères de recherche précisés
     using (var context = new PayrollEntities())
     {
         //Convertir l'ensemble des employés en IQueryable (équivaut à faire un "select * from <table>" en sql)
         var queryableEmp = context.Employes.AsQueryable();
         //Choisir les employés actifs de la compagnie (la base n'est pas intérrogée tant que "ToList" n'est pas appelée)
         queryableEmp = queryableEmp.Where(x => (x.StatutEmployeID == emp.StatutEmployeID) && (x.CompagnieID == emp.CompagnieID));
         // Ajouter les autres critères un par un s'ils on été renseignés dans le formulaire
         if (!String.IsNullOrEmpty(emp.Phone1))
         {
             queryableEmp = queryableEmp.Where(x => x.Phone1.Contains(emp.Phone1));
         }
         if (!String.IsNullOrEmpty(emp.Nom))
         {
             queryableEmp = queryableEmp.Where(x => x.Nom.Contains(emp.Nom));
         }
         if (!String.IsNullOrEmpty(emp.Prenom))
         {
             queryableEmp = queryableEmp.Where(x => x.Prenom.Contains(emp.Prenom));
         }
         if (!String.IsNullOrEmpty(emp.CIN))
         {
             queryableEmp = queryableEmp.Where(x => x.Cin.Contains(emp.CIN));
         }
         // Renvoyer le nombre d'enregistrements trouvé
         return(queryableEmp.Count());
     }
 }
예제 #2
0
 public EmployeDto GetEmployeById(long employeID)
 {
     using (var context = new PayrollEntities())
     {
         EmployeDto query = (from t in context.Employes
                             where t.EmployeID == employeID
                             select new EmployeDto
         {
             AdresseRue1 = t.AdresseRue1,
             AdresseRue2 = t.AdresseRue2,
             AdresseVille = t.AdresseVille,
             CIN = t.Cin,
             CompagnieID = t.CompagnieID,
             DateEmbauche = t.DateEmbauche,
             DateNaissance = t.DateNaissance,
             DepartementID = t.DepartementID,
             Email = t.Email,
             Extension = t.Extension,
             ModifiePar = t.ModifiePar,
             NIF = t.Nif,
             Nom = t.Nom,
             NumeroEmploye = t.NumeroEmploye,
             Phone1 = t.Phone1,
             Phone2 = t.Phone2,
             PosteID = t.PosteID,
             Prenom = t.Prenom,
             Sexe = t.Sexe,
             StatutEmployeID = t.StatutEmployeID,
             StatutMatrimonialID = t.StatutMatrimonialID,
             TypeEmployeID = t.TypeEmployeID
         }).FirstOrDefault();
         return(query);
     }
 }
예제 #3
0
        public CompagnieDto GetCompagnieById(int compagnieID)
        {
            CompagnieDto query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.Compagnies
                         where t.CompagnieID == compagnieID
                         select new CompagnieDto
                {
                    CompagnieID = t.CompagnieID,
                    Nom = t.Nom,
                    Nif = t.Nif,
                    NumeroEmployeSuivant = t.NumeroEmployeSuivant,
                    MensualiteLogiciel = t.MensualiteLogiciel,
                    MonnaieID = t.MonnaieID,
                    ExpirationLogiciel = t.ExpirationLogiciel,
                    MaximumEmploye = t.MaximumEmploye,
                    HoldingID = t.HoldingID,
                    ModifiePar = t.ModifiePar
                }
                         ).SingleOrDefault();
            }
            return(query);
        }
예제 #4
0
 public Int64?GetEmployeId(int CompagnieId, int NumeroEmploye)
 {
     // À partir du numéro interne de l'employé et du code de sa compagnie, retrouver le EmployeID
     using (var context = new PayrollEntities())
     {
         var queryableEmp = context.Employes.Where(x => (x.CompagnieID == CompagnieId && x.NumeroEmploye == NumeroEmploye)).FirstOrDefault();
         return(queryableEmp.EmployeID);
     }
 }
예제 #5
0
        public int GetNewNumeroInterne(int companyID)
        {
            // Renvoyer un nouveau numero interne pour un nouvel employé d'une compagnie
            int empNum;

            using (var context = new PayrollEntities())
            {
                var oEmpNum = new ObjectParameter("NumeroEmploye", typeof(int));
                var result  = context.GetEmployeInternalNumber(companyID, oEmpNum);
                empNum = (int)oEmpNum.Value;
            }
            return(empNum);
        }
예제 #6
0
        public int GetEmployeCountByStatut(int companyID, int statutEmployeID)
        {
            //Nombre d'employés pour une compangie et un statut donnés
            int query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.Employes
                         where t.CompagnieID == companyID &&
                         t.StatutEmployeID == statutEmployeID
                         select t).Count();
            }
            return(query);
        }
예제 #7
0
        //Sélectionner le TypePeriodeID pour une Compagnie, un Prelevement and un TypeSalaire donné CompagniePrelevement
        public int GetDefaultTypePeriodeForPrelevement(int companyID, int prelevementID, int typeSalaireID)
        {
            int scalar;

            using (var context = new PayrollEntities())
            {
                var query = (from t in context.CompagniePrelevements
                             where t.CompagnieID == companyID &&
                             t.PrelevementID == prelevementID &&
                             t.TypeSalaireID == typeSalaireID
                             select new { t.TypePeriodeID }).SingleOrDefault();
                scalar = query.TypePeriodeID;
            }
            return(scalar);
        }
예제 #8
0
        public decimal GetSalaireNormalMaxForCompany(int compagnieID, int monnaieID)
        {
            decimal sMax;

            using (var context = new PayrollEntities())
            {
                var query = (from t in context.CompagnieMonnaies
                             where t.CompagnieID == compagnieID &&
                             t.MonnaieID == monnaieID
                             select new { SalaireNormalMax = t.SalaireNormalMax }).SingleOrDefault();

                sMax = query.SalaireNormalMax;
            }
            return(sMax);
        }
예제 #9
0
        //Sélectionner les statuts matrimoniaux
        public IEnumerable <StatutMatrimonialDto> GetAllStatutMatrimonial()
        {
            IEnumerable <StatutMatrimonialDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.StatutMatrimonials
                         orderby t.Nom ascending
                         select new StatutMatrimonialDto
                {
                    StatutMatrimonialID = t.StatutMatrimonialID,
                    Nom = t.Nom
                }).ToList();
            }
            return(query);
        }
예제 #10
0
        //Sélectionner les types d'employés définis pour une compagnie donnée
        public IEnumerable <TypeEmployeDto> GetAllTypeEmployeForCompany(int companyID)
        {
            IEnumerable <TypeEmployeDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.CompagnieTypeEmployes
                         where t.CompagnieID == companyID
                         orderby t.TypeEmployeID ascending
                         select new TypeEmployeDto
                {
                    TypeEmployeID = t.TypeEmployeID,
                    Nom = t.TypeEmploye.Nom
                }).ToList();
            }
            return(query);
        }
예제 #11
0
 public IEnumerable <EmployePrelevementDto> GetPrelevementByTypeSalaire(long employeID, int typeSalaire)
 {
     using (PayrollEntities context = new PayrollEntities())
     {
         IEnumerable <EmployePrelevementDto> query = (from p in context.EmployePrelevements
                                                      where p.EmployeID == employeID &&
                                                      p.TypeSalaireID == typeSalaire
                                                      select new EmployePrelevementDto
         {
             EmployeID = p.EmployeID,
             Pourcentage = p.Pourcentage,
             PrelevementID = p.PrelevementID,
             TypePeriodeID = p.TypePeriodeID,
             TypeSalaireID = p.TypeSalaireID
         }).ToList();
         return(query);
     }
 }
예제 #12
0
        //Sélectionner toutes les types de périodes disponible pour une compagnie
        public IEnumerable <TypePeriodeDto> GetAllTypePeriode(int companyID)
        {
            IEnumerable <TypePeriodeDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.TypePeriodes
                         from c in t.Compagnies
                         where c.CompagnieID == companyID
                         orderby t.Nom ascending
                         select new TypePeriodeDto
                {
                    TypePeriodeID = t.TypePeriodeID,
                    Nom = t.Nom
                }).ToList();
            }
            return(query);
        }
예제 #13
0
        //Sélectionner les postes définis pour une compagnie donnée
        public IEnumerable <PosteDto> GetAllPosteForCompany(int companyID)
        {
            IEnumerable <PosteDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.Postes
                         where t.CompagnieID == companyID
                         orderby t.Nom ascending
                         select new PosteDto
                {
                    PosteID = t.PosteID,
                    Nom = t.Nom,
                    CompagnieID = t.CompagnieID,
                    ModifiePar = t.ModifiePar
                }).ToList();
            }
            return(query);
        }
예제 #14
0
        //Sélectionner les banques définies pour une compagnie donnée
        public IEnumerable <BanqueDto> GetAllBanqueForCompany(int companyID)
        {
            IEnumerable <BanqueDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.Banques
                         from c in t.Compagnies
                         where c.CompagnieID == companyID
                         orderby t.Nom ascending
                         select new BanqueDto
                {
                    BanqueID = t.BanqueID,
                    Nom = t.Nom,
                    CompagnieID = c.CompagnieID
                }).ToList();
            }
            return(query);
        }
예제 #15
0
 public IEnumerable <EmployeSearchDto> GetSearchResult(EmployeSearchDto emp)
 {
     //Retrouve les employés d'une compangie correspondant aux critères de recherche précisés
     // en utilisant des "Query Expressions" à la place de "LINQ to Entities" (synthaxe différente, mêmes effets)
     using (var context = new PayrollEntities())
     {
         //Convertir l'ensemble des employés en IQueryable (équivaut à faire un "select * from <table>" en sql)
         var queryableEmp = context.Employes.AsQueryable();
         //Choisir les employés actifs de la compagnie (la base n'est pas intérrogée tant que "ToList" n'est pas appelée)
         queryableEmp = queryableEmp.Where(x => (x.StatutEmployeID == emp.StatutEmployeID) && (x.CompagnieID == emp.CompagnieID));
         // Ajouter les autres critères un par un s'ils on été renseignés dans le formulaire
         if (!String.IsNullOrEmpty(emp.Phone1))
         {
             queryableEmp = queryableEmp.Where(x => x.Phone1.Contains(emp.Phone1));
         }
         if (!String.IsNullOrEmpty(emp.Nom))
         {
             queryableEmp = queryableEmp.Where(x => x.Nom.Contains(emp.Nom));
         }
         if (!String.IsNullOrEmpty(emp.Prenom))
         {
             queryableEmp = queryableEmp.Where(x => x.Prenom.Contains(emp.Prenom));
         }
         if (!String.IsNullOrEmpty(emp.CIN))
         {
             queryableEmp = queryableEmp.Where(x => x.Cin.Contains(emp.CIN));
         }
         // Trier par ordre alphabétique du Nom et du Prenom
         queryableEmp.OrderBy(x => x.Nom).ThenBy(x => x.Prenom);
         // Renvoyer le résultat sous forme d'une liste d'objets de type EmployeSearchDto
         return(queryableEmp.Select(y => new EmployeSearchDto
         {
             Nom = y.Nom,
             Prenom = y.Prenom,
             NumeroEmploye = y.NumeroEmploye,
             Phone1 = y.Phone1,
             CIN = y.Cin,
             CompagnieID = y.CompagnieID,
             StatutEmployeID = y.TypeEmployeID,
             EmployeID = y.EmployeID
         }).ToList());
     }
 }
예제 #16
0
 public IEnumerable <CongeDto> GetConge(long employeID)
 {
     using (PayrollEntities context = new PayrollEntities())
     {
         IEnumerable <CongeDto> query = (from c in context.Conges
                                         where c.EmployeID == employeID
                                         select new CongeDto
         {
             AccumulableParAnnee = c.AccumulableParAnnee,
             EmployeID = c.EmployeID,
             IncrementableParMois = c.IncrementableParMois,
             JourBalance = c.JourBalance,
             JourParAnnee = c.JourParAnnee,
             TypeCongeID = c.TypeCongeID,
             TypeConge = c.TypeConge.Nom,
         }).ToList();
         return(query);
     }
 }
예제 #17
0
        //Sélectionner les départements définis pour une compagnie donnée
        public IEnumerable <DepartementDto> GetAllDepartementForCompany(int companyID)
        {
            IEnumerable <DepartementDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.Departements
                         where t.CompagnieID == companyID
                         orderby t.Nom ascending
                         select new DepartementDto
                {
                    DepartementID = t.DepartementID,
                    Nom = t.Nom,
                    CompagnieID = t.CompagnieID,
                    ModifiePar = t.ModifiePar,
                    DepartementParentID = t.DepartementID
                }).ToList();
            }
            return(query);
        }
예제 #18
0
        //Sélectionner les monnaies définies pour une compagnie donnée
        public IEnumerable <MonnaieDto> GetAllMonnaieForCompany(int companyID)
        {
            IEnumerable <MonnaieDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.CompagnieMonnaies
                         where t.CompagnieID == companyID
                         orderby t.Monnaie.Nom ascending
                         select new MonnaieDto
                {
                    MonnaieID = t.MonnaieID,
                    Nom = t.Monnaie.Nom,
                    CompagnieID = t.CompagnieID,
                    Abreviation = t.Monnaie.Abreviation,
                    Symbol = t.Monnaie.Symbol,
                    Locale = t.Monnaie.Locale
                }).ToList();
            }
            return(query);
        }
예제 #19
0
        //Sélectionner tous les Congés et leurs attributs par défaut pour une Compagnie
        public IEnumerable <CompagnieTypeCongeDto> GetAllCongeForCompany(int companyID)
        {
            IEnumerable <CompagnieTypeCongeDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.CompagnieTypeConges
                         where t.CompagnieID == companyID
                         orderby t.TypeCongeID ascending
                         select new CompagnieTypeCongeDto
                {
                    CompagnieID = t.CompagnieID,
                    TypeCongeID = t.TypeCongeID,
                    Conge = t.TypeConge.Nom,
                    JourParAnnee = t.JourParAnnee,
                    AccumulableParAnnee = t.AccumulableParAnnee,
                    IncrementableParMois = t.IncrementableParMois
                }).ToList();
            }
            return(query);
        }
예제 #20
0
        //Sélectionner tous les Prelevement et leurs période d'application par défaut pour une Compagnie et un TypeSalaire
        public IEnumerable <CompagniePrelevementDto> GetAllPrelevementForCompany(int companyID, int typeSalaireID)
        {
            IEnumerable <CompagniePrelevementDto> query;

            using (var context = new PayrollEntities())
            {
                query = (from t in context.CompagniePrelevements
                         where t.CompagnieID == companyID &&
                         t.TypeSalaireID == typeSalaireID
                         orderby t.Prelevement.TypePrelevementID ascending,
                         t.Prelevement.Nom ascending
                         select new CompagniePrelevementDto
                {
                    CompagnieID = t.CompagnieID,
                    TypeSalaireID = t.TypeSalaireID,
                    PrelevementID = t.PrelevementID,
                    Prelevement = t.Prelevement.Nom,
                    TypePeriodeID = t.TypePeriodeID,
                    Pourcentage = t.Pourcentage
                }).ToList();
            }
            return(query);
        }
예제 #21
0
        public EmployeSalaireDto GetSalaireByType(long employeID, int typeSalaire)
        {
            using (PayrollEntities context = new PayrollEntities())
            {
                EmployeSalaireDto query = (from s in context.EmployeSalaires
                                           where s.EmployeID == employeID &&
                                           s.TypeSalaireID == typeSalaire
                                           select new EmployeSalaireDto
                {
                    BanqueID = s.BanqueID,
                    BonusFinAnnee = (bool)s.BonusFinAnnee,
                    CompteBancaire = s.CompteBancaire,
                    EmployeID = s.EmployeID,
                    HeureSupPaye = (bool)s.HeureSupPaye,
                    MonnaieID = s.MonnaieID,
                    Salaire = s.Salaire,
                    TypePaiementID = s.TypePaiementID,
                    TypeSalaireID = s.TypeSalaireID
                }).FirstOrDefault();

                return(query);
            }
        }
예제 #22
0
        public void UpdateEmploye(EmployeDto empDto, IEnumerable <EmployeSalaireDto> empSalairesDto,
                                  IEnumerable <CongeDto> congesDto, IEnumerable <EmployePrelevementDto> empPrelDto)
        {
            //Mettre à jour les informations d'un employé existant y compris ses salaires,ses congés et ses prélèvements
            //Attention: la mise à jour peut occasionner à des insertions, des suppressions et des mises à jour

            //Copier les données des Dto dans des Entity Objects
            var emp = new Employe();

            emp.EmployeID           = empDto.EmployeID;
            emp.AdresseRue1         = empDto.AdresseRue1;
            emp.AdresseRue2         = empDto.AdresseRue2;
            emp.AdresseVille        = empDto.AdresseVille;
            emp.Cin                 = empDto.CIN;
            emp.CompagnieID         = empDto.CompagnieID;
            emp.DateEmbauche        = empDto.DateEmbauche;
            emp.DateNaissance       = empDto.DateNaissance;
            emp.DepartementID       = empDto.DepartementID;
            emp.Email               = empDto.Email;
            emp.Extension           = empDto.Extension;
            emp.ModifiePar          = empDto.ModifiePar;
            emp.Nif                 = empDto.NIF;
            emp.Nom                 = empDto.Nom;
            emp.NumeroEmploye       = empDto.NumeroEmploye;
            emp.Phone1              = empDto.Phone1;
            emp.Phone2              = empDto.Phone2;
            emp.PosteID             = empDto.PosteID;
            emp.Prenom              = empDto.Prenom;
            emp.Sexe                = empDto.Sexe;
            emp.StatutEmployeID     = empDto.StatutEmployeID;
            emp.StatutMatrimonialID = empDto.StatutMatrimonialID;
            emp.TypeEmployeID       = empDto.TypeEmployeID;

            foreach (EmployeSalaireDto salDto in empSalairesDto)
            {
                var sal = new EmployeSalaire();
                sal.BanqueID       = salDto.BanqueID;
                sal.BonusFinAnnee  = salDto.BonusFinAnnee;
                sal.CompteBancaire = salDto.CompteBancaire;
                sal.HeureSupPaye   = salDto.HeureSupPaye;
                sal.ModifiePar     = salDto.ModifiePar;
                sal.MonnaieID      = salDto.MonnaieID;
                sal.Salaire        = salDto.Salaire;
                sal.TypePaiementID = salDto.TypePaiementID;
                sal.TypeSalaireID  = salDto.TypeSalaireID;
                emp.EmployeSalaires.Add(sal);
            }

            foreach (CongeDto congDto in congesDto)
            {
                var cong = new Conge();
                cong.AccumulableParAnnee  = congDto.AccumulableParAnnee;
                cong.IncrementableParMois = congDto.IncrementableParMois;
                cong.JourBalance          = congDto.JourBalance;
                cong.JourParAnnee         = congDto.JourParAnnee;
                cong.ModifiePar           = congDto.ModifiePar;
                cong.TypeCongeID          = congDto.TypeCongeID;
                emp.Conges.Add(cong);
            }

            foreach (EmployePrelevementDto prelDto in empPrelDto)
            {
                var prel = new EmployePrelevement();
                prel.PrelevementID = prelDto.PrelevementID;
                prel.TypePeriodeID = prelDto.TypePeriodeID;
                prel.TypeSalaireID = prelDto.TypeSalaireID;
                prel.Pourcentage   = prelDto.Pourcentage;
                emp.EmployePrelevements.Add(prel);
            }

            //Construire le "object graph" détaché de l'employé à mettre à jour

            try
            {
                //Mettre à jour, insérer ou supprimmer les données
                using (var context = new PayrollEntities())
                {
                    // Charger les données de l'employé se trouvant dans la base avec ses congés, ses prélevements et ses salaires
                    Employe existingEmp = context.Employes
                                          .Where(e => e.EmployeID == emp.EmployeID)
                                          .Include(e => e.Conges)
                                          .Include(e => e.EmployePrelevements)
                                          .Include(e => e.EmployeSalaires)
                                          .FirstOrDefault();
                    // Si l'employé a été trouvé, procéder à la mise à jour des ses données personnelles et annexes
                    if (existingEmp != null)
                    {
                        // ***Mettre à jour les données personnelles de l'employé***
                        var empEntry = context.Entry(existingEmp);
                        empEntry.CurrentValues.SetValues(emp);

                        // ***Mettre à jour les salaires de l'employé***

                        // Créer une instance du comparateur pour les salaires
                        EmployeSalaireEqualityComparer empSalEqC = new EmployeSalaireEqualityComparer();
                        // Chercher les nouvellement ajoutés
                        var addedEmpSals = emp.EmployeSalaires.Except(existingEmp.EmployeSalaires, empSalEqC);
                        // Chercher les supprimés
                        var deletedEmpSals = existingEmp.EmployeSalaires.Except(emp.EmployeSalaires, empSalEqC);
                        // Chercher les mis à jour
                        var modifiedEmpSals = emp.EmployeSalaires.Except(addedEmpSals, empSalEqC);
                        // Marquer tous les ajouts comme tels dans le contexte
                        addedEmpSals.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Added);
                        // Marquer toutes les suppressions comme telles dans le contexte
                        deletedEmpSals.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Deleted);
                        // Mettre à jour les propriétés modifiées par le client
                        foreach (EmployeSalaire epS in modifiedEmpSals)
                        {
                            var existingEmpSal = context.EmployeSalaires.Where(e => e.EmployeID == epS.EmployeID && e.TypeSalaireID == epS.TypeSalaireID);
                            if (existingEmpSal != null)
                            {
                                var empSalEntry = context.Entry(existingEmpSal);
                                empSalEntry.CurrentValues.SetValues(epS);
                            }
                        }

                        // ***Mettre à jour les congés de l'employé***

                        // Créer une instance du comparateur pour les congés
                        CongeEqualityComparer CongEqC = new CongeEqualityComparer();
                        // Chercher les nouvellement ajoutés
                        var addedCongs = emp.Conges.Except(existingEmp.Conges, CongEqC);
                        // Chercher les supprimés
                        var deletedCongs = existingEmp.Conges.Except(emp.Conges, CongEqC);
                        // Chercher les mis à jour
                        var modifiedCongs = emp.Conges.Except(addedCongs, CongEqC);
                        // Marquer tous les ajouts comme tels dans le contexte
                        addedCongs.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Added);
                        // Marquer toutes les suppressions comme telles dans le contexte
                        deletedCongs.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Deleted);
                        // Mettre à jour les propriétés modifiées par le client
                        foreach (Conge epS in modifiedCongs)
                        {
                            var existingCong = context.Conges.Where(e => e.EmployeID == epS.EmployeID && e.TypeCongeID == epS.TypeCongeID);
                            if (existingCong != null)
                            {
                                var CongEntry = context.Entry(existingCong);
                                CongEntry.CurrentValues.SetValues(epS);
                            }
                        }

                        // ***Mettre à jour les prélèvements de l'employé***

                        // Créer une instance du comparateur pour les prélèvements
                        EmployePrelevementEqualityComparer EmpPrelEqC = new EmployePrelevementEqualityComparer();
                        // Chercher les nouvellement ajoutés
                        var addedEmpPrels = emp.EmployePrelevements.Except(existingEmp.EmployePrelevements, EmpPrelEqC);
                        // Chercher les supprimés
                        var deletedEmpPrels = existingEmp.EmployePrelevements.Except(emp.EmployePrelevements, EmpPrelEqC);
                        // Chercher les mis à jour
                        var modifiedEmpPrels = emp.EmployePrelevements.Except(addedEmpPrels, EmpPrelEqC);
                        // Marquer tous les ajouts comme tels dans le contexte
                        addedEmpPrels.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Added);
                        // Marquer toutes les suppressions comme telles dans le contexte
                        deletedEmpPrels.ToList().ForEach(sal => context.Entry(sal).State = System.Data.EntityState.Deleted);
                        // Mettre à jour les propriétés modifiées par le client
                        foreach (EmployePrelevement epS in modifiedEmpPrels)
                        {
                            var existingEmpPrel = context.EmployePrelevements
                                                  .Where(e => e.EmployeID == epS.EmployeID && e.PrelevementID == epS.PrelevementID &&
                                                         e.TypePeriodeID == epS.TypePeriodeID && e.TypeSalaireID == epS.TypeSalaireID);
                            if (existingEmpPrel != null)
                            {
                                var EmpPrelEntry = context.Entry(existingEmpPrel);
                                EmpPrelEntry.CurrentValues.SetValues(epS);
                            }
                        }
                    }
                }
            }

            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                    }
                }
            }
        }
예제 #23
0
        public void AddEmploye(EmployeDto empDto, IEnumerable <EmployeSalaireDto> empSalairesDto,
                               IEnumerable <CongeDto> congesDto, IEnumerable <EmployePrelevementDto> empPrelDto)
        {
            //Ajouter un nouvel employé avec son ou ses salaires,ses congés et ses prélèvements

            var emp = new Employe();

            emp.AdresseRue1         = empDto.AdresseRue1;
            emp.AdresseRue2         = empDto.AdresseRue2;
            emp.AdresseVille        = empDto.AdresseVille;
            emp.Cin                 = empDto.CIN;
            emp.CompagnieID         = empDto.CompagnieID;
            emp.DateEmbauche        = empDto.DateEmbauche;
            emp.DateNaissance       = empDto.DateNaissance;
            emp.DepartementID       = empDto.DepartementID;
            emp.Email               = empDto.Email;
            emp.Extension           = empDto.Extension;
            emp.ModifiePar          = empDto.ModifiePar;
            emp.Nif                 = empDto.NIF;
            emp.Nom                 = empDto.Nom;
            emp.NumeroEmploye       = empDto.NumeroEmploye;
            emp.Phone1              = empDto.Phone1;
            emp.Phone2              = empDto.Phone2;
            emp.PosteID             = empDto.PosteID;
            emp.Prenom              = empDto.Prenom;
            emp.Sexe                = empDto.Sexe;
            emp.StatutEmployeID     = empDto.StatutEmployeID;
            emp.StatutMatrimonialID = empDto.StatutMatrimonialID;
            emp.TypeEmployeID       = empDto.TypeEmployeID;


            foreach (EmployeSalaireDto salDto in empSalairesDto)
            {
                var sal = new EmployeSalaire();
                sal.BanqueID       = salDto.BanqueID;
                sal.BonusFinAnnee  = salDto.BonusFinAnnee;
                sal.CompteBancaire = salDto.CompteBancaire;
                sal.HeureSupPaye   = salDto.HeureSupPaye;
                sal.ModifiePar     = salDto.ModifiePar;
                sal.MonnaieID      = salDto.MonnaieID;
                sal.Salaire        = salDto.Salaire;
                sal.TypePaiementID = salDto.TypePaiementID;
                sal.TypeSalaireID  = salDto.TypeSalaireID;

                emp.EmployeSalaires.Add(sal);
            }

            foreach (CongeDto congDto in congesDto)
            {
                var cong = new Conge();
                cong.AccumulableParAnnee  = congDto.AccumulableParAnnee;
                cong.IncrementableParMois = congDto.IncrementableParMois;
                cong.JourBalance          = congDto.JourBalance;
                cong.JourParAnnee         = congDto.JourParAnnee;
                cong.ModifiePar           = congDto.ModifiePar;
                cong.TypeCongeID          = congDto.TypeCongeID;

                emp.Conges.Add(cong);
            }

            foreach (EmployePrelevementDto prelDto in empPrelDto)
            {
                var prel = new EmployePrelevement();
                prel.PrelevementID = prelDto.PrelevementID;
                prel.TypePeriodeID = prelDto.TypePeriodeID;
                prel.TypeSalaireID = prelDto.TypeSalaireID;
                prel.Pourcentage   = prelDto.Pourcentage;

                emp.EmployePrelevements.Add(prel);
            }

            try
            {
                //ajouter les informations du nouvel employé au context et sauvegarder
                using (var context = new PayrollEntities())
                {
                    context.Employes.Add(emp);
                    context.SaveChanges();
                }
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
                    }
                }
            }
        }