示例#1
0
文件: Teams.cs 项目: stbaeumer/teams
        /// <summary>
        /// KlassenteamsSoll
        /// </summary>
        /// <param name="klasses"></param>
        /// <param name="lehrers"></param>
        /// <param name="schuelers"></param>
        /// <param name="unterrichts"></param>
        public Teams(Klasses klasses, Lehrers lehrers, Schuelers schuelers, Unterrichts unterrichts)
        {
            foreach (var klasse in (from k in klasses where (k.Klassenleitungen != null && k.Klassenleitungen.Count > 0 && k.Klassenleitungen[0] != null && k.NameUntis.Any(char.IsDigit)) select k))
            {
                Team klassenteamSoll = new Team(klasse.NameUntis, "Klasse");
                klassenteamSoll.BildungsgangLanganme = klasse.BildungsgangLangname;
                klassenteamSoll.BildungsgangGekürzt  = klasse.BildungsgangGekürzt;
                klassenteamSoll.Klassenleitung       = (from k in klasses where k.NameUntis == klassenteamSoll.DisplayName select k.Klassenleitungen[0].Mail).FirstOrDefault();

                klassenteamSoll.Unterrichts.AddRange((from u in unterrichts where u.KlasseKürzel == klasse.NameUntis select u).ToList());

                var unterrichtendeLehrer = (from l in lehrers
                                            where (from u in unterrichts where u.KlasseKürzel == klasse.NameUntis select u.LehrerKürzel).ToList().Contains(l.Kürzel)
                                            where l.Mail != null
                                            where l.Mail != ""
                                            select l.Mail).ToList();

                foreach (var unterrichtenderLehrer in unterrichtendeLehrer)
                {
                    if (!klassenteamSoll.Members.Contains(unterrichtenderLehrer))
                    {
                        klassenteamSoll.Members.Add(unterrichtenderLehrer); // Owner müssen immer auch member sein.
                    }
                    if (!klassenteamSoll.Owners.Contains(unterrichtenderLehrer))
                    {
                        klassenteamSoll.Owners.Add(unterrichtenderLehrer);
                    }
                }

                var schuelersDerKlasse = (from s in schuelers
                                          where s.Klasse == klasse.NameUntis
                                          where s.Mail != null
                                          where s.Mail != ""
                                          select s.Mail).ToList();

                foreach (var schuelerDerKlasse in schuelersDerKlasse)
                {
                    klassenteamSoll.Members.Add(schuelerDerKlasse);
                }

                if (klassenteamSoll.Members.Count() + klassenteamSoll.Owners.Count() > 0)
                {
                    this.Add(klassenteamSoll);
                }
            }

            Global.WriteLine("Klassenteams Soll", this.Count);
            Console.WriteLine("");
        }
示例#2
0
        public Schuelers(Klasses klasses)
        {
            Schuelers atlantisschulers = new Schuelers();

            using (OdbcConnection connection = new OdbcConnection(Global.ConnectionStringAtlantis))
            {
                DataSet dataSet = new DataSet();

                OdbcDataAdapter schuelerAdapter = new OdbcDataAdapter(@"SELECT   
            schueler.pu_id AS AtlantisSchuelerId,
            schueler.gebname AS Geburtsname,
            schueler.gebort_lkrs AS Geburtsort,
            schueler.s_geburts_land AS Geburtsland,
            schue_sj.vorgang_akt_satz_jn AS AktuellJN,
schue_sj.s_schulabschluss_bos AS Versetzung1,
schue_sj.dat_versetzung AS VersetzungsDatumInDiesenBildungsgang,
schue_sj.s_austritts_grund_bdlg AS BBB,
schue_sc.dat_austritt AS Austrittsdatum,
schue_sc.s_ausb_ziel_erreicht AS BeruflicherAbschluss,
schue_sc.s_austritt_schulabschluss AS AllgemeinerAbschluss,
schue_sc.s_hoechst_schulabschluss AS LSHoechAllAb,
schueler.s_schwerstbehindert AS XX,
schue_sj.kl_id AS AtlantisKlasseId,			
schue_sj.fko_id AS AtlantisStundentafelId,			
schue_sj.durchschnitts_note_jz AS DurchschnittsnoteJahreszeugnis,			
			schueler.name_1 AS Nachname,
			schueler.name_2 AS Vorname,
			check_null (hole_schuljahr_rech ('', -1))												as schuljahr_vorher, 
			check_null (hole_schuljahr_rech ('', 0))												as Bezugsjahr,				/*  1 aktuelles SJ des Users */
			check_null (sv_km_kuerzel_wert ('s_typ_vorgang', schue_sj.s_typ_vorgang))	as Status,                  /*  2 */
			/* lfd_nr im cf_ realisiert */                                                                                              /*  3 */ 
			(if check_null (klasse.klasse_statistik_name) <> ''	THEN
				 check_null (klasse.klasse_statistik_name)         ELSE
				 check_null (klasse.klasse)								ENDIF)				as Klasse,                      /*  4 */
         check_null (sv_km_kuerzel_wert ('s_berufs_nr_gliederung', 
                                 schue_sj.s_berufs_nr_gliederung))                  as Gliederung,                  /*  5 */   
         check_null (substr(schue_sj.s_berufs_nr,4,5))				                    as Fachklasse,                  /*  6 Stelle 4-8 */  
			''																								as Klassenart,					/*  7 nicht BK */
			check_null (sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art))	as OrgForm,                     /*  8 */
         check_null (sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang))			as AktJahrgang,                 /*  9 */   
			check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf', schueler.s_art_foerderungsbedarf))
																											as Foerderschwerp,			/* 10 */ 
			(if check_null (schueler.s_schwerstbehindert) = ''	THEN
				 '0'                                                    ELSE
				 '1'															ENDIF)					as Schwerstbeh,				/* 11 */ 
			''																								as Reformpdg,					/* 12 */ 
			(if sv_steuerung ('s_unter', schueler.s_unter) = '$JVA' THEN
				 '1'                                                    ELSE
				 '0'															ENDIF)		                as JVA,							/* 13 */ 
         check_null_10(adresse.plz )                                                as Plz,                             /* 14 */ 
			hole_schueler_ort_bundesland (adresse.s_gem_kz, adresse.ort, adresse.lkz)	as Ort,							/* 15 */
         schueler.dat_geburt			                                                            as Gebdat,                      /* 16 */
         check_null (sv_km_kuerzel_wert ('s_geschl' , schueler.s_geschl))				as Geschlecht,                  /* 17 */   
         check_null (sv_km_kuerzel_wert ('s_staat'  , schueler.s_staat))				as Staatsang,                   /* 18 */
         
		   check_null (sv_km_kuerzel_wert ('s_bekennt', schueler.s_bekennt))       as Religion,                     /* 19 */
			schue_sj.dat_rel_anmeld																	as Relianmeldung,				/* 20 */
			schue_sj.dat_rel_abmeld																	as Reliabmeldung,				/* 21 */
			(if Aufnahmedatum_Bildungsgang is null THEN             
				 Aufnahmedatum_Schule					ELSE
				 Aufnahmedatum_Bildungsgang			ENDIF)                                  as	Aufnahmedatum,              /* 22 */  
			(select max (lehr_sc.ls_kuerzel)
            from lehr_sc, kl_ls, lehrer
              where lehr_sc.ls_id       = kl_ls.ls_id                                                   
                 and kl_ls.kl_id            = klasse.kl_id
				 and kl_ls.s_typ_kl_ls  = '0'
             and lehrer.le_id       = lehr_sc.le_id)                                        as Labk,							/* 23 */
						
			(select adresse.plz
			   from adresse, betrieb, pj_bt  
			  where adresse.ad_id       = betrieb.id_hauptadresse  
				 and pj_bt.bt_id            = betrieb.bt_id    
				 and pj_bt.s_typ_pj_bt  = '0'       
				 and pj_bt.pj_id            = schue_sj.pj_id)										as ausbildort,                  /* 24 */                       
				
			hole_schueler_betriebsort (schue_sj.pj_id, 'ort')								as betriebsort,                 /* 25 */                       
				
			/* Kapitel der zuletzt besuchten Schule */
         check_null (sv_km_kuerzel_wert ('s_herkunfts_schule', 
                                 schue_sj.s_herkunfts_schule))                   as	LSSchulform,/* 26 */  
			left (schue_sj.vo_s_letzte_schule, 6)                                           as LSSchulnummer,				/* 27 */
			check_null (sv_km_kuerzel_wert ('s_berufl_vorbildung_glied', 
                                 schue_sj.s_berufl_vorbildung_glied))               as	LSGliederung,               /* 28 */  
			substr (schue_sj.s_berufl_vorbildung, 4, 5)                                     as	LSFachklasse,               /* 29 */  
			''																								as LSKlassenart,				/* 30 */
			''																								as LSReformpdg,				/* 31 */
			Null																							as LSSchulentl,				/* 32 */		
			check_null (sv_km_kuerzel_wert ('s_abgang_jg', schue_sj.vo_s_jahrgang))	
																                                            as	LSJahrgang,                 /* 33 */  
			(if Gliederung || Fachklasse = VOGliederung || VOFachklasse then 
             (if AktJahrgang = vojahrgang and Schueler_le_schuljahr_da = 'J' then 'W' else 'V' endif)   else
		      right (check_null (sv_km_kuerzel_wert ('s_schulabschluss', schue_sc.s_hoechst_schulabschluss)), 1) ENDIF)
																                                        as LSQual,                      /* 34 */
			'0'																							as LSVersetz,					/* 35 */ 
	 
			/* Kapitel für das abgelaufene Schuljahr */
			check_null ((if (Fall_Bezugsjahr = '1')				THEN
				(SELECT klasse.klasse									/* aus Vorjahr lesen */  
					FROM klasse, schue_sj  
				  WHERE schue_sj.kl_id = klasse.kl_id     
					 and schue_sj.pj_id = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				klasse.klasse												ENDIF))				    as VOKlasse,                    /* 36 */
			check_null ((if (Fall_Bezugsjahr = '1')                 THEN
				(select schue_sj.s_berufs_nr_gliederung			/* aus Vorjahr lesen */
					from schue_sj
				  where schue_sj.pj_id  = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				schue_sj.s_berufs_nr_gliederung						ENDIF))                     as VOGliederung,            /* 37 */
			check_null ((if (Fall_Bezugsjahr = '1')                 THEN
				(select substr (schue_sj.s_berufs_nr, 4, 5)		/* aus Vorjahr lesen */ 
					from schue_sj
				  where schue_sj.pj_id  = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				substr (schue_sj.s_berufs_nr, 4, 5)					ENDIF))                     as VOFachklasse,                /* 38 */
			check_null ((if (Fall_Bezugsjahr = '1')				THEN
				(SELECT sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art)/* aus Vorjahr lesen */  
					FROM klasse, schue_sj  
				  WHERE schue_sj.kl_id = klasse.kl_id     
					 and schue_sj.pj_id = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art) ENDIF))		as VOOrgForm,                   /* 39 */
			''																								as VOKlassenart,				/* 40 nicht BK*/
			check_null ((if (Fall_Bezugsjahr = '1')				THEN
				(SELECT sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang)/* aus Vorjahr lesen */  
					FROM klasse, schue_sj  
				  WHERE schue_sj.kl_id = klasse.kl_id     
					 and schue_sj.pj_id = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang) ENDIF))		   as VOJahrgang,               /* 41 */
			check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf_vj', 
                                 schueler.s_art_foerderungsbedarf_vj))              as VOFoerderschwerp,			/* 42 */ 
			'0'																							as VOSchwerstbeh,				/* 43 */ 
			''																								as VOReformpdg,				/* 44 nicht BK*/
				
			hole_schueler_bildungsgang (schueler.pu_id, klasse.s_bildungsgang, schue_sj.dat_austritt, 'austritt')
																											as EntlDatum,					/* 45 */				
			check_null (sv_km_kuerzel_wert ('s_austritts_grund_bdlg', 
                                 schue_sj.s_austritts_grund_bdlg))               as Zeugnis_JZ,                 /* 46 */
			''																								as Schulpflichterf,			/* 47 nicht BK */           
			''																								as Schulwechselform,			/* 48 nicht BK */       
			''																								as Versetzung,					/* 49 */        
			(IF s_geburts_land is not null AND s_geburts_land <> '000' THEN
             string (year (dat_zuzug))
          ELSE
             ''
          ENDIF
			)																								as JahrZuzug_nicht_in_D_geboren,	/* 50 */
			string (year (dat_eintritt_gs))														as JahrEinschulung,					/* 51 */
			''																								as JahrWechselSekI,					/* 52 */
			(IF (s_geburts_land is not null AND s_geburts_land <> '000') OR (s_geburts_land is null AND dat_zuzug is not null) THEN
             '1'
          ELSE
             '0'
          ENDIF
			)																							   as Zugezogen,							/* 53 */
			/* Hilfsfelder */
			(SELECT max (adr_mutter.ad_id) 
            FROM adresse adr_mutter 
           WHERE adr_mutter.pu_id		= schueler.pu_id
             AND adr_mutter.s_typ_adr	= 'M'
			)																								as ad_id_mutter,
(select max (adresse.strasse)
			   from adresse  
			  where adresse.pu_id = schueler.pu_id)										as strasse, 
(select max (adresse.tel_1)
			   from adresse  
			  where adresse.pu_id = schueler.pu_id)										as telefon, 
			(SELECT adr_mutter.s_herkunftsland_adr 
            FROM adresse adr_mutter 
           WHERE adr_mutter.ad_id		= ad_id_mutter
			)																								as herkunftsland_mutter,			/* 54 */
			(SELECT max (adr_vater.ad_id) 
            FROM adresse adr_vater
           WHERE adr_vater.pu_id			= schueler.pu_id
             AND adr_vater.s_typ_adr	= 'V'
			)																								as ad_id_vater,
			(SELECT adr_vater.s_herkunftsland_adr 
            FROM adresse adr_vater
           WHERE adr_vater.ad_id			= ad_id_vater
			)																								as herkunftsland_vater,				/* 55 */
			(IF herkunftsland_mutter is not null AND herkunftsland_mutter <> '000'
             OR
				 herkunftsland_vater  is not null AND herkunftsland_vater  <> '000' THEN
             '1'
          ELSE
             '0'
          ENDIF
         )																								as Elternteilzugezogen,				/* 56 */
			(IF schueler.s_muttersprache is not null AND 
             schueler.s_muttersprache <> 'DE'     AND 
             schueler.s_muttersprache <> '000' THEN
             schueler.s_muttersprache
          ELSE
             ''
          ENDIF
         )																								as Verkehrssprache,					/* 57 */
			''																								as Einschulungsart					/* 58 */,
			''																								as Grundschulempfehlung				/* 59 */,
			schue_sj.pj_id																				as pj_id,
			check_null (sv_km_kuerzel_wert ('s_religions_unterricht', 
                                 schue_sj.s_religions_unterricht))					as s_religions_unterricht,
            schue_sc.dat_eintritt	                                                        as	Aufnahmedatum_schule,               
			hole_schueler_bildungsgang (schueler.pu_id, klasse.s_bildungsgang, schue_sj.dat_eintritt, 'eintritt')
							                                                                        as	Aufnahmedatum_Bildungsgang,
			(SELECT max (pj_id) 
			   FROM schue_sj  
			  WHERE schue_sj.pu_id                  = schueler.pu_id        and
					  schue_sj.s_typ_vorgang        IN ('A', 'G', 'S')	and
					  schue_sj.vorgang_schuljahr    = schuljahr_vorher)                         as VOpj_id,
			test_austritt (schue_sj.dat_austritt)												as ausgetreten,
		
			check_null ((SELECT noten_kopf.s_bestehen_absprf || noten_kopf.s_zusatzabschluss
			   FROM noten_kopf, schue_sj  
			  WHERE noten_kopf.s_typ_nok            = 'HZ'
				 AND schue_sj.pj_id                     = noten_kopf.pj_id
				 AND schue_sj.pj_id                     = VOpj_id))                             as Zeugnis_HZ,
			check_null ((if ( schue_sj.vorgang_schuljahr    = check_null (hole_schuljahr_rech ('',  0)) /* '2005/06' */
	                AND schue_sj.vorgang_akt_satz_jn = 'J'
	                AND ausgetreten                         = 'N')      THEN
				 '1'                                                    ELSE
				 '0'															ENDIF))					as Fall_Bezugsjahr,			
			check_null ((if ( schue_sj.vorgang_schuljahr    = check_null (hole_schuljahr_rech ('', -1)) /* '2004/05' */
				   AND schue_sj.s_typ_vorgang   IN ('A', 'G', 'S')
				   AND ausgetreten                  = 'J')          THEN
				 '1'                                                    ELSE
				 '0'															ENDIF))					as Fall_schuljahr_vorher,
			
			check_null ((if ( VOJahrgang <> '')							            THEN
				 'J'                                                    ELSE
				 'N'															ENDIF))					as Schueler_le_schuljahr_da,	
			
			check_null ((if ( Fachklasse <> VOFachklasse
					OR Gliederung <> VOGliederung)		            THEN
				 'J'                                                    ELSE
				 'N'															ENDIF))					as Schueler_Berufswechsel,	
			
			check_null ((if ( VoGliederung = 'C05' 
				  AND Gliederung = 'C06')		                        THEN
				 'J'                                                    ELSE
				 'N'															ENDIF))					as Vorjahr_C05_Aktjahr_C06,		
			
			check_null (sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang))				as schueler_jahrgang, 
			check_null ((if (Fall_Bezugsjahr = '1')                 THEN
				(select schue_sj.s_jahrgang			/* aus Vorjahr lesen */
					from schue_sj
				  where schue_sj.pj_id  = VOpj_id)					ELSE
				/* Fall_schuljahr_vorher */
				schue_sj.s_jahrgang										ENDIF))                     as VOSchueler_Jahrgang,
            (IF EXISTS (SELECT 1 FROM schue_sj_info  
                      WHERE schue_sj_info.info_gruppe = 'MASSNA'
						      AND schue_sj_info.pj_id = schue_sj.pj_id) THEN '1' ELSE '0' ENDIF) as Massnahmetraeger,	/* 60 */
         check_null (sv_km_kuerzel_wert ('s_geschl', schueler.s_betreuungsart))	as Betreuung,                           /* 61 */   
            (IF EXISTS (SELECT 1 FROM schueler_info  
                      WHERE schueler_info.info_gruppe = 'PUBEM'
                        AND schueler_info.s_typ_puin  = 'BKAZVO'
								AND schueler_info.betrag IN (0, 6, 12, 18)
						      AND schueler_info.pu_id = schueler.pu_id) THEN 
		   (SELECT konv_dec_string(schueler_info.betrag, 0)
			   FROM schueler_info  
			  WHERE schueler_info.puin_id = (SELECT max(puin.puin_id)  
														  FROM schueler_info puin 
														 WHERE puin.info_gruppe = 'PUBEM' 
														   AND puin.s_typ_puin = 'BKAZVO'
														   AND puin.betrag IN (0, 6, 12, 18)
														   AND puin.pu_id  = schueler.pu_id)) ELSE '0' ENDIF)	as BKAZVO,	/* 62 */   
			check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf2', 
                                 schueler.s_art_foerderungsbedarf2))    as Foerderschwerp2,						/* 63 */   
			check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf_vj2',
                                 schueler.s_art_foerderungsbedarf_vj2)) as VOFoerderschwerp2,					/* 64 */   
			(IF schue_sc.berufsabschluss_jn = 'J' THEN 'Y' ELSE '' ENDIF)	as Berufsabschluss,                         /* 65 */   
			'Atlantis'                                                                      as Produktname,                            /* 66 */   
			(SELECT 'V' || version.version_nr  
			   FROM version
           WHERE version.datum  = (SELECT max(v.datum) FROM version v)) as Produktversion,                    /* 67 */   
         check_null (sv_km_kuerzel_wert ('s_bereich', klasse.s_bereich)) as Adressmerkmal,                  /* 68 */
			(if sv_steuerung ('s_unter', schueler.s_unter) = '$IN' THEN
				 '1'                                                    ELSE
				 ''															ENDIF)		 as Internat,								/* 69 */ 
         '0'																			    as Koopklasse                      /* 70 */
  FROM   schueler,   
         schue_sc,  
         schue_sj,   
			schule,
         klasse,   
         adresse
 WHERE   schue_sj.kl_id                     = klasse.kl_id                   
     AND schue_sc.sc_id                     = schule.sc_id                  
     AND schue_sc.ps_id                     = schue_sj.ps_id                 
     AND schue_sc.pu_id                     = schueler.pu_id                 
	  AND adresse.ad_id                         = schueler.id_hauptadresse  
     AND (
			 (schue_sj.vorgang_schuljahr    = check_null (hole_schuljahr_rech ('',  0)) /* aktuelles Jahr */
	  
			 )
          OR
          (
			  schue_sj.vorgang_schuljahr    = check_null (hole_schuljahr_rech ('', -1)) /* letzte jahr */
	  AND   schue_sj.s_typ_vorgang          IN ('G', 'S')
	  AND   ausgetreten = 'J'
			 )
         ) 
ORDER BY ausgetreten DESC, klasse, schueler.name_1, schueler.name_2", connection);



                connection.Open();
                schuelerAdapter.Fill(dataSet, "DBA.schueler");

                foreach (DataRow theRow in dataSet.Tables["DBA.schueler"].Rows)
                {
                    string vorname  = theRow["Vorname"] == null ? "" : theRow["Vorname"].ToString();
                    string nachname = theRow["Nachname"] == null ? "" : theRow["Nachname"].ToString();

                    if (vorname.Length > 1 && nachname.Length > 1)
                    {
                        var schueler = new Schueler();
                        schueler.Id             = theRow["AtlantisSchuelerId"] == null ? -99 : Convert.ToInt32(theRow["AtlantisSchuelerId"]);
                        schueler.Nachname       = theRow["Nachname"] == null ? "" : theRow["Nachname"].ToString();
                        schueler.Vorname        = theRow["Vorname"] == null ? "" : theRow["Vorname"].ToString();
                        schueler.Ort            = theRow["Ort"] == null ? "" : theRow["Ort"].ToString();
                        schueler.Klasse         = theRow["Klasse"] == null ? "" : theRow["Klasse"].ToString();
                        schueler.Gebdat         = theRow["Gebdat"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Gebdat"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                        schueler.Telefon        = theRow["telefon"] == null ? "" : theRow["telefon"].ToString();
                        schueler.Mail           = schueler.Kurzname + "@students.berufskolleg-borken.de";
                        schueler.Eintrittsdatum = theRow["Aufnahmedatum"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Aufnahmedatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

                        schueler.AktuellJN = theRow["AktuellJN"] == null ? "" : theRow["AktuellJN"].ToString();

                        schueler.Austrittsdatum = theRow["Austrittsdatum"].ToString().Length < 3 ? new DateTime((DateTime.Now.Month >= 8 ? DateTime.Now.Year + 1 : DateTime.Now.Year), 7, 31) : DateTime.ParseExact(theRow["Austrittsdatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                        schueler.Volljährig     = schueler.Gebdat.AddYears(18) > DateTime.Now ? false : true;
                        schueler.Geschlecht     = theRow["Geschlecht"] == null ? "" : theRow["Geschlecht"].ToString();
                        schueler.Gebdat         = theRow["Gebdat"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Gebdat"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                        schueler.Relianmeldung  = theRow["Relianmeldung"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Relianmeldung"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
                        schueler.Reliabmeldung  = theRow["Reliabmeldung"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Reliabmeldung"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

                        schueler.Status     = theRow["Status"] == null ? "" : theRow["Status"].ToString();
                        schueler.Bezugsjahr = Convert.ToInt32(theRow["Bezugsjahr"].ToString().Substring(0, 4)) - Convert.ToInt32(theRow["Fall_schuljahr_vorher"]);

                        schueler.LSSchulnummer = theRow["LSSchulnummer"] == null ? "" : theRow["LSSchulnummer"].ToString();

                        if (schueler.Bezugsjahr == (DateTime.Now.Month >= 8 ? DateTime.Now.Year : DateTime.Now.Year - 1) && schueler.Status != "VB" && schueler.Status != "8" && schueler.Status != "9" && schueler.Klasse != "Z" && schueler.AktuellJN == "J")
                        {
                            // Duplikate werden verhindert.

                            if (!(from s in this where s.Id == schueler.Id select s).Any())
                            {
                                atlantisschulers.Add(schueler);
                            }
                        }
                    }
                }

                var zz = (from s in atlantisschulers where s.Ort == "Heiden" select s).ToList();

                var scc = zz.Count();

                var cc = (from k in atlantisschulers where k.Status == "A" where k.Austrittsdatum > new DateTime(2020, 08, 10) where k.Austrittsdatum < DateTime.Now select k).ToList();

                using (SqlConnection sqlConnection = new SqlConnection(Global.ConnectionStringUntis))
                {
                    string sch = "";
                    try
                    {
                        string queryString = @"SELECT
StudNumber,
Email,
BirthDate,
FirstName,
Longname,
Name,
Flags,
Student_ID,
CLASS_ID
FROM Student 
WHERE SCHOOLYEAR_ID =" + Global.AktSj[0] + Global.AktSj[1] + ";";

                        SqlCommand sqlCommand = new SqlCommand(queryString, sqlConnection);
                        sqlConnection.Open();
                        SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

                        List <Schueler> schuelers = new List <Schueler>();

                        while (sqlDataReader.Read())
                        {
                            Schueler schueler = new Schueler();
                            schueler.IdAtlantis = Convert.ToInt32(Global.SafeGetString(sqlDataReader, 0));
                            schueler.Mail       = Global.SafeGetString(sqlDataReader, 1);

                            try
                            {
                                schueler.Gebdat = DateTime.ParseExact((sqlDataReader.GetInt32(2)).ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
                            }
                            catch (Exception)
                            {
                            }
                            schueler.Vorname  = Global.SafeGetString(sqlDataReader, 3);
                            schueler.Nachname = Global.SafeGetString(sqlDataReader, 4);

                            sch = schueler.Nachname + ", " + schueler.Vorname;

                            schueler.Anmeldename  = Global.SafeGetString(sqlDataReader, 5);
                            schueler.GeschlechtMw = Global.SafeGetString(sqlDataReader, 6);
                            schueler.IdUntis      = sqlDataReader.GetInt32(7);

                            var atlantisschueler = (from a in atlantisschulers
                                                    where a.Nachname == schueler.Nachname
                                                    where a.Vorname == schueler.Vorname
                                                    where a.Gebdat.Date == schueler.Gebdat.Date
                                                    select a).FirstOrDefault();


                            schueler.Klasse = (from a in atlantisschulers
                                               where a.Nachname == schueler.Nachname
                                               where a.Vorname == schueler.Vorname
                                               where a.Gebdat.Date == schueler.Gebdat.Date
                                               select a.Klasse).FirstOrDefault();

                            schueler.Reliabmeldung = (from a in atlantisschulers
                                                      where a.Nachname == schueler.Nachname
                                                      where a.Vorname == schueler.Vorname
                                                      where a.Gebdat.Date == schueler.Gebdat.Date
                                                      select a.Reliabmeldung).FirstOrDefault();

                            schueler.Relianmeldung = (from a in atlantisschulers
                                                      where a.Nachname == schueler.Nachname
                                                      where a.Vorname == schueler.Vorname
                                                      where a.Gebdat.Date == schueler.Gebdat.Date
                                                      select a.Relianmeldung).FirstOrDefault();

                            schuelers.Add(schueler);
                        }
                        ;
                        sqlDataReader.Close();

                        schuelers = schuelers.OrderBy(o => o.Klasse).ToList();

                        foreach (var schueler in schuelers)
                        {
                            this.Add(schueler);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        sqlConnection.Close();

                        Global.WriteLine("Schüler", this.Count);
                    }
                }
            }
        }
示例#3
0
        static void Main(string[] args)
        {
            try
            {
                Global.Initialize();

                Periodes periodes = new Periodes();

                var                periode            = (from p in periodes where p.Bis >= DateTime.Now.Date where DateTime.Now.Date >= p.Von select p.IdUntis).FirstOrDefault();
                Lehrers            lehrers            = new Lehrers(periode);
                Klasses            klasses            = new Klasses(periode, lehrers);
                Schuelers          schuelers          = new Schuelers(klasses);
                Fachs              fachs              = new Fachs();
                Raums              raums              = new Raums(periode);
                Unterrichtsgruppes unterrichtsgruppes = new Unterrichtsgruppes();
                Unterrichts        unterrichts        = new Unterrichts(periode, klasses, lehrers, fachs, raums, unterrichtsgruppes);
                Anrechnungs        anrechnungen       = new Anrechnungs(periode);

                Teams klassenMitAllenSoll = new Teams(klasses, lehrers, schuelers, unterrichts);
                Global.TeamsSoll.Hinzufügen(anrechnungen, lehrers, klassenMitAllenSoll);



                // Alle Lehrkräfte und Schüler im Team
                //Teams klassenMitSchülernSoll = new Teams(klassenMitAllenSoll, "Klassenteams-SuS", lehrers);


                Global.TeamsSoll.Hinzufügen(new Teams(klassenMitAllenSoll, "Klassenteams-LuL", lehrers));
                Global.TeamsSoll.Hinzufügen(new Teams(klassenMitAllenSoll, "Bildungsgaenge-LuL", lehrers));
                Global.TeamsSoll.Hinzufügen(new Team("Kollegium", lehrers, lehrers.Kollegium()));
                Global.TeamsSoll.Hinzufügen(new Team("Abitur", lehrers, unterrichts.Abitur(lehrers)));
                Global.TeamsSoll.Hinzufügen(new Team("FHR", lehrers, unterrichts.Fhr(lehrers)));
                Global.TeamsSoll.Hinzufügen(new Team("SV"));
                Global.TeamsSoll.Hinzufügen(new Team("Lehrerinnen", lehrers, lehrers.Lehrerinnen()));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Religionslehre", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "KR", "KR FU", "KR1", "KR2", "KR G1", "KR G2", "ER", "ER G1" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Wirtschaftslehre in nicht kaufm Klassen", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "WL", "WBL" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Deutsch/ Kommunikation", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "D", "D FU", "D1", "D2", "D G1", "D G2", "D L1", "D L2", "D L", "DL", "DL1", "DL2" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Mathematik/ Physik", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "M", "M FU", "M1", "M2", "M G1", "M G2", "M L1", "M L2", "M L", "ML", "ML1", "ML2" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Politik/ Gesellschaftslehre", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "PK", "PK FU", "PK1", "PK2", "GG G1", "GG G2" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Sport", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "SP", "GG" })));
                //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Englisch", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "E", "E FU", "E1", "E2", "E G1", "E G2", "E L1", "E L2", "E L", "EL", "EL1", "EL2" })));
                Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen A", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen A")));
                Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen B", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen B")));
                Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen C", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen C")));
                Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen D", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen D")));

                var members = new List <string>();
                members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen A"));
                members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen B"));
                members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen C"));
                members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen D"));

                Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen", lehrers, members));
                Global.TeamsSoll.Hinzufügen(new Team("Klassenleitungen", lehrers, klasses.Klassenleitungen()));

                //Global.TeamsSoll.CsvString = "\"GroupDisplayName\"|\"PrimarySmtpAddress\"|\"User\"|\"Type\"\r\n";
                //Global.TeamsSoll.Hinzufügen(new Team("aaa10", new List<string>() { "*****@*****.**", "*****@*****.**" }));

                // Erstelle CSV

                File.WriteAllText(Global.GruppenMemberCsvSoll, Global.TeamsSoll.CsvString, Encoding.UTF8);

                Process myProcess = new Process();
                Process.Start("notepad++.exe", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\GruppenOwnerMembersSoll.csv");

                // Interop

                string dateiWord = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\Gruppen-und-Mitglieder.docx";
                string dateiPdf  = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\Gruppen-und-Mitglieder.pdf";

                if (File.Exists(dateiWord))
                {
                    File.Delete(dateiWord);
                }

                File.Copy(@"U:\Source\Repos\teams\teams\Gruppen und Mitglieder.docx", dateiWord);

                var wordApp = new Application {
                    Visible = true
                };
                var aDoc = wordApp.Documents.Open(dateiWord, ReadOnly: false, Visible: true);
                aDoc.Activate();

                FindAndReplace(wordApp, "{stand}", DateTime.Now.ToShortDateString());

                foreach (var teamSoll in Global.TeamsSoll)
                {
                    if (teamSoll.DisplayName.StartsWith("FHR"))
                    {
                        string a = "";
                    }
                    // Die Schulleiterin wird zuerst genannt. Alle anderen Gruppen bleiben alphabetisch sortiert.

                    if (teamSoll.DisplayName == "Schulleitung" || teamSoll.Members.Count == 1)
                    {
                        foreach (var member in teamSoll.Members)
                        {
                            FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", "{" + teamSoll.DisplayName + "}" + member + ";\r\n");
                        }
                    }
                    else
                    {
                        for (int i = 0; i < teamSoll.Members.Count; i++)
                        {
                            string aaa = "\t" + teamSoll.Members[i] + ";";

                            if (i < teamSoll.Members.Count - 1)
                            {
                                aaa = aaa + "\t" + teamSoll.Members[i + 1] + ";";
                            }

                            aaa = aaa + "\r\n {" + teamSoll.DisplayName + "}";

                            FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", aaa);
                            i++;
                        }
                    }

                    FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", "");
                    FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Bildungsgang" + "}", teamSoll.BildungsgangLanganme);
                    FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Bildungsgangleitung" + "}", teamSoll.Bildungsgangleitung);
                    FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Vorsitz" + "}", teamSoll.Vorsitz);
                }

                // Klassenstrings

                foreach (var klassenteam in klassenMitAllenSoll)
                {
                    FindAndReplace(wordApp, "{Klassenteams}", "\t" + klassenteam.DisplayName + "*****@*****.**" + "\t(" + klassenteam.Klassenleitung + ")\r\n{Klassenteams}");
                }
                FindAndReplace(wordApp, "{Klassenteams}", "");

                aDoc.Save();
                Console.WriteLine("--------------------");
                Console.WriteLine("Nächste Schritte:");
                Console.WriteLine("1. Inhaltsverzeichnis der Worddatei neu laden. Word schließen");
                Console.WriteLine("2. Die Worddatei mit Libreoffice laden und dann exportieren werden, damit der PDF-Viewer das Inhaltsverzeichnis anzeigt.");


                Console.WriteLine("Ende der Verarbeitung");
                Console.ReadKey();
                Environment.Exit(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Console.ReadKey();
            }
            finally
            {
            }
        }