Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/VB/EventRegistration/App_Code/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/VB/EventRegistration/App_Code/DataHelper.vb

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