Mini Kabibi Habibi
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Xml.Serialization
Imports System.IO
Imports System.Web.UI
Imports System.Collections
Public NotInheritable Class ReminderProvider
Private Shared model_Renamed As RemindersModel
Private Sub New()
End Sub
Private Shared ReadOnly Property Model() As RemindersModel
Get
If model_Renamed Is Nothing Then
Using stream = File.OpenRead(HttpContext.Current.Server.MapPath("~/App_Data/Reminders.xml"))
Dim serializer = New XmlSerializer(GetType(RemindersModel))
model_Renamed = CType(serializer.Deserialize(stream), RemindersModel)
Dim [date] = DateTime.Now.AddDays(1).AddHours(2)
For Each item In model_Renamed.Reminders
item.ReminderDate = [date]
[date] = [date].AddDays(2).AddHours(2)
Next item
End Using
End If
Return model_Renamed
End Get
End Property
Public Shared ReadOnly Property FirstReminder() As Reminder
Get
Return Model.Reminders(0)
End Get
End Property
Public Shared Function SelectReminders() As Object
Return New RemindersData(Model.Reminders.Skip(1))
End Function
End Class
<XmlRoot("Reminders")> _
Public Class RemindersModel
Private reminders_Renamed As New List(Of Reminder)()
<XmlElement(Type := GetType(Reminder), ElementName := "Reminder")> _
Public ReadOnly Property Reminders() As List(Of Reminder)
Get
Return reminders_Renamed
End Get
End Property
End Class
Public Class RemindersData
Implements IHierarchicalEnumerable
Private data As IEnumerable
Public Sub New(ByVal data As IEnumerable)
Me.data = data
End Sub
Public Function GetHierarchyData(ByVal enumeratedItem As Object) As IHierarchyData Implements IHierarchicalEnumerable.GetHierarchyData
Return CType(enumeratedItem, IHierarchyData)
End Function
Public Function GetEnumerator() As IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
Return Me.data.GetEnumerator()
End Function
End Class
Public Class Reminder
Implements IHierarchyData
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 privateReminderDate As DateTime
Public Property ReminderDate() As DateTime
Get
Return privateReminderDate
End Get
Set(ByVal value As DateTime)
privateReminderDate = 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 privateShortDescription As String
<XmlAttribute> _
Public Property ShortDescription() As String
Get
Return privateShortDescription
End Get
Set(ByVal value As String)
privateShortDescription = value
End Set
End Property
Private privateContactImageUrl As String
<XmlAttribute> _
Public Property ContactImageUrl() As String
Get
Return privateContactImageUrl
End Get
Set(ByVal value As String)
privateContactImageUrl = value
End Set
End Property
Private privateContactName As String
<XmlAttribute> _
Public Property ContactName() As String
Get
Return privateContactName
End Get
Set(ByVal value As String)
privateContactName = value
End Set
End Property
Private privateContactPhone As String
<XmlAttribute> _
Public Property ContactPhone() As String
Get
Return privateContactPhone
End Get
Set(ByVal value As String)
privateContactPhone = value
End Set
End Property
#Region "IHierarchyData Members"
Public Function GetChildren() As IHierarchicalEnumerable Implements IHierarchyData.GetChildren
Return Nothing
End Function
Public Function GetParent() As IHierarchyData Implements IHierarchyData.GetParent
Return Nothing
End Function
Public ReadOnly Property HasChildren() As Boolean Implements IHierarchyData.HasChildren
Get
Return False
End Get
End Property
Public ReadOnly Property Item() As Object Implements IHierarchyData.Item
Get
Return Me
End Get
End Property
Public ReadOnly Property Path() As String Implements IHierarchyData.Path
Get
Return Subject + ReminderDate
End Get
End Property
Public ReadOnly Property Type() As String Implements IHierarchyData.Type
Get
Return Me.GetType().ToString()
End Get
End Property
#End Region
End Class