Beispiel #1
0
        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"));
        }
Beispiel #2
0
        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"));
        }