public async Task <IActionResult> Zarezerwuj(int id_ksiazki)
        {
            var Ksiazka = await _context.Ksiazki
                          .FirstOrDefaultAsync(m => m.id_ksiazki == id_ksiazki);

            if (Ksiazka == null)
            {
                return(NotFound());
            }

            var egzemplarze = from t in _context.Egzemplarze
                              where t.Ksiazki.id_ksiazki == Ksiazka.id_ksiazki
                              select t;
            Egzemplarze dostepnyEgzemplarz = null;

            //var wypozyczenie = from b in egzemplarze from c in _context.Wypozyczenia.Where(c => b.id_egzemplarza == c.id_egzemplarza) select c;

            foreach (Egzemplarze x in egzemplarze)
            {
                if (x.status == Egzemplarze.Status.Dostępny)
                {
                    dostepnyEgzemplarz = x;
                    break;
                }
            }

            Rezerwacje rezerwacja = new Rezerwacje();

            rezerwacja.Egzemplarze     = dostepnyEgzemplarz;
            rezerwacja.data_rezerwacji = DateTime.UtcNow.Date.AddHours(1);
            rezerwacja.data_odbioru    = rezerwacja.data_rezerwacji.AddDays(2);
            rezerwacja.id_uzytkownika  = Convert.ToInt32(HttpContext.User.Identity.Name);



            try
            {
                if (ModelState.IsValid)
                {
                    rezerwacja.status_rezerwacji  = Rezerwacje.Status.aktualna;
                    rezerwacja.Egzemplarze.status = Egzemplarze.Status.Zarezerwowany;
                    _context.Rezerwacje.Add(rezerwacja);
                    _context.SaveChanges();
                    var uzytkownik = await _userManager.GetUserAsync(User);

                    _context.Logi.Add(stworzLog(uzytkownik, "stworzono rezerwację o numerze " + rezerwacja.id_rezerwacji));
                    _context.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }
            catch (DataException /* dex */)
            {
                //Log the error (uncomment dex variable name and add a line here to write a log.
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
            }

            return(RedirectToAction("Index"));
        }
        public async Task <IActionResult> OdbierzZamowienie(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var zamowienie = await _context.Zamowienia.FirstOrDefaultAsync(m => m.id_zamowienia == id);

            if (zamowienie == null)
            {
                return(NotFound());
            }

            if (zamowienie.status_zamowienia == Zamowienia.Status.Odebrane)
            {
                return(NotFound());
            }

            var zamowienie_ksiazki = await _context.Zamowienie_ksiazki.Where(m => m.id_zamowienia == zamowienie.id_zamowienia).ToListAsync();

            foreach (var book in zamowienie_ksiazki)
            {
                for (int i = 0; i < book.ilosc; i++)
                {
                    var egzemplarz = new Egzemplarze();
                    egzemplarz.id_ksiazki = book.id_ksiazki;
                    egzemplarz.status     = Egzemplarze.Status.Dostępny;
                    _context.Add(egzemplarz);
                }
            }

            zamowienie.status_zamowienia = Zamowienia.Status.Odebrane;

            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
コード例 #3
0
        public async Task <ActionResult> Wypozycz(int?id_ksiazki)
        {
            int idKsiazki = Convert.ToInt32(id_ksiazki);
            // int idUzytkownika = Convert.ToInt32(id_uzytkownika);

            //   var uzytkownik = await _context.Uzytkownicy
            //    .FirstOrDefaultAsync(m => m.id_uzytkownika == idUzytkownika);

            var Ksiazka = await _context.Ksiazki
                          .FirstOrDefaultAsync(m => m.id_ksiazki == idKsiazki);

            if (Ksiazka == null)
            {
                return(NotFound());
            }

            var egzemplarze = from t in _context.Egzemplarze where t.Ksiazki.id_ksiazki == Ksiazka.id_ksiazki
                              select t;



            Egzemplarze dostepnyEgzemplarz = null;

            //var wypozyczenie = from b in egzemplarze from c in _context.Wypozyczenia.Where(c => b.id_egzemplarza == c.id_egzemplarza) select c;

            foreach (Egzemplarze x in egzemplarze)
            {
                if (x.status == Egzemplarze.Status.Dostępny)
                {
                    dostepnyEgzemplarz = x;
                    break;
                }
            }

            Wypozyczenia wypozyczenie = new Wypozyczenia();

            wypozyczenie.Egzemplarze       = dostepnyEgzemplarz;
            wypozyczenie.data_wypozyczenia = DateTime.UtcNow.Date.AddHours(1);
            wypozyczenie.data_zwrotu       = wypozyczenie.data_wypozyczenia.AddMonths(1);
            wypozyczenie.id_uzytkownika    = Convert.ToInt32(HttpContext.User.Identity.Name);



            try
            {
                if (ModelState.IsValid)
                {
                    wypozyczenie.Egzemplarze.status = Egzemplarze.Status.Wypozyczony;
                    _context.Wypozyczenia.Add(wypozyczenie);
                    _context.SaveChanges();
                    var uzytkownik = await _userManager.GetUserAsync(User);

                    _context.Logi.Add(stworzLog(uzytkownik, "wypozyczono książkę. numer wypozyczenia - " + wypozyczenie.id_wypozyczenia));
                    _context.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }
            catch (DataException /* dex */)
            {
                //Log the error (uncomment dex variable name and add a line here to write a log.
                ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
            }

            return(RedirectToAction("Index"));
        }