/// <summary>
        /// Fügt ein neues Video in die Datenbank ein.</summary>
        /// <param name="videoTitel">Video Titel (Pflicht Parameter).(max. 100 Zeichen)</param>
        /// <param name="videoBeschreibung">Text zum Video.(max 255 Zeichen)</param>
        /// <param name="videoPfad">URL oder lokaler Pfad(max 255 Zeichen)</param>
        /// <param name="videoThumbnail">Image in Hexadecimaler-form</param>
        /// <param name="videoDatum">Video erscheinungsdatum</param>
        /// <param name="videoPlattform">Video Plattform wird standardmässig auf unbestimmt gesetzt.</param>
        public void VideoHinzufuegen(string videoTitel, string videoBeschreibung = "", string videoPfad = "", string videoThumbnail = "", DateTime? videoDatum = null, Plattform videoPlattform = Plattform.Unbestimmt)
        {
            if (!string.IsNullOrEmpty(videoTitel))
            {
                if (!videoExistiert(videoTitel))
                {
                    connection.Open();

                    string insertVideo =
                      @"INSERT INTO Video (VideoId, VideoTitel, VideoBeschreibung, VideoPfad, VideoThumbnail, VideoDatum, VideoPlattformId)
                        VALUES (null,'" +
                      ParseText(videoTitel) + "', " +
                      "'" + ParseText(videoBeschreibung) + "', " +
                      "'" + videoPfad + "', " +
                      "X'" + videoThumbnail + "', " +
                      "'" + videoDatum.Value + "', " +
                      "'" + GetVideoPlattforms().Where(e => e.plattform == videoPlattform).SingleOrDefault().VideoPlattformId.ToString() + "');";

                    executeQuery(insertVideo);
                    connection.Close();
                }
                else
                {
                    throw new Exception(string.Format("Video: {0} bereits vorhanden.", ParseText(videoTitel)));
                }
            }
            else
            {
                throw new Exception("Videotitel fehlt!!");
            }
        }
        /// <summary>
        /// Ändert User-Eigenschaften zu der ensprechenden VideoId. Wenn Die Werte "" oder null(bei Datum) gesetzt werden, werden diese Eigenschaften nicht überschrieben.
        /// Beispiel: controllerDatabase.VideoUpdate(controllerDatabase.GetAllVideos().Where(e => e.VideoTitel == "Dark Knight").FirstOrDefault().VideoId,"","Toller Film","","",null);
        /// </summary>
        /// <param name="videoId">VideoId. Pflicht Parameter.</param>
        /// <param name="videoTitel">Video Titel. Optionaler Parameter.(max. 100 Zeichen)</param>
        /// <param name="videoBeschreibung">Video Beschreibung. Optionaler Parameter.(Kann leer sein)(max. 255 Zeichen)</param>
        /// <param name="videoPfad">Video Pfad. Optionaler Parameter.(Kann leer sein)(max. 255 Zeichen)</param>
        /// <param name="videoThumbnail">Video Thumbnail in Hexadezimaler Form (Kann leer sein)</param>
        /// <param name="videoDatum">Video Datum. Optionaler Parameter.(Kann null sein)</param>
        /// <param name="videoDatum">Video Datum. Optionaler Parameter.(Kann null sein)</param>
        /// <param name="videoPlattform">Video Plattform wird standardmässig auf unbestimmt gesetzt.</param>
        public void VideoUpdate(int? videoId, string videoTitel = "", string videoBeschreibung = "", string videoPfad = "", 
            string videoThumbnail = "", DateTime? videoDatum = null, Plattform videoPlattform = Plattform.Unbestimmt)
        {
            if (videoId != null)
            {
                connection.Open();

                if (keineVideoEigenschaftenGesetzt(videoTitel, videoBeschreibung, videoPfad, videoThumbnail, videoDatum, videoPlattform))
                {
                    throw new Exception("No Properties are set for Update");
                }
                else
                {
                    string updateVideo = getUpdateVideoQuery(videoId.Value, videoTitel, videoBeschreibung, videoPfad, videoThumbnail, videoDatum, videoPlattform);
                    executeQuery(updateVideo);
                }

                connection.Close();
            }
            else
            {
                throw new Exception("Video nicht vorhanden.");
            }
        }
 /// <summary>
 /// Erzeugt ein Update-Query String aus den übergebenen Parametern
 /// </summary>
 private bool keineVideoEigenschaftenGesetzt(string videoTitel, string videoBeschreibung, string videoPfad, 
     string videoThumbnail, DateTime? videoDatum, Plattform videoPlattform)
 {
     return (videoTitel == string.Empty
                    && videoBeschreibung == string.Empty
                    && videoPfad == string.Empty
                    && videoThumbnail == string.Empty
                    && videoDatum == null
                    && videoPlattform == Plattform.Unbestimmt) ? true : false;
 }
        /// <summary>
        /// Erzeugt ein Update-Query String aus den übergebenen Parametern
        /// </summary>
        /// <param name="videoId">VideoId. Pflicht Parameter.</param>
        /// <param name="videoTitel">Video Titel. Optionaler Parameter.(max. 100 Zeichen)</param>
        /// <param name="videoBeschreibung">Video Beschreibung. Optionaler Parameter.(Kann leer sein)(max. 255 Zeichen)</param>
        /// <param name="videoPfad">Video Pfad. Optionaler Parameter.(Kann leer sein)(max. 255 Zeichen)</param>
        /// <param name="videoThumbnail">Video Thumbnail in Hexadezimaler Form (Kann leer sein)</param>
        /// <param name="videoDatum">Video Datum. Optionaler Parameter.(Kann null sein)</param>
        /// <param name="videoDatum">Video Datum. Optionaler Parameter.(Kann null sein)</param>
        /// <param name="videoPlattform">Video Plattform erwartet standardmässig Plattform.Unbestimmt</param>
        private string getUpdateVideoQuery(int videoId, string videoTitel, string videoBeschreibung, 
            string videoPfad, string videoThumbnail, DateTime? videoDatum, Plattform videoPlattform)
        {
            string updateVideo = @"UPDATE Video set ";

            bool firstValueExists = false;

            if (videoTitel != string.Empty)
            {
                updateVideo += getEigenschaftUpdate("VideoTitel", ParseText(videoTitel), firstValueExists);
                firstValueExists = true;
            }

            if (!firstValueExists)
            {
                updateVideo = string.Concat(updateVideo, " VideoBeschreibung='" + ParseText(videoBeschreibung) + "'");
                firstValueExists = true;
            }
            else
            {
                updateVideo = string.Concat(updateVideo, ", VideoBeschreibung='" + ParseText(videoBeschreibung) + "'");
            }

            if (videoPfad != string.Empty)
            {
                updateVideo += getEigenschaftUpdate("VideoPfad", ParseText(videoPfad), firstValueExists);
                firstValueExists = true;
            }

            if (videoThumbnail != string.Empty)
            {
                if (!firstValueExists)
                {
                    updateVideo = string.Concat(updateVideo, " VideoThumbnail=X'" + videoThumbnail + "'");
                    firstValueExists = true;
                }
                else
                {
                    updateVideo = string.Concat(updateVideo, ", VideoThumbnail=X'" + videoThumbnail + "'");
                }
            }

            if (videoDatum != null)
            {
                updateVideo += getEigenschaftUpdate("VideoDatum", videoDatum.ToString(), firstValueExists);
                firstValueExists = true;
            }

            if (videoPlattform != Plattform.Unbestimmt)
            {
                var videoPlatform = GetVideoPlattforms().Where(e => e.plattform == videoPlattform).SingleOrDefault().VideoPlattformId.ToString();

                updateVideo += getEigenschaftUpdate("VideoPlattformId", videoPlatform, firstValueExists);
                firstValueExists = true;
            }

            updateVideo = string.Concat(updateVideo, " WHERE VideoId= ", videoId.ToString(), ";");

            return updateVideo;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Filter die Liste aller Videos nach den übergebenen Suchparametern
        /// </summary>
        /// <param name="suchbegriff">Suchbegriff, Titel und Beschreibung werden danach durchsucht</param>
        /// <param name="einstellzeitraum">Einstellzeitraum, bspw. letzte Woche</param>
        /// <param name="plattform">Plattform</param>
        /// <returns>Liste mit passenden Videos</returns>
        public List<Video> VideoSuchen(string suchbegriff, Einstellzeitraum einstellzeitraum, Plattform plattform)
        {
            // suchparams an db übergeben, response anzeigen
            // keine überprüfung auf leere parameter, da sie teilweise leer sein dürfen
            var videos = this.datenbank.GetAlleVideos();

            // TODO: Filtern nach Plattform
            switch (plattform)
            {
                case Plattform.Online:
                    videos = videos.Where(v => v.VideoPlattformId == (int)plattform).ToList();
                    break;
                case Plattform.Lokal:
                    videos = videos.Where(v => v.VideoPlattformId == (int)plattform).ToList();
                    break;
            }

            // Filtern nach Einstellzeitraum
            switch (einstellzeitraum)
            {
                case Einstellzeitraum.Heute:
                    videos = videos.Where(f => (DateTime.Now - f.VideoDatum).TotalDays < 1).ToList();
                    break;
                case Einstellzeitraum.LetzteWoche:
                    videos = videos.Where(f => (DateTime.Now - f.VideoDatum).TotalDays < 7).ToList();
                    break;
                case Einstellzeitraum.LetzterMonat:
                    videos = videos.Where(f => (DateTime.Now - f.VideoDatum).TotalDays < 30).ToList();
                    break;
                case Einstellzeitraum.LetztesJahr:
                    videos = videos.Where(f => (DateTime.Now - f.VideoDatum).TotalDays < 365).ToList();
                    break;
            }

            // Filtern nach Suchbegriff
            if (!String.IsNullOrWhiteSpace(suchbegriff) && !suchbegriff.Equals("Suchbegriff (z.B. Star Wars)"))
            {
                videos = videos.Where(f => f.VideoTitel.ContainsIgnoreCase(suchbegriff) || f.VideoBeschreibung.ContainsIgnoreCase(suchbegriff)).ToList();
            }

            if (videos.Count < 1)
            {
                this.MeldungAnzeigen("Keine Suchergebnisse gefunden.");
            }

            // Gefunden Videos zurückgeben
            return videos;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Speichert die übergebenen Parameter als Video in der Datenbank
        /// </summary>
        /// <param name="videoId">Id des Videos, -1 bei neuen Videos, ansonsten das Video, das aktualisiert werden soll</param>
        /// <param name="titel">Titel des Videos</param>
        /// <param name="erstellungsDatum">Einstelldatum des Videos</param>
        /// <param name="beschreibung">Beschreibung</param>
        /// <param name="plattform">Plattform auf dem das Video liegt (lokal oder online)</param>
        /// <param name="pfad">Pfad/URL des Videos</param>
        /// <param name="thumbnailPfad">Pfad/URL des Video-Thumbnails</param>
        public void VideoSpeichern(int videoId, string titel, DateTime erstellungsDatum, string beschreibung, Plattform plattform, string pfad, string thumbnailPfad)
        {
            // Daten kommen aus Videoverwaltung View (für neues video und video bearbeiten)
            // thumbnail und beschreibung darf leer sein, plattform kann nicht null sein (enum)
            if (!String.IsNullOrWhiteSpace(titel) &&
                !String.IsNullOrWhiteSpace(pfad) &&
                Validierung.ValidiereVideoPfad(pfad))
            {
                try
                {
                    // Thumbnail laden
                    var thumbnail = Bildverarbeitung.GetHexStringVonThumbnailPfad(thumbnailPfad);

                    // An DB Funktion übergeben
                    if (videoId == -1)
                    {
                        this.datenbank.VideoHinzufuegen(titel, beschreibung, pfad, thumbnail, erstellungsDatum, (Videoverwaltung.Datenbank.Modell.Plattform)plattform);
                    }
                    else
                    {
                        var standardThumbnail = Bildverarbeitung.GetHexStringVonThumbnailPfad("");

                        if (thumbnail == standardThumbnail)
                        {
                            var video = this.datenbank.GetAlleVideos().Where(e => e.VideoId == videoId).FirstOrDefault();

                            if (video != null)
                            {
                                // Video hat bereits ein Thumbnail
                                if (video.VideoThumbnail.Length > 0)
                                {
                                    this.datenbank.VideoUpdate(videoId, titel, beschreibung, pfad, "", erstellungsDatum, (Videoverwaltung.Datenbank.Modell.Plattform)plattform);
                                }
                                else
                                {
                                    this.datenbank.VideoUpdate(videoId, titel, beschreibung, pfad, thumbnail, erstellungsDatum, (Videoverwaltung.Datenbank.Modell.Plattform)plattform);
                                }
                            }
                        }
                        else
                        {
                            this.datenbank.VideoUpdate(videoId, titel, beschreibung, pfad, thumbnail, erstellungsDatum, (Videoverwaltung.Datenbank.Modell.Plattform)plattform);
                        }
                    }
                    if (this.hauptfenster != null) // if Abfrage nur wegen Test-Datensätzen vorhanden
                    {
                        this.hauptfenster.ZeichneListe(this.LadeAlleVideos());
                    }
                }
                catch (Exception exception)
                {
                    this.MeldungAnzeigen(exception.Message);
                }
            }
            else
            {
                // Fehlermeldung
                this.MeldungAnzeigen("Titel, Beschreibung, Pfad und Erstellungsdatum dürfen nicht leer sein. Achten Sie auch darauf, dass der Pfad gültig ist.");
            }
        }
        public override Container ObjectStructure(List <BIS_GrundObjekt> bisList)
        {
            var       formattedBisList = bisList;
            Container container        = new Container();
            //All softypes must be aggregated before they are added to the container
            var containerSoftTypes = new List <SoftType>();

            //Sort this mess out at some point
            var geoPlaceringar               = new List <GeografiskPlaceringsreferensInstances>();
            var plattformsProdukter          = new List <AnläggningsproduktInstances>();
            var plattformsFunktioner         = new List <FunktionellAnläggningInstances>();
            var plattformVäderskydd          = new List <AnläggningsproduktInstances>();
            var plattformStyckevaror         = new List <StyckevaraInstances>();
            var plattformSkylt               = new List <AnläggningsproduktInstances>();
            var plattformSkyltIndivid        = new List <StyckevaraInstances>();
            var plattformKanalisation        = new List <AnläggningsproduktInstances>();
            var plattformKanalisationIndivid = new List <StyckevaraInstances>();
            var plattformIndivider           = new List <StyckevaraInstances>();

            //Does all the real mapping against ANDA resources
            foreach (BIS_Plattform bisPlattform in formattedBisList)
            {
                var suffix = bisPlattform.ObjektTypNummer + bisPlattform.ObjektNummer + ExtraCounter;

                //Noterings fix
                bisPlattform.Notering = string.IsNullOrEmpty(bisPlattform.Notering)
          ? "Ingen Notering"
          : bisPlattform.Notering;

                var plattform = new Plattform
                {
                    name          = "Plattform",
                    notering      = bisPlattform.Notering,
                    versionId     = _VersionId,
                    företeelsetyp = new ClassificationReference_GeografiskPlaceringsreferens_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTGeografiskPlaceringsreferensReference
                        {
                            softType    = "FTGeografiskPlaceringsreferens",
                            instanceRef = "Plattform"
                        }
                    }
                };
                plattform.id = plattform.name + suffix;
                var plattformGPR = new GeografiskPlaceringsreferensEntrydefaultIn
                {
                    Array          = true,
                    id             = "Plattform" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = plattform
                };
                geoPlaceringar.Add(plattformGPR);

                var plattformsProduktInstans = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "PlattformProduktAnläggningsprodukt" + suffix
                };

                var plattformprodukt = new Plattformprodukt
                {
                    notering  = bisPlattform.Notering,
                    name      = "Plattformprodukt",
                    versionId = _VersionId,
                    stringSet = new PlattformproduktStringSet
                    {
                        PlattformBeläggning    = SkapaPlattformBeläggning(bisPlattform, new Plattformprodukt_PlattformBeläggning()),
                        plattformskantMaterial = SkapaPlattformKantMaterial(bisPlattform, new Plattformprodukt_plattformskantMaterial()),
                        nominellHöjd           = new Plattformprodukt_nominellHöjd
                        {
                            generalProperty = new nominellHöjd
                            {
                                instanceRef = "nominellHöjd",
                                softType    = _SoftTypeProperty
                            },
                            value = bisPlattform.Höjd,
                            JSonMapToPropertyName = _JsonMapToValue
                        }
                    },
                    numericSet = new PlattformproduktNumericSet
                    {
                        verkligHöjd = SkapaVerkligHöjd(bisPlattform, new Plattformprodukt_verkligHöjd()),
                        längd       = new Plattformprodukt_längd
                        {
                            generalProperty = new längd
                            {
                                instanceRef = "längd",
                                softType    = _SoftTypeProperty
                            },
                            value = bisPlattform.Längd,
                            JSonMapToPropertyName = _JsonMapToValue,
                            Unit = new m
                            {
                                instanceRef = "m",
                                softType    = "Unit"
                            }
                        },
                        bredd = new Plattformprodukt_bredd
                        {
                            generalProperty = new bredd
                            {
                                instanceRef = "bredd",
                                softType    = _SoftTypeProperty
                            },
                            value = bisPlattform.Bredd,
                            JSonMapToPropertyName = _JsonMapToValue,
                            Unit = new m
                            {
                                instanceRef = "m",
                                softType    = "Unit"
                            }
                        }
                    },
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Plattformprodukt"
                        }
                    }
                };
                plattformprodukt.id           = plattformprodukt.name + suffix;
                plattformsProduktInstans.data = plattformprodukt;
                plattformsProdukter.Add(plattformsProduktInstans);

                var plattformsFunktionInstans = new FunktionellAnläggningEntrydefaultIn
                {
                    Array          = true,
                    inputSchemaRef = _InputSchemaRef,
                    id             = "PlattformFunktionFunktionell" + suffix
                };

                var plattformFunktion = new Plattformfunktion
                {
                    notering  = bisPlattform.Notering,
                    name      = "PlattformFunktion",
                    versionId = _VersionId,
                    stringSet = new PlattformfunktionStringSet
                    {
                        harFotsteg = SkapaPlattformFotsteg(bisPlattform, new Plattformfunktion_harFotsteg()),
                        harPlattformsutrustning = SkapaPlattformUtrustning(bisPlattform, new Plattformfunktion_harPlattformsutrustning()),
                        harSkyddsräcken         = SkapaPlattformSkyddsräcken(bisPlattform, new Plattformfunktion_harSkyddsräcken())
                    },
                    numericSet    = new PlattformfunktionNumericSet(),
                    företeelsetyp = new ClassificationReference_FunktionellAnläggning_företeelsetyp
                    {
                        @class = new FTFunktionellAnläggningReference
                        {
                            softType    = "FTFunktionellAnläggning",
                            instanceRef = "Plattformfunktion"
                        }
                    }
                };
                plattformFunktion = SkyddzonOchLedstråk(bisPlattform, plattformFunktion, new Plattformfunktion_harLedstråk(), new Plattformfunktion_harSkyddszon());

                plattformFunktion.id           = plattformFunktion.name + suffix;
                plattformsFunktionInstans.data = plattformFunktion;
                plattformsFunktioner.Add(plattformsFunktionInstans);

                //Skydd eller Tak
                var plattformAnläggningsProduktInstans = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformVäderskyddOchSkärmtakAnläggningsprodukt" + suffix,
                    inputSchemaRef = _InputSchemaRef
                };

                var plattformStyckevaraInstans = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformVäderskyddOchSkärmtakStyckevara" + suffix,
                    inputSchemaRef = _InputSchemaRef
                };

                var väderskyddProdukt = new Väderskyddprodukt
                {
                    name          = "Väderskyddprodukt",
                    notering      = bisPlattform.Notering,
                    versionId     = _VersionId,
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Väderskyddprodukt"
                        }
                    }
                };
                väderskyddProdukt.id = väderskyddProdukt.name + suffix;

                var väderskyddIndivid = new Väderskyddindivid
                {
                    startSpecified = false,
                    endSpecified   = false,
                    name           = "Väderskyddindivid",
                    notering       = bisPlattform.Notering,
                    versionId      = _VersionId,
                    företeelsetyp  = new ClassificationReference_Styckevara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTStyckevaraReference
                        {
                            softType    = "FTStyckevara",
                            instanceRef = "Väderskyddindivid"
                        }
                    }
                };
                väderskyddIndivid.id = väderskyddIndivid.name + suffix;

                var skärmtakProdukt = new Skärmtakprodukt
                {
                    name          = "Skärmtakprodukt",
                    notering      = bisPlattform.Notering,
                    versionId     = _VersionId,
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Skärmtakprodukt"
                        }
                    }
                };
                skärmtakProdukt.id = skärmtakProdukt.name + suffix;

                var skärmtakIndivid = new Skärmtakindivid
                {
                    startSpecified = false,
                    endSpecified   = false,
                    name           = "Skärmtakindivid",
                    notering       = bisPlattform.Notering,
                    versionId      = _VersionId,
                    företeelsetyp  = new ClassificationReference_Styckevara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTStyckevaraReference
                        {
                            softType    = "FTStyckevara",
                            instanceRef = "Skärmtakindivid"
                        }
                    }
                };
                skärmtakIndivid.id = skärmtakIndivid.name + suffix;

                switch (bisPlattform.Väderskydd)
                {
                case "Skydd":
                    plattformAnläggningsProduktInstans.data = väderskyddProdukt;
                    plattformStyckevaraInstans.data         = väderskyddIndivid;
                    break;

                case "Tak":
                    plattformAnläggningsProduktInstans.data = skärmtakProdukt;
                    plattformStyckevaraInstans.data         = skärmtakIndivid;
                    break;
                }
                plattformVäderskydd.Add(plattformAnläggningsProduktInstans);
                plattformStyckevaror.Add(plattformStyckevaraInstans);
                //End Väderskydd

                //Skylt
                var skyltProdukt = new Fast_skyltprodukt
                {
                    name          = "Fast_skyltprodukt",
                    notering      = bisPlattform.Notering,
                    versionId     = _VersionId,
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Fast_skyltprodukt"
                        }
                    }
                };
                skyltProdukt.id = skyltProdukt.name + suffix;

                var skyltIndivid = new Fast_skyltindivid
                {
                    startSpecified = false,
                    endSpecified   = false,
                    name           = "Fast_skyltindivid",
                    notering       = bisPlattform.Notering,
                    versionId      = _VersionId,
                    företeelsetyp  = new ClassificationReference_Styckevara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTStyckevaraReference
                        {
                            softType    = "FTStyckevara",
                            instanceRef = "Fast_skyltindivid"
                        }
                    }
                };
                skyltIndivid.id = skyltIndivid.name + suffix;

                var plattformSkyltAnläggningsProdukt = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformSkyltAnläggningsprodukt" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = skyltProdukt
                };
                var plattformSkyltStyckevara = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformSkyltStyckevara" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = skyltIndivid
                };
                if (bisPlattform.Skylt != "?")
                {
                    plattformSkylt.Add(plattformSkyltAnläggningsProdukt);
                    plattformSkyltIndivid.Add(plattformSkyltStyckevara);
                }

                //Kanalisation (BrunOLock)
                var kanalisationsProdukt = new Kanalisationprodukt
                {
                    name          = "Kanalisationprodukt",
                    notering      = bisPlattform.Notering,
                    versionId     = _VersionId,
                    stringSet     = new KanalisationproduktStringSet(),
                    numericSet    = new KanalisationproduktNumericSet(),
                    företeelsetyp = new ClassificationReference_Anläggningsprodukt_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTAnläggningsproduktReference
                        {
                            softType    = "FTAnläggningsprodukt",
                            instanceRef = "Kanalisationprodukt"
                        }
                    }
                };
                kanalisationsProdukt.id = kanalisationsProdukt.name + suffix;
                var kanalisationsIndivid = new Kanalisationindivid
                {
                    name           = "Kanalisationindivid",
                    notering       = bisPlattform.Notering,
                    versionId      = _VersionId,
                    startSpecified = false,
                    endSpecified   = false,
                    företeelsetyp  = new ClassificationReference_Styckevara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTStyckevaraReference
                        {
                            softType    = "FTStyckevara",
                            instanceRef = "Kanalisationindivid"
                        }
                    }
                };
                kanalisationsIndivid.id = kanalisationsIndivid.name + suffix;

                var plattformKanalisationProdukt = new AnläggningsproduktEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformKanalisationAnläggningsprodukt" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = kanalisationsProdukt
                };
                var plattformKanalisationStyckevara = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformKanalisationStyckevara" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = kanalisationsIndivid
                };
                if (bisPlattform.Brunn_Och_Lock != "?")
                {
                    plattformKanalisation.Add(plattformKanalisationProdukt);
                    plattformKanalisationIndivid.Add(plattformKanalisationStyckevara);
                }

                //PlattformIndivid
                var plattformindivid = new Plattformindivid
                {
                    startSpecified = false,
                    endSpecified   = false,
                    name           = "Plattformindivid",
                    notering       = bisPlattform.Notering,
                    versionId      = _VersionId,
                    företeelsetyp  = new ClassificationReference_Styckevara_företeelsetyp
                    {
                        startSpecified = false,
                        endSpecified   = false,
                        @class         = new FTStyckevaraReference
                        {
                            softType    = "FTStyckevara",
                            instanceRef = "Plattformindivid"
                        }
                    }
                };
                plattformindivid.id = plattformindivid.name + suffix;

                var plattformIndividStyckevara = new StyckevaraEntrydefaultIn
                {
                    Array          = true,
                    id             = "PlattformIndividStyckevara" + suffix,
                    inputSchemaRef = _InputSchemaRef,
                    data           = plattformindivid
                };
                plattformIndivider.Add(plattformIndividStyckevara);

                ExtraCounter++;
            }
            var anläggningsProduktSoftType = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = plattformsProdukter.ToArray()
            };
            var funktionellAnläggningsSoftType = new SoftType_FunktionellAnläggning
            {
                Array     = true,
                id        = "FunktionellAnläggning",
                instances = plattformsFunktioner.ToArray()
            };
            var anläggningsProduktSoftTypeSkydd = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = plattformVäderskydd.ToArray()
            };
            var styckevaraProduktSoftType = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = plattformStyckevaror.ToArray()
            };
            var anläggningsProduktSTSkylt = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = plattformSkylt.ToArray()
            };
            var styckevaraProduktSTSkylt = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = plattformSkyltIndivid.ToArray()
            };
            var anläggningsProduktKanalisation = new SoftType_Anläggningsprodukt
            {
                Array     = true,
                id        = "Anläggningsprodukt",
                instances = plattformKanalisation.ToArray()
            };
            var styckevaraProduktKanalisation = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = plattformKanalisationIndivid.ToArray()
            };
            var plattformIndivid = new SoftType_Styckevara
            {
                Array     = true,
                id        = "Styckevara",
                instances = plattformIndivider.ToArray()
            };
            var geoPlaceringSoftType = new SoftType_GeografiskPlaceringsreferens
            {
                Array     = true,
                id        = "GeografiskPlaceringsreferens",
                instances = geoPlaceringar.ToArray()
            };

            containerSoftTypes.Add(anläggningsProduktSoftType);
            containerSoftTypes.Add(funktionellAnläggningsSoftType);
            containerSoftTypes.Add(anläggningsProduktSoftTypeSkydd);
            containerSoftTypes.Add(styckevaraProduktSoftType);
            containerSoftTypes.Add(anläggningsProduktSTSkylt);
            containerSoftTypes.Add(styckevaraProduktSTSkylt);
            containerSoftTypes.Add(anläggningsProduktKanalisation);
            containerSoftTypes.Add(styckevaraProduktKanalisation);
            containerSoftTypes.Add(plattformIndivid);
            containerSoftTypes.Add(geoPlaceringSoftType);

            //Adds the extra softypes needed
            containerSoftTypes.AddRange(CreateSupplementarySoftypes());
            containerSoftTypes.AddRange(CreateFTKeyReferenceSoftTypes());

            //Last step is to prepare the container for serialization
            container.softTypes = containerSoftTypes.ToArray();
            return(container);
        }