示例#1
0
        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());
        }
示例#2
0
        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());
        }