public async Task <IActionResult> Delete(int Id, string co) { var Obiekt = uni.Obiekt(co); List <string> naglowki = uni.ListOfProperties(Obiekt); try { await uni.DeleteTAsync(Id, Obiekt); return(View("Index", new ViewLista(naglowki, uni.ReadAllT(Obiekt), co))); } catch (Exception ex) { }//Message = $"Blad - Element nie zosta³ usuniety \n {ex.Message}"; return OnGet(NazTab); } return(View("Index", new ViewLista(naglowki, uni.ReadAllT(Obiekt), co))); }
public async Task <IActionResult> Delete(int Id, string co) { if (HttpContext.Session.GetString("rodzaj_konta") == "Admin" || HttpContext.Session.GetString("rodzaj_konta") == "Sekretarka" && co == "Rezerwacje") { var Obiekt = uni.Obiekt(co); List <string> naglowki = uni.ListOfProperties(Obiekt); try { // Sprawdz czy inne tabele nie korzystaja z danego wiersza (jako klucza obcego) foreach (var tabela in Db.GetType().GetProperties().SkipLast(3)) // Dla kazdej tabeli w bazie { if (tabela.Name.ToLower().Substring(0, 3) != co.ToLower().Substring(0, 3)) // Tylko nie dla siebie samej { var objTabel = uni.Obiekt(tabela.Name); foreach (var kolTabel in objTabel.GetType().GetProperties()) // Dla kazdej kolumny w tabeli { if (kolTabel.Name.ToLower().Substring(0, 3) == co.ToLower().Substring(0, 3)) // Sprawdz czy zawiera kolumne ktora jest kluczem obcym dla tabeli { foreach (var rowTabel in uni.ReadAllT(objTabel)) // Jezeli tak - Sprawdz dla kazdego wiersza { if (rowTabel.GetType().GetProperty(kolTabel.Name).GetValue(rowTabel) == Id) // Czy wiersz zawiera usuwany element jako klucz obcy { throw new Exception(String.Format("Najpierw usun wszystkie wiersze w innych tabelach zawierajace odniesienie do tego rekordu. Na przyklad w tabeli {0}", tabela.Name)); } } } // Jezeli tak to ERROR } } } await uni.DeleteTAsync(Id, Obiekt); return(View("Index", new ViewLista(naglowki, uni.ReadAllT(Obiekt), co))); } catch (Exception ex) { return(View("Index", new ViewLista(naglowki, uni.ReadAllT(Obiekt), co, ex.Message))); } } else { return(RedirectToAction("Zaloguj", "Home", "")); } }