using System; using System.Collections.Generic; using System.Linq; using System.Text; using sharpknife.ViewModel; namespace sharpknife //.Data { public partial class StatusLog //: ViewModelBase { public enum StatusCodes { Unknown = 0, Waiting = 1, InProgress = 2, Complete = 3 } public StatusCodes Status { get { return (StatusCodes)StatusCode; } set { StatusCode = (int)value; OnPropertyChanged("Status"); OnPropertyChanged("ImageSource"); } } private static Dictionary StatusLogs = new Dictionary(); public string ImageSource { get { string imageSource = string.Empty; switch (Status) { default: case StatusCodes.Unknown: imageSource = "/sharpknife;component/Images/unknown.png"; break; case StatusCodes.Waiting: imageSource = "/sharpknife;component/Images/imnbusy.png"; break; case StatusCodes.InProgress: imageSource = "/sharpknife;component/Images/imnidle.png"; break; case StatusCodes.Complete: imageSource = "/sharpknife;component/Images/imnon.png"; break; } return imageSource; } } public StatusLog() { Status = StatusCodes.Unknown; this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(StatusLog_PropertyChanged); } void StatusLog_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "StatusCode") { OnPropertyChanged("Status"); } } public static void Load() { using (databaseEntities context = new databaseEntities()) { var query = (from s in context.StatusLog where s.Date == DateTime.Today select s); foreach (StatusLog statusLog in query) { StatusLogs[statusLog.Key] = statusLog; } } } public void Save() { using (databaseEntities context = new databaseEntities()) { StatusLog statusLog = context.StatusLog.SingleOrDefault(s => s.Date == DateTime.Today && s.Key == this.Key); if (statusLog == null) { context.StatusLog.AddObject(this); } else { context.StatusLog.ApplyCurrentValues(this); } context.SaveChanges(); } } public static StatusLog Get(string key) { if ( !StatusLogs.ContainsKey(key) || (StatusLogs.ContainsKey(key) && StatusLogs[key].Date != DateTime.Today) ) { StatusLog statusLog = new StatusLog() { StatusLogId = Guid.NewGuid(), CreatedOn = DateTime.Now, ModifiedOn = DateTime.Now, Date = DateTime.Today, Key = key }; Set(statusLog); return statusLog; } return StatusLogs[key]; } public static void Set(StatusLog statusLog) { StatusLogs[statusLog.Key] = statusLog; } } }