public async Task <IActionResult> Create(ViewItem item) { if (ModelState.IsValid) { try { Obiekt = uni.Obiekt(item.Nazwa); //List<string> ListaItemowDoDodania = cos.Naglowki; //ListaKluczy = uni.PartsOfPrimaryKey(uni.Obiekt(cos.Nazwa)); for (int a = 0; a < item.Naglowki.Count; a++) { try { Obiekt.GetType().GetProperty(item.Naglowki[a]) .SetValue(Obiekt, item.Wartosci[a]); } catch (Exception) { // Jesli wartosc jest intem Obiekt.GetType().GetProperty(item.Naglowki[a]) .SetValue(Obiekt, Convert.ToInt32(item.Wartosci[a])); } } await uni.CreateTAsync(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("Lista")); }
public async Task <IActionResult> Create(ViewItem item) { if (ModelState.IsValid) { try { //Jezeli nie ma wyboru klucza obcego if (item.Wartosci.Count != item.Naglowki.Count) { throw new Exception("Nie mozna dobrac klucza obcego - prawdopodobnie jest pusty. \nNajpierw stworz obiekt klucza obcego"); } Obiekt = uni.Obiekt(item.Nazwa); for (int a = 0; a < item.Naglowki.Count; a++) { try { Obiekt.GetType().GetProperty(item.Naglowki[a]) .SetValue(Obiekt, item.Wartosci[a]); } catch (Exception) { // Jesli wartosc jest intem Obiekt.GetType().GetProperty(item.Naglowki[a]) .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.CreateTAsync(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.CreateTAsync(Obiekt); } // Pola potrzebne do wyswietlenia listy 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, $"Dodano rekord {item.Nazwa}"))); } 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("Create", item)); } } return(View("Lista")); }