Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/TouchBoard/App_Code/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/TouchBoard/App_Code/ReminderProvider.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Serialization;
using System.IO;
using System.Web.UI;
using System.Collections;

public static class ReminderProvider {
    static RemindersModel model;
    static RemindersModel Model { 
        get {
            if(model == null) {
                using(var stream = File.OpenRead(HttpContext.Current.Server.MapPath("~/App_Data/Reminders.xml"))) {
                    var serializer = new XmlSerializer(typeof(RemindersModel));
                    model = (RemindersModel)serializer.Deserialize(stream);

                    var date = DateTime.Now.AddDays(1).AddHours(2);
                    foreach(var item in model.Reminders) {
                        item.ReminderDate = date;
                        date = date.AddDays(2).AddHours(2);
                    }
                }
            }
            return model;
        }
    }

    public static Reminder FirstReminder { get { return Model.Reminders[0]; } }
    public static object SelectReminders() {
        return new RemindersData(Model.Reminders.Skip(1));
    }
}

[XmlRoot("Reminders")]
public class RemindersModel {
    List<Reminder> reminders = new List<Reminder>();

    [XmlElement(Type = typeof(Reminder), ElementName = "Reminder")]
    public List<Reminder> Reminders { get { return reminders; } }
}

public class RemindersData : IHierarchicalEnumerable {
    IEnumerable data;
    public RemindersData(IEnumerable data) {
        this.data = data;
    }
    public IHierarchyData GetHierarchyData(object enumeratedItem) {
        return (IHierarchyData)enumeratedItem;
    }
    public IEnumerator GetEnumerator() {
        return this.data.GetEnumerator();
    }
}

public class Reminder : IHierarchyData {
    [XmlAttribute]
    public string Subject { get; set; }
    public DateTime ReminderDate { get; set; }
    [XmlAttribute]
    public string Description { get; set; }
    [XmlAttribute]
    public string ShortDescription { get; set; }
    [XmlAttribute]
    public string ContactImageUrl { get; set; }
    [XmlAttribute]
    public string ContactName { get; set; }
    [XmlAttribute]
    public string ContactPhone { get; set; }

    #region IHierarchyData Members
    public IHierarchicalEnumerable GetChildren() {
        return null;
    }
    public IHierarchyData GetParent() {
        return null;
    }
    public bool HasChildren { get { return false; }}
    public object Item { get { return this; } }
    public string Path { get { return Subject + ReminderDate; } }
    public string Type { get { return GetType().ToString(); } }
    #endregion
}