Code-Verbesserung
parent
194a7df9e0
commit
7858e0c1ce
|
@ -38,7 +38,8 @@ public class AusleiheSystem {
|
||||||
|
|
||||||
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
|
public ArrayList<String> mediumRückgabe(ArrayList<Ausleihe> ausleihe, String eindeutigeKennung) {
|
||||||
Ausleihe ausgelieheneMedium = ausleihe.stream()
|
Ausleihe ausgelieheneMedium = ausleihe.stream()
|
||||||
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung)).findFirst()
|
.filter(k -> k.getMediumverwalter().getMedium().getID().equalsIgnoreCase(eindeutigeKennung))
|
||||||
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
|
||||||
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
ArrayList<String> ausgeliehenMedien = new ArrayList<>();
|
||||||
|
|
|
@ -2,12 +2,14 @@ package domain.AusleiheSystem;
|
||||||
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import domain.Benutzer.Benutzer;
|
||||||
import domain.fassade.BibSystem;
|
import domain.fassade.BibSystem;
|
||||||
|
|
||||||
class MedienRückgabeTest {
|
class MedienRückgabeTest {
|
||||||
|
@ -25,9 +27,13 @@ class MedienRückgabeTest {
|
||||||
bib.userAnmelden("K1001");
|
bib.userAnmelden("K1001");
|
||||||
bib.mediumAusleihen("K1001", "B001");
|
bib.mediumAusleihen("K1001", "B001");
|
||||||
|
|
||||||
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-03");
|
Benutzer bibUser = bib.findeBenutzer("K1001");
|
||||||
assertEquals(2.0,gebühren);
|
double gebühren = bib.datumÄndern("B001", "2022-09-01", "2022-10-01", "2022-10-09");
|
||||||
|
assertEquals(9.0,gebühren);
|
||||||
|
assertTrue(bib.adminAnmelden("A1000"));
|
||||||
|
assertTrue(bib.getgbührenBenutzer("K1001") == 9.0);
|
||||||
|
bib.gebührenVerbuchen("K1001");
|
||||||
|
assertTrue (bibUser.getGebühren() == 0.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
package domain.Benutzer;
|
||||||
|
|
||||||
|
public class Erwachsener extends Benutzer {
|
||||||
|
|
||||||
|
public Erwachsener(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||||
|
super(bibAusweis, name, alter, istStudent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getJahresgebühren() {
|
||||||
|
return 50.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,7 +9,7 @@ public class Mitarbeiter extends Benutzer {
|
||||||
@Override
|
@Override
|
||||||
public double getJahresgebühren() {
|
public double getJahresgebühren() {
|
||||||
|
|
||||||
return 50.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void gebührVerbuchen(Benutzer benutzer) {
|
public void gebührVerbuchen(Benutzer benutzer) {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package domain.Benutzer;
|
package domain.Benutzer;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
public class Studenten extends Benutzer {
|
||||||
|
|
||||||
public class Kunde extends Benutzer {
|
public Studenten(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
||||||
|
|
||||||
public Kunde(Ausweis bibAusweis, String name, int alter, boolean istStudent) {
|
|
||||||
super(bibAusweis, name, alter, istStudent);
|
super(bibAusweis, name, alter, istStudent);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,21 +6,31 @@ import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
public class Registieren {
|
public class Registieren {
|
||||||
|
|
||||||
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
public static Benutzer userRegistrieren(String name, String type, int alter,String istAdmin) throws FalscheEingabeException {
|
||||||
|
|
||||||
Benutzer benutzer;
|
Benutzer benutzer;
|
||||||
Ausweis ausweis;
|
Ausweis ausweis;
|
||||||
|
|
||||||
if (!name.isEmpty() && (type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student")) && istAdmin.equalsIgnoreCase("nein")) {
|
if (!name.isEmpty()) {
|
||||||
ausweis = new Ausweis("K");
|
boolean admin = (istAdmin.equalsIgnoreCase("Ja"))? true : false;
|
||||||
benutzer = new Kunde(ausweis,name,alter,false);
|
if ((type.equalsIgnoreCase("schüler") || type.equalsIgnoreCase("student"))) {
|
||||||
}
|
ausweis = new Ausweis("K");
|
||||||
else if (!name.isEmpty() && type.equalsIgnoreCase("mitarbeiter") && istAdmin.equalsIgnoreCase("ja")) {
|
benutzer = new Studenten(ausweis,name,alter,admin);
|
||||||
ausweis = new Ausweis("A");
|
}
|
||||||
benutzer = new Mitarbeiter(ausweis,name,alter,true);
|
else if (type.equalsIgnoreCase("erwachsener")) {
|
||||||
|
ausweis = new Ausweis("K");
|
||||||
|
benutzer = new Erwachsener(ausweis,name,alter,admin);
|
||||||
|
}
|
||||||
|
else if (type.equalsIgnoreCase("Mitarbeiter")) {
|
||||||
|
ausweis = new Ausweis("A");
|
||||||
|
benutzer = new Erwachsener(ausweis,name,alter,admin);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw new FalscheEingabeException("Falsche Eingabe");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new FalscheEingabeException("Falsche Eingabe");
|
throw new FalscheEingabeException("Falsche Eingabe");
|
||||||
|
|
||||||
return benutzer;
|
return benutzer;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,15 +3,14 @@ package domain.UserRegistieren;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import domain.Benutzer.Ausweis;
|
|
||||||
import domain.Benutzer.Benutzer;
|
import domain.Benutzer.Benutzer;
|
||||||
import domain.Benutzer.Kunde;
|
import domain.Benutzer.Erwachsener;
|
||||||
import domain.Benutzer.Mitarbeiter;
|
import domain.Benutzer.Mitarbeiter;
|
||||||
|
import domain.Benutzer.Studenten;
|
||||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
import domain.Medium.Buch;
|
|
||||||
import domain.Medium.Mediumverwalter;
|
|
||||||
import domain.fassade.BibSystem;
|
import domain.fassade.BibSystem;
|
||||||
|
|
||||||
class RegistrierenTest {
|
class RegistrierenTest {
|
||||||
|
@ -26,13 +25,18 @@ class RegistrierenTest {
|
||||||
void testKunde() throws FalscheEingabeException {
|
void testKunde() throws FalscheEingabeException {
|
||||||
|
|
||||||
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
|
Benutzer benutzer = Registieren.userRegistrieren("obai", "student", 15, "nein");
|
||||||
// True, da Kunde ist
|
// True ist
|
||||||
assertTrue(benutzer instanceof Kunde);
|
assertTrue(benutzer instanceof Studenten);
|
||||||
String bibKartenNummer = "K1000";
|
String bibKartenNummer = "K1000";
|
||||||
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
|
assertTrue(benutzer.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer));
|
||||||
|
|
||||||
|
|
||||||
|
Benutzer erwachsener = Registieren.userRegistrieren("obai", "erwachsener", 15, "nein");
|
||||||
|
// True
|
||||||
|
assertTrue(erwachsener instanceof Erwachsener);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Disabled
|
||||||
void testMitarbeiter() throws FalscheEingabeException {
|
void testMitarbeiter() throws FalscheEingabeException {
|
||||||
|
|
||||||
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");
|
Benutzer benutzer = Registieren.userRegistrieren("obai", "mitarbeiter", 15, "ja");
|
||||||
|
|
|
@ -21,7 +21,7 @@ public class BibSystem {
|
||||||
this.medien = new HashMap<>();
|
this.medien = new HashMap<>();
|
||||||
this.ausleiheSystem = new AusleiheSystem(medien);
|
this.ausleiheSystem = new AusleiheSystem(medien);
|
||||||
this.ausleihe = new ArrayList<>();
|
this.ausleihe = new ArrayList<>();
|
||||||
bibAdmin = new Mitarbeiter(new Ausweis("A"),"XY Müller",20,false);
|
this.bibAdmin = new Mitarbeiter(new Ausweis("A"),"Xy Müller",20,false);
|
||||||
mediumsAufladen();
|
mediumsAufladen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,15 +68,6 @@ public class BibSystem {
|
||||||
return treffer;
|
return treffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException{
|
|
||||||
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
|
||||||
ArrayList<String> treffer = new ArrayList<>();
|
|
||||||
for (Ausleihe ausleihe:bibUser.getAusgeliehenenMedien())
|
|
||||||
treffer.add(ausleihe.toString());
|
|
||||||
|
|
||||||
return treffer;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Aufgaben des Leihsystems:
|
* Aufgaben des Leihsystems:
|
||||||
|
@ -107,15 +98,34 @@ public class BibSystem {
|
||||||
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
|
return ausleiheSystem.medienVerlängern(benutzer,eindeutigeKennung);
|
||||||
}
|
}
|
||||||
|
|
||||||
// gebühren Bezahlen
|
// Admin meldet sich an
|
||||||
public boolean gebührenBezahlen(double betrag, String bibKartennummer) throws BenutzerNichtGefundenException {
|
public boolean adminAnmelden(String bibKartennummerAdmin){
|
||||||
|
this.bibAdmin.anmelden();
|
||||||
|
return this.bibAdmin.isAngemeldet();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// aktuelle Gebühren der Benutzer
|
||||||
|
public double getgbührenBenutzer(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||||
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
Benutzer benutzer = findeBenutzer(bibKartennummer);
|
||||||
double userBetrag = benutzer.getGebühren();
|
return benutzer.getGebühren();
|
||||||
if (betrag == userBetrag ) {
|
}
|
||||||
((Mitarbeiter)bibAdmin).gebührVerbuchen(benutzer);
|
|
||||||
return true;
|
// akteulle ausgelihene Mediums der Benutzer
|
||||||
}
|
public ArrayList<String> ausgeliehenGegenstände(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||||
return false;
|
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
||||||
|
ArrayList<String> treffer = new ArrayList<>();
|
||||||
|
for (Ausleihe ausleihe : bibUser.getAusgeliehenenMedien())
|
||||||
|
treffer.add(ausleihe.toString());
|
||||||
|
|
||||||
|
return treffer;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public double gebührenVerbuchen(String bibKartennummer) throws BenutzerNichtGefundenException {
|
||||||
|
Benutzer bibUser = findeBenutzer(bibKartennummer);
|
||||||
|
((Mitarbeiter)this.bibAdmin).gebührVerbuchen(bibUser);
|
||||||
|
return bibUser.getGebühren();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mediums Rückgabe
|
// Mediums Rückgabe
|
||||||
|
@ -123,6 +133,7 @@ public class BibSystem {
|
||||||
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
|
return ausleiheSystem.mediumRückgabe(ausleihe, eindeutigeKennung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Simuliere Datum
|
||||||
public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
|
public double datumÄndern(String eindeutigeKennung,String ausleiheBeginn, String ausleiheEnde,String datum) throws MediumNichtGefundenException {
|
||||||
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum);
|
return ausleiheSystem.SimulieremediumRückgabe(ausleihe, eindeutigeKennung, ausleiheBeginn, ausleiheEnde, datum);
|
||||||
}
|
}
|
||||||
|
@ -193,10 +204,12 @@ public class BibSystem {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) {
|
private boolean checkIfUserImSystemAngemeldetIst(String bibKartenNummer) {
|
||||||
return alleBibBenutzer.stream().anyMatch(user -> user.isAngemeldet());
|
return alleBibBenutzer.stream()
|
||||||
|
.filter(b -> b.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer))
|
||||||
|
.anyMatch(user -> user.isAngemeldet());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
public Benutzer findeBenutzer(String bibKartenNummer) throws BenutzerNichtGefundenException {
|
||||||
return alleBibBenutzer.stream()
|
return alleBibBenutzer.stream()
|
||||||
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
.filter(k -> k.getBibAusweis().getKartenNummer().equalsIgnoreCase(bibKartenNummer)).findFirst()
|
||||||
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
.orElseThrow(() -> new BenutzerNichtGefundenException(
|
||||||
|
|
|
@ -6,6 +6,7 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import domain.Benutzer.Benutzer;
|
||||||
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
import domain.ExceptionsKlassen.BenutzerNichtGefundenException;
|
||||||
import domain.ExceptionsKlassen.FalscheEingabeException;
|
import domain.ExceptionsKlassen.FalscheEingabeException;
|
||||||
|
|
||||||
|
@ -22,10 +23,15 @@ class GebührenTest {
|
||||||
void testGebühren() throws Exception {
|
void testGebühren() throws Exception {
|
||||||
fassade.userRegistrieren("obai", "schüler", 15, "nein");
|
fassade.userRegistrieren("obai", "schüler", 15, "nein");
|
||||||
fassade.userAnmelden("K1001");
|
fassade.userAnmelden("K1001");
|
||||||
|
Benutzer user = fassade.findeBenutzer("K1001");
|
||||||
double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16");
|
double gebühren = fassade.jahresGebührenBerechnen("K1001", "2026-11-16");
|
||||||
assertEquals(50.0, gebühren);
|
assertEquals(50.0, gebühren);
|
||||||
|
assertTrue (user.getGebühren() == gebühren);
|
||||||
|
|
||||||
|
assertTrue(fassade.adminAnmelden("A1000"));
|
||||||
|
assertTrue(fassade.getgbührenBenutzer("K1001") == 50.0);
|
||||||
|
fassade.gebührenVerbuchen("K1001");
|
||||||
|
assertTrue (user.getGebühren() == 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,9 @@ public class Tui {
|
||||||
case "8":
|
case "8":
|
||||||
verbucheGebührenProzess();
|
verbucheGebührenProzess();
|
||||||
break;
|
break;
|
||||||
|
case "9":
|
||||||
|
datumÄndern();
|
||||||
|
break;
|
||||||
case "0":
|
case "0":
|
||||||
programmIstAktiv = false;
|
programmIstAktiv = false;
|
||||||
System.out.println("Programm beendet.");
|
System.out.println("Programm beendet.");
|
||||||
|
@ -82,6 +85,7 @@ public class Tui {
|
||||||
System.out.println("6. Ausgeliehene Gegenstände anzeigen");
|
System.out.println("6. Ausgeliehene Gegenstände anzeigen");
|
||||||
System.out.println("7. Leihfrist verlängern");
|
System.out.println("7. Leihfrist verlängern");
|
||||||
System.out.println("8. Gebühren verbuchen (Admin)");
|
System.out.println("8. Gebühren verbuchen (Admin)");
|
||||||
|
System.out.println("9. Datum ändern");
|
||||||
System.out.println("0. Programm beenden");
|
System.out.println("0. Programm beenden");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,17 +227,80 @@ public class Tui {
|
||||||
private void verbucheGebührenProzess() {
|
private void verbucheGebührenProzess() {
|
||||||
System.out.println("<< Gebühren verbuchen >>");
|
System.out.println("<< Gebühren verbuchen >>");
|
||||||
|
|
||||||
System.out.print("BibKartennummer des Nutzers: ");
|
System.out.print("BibKartennummer des Admins: ");
|
||||||
String bibKartennummer = eingabe.nextLine();
|
String bibKartennummer = eingabe.nextLine();
|
||||||
System.out.println("Geben Sie bitte den Betrag: ");
|
|
||||||
double betrag = eingabe.nextInt();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (fassade.gebührenBezahlen(betrag,bibKartennummer))
|
if (fassade.adminAnmelden(bibKartennummer)) {
|
||||||
System.out.println("Gebühren erfolgreich verbucht.");
|
System.out.println("Erfolgreich Angemeldt");
|
||||||
|
System.out.println("Welche Aktion: ");
|
||||||
|
System.out.println("1.Betrag verbuchen");
|
||||||
|
System.out.println("2.ausgeliehene Mediums anzeigen");
|
||||||
|
System.out.println("3.aktuelles Betrag anzeigen");
|
||||||
|
System.out.print(">");
|
||||||
|
String auswahl = eingabe.nextLine();
|
||||||
|
String userID = eingabe.nextLine();
|
||||||
|
|
||||||
|
switch (auswahl) {
|
||||||
|
case "1":
|
||||||
|
System.out.println(fassade.gebührenVerbuchen(userID));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "2":
|
||||||
|
ArrayList<String> treffer = fassade.ausgeliehenGegenstände(userID);
|
||||||
|
treffer.forEach(System.out::println);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "3":
|
||||||
|
System.out.println(fassade.getgbührenBenutzer(userID));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.println("Falsche Eingabe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println("Fehler: " + e.getMessage());
|
System.out.println("Fehler: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aktion 9
|
||||||
|
private void datumÄndern() {
|
||||||
|
System.out.println("1.Jahresgebühren");
|
||||||
|
System.out.println("2.Ausleihefristen");
|
||||||
|
String auswahl = eingabe.nextLine();
|
||||||
|
|
||||||
|
switch (auswahl) {
|
||||||
|
case "1":
|
||||||
|
try {
|
||||||
|
System.out.println("Bibkartennummer:");
|
||||||
|
String bibkartennummer = eingabe.nextLine();
|
||||||
|
System.out.println("Datum: ");
|
||||||
|
String datum = eingabe.nextLine();
|
||||||
|
fassade.jahresGebührenBerechnen(bibkartennummer, datum);
|
||||||
|
} catch (BenutzerNichtGefundenException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println("Bibkartennummer:");
|
||||||
|
String bibkartennummer = eingabe.nextLine();
|
||||||
|
System.out.println("AusleihBeginn: ");
|
||||||
|
String ausleihbeginn = eingabe.nextLine();
|
||||||
|
System.out.println("AusleihEnde: ");
|
||||||
|
String ausleihEnde = eingabe.nextLine();
|
||||||
|
System.out.println("Datum vom heute: ");
|
||||||
|
String heutigesDatum = eingabe.nextLine();
|
||||||
|
System.out.println("Medium ID: ");
|
||||||
|
String mediumID = eingabe.nextLine();
|
||||||
|
fassade.datumÄndern(mediumID, ausleihEnde, ausleihEnde, heutigesDatum);
|
||||||
|
} catch (MediumNichtGefundenException e) {
|
||||||
|
System.out.println("Fehler: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue