Mini Kabibi Habibi
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
}