package is.idega.idegaweb.campus.block.allocation.presentation;
import is.idega.idegaweb.campus.block.allocation.data.Contract;
import is.idega.idegaweb.campus.block.allocation.data.ContractHome;
import is.idega.idegaweb.campus.nortek.business.NortekBusiness;
import is.idega.idegaweb.campus.nortek.data.Card;
import is.idega.idegaweb.campus.presentation.CampusWindow;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.idega.block.application.data.Applicant;
import com.idega.block.application.data.ApplicantHome;
import com.idega.block.building.data.Apartment;
import com.idega.block.building.data.Building;
import com.idega.block.building.data.Complex;
import com.idega.block.building.data.Floor;
import com.idega.business.IBOLookup;
import com.idega.business.IBOLookupException;
import com.idega.data.IDOLookup;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.CloseButton;
import com.idega.presentation.ui.DataTable;
import com.idega.presentation.ui.DateInput;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.user.data.User;
import com.idega.util.IWTimestamp;
/**
* Title: idegaclasses Description: Copyright: Copyright (c) 2001 Company:
*
* @author <a href="mailto:aron@idega.is">aron@idega.is
* @version 1.0
*/
public class ContractKeyWindow extends CampusWindow {
private static final String PARAM_DELIVERED_DATE = "deliveredDate";
private static final String PARAM_TYPE = "val";
private static final String TYPE_DELIVER = "deliver";
private static final String TYPE_RETURN = "return";
private static final String PARAM_SAVE_X = "save.x";
private static final String PARAM_SAVE = "save";
private static final String PARAM_INVALIDATE_LAUNDRY_CARD = "invalidate_card";
public static String PARAM_CONTARACT = "contract_id";
public ContractKeyWindow() {
setWidth(300);
setHeight(250);
setResizable(true);
}
protected void control(IWContext iwc) throws RemoteException {
if (iwc.isLoggedOn()) {
if (iwc.isParameterSet(PARAM_SAVE) || iwc.isParameterSet(PARAM_SAVE_X)) {
doContract(iwc);
setParentToReload();
}
add(getSignatureTable(iwc));
} else {
add(getText(localize("access_denied", "Access denied")));
}
}
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
public PresentationObject makeLinkTable(int menuNr) {
Table LinkTable = new Table(6, 1);
return LinkTable;
}
private PresentationObject getSignatureTable(IWContext iwc) {
int iContractId = Integer.parseInt(iwc.getParameter(PARAM_CONTARACT));
try {
ContractHome contractHome = (ContractHome) IDOLookup
.getHome(Contract.class);
Contract eContract = contractHome.findByPrimaryKey(new Integer(
iContractId));
User eUser = eContract.getUser();
Apartment apartment = eContract.getApartment();
IWTimestamp from = new IWTimestamp(eContract.getValidFrom());
IWTimestamp to = new IWTimestamp(eContract.getValidTo());
Applicant eApplicant = ((ApplicantHome) com.idega.data.IDOLookup
.getHome(Applicant.class)).findByPrimaryKey(eContract
.getApplicantId());
boolean apartmentReturn = eContract.getIsRented();
DataTable T = new DataTable();
T.setWidth("100%");
T.addButton(new CloseButton(getResourceBundle().getImage(
"close.gif")));
String val = "";
SubmitButton save = new SubmitButton(getResourceBundle().getImage(
"save.gif"), PARAM_SAVE);
boolean canSave = false;
if (apartmentReturn) {
T.addTitle(getResourceBundle().getLocalizedString(
"apartment_return", "Apartment return"));
val = TYPE_RETURN;
if (eContract
.getStatus()
.equals(
is.idega.idegaweb.campus.block.allocation.data.ContractBMPBean.STATUS_ENDED)
|| eContract
.getStatus()
.equals(
is.idega.idegaweb.campus.block.allocation.data.ContractBMPBean.STATUS_RESIGNED)) {
T.addButton(save);
canSave = true;
}
} else {
T.addTitle(localize("apartment_deliver", "Apartment deliver"));
val = TYPE_DELIVER;
if (eContract
.getStatus()
.equals(
is.idega.idegaweb.campus.block.allocation.data.ContractBMPBean.STATUS_SIGNED)) {
T.addButton(save);
canSave = true;
}
}
T.add(new HiddenInput(PARAM_TYPE, val), 1, 1);
int row = 1;
HiddenInput HI = new HiddenInput(PARAM_CONTARACT, eContract
.getPrimaryKey().toString());
T.add(HI, 1, row);
T.add(getHeader(localize("name", "Name")), 1, row);
T.add(getText(eApplicant.getFullName()), 2, row);
row++;
T.add(getHeader(localize("ssn", "SocialNumber")), 1, row);
T.add(getText(eApplicant.getSSN()), 2, row);
row++;
T.add(getHeader(localize("apartment", "Apartment")), 1, row);
T.add(getText(getApartmentString(apartment)), 2, row);
row++;
T.add(getHeader(localize("valid_from", "Valid from")), 1, row);
T.add(getText(from.getLocaleDate(iwc.getCurrentLocale())), 2, row);
row++;
T.add(getHeader(localize("valid_to", "Valid to")), 1, row);
T.add(getText(to.getLocaleDate(iwc.getCurrentLocale())), 2, row);
row++;
T.add(getHeader(localize("status", "Status")), 1, row);
T.add(getText(getStatus(eContract.getStatus())), 2, row);
row++;
T.add(getHeader(localize("returned", "Returned")), 1, row);
java.sql.Timestamp retstamp = eContract.getReturnTime();
if (retstamp != null) {
IWTimestamp ret = new IWTimestamp(retstamp);
T.add(getText(ret.getLocaleDate(iwc.getCurrentLocale())), 2,
row);
}
row++;
T.add(getHeader(localize("delivered", "Delivered")), 1, row);
java.sql.Timestamp delstamp = eContract.getDeliverTime();
if (delstamp != null) {
IWTimestamp del = new IWTimestamp(delstamp);
T.add(getText(del.getLocaleDate(iwc.getCurrentLocale())), 2,
row);
} else {
if (canSave) {
IWTimestamp del = new IWTimestamp();
DateInput input = new DateInput(PARAM_DELIVERED_DATE);
input.setDate(del.getDate());
T.add(input, 2, row);
}
}
row++;
if (apartmentReturn) {
Card card = getNortekBusiness(iwc).getCard(eUser);
if (card != null && card.getIsValid()) {
T.add(getHeader(localize("laundry_card", "Invalidate laundry card")), 1, row);
CheckBox invalidateCard = new CheckBox(PARAM_INVALIDATE_LAUNDRY_CARD, "checked");
invalidateCard.setChecked(false);
T.add(invalidateCard, 2, row);
}
}
Form F = new Form();
F.add(T);
return F;
} catch (Exception ex) {
return new Text("");
}
}
private void doContract(IWContext iwc) throws RemoteException {
Integer id = Integer.valueOf(iwc.getParameter(PARAM_CONTARACT));
String invalidateCard = iwc.getParameter(PARAM_INVALIDATE_LAUNDRY_CARD);
if (iwc.isParameterSet(PARAM_TYPE)) {
String val = iwc.getParameter(PARAM_TYPE);
if (val.equals(TYPE_RETURN)) {
getContractService(iwc).returnKey(id, iwc.getCurrentUser());
if (invalidateCard != null && "checked".equals(invalidateCard)) {
try {
Contract contract = getContractService(iwc).getContractHome().findByPrimaryKey(id);
Card card = getNortekBusiness(iwc).getCard(contract.getUser());
card.setIsValid(false);
card.store();
} catch (FinderException e) {
}
}
} else if (val.equals(TYPE_DELIVER)) {
String from = iwc.getParameter(PARAM_DELIVERED_DATE);
IWTimestamp fromStamp = new IWTimestamp(from);
String addKeyCharge = iwc.getApplicationSettings().getProperty("AUTO_ADD_KEY_CHARGE", String.valueOf(false));
String accountKeyID = iwc.getApplicationSettings().getProperty("AUTO_ADD_KEY_CHARGE_ACCOUNT_KEY_ID", "-1");
String tariffGroupID = iwc.getApplicationSettings().getProperty("AUTO_ADD_KEY_CHARGE_TARIFF_GROUP_ID", "-1");
String finanaceCategoryID = iwc.getApplicationSettings().getProperty("AUTO_ADD_KEY_CHARGE_FINANCE_CATEGORY_ID", "-1");
String amount = iwc.getApplicationSettings().getProperty("AUTO_ADD_KEY_CHARGE_AMOUNT", "-1");
getContractService(iwc)
.deliverKey(id, fromStamp.getTimestamp(), Boolean.valueOf(addKeyCharge).booleanValue(), Integer.valueOf(accountKeyID), Integer.valueOf(tariffGroupID), Integer.valueOf(finanaceCategoryID), Double.valueOf(amount).doubleValue());
}
}
}
private String getApartmentString(Apartment A) {
StringBuffer S = new StringBuffer();
Floor F = A.getFloor();
Building B = F.getBuilding();
Complex C = B.getComplex();
S.append(A.getName());
S.append(" ");
S.append(F.getName());
S.append(" ");
S.append(B.getName());
S.append(" ");
S.append(C.getName());
return S.toString();
}
private String getStatus(String status) {
String r = "";
char c = status.charAt(0);
switch (c) {
case 'C':
r = localize("created", "Created");
break;
case 'P':
r = localize("printed", "Printed");
break;
case 'S':
r = localize("signed", "Signed");
break;
case 'R':
r = localize("rejected", "Rejected");
break;
case 'T':
r = localize("terminated", "Terminated");
break;
case 'E':
r = localize("ended", "Ended");
break;
}
return r;
}
public void main(IWContext iwc) throws RemoteException {
control(iwc);
}
private NortekBusiness getNortekBusiness(IWContext iwc) throws IBOLookupException {
NortekBusiness bus1 = (NortekBusiness) IBOLookup.getServiceInstance(
iwc, NortekBusiness.class);
return bus1;
}
}