public virtual IList <string> UpraveneHodnotyVHistorii(int kolikataZHistorie) { IList <string> historieZmen = new List <string>(); //první historie se porovnává s nynějším objektem - bohužel nejde jen tak přetipovat - takže se takhle vytvoří nová "historie" var thisAsHistory = new SubUkolHistory() { Action = Action , Status = Status , StartDate = StartDate , PlannedCloseDate = PlannedCloseDate , CloseDate = CloseDate , FinishDate = FinishDate , CheckDate = CheckDate , LastChangedDate = LastChangedDate , Zadavatel = Zadavatel , Resitel = Resitel , Nazev = Nazev , Popis = Popis , Komentar = Komentar , DeniedMessage = DeniedMessage }; var lastHist = History[0]; //a mrkneme se na první záznam historie if (lastHist != null) //pokud alespoň nějaká je, zapíšeme ji do seznamu { if (kolikataZHistorie == 0) { IEnumerable <string> zmeny = GetRozdilyString(thisAsHistory, lastHist); foreach (string s in zmeny) { historieZmen.Add(s); //PRVNÍ ZMĚNY } } else { IEnumerable <string> zmeny = GetRozdilyString(History[kolikataZHistorie], History[kolikataZHistorie - 1]); foreach (string s in zmeny) { historieZmen.Add(s); //OSTATNÍ ZMĚNY } } } return(historieZmen); //vrací seznam dvojic stringů (vždy CO, HODNOTA) se změněnými hodnotami }
private IEnumerable <string> GetRozdilyString(SubUkolHistory newer, SubUkolHistory older) { //MYŠLENKA: - zapíšeme do pole vždycky dvojici (ATRIBUT,HODNOTA .... ATRIBUT,HODNOTA .... //Z toho potom hezky vytáhneme která hodnota se změnila a jaká byla původní hodnota před změnou ;) var whiteSpace = "-"; IList <string> zmeny = new List <string>(); if (newer.Action != older.Action) { zmeny.Add("Action"); zmeny.Add(older.Action.ToString()); } if (newer.Status != older.Status) { zmeny.Add("Status"); zmeny.Add(older.Status.ToString()); } if (newer.StartDate != older.StartDate) { zmeny.Add("StartDate"); zmeny.Add(older.StartDate.ToString(CultureInfo.CurrentCulture)); } if (newer.PlannedCloseDate != older.PlannedCloseDate) { zmeny.Add("PlannedCloseDate"); zmeny.Add(older.PlannedCloseDate == null ? whiteSpace : older.PlannedCloseDate.GetValueOrDefault().ToShortDateString()); } if (newer.CloseDate != older.CloseDate) { zmeny.Add("CloseDate"); zmeny.Add(older.CloseDate == null ? whiteSpace : older.CloseDate.GetValueOrDefault().ToShortDateString()); } if (newer.FinishDate != older.FinishDate) { zmeny.Add("FinishDate"); zmeny.Add(older.FinishDate == null ? whiteSpace : older.FinishDate.GetValueOrDefault().ToShortDateString()); } if (newer.CheckDate != older.CheckDate) { zmeny.Add("CheckDate"); zmeny.Add(older.CheckDate == null ? whiteSpace : older.CheckDate.GetValueOrDefault().ToShortDateString()); } //if (newer.LastChangedDate != older.LastChangedDate) { zmeny.Add("LastChangedDate"); zmeny.Add(older.LastChangedDate.ToShortDateString()); } if (newer.Zadavatel != older.Zadavatel) { zmeny.Add("Zadavatel"); zmeny.Add(older.Zadavatel.Prijmeni + " " + Zadavatel.Jmeno); } if (newer.Resitel != older.Resitel) { zmeny.Add("Resitel"); zmeny.Add(older.Resitel.Prijmeni + " " + Resitel.Jmeno); } if (newer.Nazev != older.Nazev) { zmeny.Add("Nazev"); zmeny.Add(older.Nazev); } if (newer.Popis != older.Popis) { zmeny.Add("Popis"); zmeny.Add(older.Popis); } //if (newer.Komentar != older.Popis) { zmeny.Add("Popis"); zmeny.Add(newer.Popis); } return(zmeny); }