/*
* Copyright (C) 2014 GG-Net GmbH - Oliver Günther
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.ggnet.dwoss.customer;
import eu.ggnet.dwoss.util.CloseType;
import eu.ggnet.dwoss.util.OkCancelDialog;
import java.awt.*;
import javax.swing.JOptionPane;
import org.openide.util.lookup.ServiceProvider;
import eu.ggnet.dwoss.customer.api.AddressService;
import eu.ggnet.dwoss.customer.api.CustomerCos;
import eu.ggnet.dwoss.event.AddressChange;
import eu.ggnet.dwoss.customer.priv.OldCustomer;
import eu.ggnet.dwoss.customer.priv.OldCustomerAgent;
import static eu.ggnet.saft.core.Client.lookup;
/**
*
* @author pascal.perau
*/
@ServiceProvider(service = CustomerCos.class)
public class OldCustomerCos implements CustomerCos {
@Override
public long createCustomer() {
CustomerCreateView view = new CustomerCreateView();
CustomerCreateController controller = new CustomerCreateController();
view.setController(controller);
controller.setView(view);
// HINT: This was RedTapeView as parrent. If users complain about the location of create customer, add it to Workspace or else.
OkCancelDialog<CustomerCreateView> dialog = new OkCancelDialog<>(null, Dialog.ModalityType.DOCUMENT_MODAL, "Neuen Kunden anlegen", view);
dialog.setVisible(true);
if ( dialog.isOk() ) {
return lookup(OldCustomerAgent.class).store(view.getCustomer()).getId();
}
return 0;
}
@Override
public boolean updateCustomer(long customerId) {
OldCustomer customer = lookup(OldCustomerAgent.class).findById(customerId);
CustomerUpdateViewCask ec = new CustomerUpdateViewCask();
ec.setCustomer(customer);
// HINT: This was RedTapeView as parrent. If users complain about the location of create customer, add it to Workspace or else.
OkCancelDialog<CustomerUpdateViewCask> dialog = new OkCancelDialog<>(null, Dialog.ModalityType.DOCUMENT_MODAL, "Kunden editieren", ec);
dialog.setVisible(true);
boolean changed = false;
if ( dialog.getCloseType() == CloseType.OK ) {
lookup(OldCustomerAgent.class).store(ec.getCustomer());
for (AddressChange addressChange : ec.getChangedAdresses()) {
if ( JOptionPane.showOptionDialog(dialog, "Adresse wurde geändert, soll diese Änderung an allen Dokumenten des Kunden übernommen werden?", "Adressänderung", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null) == JOptionPane.YES_OPTION ) {
lookup(AddressService.class).notifyAddressChange(addressChange);
}
changed = true;
}
}
return changed;
}
}