public async Task <IActionResult> Update(ViewItem Item) { if (ModelState.IsValid) { try { //Message = "Obiekt zostal zedytowany"; var Obiekt = uni.Obiekt(Item.Nazwa); int Id = Convert.ToInt32(Item.Wartosci[0]); //ListaKluczy = uni.PartsOfPrimaryKey(Obiekt); for (int a = 0; a < Obiekt.GetType().GetProperties().Length; a++) { try { Obiekt.GetType().GetProperty(Obiekt.GetType().GetProperties()[a].Name) .SetValue(Obiekt, Item.Wartosci[a]); } catch (Exception) { Obiekt.GetType().GetProperty(Obiekt.GetType().GetProperties()[a].Name) .SetValue(Obiekt, Convert.ToInt32(Item.Wartosci[a])); } } await uni.UpdateTAsync(Obiekt); return(View("Index", new ViewLista(Item.Naglowki, uni.ReadAllT(Obiekt), Item.Nazwa))); } catch (Exception ex) { //Message = ex.Message.ToString(); //if (ex.InnerException != null) { InnerMessage = ex.InnerException.Message.ToString(); }; //return View(); } } return(View()); }
public async Task <IActionResult> Update(ViewItem item) { if (ModelState.IsValid) { try { //Message = "Obiekt zostal zedytowany"; var Obiekt = uni.Obiekt(item.Nazwa); int Id = Convert.ToInt32(item.Wartosci[0]); for (int a = 0; a < Obiekt.GetType().GetProperties().Length; a++) { try { Obiekt.GetType().GetProperty(Obiekt.GetType().GetProperties()[a].Name) .SetValue(Obiekt, item.Wartosci[a]); } catch (Exception) { Obiekt.GetType().GetProperty(Obiekt.GetType().GetProperties()[a].Name) .SetValue(Obiekt, Convert.ToInt32(item.Wartosci[a])); } } //Jakas informacja nie zostala wprowadzona if (item.Wartosci.FindAll(it => it == null).Count > 1) { throw new Exception("Prosze wypelnic wszystkie pola"); } // Podany obiekt istnieje juz w bazie danych if (uni.SprawdzCzyIstniejeWBazie(Obiekt) != null) { throw new Exception("Taki obiekt istnieje juz w bazie"); } // Jezeli obiekt jest rezerwacja to sprawdz czy wystapi konflikt if (item.Nazwa == "Rezerwacja") { if (CzyKonfliktRezerwacji(Obiekt)) { if (WykladowcaZajety(Obiekt)) { if (SalaZajeta(Obiekt)) { await uni.UpdateTAsync(Obiekt); } else { throw new Exception("Sala jest juz zajeta przez inna rezerwacje w tym samym czasie"); } } else { throw new Exception("Wykladowca nie moze prowadzic dwoch zajec jednoczesnie"); } } else { throw new Exception("Rezerwacja zachodzi czasowo na inna rezerwacje"); } } // Jezeli obiekt nie jest rezerwacja if (item.Nazwa != "Rezerwacja") { await uni.UpdateTAsync(Obiekt); } IEnumerable <dynamic> lista = uni.ReadAllT(uni.Obiekt(item.Nazwa)); List <dynamic> lista2 = lista.ToList(); if (HttpContext.Session.GetString("rodzaj_konta") == "Sekretarka") // Jezeli zalogowala sie sekretarka to wybieramy tylko jej rezerwacje { lista2 = lista2.FindAll(r => r.GetType().GetProperty("uzytkownikId").GetValue(r) == Convert.ToInt32(HttpContext.Session.GetString("uzytkownikId"))); } return(View("Index", new ViewLista(item.Naglowki, lista2, item.Nazwa, null, $"Zedytowano rekord o Id {Id}"))); } catch (Exception ex) { item.ErrorMessage = ex.Message.ToString(); item.Wartosci = item.Naglowki.DefaultIfEmpty().ToList(); // Nie wiem jak ale dziala xd item.ListaNazwKluczyObcych = GetListOfDictFK(uni.Obiekt(item.Nazwa)); if (ex.InnerException != null) { item.ErrorMessage += "\n" + ex.InnerException.Message.ToString(); } ; return(View("Update", item)); } } return(View()); }