예제 #1
0
        public static List <OpenXmlCompositeElement> GetTable_ModuleStructuurInstellingen(WordprocessingDocument doc, ControllerModel c)
        {
            var items = new List <OpenXmlCompositeElement>();

            if (c.ModuleMolen.LangstWachtendeAlternatief)
            {
                items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_VooruitAltInst"], styleid: "Caption"));

                UpdateTables("Table_VooruitAltInst");

                var l = new List <List <string> >
                {
                    new List <string>
                    {
                        (string)Texts["Generic_Fase"],
                        "Aantal modulen vooruit",
                        "Alternatief toegestaan",
                        "Alternatieve ruimte",
                        "Alternatieve groentijd"
                    }
                };
                c.ModuleMolen.FasenModuleData.ForEach(x => l.Add(new List <string>
                {
                    x.FaseCyclus,
                    x.ModulenVooruit.ToString(),
                    x.AlternatiefToestaan.ToCustomString(),
                    x.AlternatieveRuimte.ToString(),
                    x.AlternatieveGroenTijd.ToString()
                }));
                items.Add(OpenXmlHelper.GetTable(l));
            }
            else if (c.ModuleMolen.Modules.Any(x => x.Fasen.Any(x2 => x2.Alternatieven.Any())))
            {
                items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_Vooruit"], styleid: "Caption"));

                UpdateTables("Table_Vooruit");

                var lt = new List <string>
                {
                    (string)Texts["Generic_Fase"],
                    "Aantal modulen vooruit"
                };
                //foreach(var m in c.ModuleMolen.Modules)
                //{
                //    lt.Add("Alt. groentijd onder " + m.Naam);
                //}
                var l = new List <List <string> >
                {
                    lt
                };
                c.ModuleMolen.FasenModuleData.ForEach(x =>
                {
                    var nl = new List <string>
                    {
                        x.FaseCyclus,
                        x.ModulenVooruit.ToString()
                    };
                    //foreach (var m in c.ModuleMolen.Modules)
                    //{
                    //    var t = "-";
                    //    var mfc = m.Fasen.FirstOrDefault(x2 => x2.Alternatieven.Any(x3 => x3.FaseCyclus == x.FaseCyclus));
                    //    if(mfc != null)
                    //    {
                    //        var afc = mfc.Alternatieven.First(x2 => x2.FaseCyclus == x.FaseCyclus);
                    //        t = afc.AlternatieveGroenTijd.ToString();
                    //    }
                    //    nl.Add(t);
                    //}
                    l.Add(nl);
                });
                items.Add(OpenXmlHelper.GetTable(l));

                items.Add(OpenXmlHelper.GetTextParagraph($"De volgende {(string)Texts["Generic_fasen"]} kunnen alternatief realiseren onder dekking van een andere {(string)Texts["Generic_fase"]} in cyclisch verlenggroen (CV)."));

                var il = new List <Tuple <string, int> >();
                foreach (var m in c.ModuleMolen.Modules)
                {
                    foreach (var f in m.Fasen.Where(x2 => x2.Alternatieven.Any()))
                    {
                        foreach (var a in f.Alternatieven)
                        {
                            il.Add(new Tuple <string, int>($"In module {m.Naam}: {a.FaseCyclus} onder dekking van {f.FaseCyclus} (groentijd: {a.AlternatieveGroenTijd})", 0));
                        }
                    }
                }
                items.AddRange(OpenXmlHelper.GetBulletList(doc, il));
            }
            else
            {
                items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_VooruitAltInst"], styleid: "Caption"));

                UpdateTables("Table_VooruitAltInst");

                var l = new List <List <string> >
                {
                    new List <string>
                    {
                        (string)Texts["Generic_Fase"],
                        "Aantal modulen vooruit"
                    }
                };
                c.ModuleMolen.FasenModuleData.ForEach(x => l.Add(new List <string> {
                    x.ModulenVooruit.ToString()
                }));
                items.Add(OpenXmlHelper.GetTable(l));
            }

            return(items);
        }
예제 #2
0
        internal static IEnumerable <OpenXmlCompositeElement> GetTable_HD_Instellingen(ControllerModel c)
        {
            var items = new List <OpenXmlCompositeElement>();

            UpdateTables("Table_HD_Instellingen");

            items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_HD_Instellingen"] + $" (tabel {NumberOfTables.ToString()})", styleid: "Caption"));

            var l  = new List <List <string> >();
            var ll = new List <string> {
                "Signaalgroep"
            };

            if (c.HasHDKAR())
            {
                ll.Add("KAR");
                ll.Add("KAR inmeld filtertijd");
                ll.Add("KAR uitmeld filtertijd");
            }
            ll.Add("Check sirene");
            ll.Add("Rijtijd ongehinderd");
            ll.Add("Rijtijd beperkt gehinderd");
            ll.Add("Rijtijd gehinderd");
            ll.Add("Groenbewaking");
            if (c.HasHDOpticom())
            {
                ll.Add("Opticom");
                ll.Add("Opticom inmeld filtertijd");
            }
            if (c.PrioData.HDIngrepen.Any(x => x.MeerealiserendeFaseCycli.Any()))
            {
                ll.Add("Meerealiserende fasen");
            }
            l.Add(ll);
            foreach (var ovcf in c.PrioData.HDIngrepen)
            {
                ll = new List <string> {
                    ovcf.FaseCyclus
                };
                if (c.HasHDKAR())
                {
                    ll.Add(ovcf.KAR.ToCustomString());
                    ll.Add(ovcf.KARInmeldingFilterTijd.ToString());
                    ll.Add(ovcf.KARUitmeldingFilterTijd.ToString());
                }
                ll.Add(ovcf.Sirene.ToCustomString());
                ll.Add(ovcf.RijTijdOngehinderd.ToString());
                ll.Add(ovcf.RijTijdBeperktgehinderd.ToString());
                ll.Add(ovcf.RijTijdGehinderd.ToString());
                ll.Add(ovcf.GroenBewaking.ToString());
                if (c.HasHDOpticom())
                {
                    ll.Add(ovcf.Opticom.ToCustomString() + (ovcf.Opticom ? $" [{ovcf.OpticomRelatedInput}]" : ""));
                    ll.Add(ovcf.OpticomInmeldingFilterTijd.ToString());
                }
                if (c.PrioData.HDIngrepen.Any(x => x.MeerealiserendeFaseCycli.Any()))
                {
                    ll.Add(
                        ovcf.MeerealiserendeFaseCycli.Any() ?
                        string.Join(", ", ovcf.MeerealiserendeFaseCycli.Select(x => x.FaseCyclus)) :
                        "-");
                }
                l.Add(ll);
            }

            items.Add(OpenXmlHelper.GetTable(l, firstRowVerticalText: true));

            return(items);
        }
예제 #3
0
        internal static IEnumerable <OpenXmlCompositeElement> GetTable_OV_PrioriteitsInstellingen(ControllerModel c)
        {
            var items = new List <OpenXmlCompositeElement>();

            UpdateTables("Table_OV_PrioriteitsInstellingen");

            items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_OV_PrioriteitsInstellingen"] + $" (tabel {NumberOfTables.ToString()})", styleid: "Caption"));

            List <List <string> > l;

            if (c.OVData.OVIngrepen.Any(x => x.GeconditioneerdePrioriteit != Models.Enumerations.NooitAltijdAanUitEnum.Nooit))
            {
                l = new List <List <string> >
                {
                    new List <string>
                    {
                        "Signaalgroep",
                        "Prioriteit geconditioneerd",
                        "Prioriteitsopties te vroeg",
                        "Prioriteitsopties op tijd",
                        "Prioriteitsopties te laat",
                        "Prioriteitsopties geen",
                        "Ongehinderde rijtijd",
                        "Beperkt rijtijd",
                        "Gehinderde rijtijd",
                        "Bezettijd OV gehinderd",
                        "Blokkeringstijd",
                        "Groenbewaking",
                        "Ondermaximum"
                    }
                };
                foreach (var ov in c.OVData.OVIngrepen)
                {
                    var cp     = ov.GeconditioneerdePrioriteit != Models.Enumerations.NooitAltijdAanUitEnum.Nooit;
                    var opties = 0;
                    if (ov.AfkappenConflicten || ov.AfkappenConflictenOV)
                    {
                        opties += 100;
                    }
                    if (ov.AfkappenConflictenOV)
                    {
                        opties += 300;
                    }
                    if (ov.TussendoorRealiseren)
                    {
                        opties += 3;
                    }
                    if (ov.VasthoudenGroen)
                    {
                        opties += 20;
                    }
                    var sopties = opties == 0 ? "0" : opties.ToString().Replace("0", "");
                    l.Add(new List <string>
                    {
                        ov.FaseCyclus,
                        ov.GeconditioneerdePrioriteit.GetDescription(),
                        cp ? ov.GeconditioneerdePrioTeVroeg.ToString() : "-",
                        cp ? ov.GeconditioneerdePrioOpTijd.ToString() : "-",
                        cp ? ov.GeconditioneerdePrioTeLaat.ToString() : "-",
                        sopties,
                        ov.RijTijdOngehinderd.ToString(),
                        ov.RijTijdBeperktgehinderd.ToString(),
                        ov.RijTijdGehinderd.ToString(),
                        ov.BezettijdOVGehinderd.ToString(),
                        ov.BlokkeertijdNaOVIngreep.ToString(),
                        ov.GroenBewaking.ToString(),
                        ov.OnderMaximum.ToString()
                    });
                }
            }
            else
            {
                l = new List <List <string> >
                {
                    new List <string>
                    {
                        "Signaalgroep",
                        "Prioriteitsopties",
                        "Ongehinderde rijtijd",
                        "Beperkt rijtijd",
                        "Gehinderde rijtijd",
                        "Bezettijd OV gehinderd",
                        "Blokkeringstijd",
                        "Groenbewaking",
                        "Ondermaximum"
                    }
                };
                foreach (var ov in c.OVData.OVIngrepen)
                {
                    var cp     = ov.GeconditioneerdePrioriteit != Models.Enumerations.NooitAltijdAanUitEnum.Nooit;
                    var opties = 0;
                    if (ov.AfkappenConflicten || ov.AfkappenConflictenOV)
                    {
                        opties += 100;
                    }
                    if (ov.AfkappenConflictenOV)
                    {
                        opties += 300;
                    }
                    if (ov.TussendoorRealiseren)
                    {
                        opties += 3;
                    }
                    if (ov.VasthoudenGroen)
                    {
                        opties += 20;
                    }
                    var sopties = opties == 0 ? "0" : opties.ToString().Replace("0", "");
                    l.Add(new List <string>
                    {
                        ov.FaseCyclus,
                        sopties,
                        ov.RijTijdOngehinderd.ToString(),
                        ov.RijTijdBeperktgehinderd.ToString(),
                        ov.RijTijdGehinderd.ToString(),
                        ov.BezettijdOVGehinderd.ToString(),
                        ov.BlokkeertijdNaOVIngreep.ToString(),
                        ov.GroenBewaking.ToString(),
                        ov.OnderMaximum.ToString()
                    });
                }
            }

            items.Add(OpenXmlHelper.GetTable(l, firstRowVerticalText: true));

            return(items);
        }
예제 #4
0
        internal static IEnumerable <OpenXmlCompositeElement> GetTable_Intersignaalgroep_Nalopen(ControllerModel c)
        {
            var items = new List <OpenXmlCompositeElement>();

            UpdateTables("Table_Intersignaalgroep_Nalopen");

            items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_Intersignaalgroep_Nalopen"] + $" (tabel {NumberOfTables.ToString()})", styleid: "Caption"));

            var l = new List <List <string> >
            {
                new List <string>
                {
                    "Van",
                    "Naar",
                    "Type naloop",
                    "Vaste naloop",
                    "Detectie afhankelijk",
                    "Inlopen/rijden bij groen",
                    "Max.voorstart tijd",
                    "Tijd SG/FG",
                    "Det.afh.tijd SG/FG",
                    "Tijd CV/EG",
                    "Det.afh.tijd CV/EG"
                }
            };

            foreach (var ma in c.InterSignaalGroep.Nalopen)
            {
                var da = "-";
                if (ma.DetectieAfhankelijk && ma.Detectoren.Any())
                {
                    da = "x (";
                    var first = true;
                    foreach (var d in ma.Detectoren)
                    {
                        if (!first)
                        {
                            da += ", ";
                        }
                        first = false;
                        da   += d.Detector;
                    }
                    da += ")";
                }
                var t1 = "-";
                var t2 = "-";
                var t3 = "-";
                var t4 = "-";
                if (ma.Type == Models.Enumerations.NaloopTypeEnum.StartGroen)
                {
                    if (ma.VasteNaloop)
                    {
                        t1 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.StartGroen).Waarde.ToString();
                    }
                    if (ma.DetectieAfhankelijk)
                    {
                        t2 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.StartGroenDetectie).Waarde.ToString();
                    }
                }
                if (ma.Type == Models.Enumerations.NaloopTypeEnum.EindeGroen && ma.VasteNaloop)
                {
                    if (ma.VasteNaloop)
                    {
                        t1 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.VastGroen).Waarde.ToString();
                    }
                    if (ma.DetectieAfhankelijk)
                    {
                        t2 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.VastGroenDetectie).Waarde.ToString();
                    }
                }
                if (ma.Type == Models.Enumerations.NaloopTypeEnum.EindeGroen && ma.DetectieAfhankelijk)
                {
                    if (ma.VasteNaloop)
                    {
                        t3 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.EindeGroen).Waarde.ToString();
                    }
                    if (ma.DetectieAfhankelijk)
                    {
                        t4 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.EindeGroenDetectie).Waarde.ToString();
                    }
                }
                if (ma.Type == Models.Enumerations.NaloopTypeEnum.CyclischVerlengGroen && ma.VasteNaloop)
                {
                    if (ma.VasteNaloop)
                    {
                        t1 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.VastGroen).Waarde.ToString();
                    }
                    if (ma.DetectieAfhankelijk)
                    {
                        t2 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.VastGroenDetectie).Waarde.ToString();
                    }
                }
                if (ma.Type == Models.Enumerations.NaloopTypeEnum.CyclischVerlengGroen && ma.DetectieAfhankelijk)
                {
                    if (ma.VasteNaloop)
                    {
                        t3 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.EindeVerlengGroen).Waarde.ToString();
                    }
                    if (ma.DetectieAfhankelijk)
                    {
                        t4 = ma.Tijden.FirstOrDefault(x => x.Type == Models.Enumerations.NaloopTijdTypeEnum.EindeVerlengGroenDetectie).Waarde.ToString();
                    }
                }
                l.Add(new List <string>
                {
                    ma.FaseVan,
                    ma.FaseNaar,
                    ma.Type.GetDescription(),
                    ma.VasteNaloop.ToCustomString(),
                    da,
                    ma.InrijdenTijdensGroen.ToCustomString(),
                    ma.MaximaleVoorstart == null ? "-" : ma.MaximaleVoorstart.Value.ToString(),
                    t1, t2, t3, t4
                });
            }
            items.Add(OpenXmlHelper.GetTable(l, firstRowVerticalText: true));

            return(items);
        }
예제 #5
0
        public static List <OpenXmlCompositeElement> GetTable_Detectie_Functies(ControllerModel c)
        {
            var items = new List <OpenXmlCompositeElement>();

            UpdateTables("Table_Detectoren_Functies");

            items.Add(OpenXmlHelper.GetTextParagraph((string)Texts["Table_Detectoren_Functies"] + $" (tabel {NumberOfTables.ToString()})", styleid: "Caption"));
            var l = new List <List <string> >
            {
                new List <string>
                {
                    (string)Texts["Generic_Detector"],
                    "Fase",
                    "Type",
                    "Aanvraag",
                    "Verlengen",
                    "Aanvraag direct",
                    "Wachtlicht",
                    "Rijstrook",
                    "Aanvraag bij storing",
                    "Veiligheidsgroen"
                }
            };

            foreach (var fc in c.Fasen)
            {
                foreach (var d in fc.Detectoren)
                {
                    l.Add(new List <string>
                    {
                        CCOLGenHelper.Dpf + d.Naam,
                        fc.Naam,
                        d.Type.GetDescription(),
                        d.Aanvraag.GetDescription(),
                        d.Verlengen.GetDescription(),
                        d.AanvraagDirect.ToCustomString(),
                        d.Wachtlicht.ToCustomString(),
                        d.Rijstrook.ToString(),
                        d.AanvraagBijStoring.GetDescription(),
                        d.VeiligheidsGroen.GetDescription(),
                    });
                }
            }
            foreach (var d in c.Detectoren)
            {
                l.Add(new List <string>
                {
                    CCOLGenHelper.Dpf + d.Naam,
                    "-",
                    d.Type.GetDescription(),
                    d.Aanvraag.GetDescription(),
                    d.Verlengen.GetDescription(),
                    d.AanvraagDirect.ToCustomString(),
                    d.Wachtlicht.ToCustomString(),
                    d.Rijstrook.ToString(),
                    d.AanvraagBijStoring.GetDescription(),
                    d.VeiligheidsGroen.GetDescription()
                });
            }
            items.Add(OpenXmlHelper.GetTable(l, firstRowVerticalText: true));

            return(items);
        }
예제 #6
0
        public static void GenerateSpecification(string filename, ControllerModel c, SpecificatorDataModel model)
        {
            using (var doc = WordprocessingDocument.Open(filename, true))
            {
                // Add a main document part.
                Body body = doc.MainDocumentPart.Document.Body;
                body.RemoveAllChildren <Paragraph>();

                //var gensWithElems = CCOLGenerator.GetAllGeneratorsWithElements(c);

                // Headers, title page, versioning
                FunctionalityGenerator.AddHeaderTextsToDocument(doc, model, c.Data);
                body.Append(FunctionalityGenerator.GetFirstPage(c.Data));
                body.Append(FunctionalityGenerator.GetVersionControl(c.Data));


                // Chap 1: Introduction
                FunctionalityGenerator.GetIntroChapter(doc, c, model);

                // Chap 2: Structuur en afwikkeling
                body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_StructuurEnAfwikkeling"]}", 1));
                body.Append(FunctionalityGenerator.GetChapter_StructureIntroduction(c));
                body.Append(FunctionalityGenerator.GetChapter_Perioden(c));
                body.Append(FunctionalityGenerator.GetChapter_SignaalGroepAfhandeling(doc, c));
                body.Append(FunctionalityGenerator.GetChapter_SignaalGroepInstellingen(doc, c));
                body.Append(FunctionalityGenerator.GetChapter_Groentijden(c));
                body.Append(FunctionalityGenerator.GetChapter_Modulestructuur(doc, c));

                // Chap 3: Detectoren
                body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_Detectoren"]}", 1));
                body.Append(FunctionalityGenerator.GetChapter_DetectieConfiguratie(doc, c));
                body.Append(FunctionalityGenerator.GetChapter_DetectieInstellingen(doc, c));
                body.Append(FunctionalityGenerator.GetChapter_DetectieRichtingGevoelig(c));
                body.Append(FunctionalityGenerator.GetChapter_DetectieStoring(doc, c));

                // Chap 4: Intersignaalgroep
                body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_Intersignaalgroep"]}", 1));
                body.Append(FunctionalityGenerator.GetChapter_Ontruimingstijden(c));
                body.Append(FunctionalityGenerator.GetChapter_OntruimingstijdenGarantie(c));
                body.Append(FunctionalityGenerator.GetChapter_Synchronisaties(c, doc));

                if (c.OVData.OVIngreepType != Models.Enumerations.OVIngreepTypeEnum.Geen && c.HasPTorHD())
                {
                    if (c.HasPT() && c.HasHD())
                    {
                        body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_OVHD"]}", 1));
                        body.Append(FunctionalityGenerator.GetChapter_OVHDIntro(c));
                    }
                    if (c.HasPT())
                    {
                        body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_OV"]}", c.HasHD() ? 2 : 1));
                        body.Append(FunctionalityGenerator.GetChapter_OV(c, doc, c.HasHD() ? 2 : 1));
                    }
                    if (c.HasHD())
                    {
                        body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_HD"]}", c.HasPT() ? 2 : 1));
                        body.Append(FunctionalityGenerator.GetChapter_HD(c, doc, c.HasHD() ? 2 : 1));
                    }
                }

                if (c.HalfstarData.IsHalfstar)
                {
                    body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_Halfstar"]}", 1));
                    body.Append((OpenXmlHelper.GetTextParagraph($"TODO: Hoofdstuk inzake halfstar regelen.", "TODO")));
                }

                if (model.SpecialsParagrafen.Any())
                {
                    body.Append(OpenXmlHelper.GetChapterTitleParagraph($"{Texts["Title_Specials"]}", 1));
                    foreach (var par in model.SpecialsParagrafen)
                    {
                        body.Append(OpenXmlHelper.GetChapterTitleParagraph(par.Titel, 2));
                        foreach (var parpar in par.Text.Split('\n'))
                        {
                            if (!string.IsNullOrWhiteSpace(parpar))
                            {
                                body.Append(OpenXmlHelper.GetTextParagraph(parpar));
                            }
                        }
                    }
                }

                body.Append(OpenXmlHelper.GetChapterTitleParagraph($"TODO", 1));
                body.Append((OpenXmlHelper.GetTextParagraph($"TODO: Hoofdstuk OV: details toevoegen, zoals: " +
                                                            $"lijnnummers, details rond in/uitmelden, inmelden koplus, .", "TODO")));
                body.Append((OpenXmlHelper.GetTextParagraph($"TODO: Overige punten, zoals: PTP, VA ontruimen, file ingrepen, rateltikkers, " +
                                                            $"ingangen, selectieve detectie, uitgestelde vaste aanvragen, hard meeverlengen, veiligheidsgroen, RoBuGrover, special van plugins zoals AFM, etc.", "TODO")));
                body.Append((OpenXmlHelper.GetTextParagraph($"TODO: Opnemen verwijzingen naar CCOL benaming van instellingen (?).", "TODO")));

                // TODO: signaalplannen

                // dan: afhandeling signaalgroepen (nalopen, gelijkstarten, etc)
                // tabel functies hiernaartoe verplaatsen (?)

                // dan: OV, HD

                // dan: overig: fixatie -> onderbrengen in H1 (intro) bij algemene instellingen

                //body.Append(FunctionalityGenerator.GetModulenChapter(doc, c));

                doc.Close();
                //foreach (var g in gensWithElems)
                //{
                //    if (g.Item2.Any())
                //    {
                //        AddChapterTitle(doc, $"{g.Item1.GetType().Name.ToString()}", 2);
                //        AddSettingsTable(doc, g.Item2);
                //    }
                //}
            }
        }