예제 #1
0
        public async Task <IActionResult> Loeschen(int?id)
        {
            var leihauftrag = bibContext.Leihauftrag.SingleOrDefault(
                c => c.Id == id);

            var leihauftragManager = LeihauftragManager.GetLeihauftragManager(bibContext);
            await leihauftragManager.Loeschen(leihauftrag);

            toastNotification.AddToastMessage("Leihauftrag entfernt", "Das Buch \"" + leihauftrag.BuchTitel + "\", welches von \"" + leihauftrag.Benutzer + "\" ausgliehen werden wollte, wurde aus den Leihaufträgen entfernt.", ToastEnums.ToastType.Success, new ToastOption()
            {
                PositionClass = ToastPositions.TopCenter
            });

            return(RedirectToAction(nameof(Index)));
        }
예제 #2
0
        public async Task <IActionResult> Verlaengern(int?id)
        {
            var leihauftrag = bibContext.Leihauftrag.SingleOrDefault(
                c => c.Id == id);

            var exemplar = bibContext.Exemplar.SingleOrDefault(
                c => c.ISBN == leihauftrag.ISBN &&
                c.ExemplarId == leihauftrag.ExemplarId);

            var leihauftragManager = LeihauftragManager.GetLeihauftragManager(bibContext);
            await leihauftragManager.Verlaengern(exemplar);

            toastNotification.AddToastMessage("Buch verlängert", "Das Buch \"" + leihauftrag.BuchTitel + "\" des Benutzers \"" + leihauftrag.Benutzer + "\" wurde verlängert.", ToastEnums.ToastType.Success, new ToastOption()
            {
                PositionClass = ToastPositions.TopCenter
            });

            return(RedirectToAction(nameof(Index)));
        }
예제 #3
0
        public async Task <IActionResult> Ausleihen(int?id)
        {
            // Sucht der ID nach zugehörigen Warenkorb heraus.
            var leihauftrag = bibContext.Leihauftrag.SingleOrDefault(
                c => c.Id == id);

            var exemplar = bibContext.Exemplar.SingleOrDefault(
                c => c.ISBN == leihauftrag.ISBN &&
                c.ExemplarId == leihauftrag.ExemplarId);

            var buch = await bibContext.Buch.SingleOrDefaultAsync(e => e.ISBN == exemplar.ISBN);

            if (buch == null) // Fall: Buch wurde mitlerweile gelöscht
            {
                toastNotification.AddToastMessage("Buch gelöscht", "Dieses Buch existiert nicht mehr in der Datenbank. Bitte löschen Sie den Leihauftrag.", ToastEnums.ToastType.Error, new ToastOption()
                {
                    PositionClass = ToastPositions.TopCenter
                });
                return(RedirectToAction(nameof(Index)));
            }

            if (!exemplar.Verfügbarkeit)
            {
                var exemplare = bibContext.Exemplar.Where(e => e.ISBN == buch.ISBN);

                Exemplar gesuchtesExemplar = null;

                // Wenn ein das Exemplar eines Buches bereits verliehen ist, suche ein freies Exemplar des Buches
                foreach (var exemplarSuchen in exemplare)
                {
                    if (exemplarSuchen.Verfügbarkeit)
                    {
                        gesuchtesExemplar = exemplarSuchen;
                        break;
                    }
                }

                if (gesuchtesExemplar != null) // Fall: Exemplar bereits verliehen, jedoch wurde ein anderes Exemplar des Buches gefunden und verliehen
                {
                    var oldExemplarId      = exemplar.ExemplarId;
                    var leihauftragManager = LeihauftragManager.GetLeihauftragManager(bibContext);
                    leihauftrag.ExemplarId = gesuchtesExemplar.ExemplarId;

                    await leihauftragManager.Ausleihen(gesuchtesExemplar, leihauftrag);

                    toastNotification.AddToastMessage("Anderes Exemplar verliehen", "Das Exemplar " + oldExemplarId + " ist bereits verliehen! Es wurde nun das Exemplar " + gesuchtesExemplar.ExemplarId + " des Buches \"" + buch.Titel + "\" verliehen.", ToastEnums.ToastType.Warning, new ToastOption()
                    {
                        PositionClass = ToastPositions.TopCenter
                    });

                    return(RedirectToAction(nameof(Index)));
                }

                // Wenn das Programm bis hierhin kommt, sind bereits alle Exemplare des Buches verliehen
                toastNotification.AddToastMessage("Alle Exemplare verliehen", "Es sind bereits alle Exemplare des Buches \"" + buch.Titel + "\" verliehen.", ToastEnums.ToastType.Error, new ToastOption()
                {
                    PositionClass = ToastPositions.TopCenter
                });

                return(RedirectToAction(nameof(Index)));
            }
            else // Fall: Das Buch wurde verliehen
            {
                var leihauftragManager = LeihauftragManager.GetLeihauftragManager(bibContext);
                await leihauftragManager.Ausleihen(exemplar, leihauftrag);

                toastNotification.AddToastMessage("Buch verliehen", "Das Buch \"" + buch.Titel + "\" wurde verliehen.", ToastEnums.ToastType.Success, new ToastOption()
                {
                    PositionClass = ToastPositions.TopCenter
                });

                return(RedirectToAction(nameof(Index)));
            }
        }