private async Task CreationApercu(IProgress <ProgressMessage> progress) { _ReportSource = new CRRecapReposConges(); DataSet DsTemp = new DataSet(); oConnection = ClassLibraryProget.DataBase.OpenSqlServer(_dataService.ParamGlobaux.ConnectionString); DsRecapReposConges DsRecapReposConges = new DsRecapReposConges(); ////////////////////////Initialisation barre de progression////////////////////////// _progressMax = (ListAgents.Count() * 5); int _progressValue = 0; #region Remplissage du DataSet Agents //Remplissage du DataSet Agents foreach (AgentModel ag in ListAgents) { if (ag.Typecontrat != null) { DsRecapReposConges.Tables["Agents"].Rows.Add(ag.Matricule, ag.Mail, ag.Nom, ag.Prenom, ag.IDService, ag.IDSection, ag.IDEmploi, ag.IDFiliere, ag.Typecontrat, ag.DebutContrat, ag.FinContrat); } else { DsRecapReposConges.Tables["Agents"].Rows.Add(ag.Matricule, ag.Mail, ag.Nom, ag.Prenom, ag.IDService, ag.IDSection, ag.IDEmploi, ag.IDFiliere, "", ag.DebutContrat, ag.FinContrat); } _progressValue++; _progress.Report(new ProgressMessage((_progressValue * 100) / _progressMax, "Création de l'aperçu...", false)); } #endregion #region Remplissage du DataSet PeriodeModulation //remplissage du DataSet PeriodeModulation PeriodeModulation pTemp = new PeriodeModulation(); DureeMaxCDDCourt = Convert.ToInt32(Parametres.RechercherParametres(oConnection, ParamGlobaux.IDEtablissement, "", "Durée maxi CDD court")); foreach (AgentModel ag in ListAgents) { listPeriodseModulation = await gestion.PeriodesModulation(ParamGlobaux.ConnectionString, ag.Matricule, PeriodeModulation.Debut, DureeMaxCDDCourt); pTemp = listPeriodseModulation.Where(pm => pm.EnCours == true).SingleOrDefault(); DsRecapReposConges.Tables["PeriodeModulation"].Rows.Add(ag.Matricule, pTemp.Debut, pTemp.Fin, pTemp.TypeContrat, pTemp.IdContrat, pTemp.TempsBase, pTemp.Regime, pTemp.IDEtablissement, pTemp.EnCours); _progressValue++; _progress.Report(new ProgressMessage((_progressValue * 100) / _progressMax, "Création de l'aperçu...", false)); } #endregion #region Remplissage DataSet CongesDroits List <Parametre> Params = new List <Parametre>(); List <TypesJours> typesJours = new List <TypesJours>(); var taskTypeJour = _dataService.GetTypesJoursAsync(); await taskTypeJour; typesJours = taskTypeJour.Result.ToList(); int DroitCPA; double DroitRCNuit; double DroitRCC; int DroitCESS; StrucRTT DroitRTT = new StrucRTT(); foreach (AgentModel ag in ListAgents) { ParamGlobaux.StMatricule = ag.Matricule; Params = await Parametres.GetParametresAsync(_dataService.ParamGlobaux.ConnectionString, _dataService.ParamGlobaux.IDEtablissement, ag.Matricule, new List <string> { "Congés en jours ouvrés", "Début periode de prise congés", "Durée maxi Contrat court CPA", "Durée carence CPA", "Jours Congés Ouvrables", "Jours Congés Ouvrés", "Durée pause avec Repas", "Durée pause sans Repas", "Valorisation CPA", "Valorisation CA", "Base hebdomadaire", "Durée maxi CDD court", "Année Calcul N-1 RCN", "Convention collective", "Forfait RC Nuit", "Taux RC Nuit", "Heure début nuit", "Heure fin nuit", "Heure début nuit AT", "Heure fin nuit AT", "Forfait RCC", "Durée Repos Quotidien", "Ouverture droit coupure", "Année Calcul N-1 RCC" }); DroitCPA = await TempsTravail.CalculDroitCPA(ParamGlobaux, PeriodeModulation.Debut, Params, true); DroitRCNuit = (await TempsTravail.CalculDroitRCNuitH(ParamGlobaux, Params, typesJours, PeriodeModulation.Debut, PeriodeModulation.Fin)) / 60; DroitRCC = await TempsTravail.CalculDroitRCC(ParamGlobaux, typesJours, PeriodeModulation.Debut, PeriodeModulation.Fin); DroitCESS = await TempsTravail.CalculDroitCESS(ParamGlobaux, typesJours, PeriodeModulation.Debut); DroitRTT = await TempsTravail.CalculDroitRTT(ParamGlobaux, PeriodeModulation.Debut, PeriodeModulation.Fin); DsRecapReposConges.Tables["CongesDroits"].Rows.Add(ag.Matricule, DroitCPA, DroitRCNuit, DroitRCC, DroitCESS, DroitRTT.DbDroitRTT); _progressValue++; _progress.Report(new ProgressMessage((_progressValue * 100) / _progressMax, "Création de l'aperçu...", false)); } #endregion #region Remplissage DataSet CongesPris await taskTypeJour; typesJours = taskTypeJour.Result.ToList(); int PrisCPA; int PrisCA; int TotalCPACA; double PrisRCNuit; double PrisRCC; int PrisCESS; double PrisRTT; foreach (AgentModel ag in ListAgents) { ParamGlobaux.StMatricule = ag.Matricule; Params = await Parametres.GetParametresAsync(_dataService.ParamGlobaux.ConnectionString, _dataService.ParamGlobaux.IDEtablissement, ag.Matricule, new List <string> { "Congés en jours ouvrés", "Début periode de prise congés", "Durée maxi Contrat court CPA", "Durée carence CPA", "Jours Congés Ouvrables", "Jours Congés Ouvrés", "Durée pause avec Repas", "Durée pause sans Repas", "Valorisation CPA", "Valorisation CA", "Base hebdomadaire", "Durée maxi CDD court", "Année Calcul N-1 RCN", "Convention collective", "Forfait RC Nuit", "Taux RC Nuit", "Heure début nuit", "Heure fin nuit", "Heure début nuit AT", "Heure fin nuit AT", "Forfait RCC", "Durée Repos Quotidien", "Ouverture droit coupure", "Année Calcul N-1 RCC" }); (PrisCPA, PrisCA) = await TempsTravail.CalculPrisCPA(_dataService.ParamGlobaux.ConnectionString, _dataService.ParamGlobaux.IDEtablissement, ag.Matricule, PeriodeModulation.Debut); TotalCPACA = PrisCPA + PrisCA; PrisRCNuit = await TempsTravail.CalculPrisRCNuit(ParamGlobaux, typesJours, Params, PeriodeModulation.Debut, PeriodeModulation.Fin); PrisRCC = await TempsTravail.CalculGenreH(ParamGlobaux, typesJours, Params, "13", PeriodeModulation.Debut, PeriodeModulation.Fin); PrisCESS = TempsTravail.CalculPrisCESS(ParamGlobaux, PeriodeModulation.Debut, PeriodeModulation.Fin); PrisRTT = TempsTravail.CalculGenreJ(_dataService.ParamGlobaux.ConnectionString, ag.Matricule, "30", PeriodeModulation.Debut, PeriodeModulation.Fin); DsRecapReposConges.Tables["CongesPris"].Rows.Add(ag.Matricule, TotalCPACA, PrisRCNuit, PrisRCC, PrisCESS, PrisRTT); _progressValue++; _progress.Report(new ProgressMessage((_progressValue * 100) / _progressMax, "Création de l'aperçu...", false)); } #endregion #region Remplissage DataSet RcFeries ObservableCollection <RCFerie> RCFeries; IEnumerable <JourFerieW> ListRCFerie; DataSet DsRCFeriePris; DateTime d = new DateTime(1900, 01, 01); foreach (AgentModel ag in ListAgents) { ParamGlobaux.StMatricule = ag.Matricule; Params = await Parametres.GetParametresAsync(_dataService.ParamGlobaux.ConnectionString, _dataService.ParamGlobaux.IDEtablissement, ag.Matricule, new List <string> { "Congés en jours ouvrés", "Début periode de prise congés", "Durée maxi Contrat court CPA", "Durée carence CPA", "Jours Congés Ouvrables", "Jours Congés Ouvrés", "Durée pause avec Repas", "Durée pause sans Repas", "Valorisation CPA", "Valorisation CA", "Base hebdomadaire", "Durée maxi CDD court", "Année Calcul N-1 RCN", "Convention collective", "Forfait RC Nuit", "Taux RC Nuit", "Heure début nuit", "Heure fin nuit", "Heure début nuit AT", "Heure fin nuit AT", "Forfait RCC", "Durée Repos Quotidien", "Ouverture droit coupure", "Année Calcul N-1 RCC" }); ListRCFerie = await TempsTravail.CalculFeriesAgent(ParamGlobaux, typesJours, PeriodeModulation.Debut, PeriodeModulation.Fin); RCFeries = await _dataService.GetHistoriqueRCFAsync(PeriodeModulation.Debut, PeriodeModulation.Fin); foreach (RCFerie rc in RCFeries) { ListRCFerie = ListRCFerie.Where(a => a.Date != rc.JourFerie); } if (ListRCFerie != null) { foreach (var item in ListRCFerie) { RCFerie temp = new RCFerie(d, item.Date, item.NbHeuresW); RCFeries.Add(temp); } } ObservableCollection <RCFerie> RCFeries2 = new ObservableCollection <RCFerie> (RCFeries.OrderBy(a => a.JourFerie)); if (RCFeries2.Count() > 0) { foreach (RCFerie RCF in RCFeries2) { if (RCF.JourFerie != null && RCF.RCF != d) { DsRecapReposConges.Tables["RcFeries"].Rows.Add(ag.Matricule, Convert.ToDateTime(RCF.JourFerie).ToShortDateString(), RCF.NbHeures.ToString(@"hh\:mm"), RCF.RCF.ToShortDateString(), RCF.NbHeuresRCF.ToString(@"hh\:mm")); } else if (RCF.JourFerie == null && RCF.JourFerie != d) { DsRecapReposConges.Tables["RcFeries"].Rows.Add(ag.Matricule, "", RCF.NbHeures.ToString(@"hh\:mm"), RCF.RCF.ToShortDateString(), RCF.NbHeuresRCF.ToString(@"hh\:mm")); } else { DsRecapReposConges.Tables["RcFeries"].Rows.Add(ag.Matricule, Convert.ToDateTime(RCF.JourFerie).ToShortDateString(), RCF.NbHeures.ToString(@"hh\:mm"), "", ""); } } } else { DsRecapReposConges.Tables["RcFeries"].Rows.Add(ag.Matricule, "", "", "", ""); } _progressValue++; _progress.Report(new ProgressMessage((_progressValue * 100) / _progressMax, "Création de l'aperçu...", false)); } #endregion _ReportSource.SetDataSource(DsRecapReposConges); RaisePropertyChanged("ReportSource"); }
private void Reset() { PeriodeModulation = null; ListAgents = null; _ReportSource = null; }