public void DodajDziałkę(Działka działka) { if (działka == null) { throw new ArgumentNullException(paramName: "działka", message: "Działka jest null."); } if (działka.Any() == false) { throw new InvalidOperationException(message: "Działka nie zawiera żadnych klasoużytków."); } if (SzukajIdDziałki(działka.Id) != null) { throw new InvalidOperationException("Rozliczenie zawiera już działkę " + działka.Id); } int dzialkiPrzed = _działki.Count; _działki.Add(działka); var id = działka.Id; _indeksDziałek.Add(id.ToString(), działka); int dzialkiPo = _działki.Count; Kontrakt.ensures(dzialkiPrzed + 1 == dzialkiPo); Kontrakt.ensures(SzukajIdDziałki(id) != null); }
public static bool uległaZmianie(this Działka staraDzialka, Działka nowaDzialka) { if (!nowaDzialka.Powierzchnia.Equals(staraDzialka.Powierzchnia)) { return(true); //niezgodna powierzchnia działki } if (nowaDzialka.Count() != staraDzialka.Count()) { return(true); //niezgodna liczba użytków } var użytki = staraDzialka.UnionUżytki(nowaDzialka); foreach (var użytek in użytki) { Klasoużytek stary = staraDzialka.SzukajUżytku(użytek); Klasoużytek nowy = nowaDzialka.SzukajUżytku(użytek); if (stary == null || nowy == null) { return(true); //dodany/usunięty użytek } Powierzchnia stara = stary.powierzchnia(); Powierzchnia nowa = nowy.powierzchnia(); if (!nowa.Equals(stara)) { return(true); //inna powierzchnia użytków } //if (nowa.powyzejOdchylki(stara)) return true; //powyżej odchyłki Kontrakt.assert(stary.Equals(nowy), "Różne oznaczenie użytku: " + stary.ToString()); } return(false); }
Działka ParsujDziałkę(string linia) { var pola = linia.Split(new [] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); var identyfikator = IdentyfikatorDziałki.ParsujId(pola[0]); var powierzchnia = Powierzchnia.ParsujMetry(pola[1]); var działka = new Działka(identyfikator, powierzchnia); return(działka); }
public static Działka WczytajJednąDziałkę(this ObiektSwde dze) { //var jdr = dze.GetRelacja("G5RJDR"); //string g5ijr = jdr.GetAtrybut("G5IJR"); string g5idd = dze.GetAtrybut("G5IDD"); string g5pew = dze.GetAtrybut("G5PEW"); string g5dzp = dze.GetAtrybut("G5DZP"); bool doAra = false; if (string.IsNullOrEmpty(g5dzp)) { Logger.ostrzeżenie("pusta wartość atrybutu G5DZP: zapis powierzchni do metra: " + g5idd); } else if (g5dzp.Equals("1")) { doAra = false; } else if (g5dzp.Equals("2")) { doAra = true; } else { Logger.ostrzeżenie("niestandardowa wartość atrybutu G5DZP: " + g5dzp + " działki " + g5idd); } if (doAra && g5pew.EndsWith("00") == false) { doAra = false; Logger.ostrzeżenie("powierzchnia do metra jest oznaczona w opisie jako do ara: " + g5pew + " m2, działka " + g5idd); } var powierzchnia = Powierzchnia.ParsujMetry(g5pew); var id = IdentyfikatorDziałki.ParsujIdG5(g5idd); //JednostkaRejestrowa jr = _indeksJednostek[JednostkaRejestrowa.parseG5(g5ijr).ToString()]; var działka = new Działka(id, powierzchnia); działka.JestDoAra = doAra; return(działka); }
public IEnumerable <Klasoużytek> UnionUżytki(Działka działka) { return(działka.Union(this).OrderBy(u => u.ToString())); }