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.business.CampusSettings;
import is.idega.idegaweb.campus.presentation.CampusWindow;
import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Iterator;
import javax.ejb.EJBException;
import javax.ejb.FinderException;
import com.idega.block.application.data.Applicant;
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.block.finance.business.FinanceService;
import com.idega.block.finance.data.Account;
import com.idega.core.accesscontrol.business.LoginDBHandler;
import com.idega.core.accesscontrol.data.LoginTable;
import com.idega.core.contact.data.Email;
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.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.PrintButton;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.user.data.Group;
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 ContractSignWindow extends CampusWindow {
private boolean isAdmin;
private String login = null;
private String passwd = null;
private boolean print = false;
private Group eGroup = null;
public static final String prmAdmin = "is_camp_csat";
private FinanceService finServ = null;
/*
* Bl�r litur � topp # 27324B Hv�tur litur fyrir ne�an �a� # FFFFFF Lj�sbl�r
* litur � t�flu # ECEEF0 Auka litur �rl�ti� dekkri (� lagi a� nota l�ka) #
* CBCFD3
*/
public ContractSignWindow() {
// setResizable(true);
}
protected void control(IWContext iwc) throws java.rmi.RemoteException {
// debugParameters(iwc);
finServ = getFinanceService(iwc);
// permissons !!
if (iwc.isParameterSet("save") || iwc.isParameterSet("save.x")) {
doSignContract(iwc);
setParentToReload();
// this.getParentPage().
}
add(getSignatureTable(iwc));
}
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)
throws java.rmi.RemoteException {
Integer iContractId = Integer.valueOf(iwc.getParameter("signed_id"));
try {
ContractHome cHome = getContractService(iwc).getContractHome();
Contract contract = cHome.findByPrimaryKey(iContractId);
Collection contracts = cHome.findByApartmentAndRented(contract
.getApartmentId(), Boolean.TRUE);
User user = contract.getUser();
Applicant applicant = contract.getApplicant();
IWTimestamp from = new IWTimestamp(contract.getValidFrom());
IWTimestamp to = new IWTimestamp(contract.getValidTo());
Collection emails = user.getEmails();
Collection financeAccounts = null;
Collection phoneAccounts = null;
try {
financeAccounts = finServ.getAccountHome()
.findAllByUserIdAndType(
contract.getUserId().intValue(),
finServ.getAccountTypeFinance());
phoneAccounts = finServ.getAccountHome()
.findAllByUserIdAndType(
contract.getUserId().intValue(),
finServ.getAccountTypePhone());
} catch (RemoteException e1) {
e1.printStackTrace();
} catch (FinderException e1) {
e1.printStackTrace();
}
CampusSettings settings = getCampusSettings(iwc);
if (settings != null) {
try {
eGroup = getUserService(iwc).getGroupHome()
.findByPrimaryKey(settings.getTenantGroupID());
} catch (RemoteException e2) {
e2.printStackTrace();
} catch (FinderException e2) {
e2.printStackTrace();
}
}
// TODO use userservice to lookup login name
LoginTable loginTable = LoginDBHandler.getUserLogin(((Integer) user
.getPrimaryKey()).intValue());
DataTable T = new DataTable();
T.setWidth("100%");
T.addTitle(localize("contract_signing", "Contract signing"));
T.addButton(new CloseButton(getResourceBundle().getImage(
"close.gif")));
T.addButton(new SubmitButton(getResourceBundle().getImage(
"save.gif"), "save"));
SubmitButton save = new SubmitButton("save", localize("save",
"Save"));
SubmitButton signed = new SubmitButton("sign", localize("signed",
"Signed"));
CloseButton close = new CloseButton(localize("close", "Close"));
PrintButton PB = new PrintButton(localize("print", "Print"));
TextInput emailInput = new TextInput("new_email");
emailInput.setAsEmail(localize("warning_illlegal_email",
"Please enter a legal email address"));
CheckBox accountCheck = new CheckBox("new_fin_account", "true");
accountCheck.setChecked(true);
CheckBox phoneAccountCheck = new CheckBox("new_phone_account",
"true");
phoneAccountCheck.setChecked(true);
CheckBox loginCheck = new CheckBox("new_login", "true");
loginCheck.setChecked(true);
int row = 1;
HiddenInput HI = new HiddenInput("signed_id", contract
.getPrimaryKey().toString());
T.add(HI, 1, row);
if (iwc.isParameterSet(prmAdmin)) {
T.add(new HiddenInput(prmAdmin, "true"));
}
T.add(getHeader(localize("name", "Name")), 1, row);
T.add(getText(applicant.getFullName()), 2, row);
row++;
T.add(getHeader(localize("ssn", "SocialNumber")), 1, row);
T.add(getText(applicant.getSSN()), 2, row);
row++;
T.add(getHeader(localize("apartment", "Apartment")), 1, row);
T.add(getText(getApartmentString(contract.getApartment())), 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++;
boolean canSign = true;
Integer con_id = new Integer(-1);
if (contracts != null && !contracts.isEmpty()) {
Contract C = (Contract) contracts.iterator().next();
con_id = ((Integer) C.getPrimaryKey());
if (con_id.intValue() != ((Integer) contract.getPrimaryKey())
.intValue())
canSign = false;
}
T.add(getHeader(localize("email", "Email")), 1, row);
if (emails != null) {
// T.add(getText(
// ((Email)lEmails.get(0)).getEmailAddress()),2,row);
int pos = emails.size() - 1;
Email email = null;
for (Iterator iter = emails.iterator(); iter.hasNext();) {
email = (Email) iter.next();
}
if (email != null)
emailInput.setContent(email.getEmailAddress());
T.add(emailInput, 2, row);
} else {
T.add(emailInput, 2, row);
}
row++;
if (eGroup != null) {
HiddenInput Hgroup = new HiddenInput("user_group", eGroup
.getPrimaryKey().toString());
T.add(Hgroup);
if (financeAccounts.isEmpty()) {
T.add(accountCheck, 2, row);
T.add(getHeader(localize("fin_account",
"New finance account")), 2, row);
} else {
int len = financeAccounts.size();
for (Iterator iter = financeAccounts.iterator(); iter
.hasNext();) {
T.add(getHeader(localize("fin_account",
"Finance account")), 1, row);
T.add(getText(((Account) iter.next()).getName() + " "),
2, row);
}
}
row++;
if (phoneAccounts.isEmpty()) {
T.add(phoneAccountCheck, 2, row);
T.add(getHeader(localize("phone_account",
"New phone account")), 2, row);
} else {
int len = phoneAccounts.size();
for (Iterator iter = phoneAccounts.iterator(); iter
.hasNext();) {
T.add(getHeader(localize("phone_account",
"Phone account")), 1, row);
T.add(getText(((Account) iter.next()).getName() + " "),
2, row);
}
}
row++;
if (loginTable != null) {
T.add(getHeader(localize("login", "Login")), 1, row);
T.add(getText(loginTable.getUserLogin()), 2, row);
row++;
T.add(getHeader(localize("passwd", "Passwd")), 1, row);
if (passwd != null)
T.add(getText(passwd), 2, row++);
} else {
T.add(loginCheck, 2, row);
T
.add(getHeader(localize("new_login", "New login")),
2, row);
}
row++;
/*
* if(eContract.getStatus().equalsIgnoreCase(eContract.statusSigned
* )) T.add(save,2,row); else T.add(signed,2,row); if(print){
* T.add(PB,2,row); } T.add(close,2,row);
*/
} else {
T.add(getHeader(localize("sys_props_error",
"System property error")), 2, row++);
T.add(
getHeader(localize("no_default_group",
"No default group")), 2, row++);
}
if (!canSign) {
row++;
Text msg = getHeader(localize("contract_conflict",
"Apartment is still in rent"));
msg.setFontColor("#FF0000");
T.add(msg, 2, row);
// T.add(CampusContracts.getReSignLink(iwb.getImage("/scissors.gif"),con_id),2,row);
}
Form F = new Form();
F.add(T);
return F;
} catch (EJBException e) {
e.printStackTrace();
} catch (FinderException e) {
e.printStackTrace();
}
return null;
}
private void doSignContract(IWContext iwc) {
Integer id = Integer.valueOf(iwc.getParameter("signed_id"));
String sEmail = iwc.getParameter("new_email");
String sSendMail = iwc.getParameter("send_mail");
String sFinAccount = iwc.getParameter("new_fin_account");
String sPhoneAccount = iwc.getParameter("new_phone_account");
String sCreateLogin = iwc.getParameter("new_login");
String sUserGroup = iwc.getParameter("user_group");
String sSigned = iwc.getParameter("sign");
Integer iGroupId = sUserGroup != null ? Integer.valueOf(sUserGroup)
: null;
boolean sendMail = sSendMail != null ? true : false;
sendMail = true;
boolean newAccount = sFinAccount != null ? true : false;
boolean newPhoneAccount = sPhoneAccount != null ? true : false;
boolean createLogin = sCreateLogin != null ? true : false;
try {
passwd = getContractService(iwc).signContract(id, iGroupId,
new Integer(1),
getCampusSettings(iwc).getFinanceCategoryID(), sEmail,
sendMail, newAccount, newPhoneAccount, createLogin, false,
getResourceBundle(), login, passwd);
} catch (RemoteException e) {
e.printStackTrace();
}
if (login != null && passwd != null)
print = true;
else
print = false;
// add(passwd);
}
private void doAddEmail(int iUserId, IWContext iwc) {
String sEmail = iwc.getParameter("new_email");
try {
getUserService(iwc).addNewUserEmail(iUserId, sEmail);
} catch (RemoteException e) {
e.printStackTrace();
}
}
private PresentationObject getApartmentTable(Apartment A) {
Table T = new Table();
Floor F = A.getFloor();
Building B = F.getBuilding();
Complex C = B.getComplex();
T.add(getText(A.getName()), 1, 1);
T.add(getText(F.getName()), 2, 1);
T.add(getText(B.getName()), 3, 1);
T.add(getText(C.getName()), 4, 1);
return T;
}
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();
}
public FinanceService getFinanceService(IWContext iwc)
throws RemoteException {
return (FinanceService) IDOLookup.getServiceInstance(iwc,
FinanceService.class);
}
public void main(IWContext iwc) throws java.rmi.RemoteException {
// isStaff = com.idega.core.accesscontrol.business.AccessControl
isAdmin = iwc.isParameterSet(prmAdmin);
control(iwc);
}
}