Mini Kabibi Habibi
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports DevExpress.Web.ASPxScheduler
Imports DevExpress.XtraScheduler
Imports System.Drawing
Imports System.Web
Imports System.Xml.Linq
Imports System.Linq
Imports System.Xml.Serialization
Imports System.IO
Imports System.Globalization
Public Class CustomFileldNames
Public Const Speaker As String = "Speaker"
Public Const CategoryName As String = "CategoryName"
Public Const Level As String = "Level"
End Class
Public Enum SessionInterest
NotInterest
Interest
HighInterest
End Enum
Public Class Speaker
Private privateName As String
<XmlAttribute> _
Public Property Name() As String
Get
Return privateName
End Get
Set(ByVal value As String)
privateName = value
End Set
End Property
Private privateImageName As String
<XmlAttribute> _
Public Property ImageName() As String
Get
Return privateImageName
End Get
Set(ByVal value As String)
privateImageName = value
End Set
End Property
Private privateDescription As String
<XmlAttribute> _
Public Property Description() As String
Get
Return privateDescription
End Get
Set(ByVal value As String)
privateDescription = value
End Set
End Property
End Class
Public Class Section
Private privateName As String
<XmlAttribute> _
Public Property Name() As String
Get
Return privateName
End Get
Set(ByVal value As String)
privateName = value
End Set
End Property
End Class
Public Class Category
Private privateName As String
<XmlAttribute> _
Public Property Name() As String
Get
Return privateName
End Get
Set(ByVal value As String)
privateName = value
End Set
End Property
Private privateKey As String
<XmlAttribute> _
Public Property Key() As String
Get
Return privateKey
End Get
Set(ByVal value As String)
privateKey = value
End Set
End Property
Private privateId As Integer
<XmlIgnore> _
Public Property Id() As Integer
Get
Return privateId
End Get
Set(ByVal value As Integer)
privateId = value
End Set
End Property
Private privateColor As Color
<XmlIgnore> _
Public Property Color() As Color
Get
Return privateColor
End Get
Set(ByVal value As Color)
privateColor = value
End Set
End Property
End Class
Public Class PersonalData
Private privateCompleted As Boolean
Public Property Completed() As Boolean
Get
Return privateCompleted
End Get
Set(ByVal value As Boolean)
privateCompleted = value
End Set
End Property
Private privateFirstName As String
Public Property FirstName() As String
Get
Return privateFirstName
End Get
Set(ByVal value As String)
privateFirstName = value
End Set
End Property
Private privateLastName As String
Public Property LastName() As String
Get
Return privateLastName
End Get
Set(ByVal value As String)
privateLastName = value
End Set
End Property
Private privateJobTitle As String
Public Property JobTitle() As String
Get
Return privateJobTitle
End Get
Set(ByVal value As String)
privateJobTitle = value
End Set
End Property
Private privateCompanyName As String
Public Property CompanyName() As String
Get
Return privateCompanyName
End Get
Set(ByVal value As String)
privateCompanyName = value
End Set
End Property
Private privateCity As String
Public Property City() As String
Get
Return privateCity
End Get
Set(ByVal value As String)
privateCity = value
End Set
End Property
Private privatePhone As String
Public Property Phone() As String
Get
Return privatePhone
End Get
Set(ByVal value As String)
privatePhone = value
End Set
End Property
Private privateEmail As String
Public Property Email() As String
Get
Return privateEmail
End Get
Set(ByVal value As String)
privateEmail = value
End Set
End Property
Private privateAddress As String
Public Property Address() As String
Get
Return privateAddress
End Get
Set(ByVal value As String)
privateAddress = value
End Set
End Property
Private privateFullName As String
Public Property FullName() As String
Get
Return privateFullName
End Get
Set(ByVal value As String)
privateFullName = value
End Set
End Property
Public Sub New()
Completed = False
End Sub
End Class
Public Class Session
Public Sub New()
End Sub
Public Sub New(ByVal session As Session)
Subject = session.Subject
Description = session.Description
Location = session.Location
Speaker = session.Speaker
CategoryKey = session.CategoryKey
StartTime = session.StartTime
EndTime = session.EndTime
Level = session.Level
Featured = session.Featured
Image = session.Image
SpeakerDescription = session.SpeakerDescription
Id = session.Id
Interest = session.Interest
End Sub
Private privateSubject As String
<XmlAttribute> _
Public Property Subject() As String
Get
Return privateSubject
End Get
Set(ByVal value As String)
privateSubject = value
End Set
End Property
Private privateDescription As String
<XmlAttribute> _
Public Property Description() As String
Get
Return privateDescription
End Get
Set(ByVal value As String)
privateDescription = value
End Set
End Property
Private privateLocation As String
<XmlAttribute> _
Public Property Location() As String
Get
Return privateLocation
End Get
Set(ByVal value As String)
privateLocation = value
End Set
End Property
Private privateSpeaker As String
<XmlAttribute> _
Public Property Speaker() As String
Get
Return privateSpeaker
End Get
Set(ByVal value As String)
privateSpeaker = value
End Set
End Property
Private privateCategoryKey As String
<XmlAttribute> _
Public Property CategoryKey() As String
Get
Return privateCategoryKey
End Get
Set(ByVal value As String)
privateCategoryKey = value
End Set
End Property
Private privateStartTimeString As String
<XmlAttribute("StartTime")> _
Public Property StartTimeString() As String
Get
Return privateStartTimeString
End Get
Set(ByVal value As String)
privateStartTimeString = value
End Set
End Property
Private privateEndTimeString As String
<XmlAttribute("EndTime")> _
Public Property EndTimeString() As String
Get
Return privateEndTimeString
End Get
Set(ByVal value As String)
privateEndTimeString = value
End Set
End Property
Private privateLevel As Integer
<XmlAttribute> _
Public Property Level() As Integer
Get
Return privateLevel
End Get
Set(ByVal value As Integer)
privateLevel = value
End Set
End Property
Private privateFeatured As Boolean
<XmlAttribute> _
Public Property Featured() As Boolean
Get
Return privateFeatured
End Get
Set(ByVal value As Boolean)
privateFeatured = value
End Set
End Property
Private privateImage As String
<XmlAttribute> _
Public Property Image() As String
Get
Return privateImage
End Get
Set(ByVal value As String)
privateImage = value
End Set
End Property
Private privateSpeakerDescription As String
<XmlAttribute> _
Public Property SpeakerDescription() As String
Get
Return privateSpeakerDescription
End Get
Set(ByVal value As String)
privateSpeakerDescription = value
End Set
End Property
Private id_Renamed As String
<XmlIgnore> _
Public Property Id() As String
Get
If Me.id_Renamed Is Nothing Then
Me.id_Renamed = HttpUtility.UrlEncode(Subject.Replace(" "c, "_"c))
End If
Return Me.id_Renamed
End Get
Set(ByVal value As String)
Me.id_Renamed = value
End Set
End Property
<XmlIgnore> _
Public ReadOnly Property Index() As Integer
Get
Return DataHelper.Data.Sessions.IndexOf(Me)
End Get
End Property
<XmlIgnore> _
Public ReadOnly Property Category() As Category
Get
Dim category_Renamed As Category = DataHelper.Data.Categories.Find(Function(c) c.Key = CategoryKey)
If category_Renamed Is Nothing Then
Return DataHelper.Data.Categories(1)
Else
Return category_Renamed
End If
End Get
End Property
<XmlIgnore> _
Public Property CategoryId() As Integer
Get
Return Category.Id
End Get
Set(ByVal value As Integer)
End Set
End Property
<XmlIgnore> _
Public Property CategoryName() As String
Get
Return Category.Name
End Get
Set(ByVal value As String)
End Set
End Property
Private privateStartTime As DateTime
<XmlIgnore> _
Public Property StartTime() As DateTime
Get
Return privateStartTime
End Get
Set(ByVal value As DateTime)
privateStartTime = value
End Set
End Property
Private privateEndTime As DateTime
<XmlIgnore> _
Public Property EndTime() As DateTime
Get
Return privateEndTime
End Get
Set(ByVal value As DateTime)
privateEndTime = value
End Set
End Property
Private privateInterest As Integer
<XmlIgnore> _
Public Property Interest() As Integer
Get
Return privateInterest
End Get
Set(ByVal value As Integer)
privateInterest = value
End Set
End Property
End Class
Public Class Break
Private privateSubject As String
<XmlAttribute> _
Public Property Subject() As String
Get
Return privateSubject
End Get
Set(ByVal value As String)
privateSubject = value
End Set
End Property
Private privateStartTimeString As String
<XmlAttribute("StartTime")> _
Public Property StartTimeString() As String
Get
Return privateStartTimeString
End Get
Set(ByVal value As String)
privateStartTimeString = value
End Set
End Property
Private privateEndTimeString As String
<XmlAttribute("EndTime")> _
Public Property EndTimeString() As String
Get
Return privateEndTimeString
End Get
Set(ByVal value As String)
privateEndTimeString = value
End Set
End Property
End Class
Public Class ConferenceDay
Public Sub New()
Sessions = New List(Of Session)()
End Sub
Private privateSessions As List(Of Session)
<XmlElement("Session")> _
Public Property Sessions() As List(Of Session)
Get
Return privateSessions
End Get
Set(ByVal value As List(Of Session))
privateSessions = value
End Set
End Property
Private privateBreaks As List(Of Break)
<XmlElement("Break")> _
Public Property Breaks() As List(Of Break)
Get
Return privateBreaks
End Get
Set(ByVal value As List(Of Break))
privateBreaks = value
End Set
End Property
End Class
<XmlRoot("EventRegistration")> _
Public Class EventRegistrationData
Private Shared ReadOnly DefaultColors As New List(Of Color) (New Color() {Color.FromArgb(55, 186, 255), Color.FromArgb(212, 98, 180), Color.FromArgb(100, 203, 16), Color.FromArgb(168, 99, 255), Color.MediumPurple, Color.Aqua, Color.Firebrick})
Private Shared ReadOnly StartDate As DateTime = DateTime.Now.Date.AddDays(15)
Public Sub New()
Speakers = New List(Of Speaker)()
Sections = New List(Of Section)()
Categories = New List(Of Category)()
Days = New List(Of ConferenceDay)()
Sessions = New SessionList()
Breaks = New List(Of TimeInterval)()
End Sub
Private privateSpeakers As List(Of Speaker)
Public Property Speakers() As List(Of Speaker)
Get
Return privateSpeakers
End Get
Set(ByVal value As List(Of Speaker))
privateSpeakers = value
End Set
End Property
Private privateSections As List(Of Section)
Public Property Sections() As List(Of Section)
Get
Return privateSections
End Get
Set(ByVal value As List(Of Section))
privateSections = value
End Set
End Property
Private privateCategories As List(Of Category)
Public Property Categories() As List(Of Category)
Get
Return privateCategories
End Get
Set(ByVal value As List(Of Category))
privateCategories = value
End Set
End Property
Private privateDays As List(Of ConferenceDay)
<XmlElement("ConferenceDay")> _
Public Property Days() As List(Of ConferenceDay)
Get
Return privateDays
End Get
Set(ByVal value As List(Of ConferenceDay))
privateDays = value
End Set
End Property
Private privateSessions As SessionList
<XmlIgnore> _
Public Property Sessions() As SessionList
Get
Return privateSessions
End Get
Set(ByVal value As SessionList)
privateSessions = value
End Set
End Property
Private privateBreaks As List(Of TimeInterval)
<XmlIgnore> _
Public Property Breaks() As List(Of TimeInterval)
Get
Return privateBreaks
End Get
Set(ByVal value As List(Of TimeInterval))
privateBreaks = value
End Set
End Property
Public Function GetDate(ByVal day As Integer) As DateTime
Return StartDate.AddDays(day)
End Function
Public Function GetDay(ByVal [date] As DateTime) As Integer
Return ([date].Subtract(StartDate)).Days
End Function
Public Sub Initialize()
InitializeCategories()
InitializeSessions()
InitializeBreaks()
End Sub
Private Sub InitializeCategories()
For i As Integer = 0 To Categories.Count - 1
Dim category As Category = Categories(i)
category.Id = i
If (i >= 0 AndAlso i < DefaultColors.Count) Then
category.Color = DefaultColors(i)
Else
category.Color = Color.Transparent
End If
Next i
End Sub
Private Sub InitializeSessions()
For i As Integer = 0 To Days.Count - 1
Dim day As ConferenceDay = Days(i)
For Each session As Session In day.Sessions
Sessions.Add(session)
session.StartTime = GetDate(i).Add(ParseDateTime(session.StartTimeString).TimeOfDay)
session.EndTime = GetDate(i).Add(ParseDateTime(session.EndTimeString).TimeOfDay)
Next session
Next i
End Sub
Private Sub InitializeBreaks()
For i As Integer = 0 To Days.Count - 1
Dim day As ConferenceDay = Days(i)
For Each _break As Break In day.Breaks
Breaks.Add(New TimeInterval(GetDate(i).Add(ParseDateTime(_break.StartTimeString).TimeOfDay), GetDate(i).Add(ParseDateTime(_break.EndTimeString).TimeOfDay)))
Next _break
Next i
End Sub
Private Function ParseDateTime(ByVal val As String) As DateTime
Return DateTime.Parse(val, CultureInfo.InvariantCulture)
End Function
End Class
Public NotInheritable Class DataHelper
Public Const StarsPhotoFolder As String = "~/Images/Stars/"
Public Const FeaturedSessionsFolder As String = "~/Images/FeaturedSessions/"
Private Const xmlDataBaseFilePath As String = "~\App_Data\Sessions.xml"
Private Const xmlSpeakersFilePath As String = "~\App_Data\Speakers.xml"
Private Shared data_Renamed As EventRegistrationData
Private Sub New()
End Sub
Public Shared Property Data() As EventRegistrationData
Get
Return data_Renamed
End Get
Private Set(ByVal value As EventRegistrationData)
data_Renamed = value
End Set
End Property
'load
Public Shared Sub LoadDataBase()
Dim serializer As New XmlSerializer(GetType(EventRegistrationData))
Using dataFile As FileStream = File.OpenRead(HttpContext.Current.Server.MapPath(xmlDataBaseFilePath))
Data = CType(serializer.Deserialize(dataFile), EventRegistrationData)
Data.Initialize()
End Using
End Sub
'setup scheduler
Public Shared Sub Setup(ByVal storage As ASPxSchedulerStorage)
storage.BeginUpdate()
Try
SetLabelCollection(storage.Appointments.Labels)
SetStatusCollection(storage.Appointments.Statuses)
FillResources(storage.Resources.Items)
Finally
storage.EndUpdate()
End Try
End Sub
Private Shared Sub FillResources(ByVal resources As ResourceCollection)
For i As Integer = 0 To Data.Sections.Count - 1
Dim sectionName As String = Data.Sections(i).Name
resources.Add(New Resource(sectionName, sectionName))
Next i
End Sub
Private Shared Sub SetStatusCollection(ByVal statuses As AppointmentStatusCollection)
statuses.Clear()
For Each category As Category In Data.Categories
statuses.Add(New AppointmentStatus(AppointmentStatusType.Custom, category.Color, category.Key))
Next category
End Sub
Private Shared Sub SetLabelCollection(ByVal labels As AppointmentLabelCollection)
labels.Clear()
labels.Add(New AppointmentLabel(ColorTranslator.FromHtml("#FFFFFF"), SessionInterest.NotInterest.ToString()))
labels.Add(New AppointmentLabel(ColorTranslator.FromHtml("#FFF8CA"), SessionInterest.Interest.ToString()))
labels.Add(New AppointmentLabel(ColorTranslator.FromHtml("#FFD2E0"), SessionInterest.HighInterest.ToString()))
End Sub
End Class