dis/03/src/de/dis2013/editor/VertragsEditor.java

188 lines
6.4 KiB
Java

package de.dis2013.editor;
import java.util.Iterator;
import java.util.Set;
import de.dis2013.core.ImmoService;
import de.dis2013.data.Haus;
import de.dis2013.data.Kaufvertrag;
import de.dis2013.data.Makler;
import de.dis2013.data.Mietvertrag;
import de.dis2013.data.Person;
import de.dis2013.data.Wohnung;
import de.dis2013.menu.AppartmentSelectionMenu;
import de.dis2013.menu.HouseSelectionMenu;
import de.dis2013.menu.Menu;
import de.dis2013.menu.PersonSelectionMenu;
import de.dis2013.util.FormUtil;
import de.dis2013.util.Helper;
/**
* Klasse für die Menüs zur Verwaltung von Verträgen
*/
public class VertragsEditor {
///Immobilien-Service, der genutzt werden soll
private ImmoService service;
///Makler, zu dessen Immobilien Verträge geschlossen werden dürfen
private Makler verwalter;
public VertragsEditor(ImmoService service, Makler verwalter) {
this.service = service;
this.verwalter = verwalter;
}
/**
* Vertragsmenü
*/
public void showVertragsMenu() {
//Menüoptionen
final int NEW_LEASING_CONTRACT = 0;
final int NEW_SALE_CONTRACT = 1;
final int SHOW_CONTRACTS = 2;
final int BACK = 3;
//Vertragsverwaltung
Menu maklerMenu = new Menu("Vertrags-Verwaltung");
maklerMenu.addEntry("Neuer Mietvertrag", NEW_LEASING_CONTRACT);
maklerMenu.addEntry("Neuer Kaufvertrag", NEW_SALE_CONTRACT);
maklerMenu.addEntry("Verträge ansehen", SHOW_CONTRACTS);
maklerMenu.addEntry("Zurück zum Hauptmenü", BACK);
//Verarbeite Eingabe
while(true) {
int response = maklerMenu.show();
switch(response) {
case NEW_LEASING_CONTRACT:
newMietvertrag();
break;
case NEW_SALE_CONTRACT:
newKaufvertrag();
break;
case SHOW_CONTRACTS:
zeigeVertraege();
break;
case BACK:
return;
}
}
}
private void zeigeVertraege() {
//Mietverträge anzeigen
System.out.println("Mietverträge\n-----------------");
Set<Mietvertrag> mvs = service.getAllMietvertraegeForMakler(verwalter);
for (Mietvertrag mv : mvs) {
System.out.println("Mietvertrag " + mv.getVertragsnummer() + "\n" +
"\tGeschlossen am " + Helper.dateToString(mv.getDatum()) + " in " + mv.getOrt() + "\n" +
"\tMieter: " + mv.getVertragspartner().getVorname() + " " +
mv.getVertragspartner().getNachname() + "\n" +
"\tWohnung: " + mv.getWohnung().getStrasse() + " " +
mv.getWohnung().getHausnummer() + ", " + mv.getWohnung().getPlz() + " " +
mv.getWohnung().getOrt() + "\n" +
"\tMietbeginn: " + Helper.dateToString(mv.getMietbeginn()) + ", Dauer: " +
mv.getDauer() + " Monate\n" +
"\tMietpreis: " + mv.getWohnung().getMietpreis() + " Euro, Nebenkosten: " +
mv.getNebenkosten() + " Euro\n");
}
System.out.println("");
//Kaufverträge anzeigen
System.out.println("Kaufverträge\n-----------------");
Set<Kaufvertrag> kvs = service.getAllKaufvertraegeForMakler(verwalter);
for (Kaufvertrag kv : kvs) {
System.out.println("Kaufvertrag " + kv.getVertragsnummer() + "\n" +
"\tGeschlossen am " + Helper.dateToString(kv.getDatum()) + " in " + kv.getOrt() + "\n" +
"\tMieter: " + kv.getVertragspartner().getVorname() + " " +
kv.getVertragspartner().getNachname() + "\n" +
"\tHaus: " + kv.getHaus().getStrasse() + " " + kv.getHaus().getHausnummer() +
", " + kv.getHaus().getPlz() + " " + kv.getHaus().getOrt() + "\n" +
"\tKaufpreis: " + kv.getHaus().getKaufpreis() + " Euro\n" +
"\tRaten: " + kv.getAnzahlRaten() + ", Ratenzins: " + kv.getRatenzins() + "%\n");
}
}
/**
* Menü zum anlegen eines neuen Mietvertrags
*/
private void newMietvertrag() {
//Alle Wohnungen des Maklers finden
Set<Wohnung> wohnungen = service.getAllWohnungenForMakler(verwalter);
//Auswahlmenü für die Wohnungen
AppartmentSelectionMenu asm = new AppartmentSelectionMenu("Wohnung für Vertrag auswählen", wohnungen);
int wid = asm.show();
//Falls kein Abbruch: Auswahl der Person
if(wid != AppartmentSelectionMenu.BACK) {
//Alle Personen laden
Set<Person> personen = service.getAllPersons();
//Menü zur Auswahl der Person
PersonSelectionMenu psm = new PersonSelectionMenu("Person für Vertrag auswählen", personen);
int pid = psm.show();
//Falls kein Abbruch: Vertragsdaten abfragen und Vertrag anlegen
if(pid != PersonSelectionMenu.BACK) {
Mietvertrag m = new Mietvertrag();
m.setWohnung(service.getWohnungById(wid));
m.setVertragspartner(service.getPersonById(pid));
m.setVertragsnummer(FormUtil.readInt("Vertragsnummer"));
m.setDatum(FormUtil.readDate("Datum"));
m.setOrt(FormUtil.readString("Ort"));
m.setMietbeginn(FormUtil.readDate("Mietbeginn"));
m.setDauer(FormUtil.readInt("Dauer in Monaten"));
m.setNebenkosten(FormUtil.readInt("Nebenkosten"));
service.addMietvertrag(m);
System.out.println("Mietvertrag mit der ID "+m.getId()+" wurde erzeugt.");
}
}
}
/**
* Menü zum anlegen eines neuen Kaufvertrags
*/
public void newKaufvertrag() {
//Alle Häuser des Maklers finden
Set<Haus> haeuser = service.getAllHaeuserForMakler(verwalter);
//Auswahlmenü für das Haus
HouseSelectionMenu asm = new HouseSelectionMenu("Haus für Vertrag auswählen", haeuser);
int hid = asm.show();
//Falls kein Abbruch: Auswahl der Person
if(hid != AppartmentSelectionMenu.BACK) {
//Alle Personen laden
Set<Person> personen = service.getAllPersons();
//Menü zur Auswahl der Person
PersonSelectionMenu psm = new PersonSelectionMenu("Person für Vertrag auswählen", personen);
int pid = psm.show();
//Falls kein Abbruch: Vertragsdaten abfragen und Vertrag anlegen
if(pid != PersonSelectionMenu.BACK) {
Kaufvertrag k = new Kaufvertrag();
k.setHaus(service.getHausById(hid));
k.setVertragspartner(service.getPersonById(pid));
k.setVertragsnummer(FormUtil.readInt("Vertragsnummer"));
k.setDatum(FormUtil.readDate("Datum"));
k.setOrt(FormUtil.readString("Ort"));
k.setAnzahlRaten(FormUtil.readInt("Anzahl Raten"));
k.setRatenzins(FormUtil.readInt("Ratenzins"));
service.addKaufvertrag(k);
System.out.println("Kaufvertrag mit der ID "+k.getId()+" wurde erzeugt.");
}
}
}
}