Imports System.IO Imports System.Text Imports System.Web Imports System.Drawing Public Class Representation Implements IXMLClass Public Property ID As Integer 'Private _piratenmandate As piratenmandate.Item Public Property piratenmandate As piratenmandate.Item ' Get ' If _piratenmandate Is Nothing Then ' _piratenmandate = (From pm As piratenmandate.Item In GlobalData.piratenmandate.Items ' Where pm.OpenAntragKey = Me.Key ' Select pm).FirstOrDefault() ' End If ' Return _piratenmandate ' End Get ' Set(value As piratenmandate.Item) ' _piratenmandate = value ' End Set 'End Property Public Property Status As Representations.StatusConjuction Public ReadOnly Property StatusName() As String Get Dim s As String = [Enum].GetName(GetType(Representations.StatusConjuction), Me.Status) If String.IsNullOrEmpty(s) = False Then Return s.ToLower() Else Return "" End If End Get End Property Public ReadOnly Property IsActive As Boolean Get Return (Me.Status And Representations.StatusConjuction.Active) = Representations.StatusConjuction.Active End Get End Property Public ReadOnly Property IsViewOnly As Boolean Get Return (Me.Status And Representations.StatusConjuction.ViewOnly) = Representations.StatusConjuction.ViewOnly End Get End Property Public Property IsTest As Boolean Public Property Key As String Public Property Label As String Public Property LabelArticle As String = "" Public ReadOnly Property LabelWithArticle As String Get If String.IsNullOrEmpty(Me.LabelArticle) = False Then Return String.Concat(Me.LabelArticle, " ", Me.Label) Else Return Me.Label End If End Get End Property Public Property ApiKey As String Public Property Color As String Public ReadOnly Property ColorRGB As String Get Dim cColor As Color = ColorTranslator.FromHtml(Me.Color) Dim stb As New StringBuilder stb.Append(cColor.R.ToString).Append(",") stb.Append(cColor.G.ToString).Append(",") stb.Append(cColor.B.ToString) Return stb.ToString() End Get End Property Public ReadOnly Property ColorBright As String Get Dim cColor As Color = ColorTranslator.FromHtml(Me.Color) Dim cBrightColor As Color = cColor.ChangeColorBrightness(0.25) Return ColorTranslator.ToHtml(cBrightColor) End Get End Property Public ReadOnly Property ColorText As String Get Dim cColor As Color = ColorTranslator.FromHtml(Me.Color) Dim cBrightColor As Color = cColor.ChangeColorBrightness(-0.15) Return ColorTranslator.ToHtml(cBrightColor) End Get End Property Public Property [Name] As String Public Property [Name2] As String Public Property Level As Integer Public Property FederalKey As String Public Property Federal As FederalState Public ReadOnly Property FederalName As String 'nur für API Get Return Me.Federal.Name End Get End Property Public Property GroupType As Integer Public Property GroupName As String Public Property Link As String Public Property Twitter As String Public Property Phone As String Public Property Mail As String Public Property InfoMail As String Public Property MapUrl As String Public Property Representatives As List(Of Representative) Public Property HasCommittees As Boolean = True Public Property Committees As List(Of Committee) Public Property ProcessSteps As List(Of ProcessStep) Public ReadOnly Property GroupTypeCaption As String Get Dim strRetVal As String = "" Try Dim query = From gt As GroupType In GlobalData.GroupTypes.Items Where gt.ID = Me.GroupType Select gt If query.Count > 0 Then strRetVal = query.First.Name End If Catch ex As Exception End Try Return strRetVal End Get End Property Public ReadOnly Property GroupTypeGen As String Get Dim strRetVal As String = "" Try Dim query = From gt As GroupType In GlobalData.GroupTypes.Items Where gt.ID = Me.GroupType Select gt If query.Count > 0 Then strRetVal = query.First.NameGen End If Catch ex As Exception End Try Return strRetVal End Get End Property Public ReadOnly Property GroupTypeObject As GroupType Get Dim objRetVal As GroupType = Nothing Try Dim query = From gt As GroupType In GlobalData.GroupTypes.Items Where gt.ID = Me.GroupType Select gt If query.Count > 0 Then objRetVal = query.First End If Catch ex As Exception End Try Return objRetVal End Get End Property Public ReadOnly Property FullUrl As String Get Dim stb As New StringBuilder() stb.Append("http://").Append(HttpContext.Current.Request.Url.Authority) stb.Append("/").Append(Me.Key) Return stb.ToString End Get End Property Public ReadOnly Property HasLogoImage As Boolean Get Return (Me.LogoImage IsNot Nothing) End Get End Property Public ReadOnly Property LogoImage As String Get Dim stbPath As New StringBuilder() stbPath.Append("/Content/Representations/") stbPath.Append(Me.Key).Append("/") Dim di As New DirectoryInfo(HttpContext.Current.Server.MapPath(stbPath.ToString)) Dim fi As FileInfo() = di.GetFiles("logo.*") If fi.Count > 0 Then Return String.Concat(stbPath.ToString, fi(0).Name) Else : Return Nothing End If End Get End Property Public ReadOnly Property LogoImagePage As String Get Dim stbPath As New StringBuilder() stbPath.Append("/Content/Representations/") stbPath.Append(Me.Key).Append("/") Dim di As New DirectoryInfo(HttpContext.Current.Server.MapPath(stbPath.ToString)) Dim fi As FileInfo() = di.GetFiles("logo-page.*") If fi.Count > 0 Then Return String.Concat(stbPath.ToString, fi(0).Name) Else : Return Me.LogoImage End If End Get End Property Public ReadOnly Property FraktionInfo As HtmlString Get Dim hs As New HtmlString("") Dim stbPath As New StringBuilder() stbPath.Append("/Content/Representations/") stbPath.Append(Me.Key).Append("/Info/") Dim di As New DirectoryInfo(HttpContext.Current.Server.MapPath(stbPath.ToString)) Dim fi As FileInfo() = di.GetFiles("fraktion.info") If fi.Count > 0 Then Dim sr As New StreamReader(fi(0).FullName, Encoding.UTF8) Dim strContent As String = sr.ReadToEnd() sr.Close() hs = New HtmlString(strContent) End If Return hs End Get End Property Public ReadOnly Property FraktionInfoHtml() As String Get Return Me.FraktionInfo.ToHtmlString End Get End Property Public ReadOnly Property ParlamentInfo As HtmlString Get Dim hs As New HtmlString("") Dim stbPath As New StringBuilder() stbPath.Append("/Content/Representations/") stbPath.Append(Me.Key).Append("/Info/") Dim di As New DirectoryInfo(HttpContext.Current.Server.MapPath(stbPath.ToString)) Dim fi As FileInfo() = di.GetFiles("parlament.info") If fi.Count > 0 Then Dim sr As New StreamReader(fi(0).FullName, Encoding.UTF8) Dim strContent As String = sr.ReadToEnd() sr.Close() hs = New HtmlString(strContent) End If Return hs End Get End Property Public ReadOnly Property ParlamentInfoHtml() As String Get Return Me.ParlamentInfo.ToHtmlString End Get End Property Public Sub New() End Sub Public Sub New(ex As XElement) Me.New() With Me .ID = CType(ex.Attribute("id").Value, Integer) .Status = CType(ex.Attribute("status").Value, Integer) .IsTest = (CType(ex.Attribute("id").Value, Integer) >= 999) .Key = ex.Attribute("key").Value .Label = ex.Attribute("label").Value If ex.Attribute("label-article") IsNot Nothing Then .LabelArticle = ex.Attribute("label-article").Value End If .ApiKey = ex.Attribute("api-key").Value .Color = ex.Attribute("color").Value .[Name] = ex.Attribute("name").Value .[Name2] = ex.Attribute("name2").Value .Level = CType(ex.Attribute("level").Value, Integer) .FederalKey = ex.Attribute("federal").Value .GroupType = CType(ex.Attribute("group-type").Value, Integer) .GroupName = ex.Attribute("group-name").Value .Link = ex.Attribute("link").Value .Twitter = ex.Attribute("twitter").Value.Replace("@", "") .Phone = ex.Attribute("phone").Value .Mail = ex.Attribute("mail").Value .InfoMail = ex.Attribute("info-mail").Value If ex.Attribute("map-url") IsNot Nothing Then .MapUrl = ex.Attribute("map-url").Value End If Me.Representatives = New List(Of Representative) For Each xM As XElement In ex.Element("representatives").Elements("item") Me.Representatives.Add(New Representative(xM, ex.Attribute("key").Value)) Next Me.Committees = New List(Of Committee) If ex.Element("committees").Attribute("has-committees") IsNot Nothing Then .HasCommittees = CType(ex.Element("committees").Attribute("has-committees").Value, Boolean) End If For Each xM As XElement In ex.Element("committees").Elements("item") Me.Committees.Add(New Committee(xM, ex.Attribute("key").Value)) Next Me.ProcessSteps = New List(Of ProcessStep) For Each xS As XElement In ex.Element("process").Elements("step") Me.ProcessSteps.Add(New ProcessStep(Me, xS)) Next '--- For Each xS As XElement In ex.Element("process").Elements("step") Dim parentStep As ProcessStep = (From p As ProcessStep In Me.ProcessSteps Where p.ID = CType(xS.Attribute("id").Value, Integer) Select p).First For Each xN As XElement In xS.Element("next").Elements("step") Dim nextStep = (From p As ProcessStep In Me.ProcessSteps Where p.ID = CType(xN.Attribute("id").Value, Integer) Select p).First If parentStep.NextSteps Is Nothing Then parentStep.NextSteps = New List(Of ProcessStep) parentStep.NextSteps.Add(nextStep.CloneForNextStep) Next Next End With End Sub Public Function GetXElement(xD As XmlData) As XElement Implements IXMLClass.GetXElement Dim xE As New XElement(xD.ElementName) xE.SetAttributeValue("id", Me.ID.ToString) xE.SetAttributeValue("status", Me.Status.ToString) xE.SetAttributeValue("key", Me.Key.ToString) xE.SetAttributeValue("label", Me.Label.ToString) If String.IsNullOrEmpty(Me.LabelArticle) = False Then xE.SetAttributeValue("label-article", Me.LabelArticle.ToString) End If xE.SetAttributeValue("api-key", Me.ApiKey.ToString) xE.SetAttributeValue("color", Me.Color.ToString) xE.SetAttributeValue("name", Me.[Name].ToString) xE.SetAttributeValue("level", Me.Level.ToString) xE.SetAttributeValue("federal", Me.FederalKey.ToString) xE.SetAttributeValue("name2", Me.Name2.ToString) xE.SetAttributeValue("group-type", Me.GroupType.ToString) xE.SetAttributeValue("group-name", Me.GroupName.ToString) xE.SetAttributeValue("link", Me.Link.ToString) xE.SetAttributeValue("twitter", Me.Twitter.ToString) xE.SetAttributeValue("phone", Me.Phone.ToString) xE.SetAttributeValue("mail", Me.Mail.ToString) xE.SetAttributeValue("info-mail", Me.InfoMail.ToString) If String.IsNullOrEmpty(Me.MapUrl) = False Then xE.SetAttributeValue("map-url", Me.MapUrl.ToString) End If Dim xR As New XElement("representatives") For Each m As Representative In Me.Representatives xR.Add(m.GetXElement) Next xE.Add(xR) Dim xC As New XElement("committees") For Each m As Committee In Me.Committees xC.Add(m.GetXElement) Next xE.Add(xC) Dim xP As New XElement("process") For Each s As ProcessStep In Me.ProcessSteps xP.Add(s.GetXElement) Next xE.Add(xP) Return xE End Function End Class