Пример #1
0
		public static int EnterOrteWithProjekte (SelectionCard ActuallCard,
			DataTable ProjekteForThisOrt, String PageNumberParameter)
			{
			try
				{
				int NumberOfProcessed = 0;
				if (ProjekteForThisOrt.Rows.Count > 0)
					{
					foreach (DataRow PlakateCounterProjektRow in ProjekteForThisOrt.Rows)
						{
						DataRow ProjektRow =
							Basics.Instance.WordUpWCFAccess.GetCommonDataSet ("Select * from ProjektUebersicht where ID = '"
							                                                  + PlakateCounterProjektRow ["ProjektID"].ToString () + "'")
								.Tables ["ProjektUebersicht"].Rows [0];
						SelectionSlot Entry = new SelectionSlot (PageNumberParameter);
						Entry.ArbeitsGruppenNameID = ActuallCard.ArbeitsGruppenNameID;
						Entry.Parent = ActuallCard;
						Entry.ProjektRow = ProjektRow;
						ActuallCard.Slots.Add (Entry);
						PlakateCounterProjektRow.Delete ();
						NumberOfProcessed++;
						if (ActuallCard.FreeSlots == 0)
							return NumberOfProcessed;
						}
					}
				else
					{
					throw new Exception ("ProjekteForThisOrt.Rows.Count <= 0");
					SelectionSlot Entry = new SelectionSlot (PageNumberParameter);
					Entry.ArbeitsGruppenNameID = ActuallCard.ArbeitsGruppenNameID;
					Entry.Parent = ActuallCard;
					//Entry.ProjektRow = null;
					ActuallCard.Slots.Add (Entry);
					NumberOfProcessed++;
					if (ActuallCard.FreeSlots == 0)
						return NumberOfProcessed;
					
					}
				return NumberOfProcessed;

				}
			finally
				{
				ProjekteForThisOrt.AcceptChanges ();
				}
			}
Пример #2
0
        public List<SelectionCard> CreateCardList(List<Guid> SelectionZustendigKeit, String IncludeOrExclude,
            Basics.DataSelection RequestedPhase = Basics.DataSelection.Error)
            {
            if (RequestedPhase == Basics.DataSelection.Error)
                RequestedPhase = WordUpBasics.WordUpPhase;
            String SelectionPart = GetPhasenClause(RequestedPhase);
            if (SelectionZustendigKeit != null)
                {
                if (IncludeOrExclude == "CreateOnly")
                    {
                    SelectionPart = " and (ZustaendigID = '"
                                    + String.Join("' or ZustaendigID = '", SelectionZustendigKeit) + "') ";
                    }
                else
                    {
                    SelectionPart = " and not (ZustaendigID = '"
                                    + String.Join("' or ZustaendigID = '", SelectionZustendigKeit) + "') ";
                    }
                }

            DataTable OrteMitProjekten = null;
            if (RequestedPhase == Basics.DataSelection.Ideen)
                {
                OrteMitProjekten = WordUpBasics.WordUpWCFAccess.GetCommonDataSet
                    ("SELECT 'Alle' as ArbeitsGruppenNameID, OrtsTeil, OrteBezeichnung as OrtsNameID, OrteID, COUNT(OrteID) AS NumberOfProjekte "
                     + "FROM FullWSPlakate where WordUpRootID = '"
                     + WordUpBasics.WordUpID + "' " + SelectionPart
                     + " GROUP BY OrtsTeil, OrteBezeichnung, OrteID"
                     + " ORDER BY OrtsTeil, OrteBezeichnung, OrteID, NumberOfProjekte DESC ")
                    .Tables["FullWSPlakate"];
                }
            else
                {
                OrteMitProjekten = WordUpBasics.WordUpWCFAccess.GetCommonDataSet
                    ("SELECT ArbeitsGruppenNameID, OrtsTeil, OrtsNameID, OrteID, COUNT(OrteID) AS NumberOfProjekte "
                     + "from  ProjektUebersicht WHERE WordUpRootID = '"
                     + WordUpBasics.WordUpID + "' " + SelectionPart +
                     " GROUP BY ArbeitsGruppenNameID, OrtsTeil, OrtsNameID, OrteID"
                     + " ORDER BY ArbeitsGruppenNameID, OrtsTeil, OrtsNameID, OrteID, NumberOfProjekte DESC ")
                    .Tables["ProjektUebersicht"];
                }
            String OldOrtsTeil = "Missing";
            List<SelectionCard> CardList = new List<SelectionCard>();
            SelectionCard ActuallCard = null;
            int PageNumber = 0;
//#if DEBUG
//			int RunningCounter = 0;
//#endif

            foreach (DataRow ProjektOrt in OrteMitProjekten.Rows)
                {
                //TODO
//#if DEBUG
//				if (((Guid )ProjektOrt ["OrteID"]) != Guid.Parse ("2504fb93-c061-4f5c-b0a7-87253c391972"))
//					continue;
//#endif
                String OrtsTeil = ProjektOrt["OrtsTeil"].ToString();
                if (OrtsTeil != OldOrtsTeil)
                    {
                    OldOrtsTeil = OrtsTeil;
                    ActuallCard = new SelectionCard(++PageNumber);
                    ActuallCard.OrtsTeil = OrtsTeil;
                    ActuallCard.ArbeitsGruppenNameID = ProjektOrt["ArbeitsGruppenNameID"].ToString();
                    CardList.Add(ActuallCard);
                    }
                DataTable FullWSPlakateAnDiesemOrt = WordUpBasics.WordUpWCFAccess.GetCommonDataSet
                    ("SELECT ProjektID, ProjektBeschreibung, Count (ID) as NumberOfRequests "
                     + "FROM FullWSPlakate where OrteID = '"
                     + ProjektOrt["OrteID"].ToString() + "' and WordUpRootID = '"
                     + WordUpBasics.WordUpID + "' " + SelectionPart.Replace(" and ID in", " and ProjektID in")
                     + " Group By ProjektID, ProjektBeschreibung  "
                     + "order by ProjektID, ProjektBeschreibung, NumberOfRequests desc")
                    .Tables["FullWSPlakate"];
                // 
                int NumberOfProjecteAnDiesemOrt = Convert.ToInt32(ProjektOrt["NumberOfProjekte"]);
                int NumberOfPlakateAnDiesemOrt = FullWSPlakateAnDiesemOrt.Rows.Count;
                if (NumberOfPlakateAnDiesemOrt == 0)
                    {
                    MessageBox.Show("NumberOfPlakateAnDiesemOrt == 0 bei OrteID =\r\n" + ProjektOrt["OrteID"].ToString());
                    continue;
                    }
                if (RequestedPhase != Basics.DataSelection.Ideen)
                    {
                    if ((NumberOfProjecteAnDiesemOrt != NumberOfPlakateAnDiesemOrt)
                        || (NumberOfPlakateAnDiesemOrt == 0))
                        {
                        DataTable ProjektenAnDiesemOrt =
                            WordUpBasics.WordUpWCFAccess.GetCommonDataSet
                                ("SELECT ID, OrteID from  ProjektUebersicht WHERE WordUpRootID = '"
                                 + WordUpBasics.WordUpID + "' and OrteID = '" + ProjektOrt["OrteID"].ToString()
                                 + "' " + SelectionPart)
                                .Tables["ProjektUebersicht"];
                        StringBuilder ErrornousProjektIDs = new StringBuilder();
                        foreach (DataRow PlakateAnDiesemOrtRow in FullWSPlakateAnDiesemOrt.Rows)
                            {
                            String ProjektIDAusPlakaten = PlakateAnDiesemOrtRow["ProjektID"].ToString();
                            DataRow[] FoundProjekteRows =
                                ProjektenAnDiesemOrt.Select("ID = '" + ProjektIDAusPlakaten + "'");
                            if (FoundProjekteRows.Length == 1)
                                continue;
                            ErrornousProjektIDs.AppendLine(ProjektIDAusPlakaten + " FoundProjekteRows.Length = "
                                                           + Convert.ToString(FoundProjekteRows.Length));
                            }
                        StringBuilder MissingPlakatProjektIDs = new StringBuilder();
                        foreach (DataRow ProjekteAnDiesemOrtRow in ProjektenAnDiesemOrt.Rows)
                            {
                            String ProjektIDAusProjekten = ProjekteAnDiesemOrtRow["ID"].ToString();
                            DataRow[] FoundPlakateRows =
                                FullWSPlakateAnDiesemOrt.Select("ProjektID = '" + ProjektIDAusProjekten + "'");
                            if (FoundPlakateRows.Length > 0)
                                continue;
                            MissingPlakatProjektIDs.AppendLine(ProjektIDAusProjekten + " FoundPlakateRows.Length = "
                                                               + Convert.ToString(FoundPlakateRows.Length));
                            }
                        WMB.Basics.ReportErrorToEventViewer("NumberOfProjecteAnDiesemOrt = " +
                                                            Convert.ToString(NumberOfProjecteAnDiesemOrt)
                                                            + " ungleich\r\nNumberOfPlakateAnDiesemOrt = " +
                                                            Convert.ToString(NumberOfPlakateAnDiesemOrt)
                                                            + "\r\nSystemfehler bei OrteID = \"" +
                                                            ProjektOrt["OrteID"].ToString()
                                                            + "\"\r\nund SelectionPart = \"" + SelectionPart +
                                                            "\" mit folgenden fehlenden ProjektIDs\r\n"
                                                            + ErrornousProjektIDs.ToString() +
                                                            "\r\nund folgenden fehlenden Plakaten:\r\n"
                                                            + MissingPlakatProjektIDs.ToString());
                        MessageBox.Show("NumberOfProjecteAnDiesemOrt = " + Convert.ToString(NumberOfProjecteAnDiesemOrt)
                                        + " ungleich\r\nNumberOfPlakateAnDiesemOrt = " +
                                        Convert.ToString(NumberOfPlakateAnDiesemOrt)
                                        + "\r\nSystemfehler bei OrteID = \"" + ProjektOrt["OrteID"].ToString()
                                        + "\"\r\nund SelectionPart = \"" + SelectionPart +
                                        "\" mit folgenden fehlenden ProjektIDs\r\n"
                                        + ErrornousProjektIDs.ToString() + "\r\nund folgenden fehlenden Plakaten:\r\n"
                                        + MissingPlakatProjektIDs.ToString());
                        }
                    }
                bool IsMultiPageProjekt = (NumberOfProjecteAnDiesemOrt > 4);
                while (NumberOfProjecteAnDiesemOrt > 0)
                    {
                    if (ActuallCard.FreeSlots == -1)
                        {
                        int NumberOfProcessedEntries = 0;

                        if (FullWSPlakateAnDiesemOrt.Rows.Count == 0)
                            {
                            MessageBox.Show("ActuallCard.FreeSlots == -1\r\n"
                                            + "NumberOfPlakateAnDiesemOrt == 0 bei OrteID =\r\n" +
                                            ProjektOrt["OrteID"].ToString());
                            }

                        NumberOfProcessedEntries = SelectionCard.EnterOrteWithProjekte
                            (ActuallCard, FullWSPlakateAnDiesemOrt, ActuallCard.PageNumberString);
                        if (NumberOfProcessedEntries > 0)
                            {
                            NumberOfProjecteAnDiesemOrt -= NumberOfProcessedEntries;
                            continue;
                            }
                        else
                            {
                            throw new Exception("A - NumberOfProcessedEntries == 0");
                            }
                        }
                    if (ActuallCard.FreeSlots >= NumberOfProjecteAnDiesemOrt)
                        {
                        int NumberOfProcessedEntries = 0;
                        if (FullWSPlakateAnDiesemOrt.Rows.Count == 0)
                            {
                            MessageBox.Show("ActuallCard.FreeSlots >= NumberOfProjecteAnDiesemOrt\r\n"
                                            + "NumberOfPlakateAnDiesemOrt == 0 bei OrteID =\r\n" +
                                            ProjektOrt["OrteID"].ToString());
                            }
                        NumberOfProcessedEntries = SelectionCard.EnterOrteWithProjekte
                            (ActuallCard, FullWSPlakateAnDiesemOrt, ActuallCard.PageNumberString);
                        if (NumberOfProcessedEntries > 0)
                            {
                            NumberOfProjecteAnDiesemOrt -= NumberOfProcessedEntries;
                            continue;
                            }
                        else
                            {
                            throw new Exception("B - NumberOfProcessedEntries == 0");
                            }
                        }
                    ActuallCard = new SelectionCard(++PageNumber);
                    ActuallCard.ArbeitsGruppenNameID = ProjektOrt["ArbeitsGruppenNameID"].ToString();
                    ActuallCard.OrtsTeil = OrtsTeil;
                    CardList.Add(ActuallCard);
                    }
                if ((IsMultiPageProjekt == true)
                    && (ActuallCard.FreeSlots > 0))
                    {
                    ActuallCard = new SelectionCard(++PageNumber);
                    ActuallCard.ArbeitsGruppenNameID = ProjektOrt["ArbeitsGruppenNameID"].ToString();
                    ActuallCard.OrtsTeil = OrtsTeil;
                    CardList.Add(ActuallCard);
                    }
                }
            return CardList;
            }