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.data.SystemProperties; import is.idega.idegaweb.campus.presentation.CampusProperties; import is.idega.idegaweb.campus.presentation.CampusWindow; import is.idega.idegaweb.campus.presentation.Edit; 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.core.user.business.UserBusiness; import com.idega.core.user.data.User; import com.idega.data.IDOLookup; import com.idega.data.IDOLookupException; import com.idega.data.IDOStoreException; import com.idega.presentation.IWContext; import com.idega.presentation.PresentationObject; import com.idega.presentation.Table; 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.presentation.ui.TextInput; import com.idega.user.data.Group; 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 ContractResignWindow extends CampusWindow { private static final String PARAM_MOVING_DATE = "mov_date"; private static final String PARAM_RESIGN_INFO = "resign_info"; private static final String PARAM_USER = "us_id"; private static final String PARAM_CONTRACT = "contract_id"; private static final String PARAM_NEW_PHONE = "new_phone"; private static final String PARAM_NEW_ZIP = "new_zip"; private static final String PARAM_NEW_ADDRESS = "new_address"; private static final String PARAM_APPLICANT = "applicant_id"; private static final String PARAM_DATE_SYNC = "date_sync"; public static final String PARAM_IS_ADMIN = "is_camp_isit"; private static final String PARAM_NEW_EMAIL = "new_email"; private boolean isAdmin; private boolean isLoggedOn; private String login = null; private String passwd = null; private boolean print = false; private SystemProperties SysProps = null; private Group eGroup = null; private User eUser = null; /* * Blue top colour # 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 ContractResignWindow() { setWidth(530); setHeight(370); setResizable(true); } protected void control(IWContext iwc) { // debugParameters(iwc); if (isAdmin || isLoggedOn) { if (iwc .getApplicationAttribute(is.idega.idegaweb.campus.data.SystemPropertiesBMPBean .getEntityTableName()) != null) { SysProps = (SystemProperties) iwc .getApplicationAttribute(is.idega.idegaweb.campus.data.SystemPropertiesBMPBean .getEntityTableName()); } if (iwc.isParameterSet("save") || iwc.isParameterSet("save.x")) { doResignContract(iwc); } add(getSignatureTable(iwc)); } else add(getErrorText(localize("access_denied", "Access denied"))); // add(String.valueOf(iSubjectId)); } 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_CONTRACT)); // Table T = new Table(2,8); DataTable T = new DataTable(); T.setWidth("100%"); T.addTitle(localize("contract_resign", "Contract resign")); T.addButton(new CloseButton(getResourceBundle().getImage("close.gif"))); T.addButton(new SubmitButton(getResourceBundle().getImage("save.gif"), "save")); int row = 1; int col = 1; try { if (iContractId > 0) { Contract eContract = ((ContractHome) com.idega.data.IDOLookup .getHome(Contract.class)).findByPrimaryKey(new Integer( iContractId)); Applicant eApplicant = eContract.getApplicant(); User user = eContract.getUser(); if (user != null) { boolean isContractUser = user.getPrimaryKey().toString() .equals(eUser.getPrimaryKey().toString()); T.add(new HiddenInput(PARAM_CONTRACT, (eContract .getPrimaryKey().toString())), 1, row); T.add(new HiddenInput(PARAM_APPLICANT, eContract .getApplicantId().toString()), 1, row); T.add(new HiddenInput(PARAM_USER, String.valueOf(eContract .getUserId().intValue())), 1, row); if (iwc.isParameterSet(PARAM_IS_ADMIN)) { T.add(new HiddenInput(PARAM_IS_ADMIN, "true")); } T.add(Edit.formatText(localize("name", "Name")), 1, row); T.add(Edit.formatText(user.getName()), 2, row); row++; T.add(Edit.formatText(localize("ssn", "SocialNumber")), 1, row); T.add(Edit.formatText(eApplicant.getSSN()), 2, row); row++; T.add(Edit.formatText(localize("apartment", "Apartment")), 1, row); T.add(Edit.formatText(eContract.getApartment().getName()), 2, row); row++; T.add( Edit .formatText(localize("valid_from", "Valid from")), 1, row); T.add(Edit.formatText(new IWTimestamp(eContract .getValidFrom()).getLocaleDate(iwc .getCurrentLocale())), 2, row); row++; T.add(Edit.formatText(localize("valid_to", "Valid to")), 1, row); T.add(Edit.formatText(new IWTimestamp(eContract .getValidTo()) .getLocaleDate(iwc.getCurrentLocale())), 2, row); row++; T.add( Edit.formatText(localize("resign.moving_date", "Moving date")), 1, row); // IWTimestamp movdate = eContract.getMovingDate()!=null?new // IWTimestamp(eContract.getMovingDate()):null; DateInput movDate = new DateInput(PARAM_MOVING_DATE, true); IWTimestamp moving = IWTimestamp.RightNow(); // int termofnotice = 1; int termofnoticeMonths = 1; if (SysProps != null) { termofnoticeMonths = (int) SysProps .getTermOfNoticeMonths(); } moving = this.addMonthsPlusCurrentMonth(moving, termofnoticeMonths); if (moving.isLaterThan(new IWTimestamp(eContract .getValidTo()))) { movDate.setDate(eContract.getValidTo()); } else { movDate.setDate(moving.getDate()); } IWTimestamp now = IWTimestamp.RightNow(); now.addMonths(1); if (now .isLaterThan(new IWTimestamp(eContract.getValidTo()))) { now = new IWTimestamp(eContract.getValidTo()); } if (!isAdmin) { movDate .setEarliestPossibleDate( now.getDate(), localize("must_select_one_month_ahead", "You must select a date at least one month later then today")); } movDate.setStyleAttribute("style", Edit.styleAttribute); if (isAdmin || isContractUser) { T.add(movDate, 2, row); } else if (moving != null) { T.add(Edit.formatText(moving.getLocaleDate(iwc .getCurrentLocale())), 2, row); } row++; boolean DATESYNC = getBundle().getProperty( CampusProperties.PROP_CONTRACT_DATE_SYNC, "false") .equals("true"); if (isAdmin) { CheckBox dateSync = new CheckBox(PARAM_DATE_SYNC, "true"); dateSync.setChecked(DATESYNC); T.add(Edit.formatText(localize("update_valid_to", "Update valid to")), 1, row); T.add(dateSync, 2, row); row++; } TextInput newAddress = new TextInput(PARAM_NEW_ADDRESS); newAddress.setAsNotEmpty(localize("err_new_address", "You must enter a new address")); TextInput newZip = new TextInput(PARAM_NEW_ZIP); newZip.setAsNotEmpty(localize("err_new_zip", "You must enter a new zip code")); TextInput newPhone = new TextInput(PARAM_NEW_PHONE); newPhone.setAsNotEmpty(localize("err_new_phone", "You must enter a new phone")); TextInput newEmail = new TextInput(PARAM_NEW_EMAIL); newEmail.setAsNotEmpty(localize("err_new_email", "You must enter your current email")); T.add(Edit.formatText(localize(PARAM_NEW_ADDRESS, "New address")), 1, row); T.add(newAddress, 2, row++); T.add(Edit.formatText(localize(PARAM_NEW_ZIP, "New zip")), 1, row); T.add(newZip, 2, row++); T.add( Edit.formatText(localize(PARAM_NEW_PHONE, "New phone")), 1, row); T.add(newPhone, 2, row++); T.add( Edit.formatText(localize(PARAM_NEW_EMAIL, "Current email")), 1, row); T.add(newEmail, 2, row++); } } } catch (Exception ex) { } Form F = new Form(); F.add(T); return F; } private IWTimestamp addMonthsPlusCurrentMonth(IWTimestamp timestamp, int monthsToAdd) { int month = timestamp.getMonth(); timestamp.setDay(1); if (month == 12) { timestamp.setMonth(1); int year = timestamp.getYear(); timestamp.setYear(year++); } else { timestamp.setMonth(month++); } timestamp.addMonths(monthsToAdd); return timestamp; } private void doResignContract(IWContext iwc) { Integer id = Integer.valueOf(iwc.getParameter(PARAM_CONTRACT)); int usid = Integer.parseInt(iwc.getParameter(PARAM_USER)); String sInfo = iwc.getParameter(PARAM_RESIGN_INFO); if (sInfo == null) sInfo = ""; String sMovDate = iwc.getParameter(PARAM_MOVING_DATE); IWTimestamp movDate = null; if (sMovDate != null && sMovDate.length() == 10) movDate = new IWTimestamp(sMovDate); boolean datesync = iwc.getParameter(PARAM_DATE_SYNC) != null; doChangeApplicantAddress(iwc); try { if (isAdmin) { System.out.println("is admin"); getContractService(iwc).endContract(id, movDate, sInfo, datesync); } else if (eUser != null && String.valueOf(usid).equals( eUser.getPrimaryKey().toString())) { System.out.println("is other user"); boolean deleteContinuationContracts = iwc.getApplicationSettings().getBoolean("DELETE_CONT_CONTRACTS", false); String continuationContractsSubjectID = iwc.getApplicationSettings().getProperty("CONT_CONTR_SUBJECT_ID", "102"); getContractService(iwc).resignContract(id, movDate, sInfo, datesync, deleteContinuationContracts, continuationContractsSubjectID); } } catch (RemoteException e) { e.printStackTrace(); } setParentToReload(); close(); } private void doChangeApplicantAddress(IWContext iwc) { try { if (iwc.isParameterSet(PARAM_APPLICANT)) { Integer applicantID = Integer.valueOf(iwc .getParameter(PARAM_APPLICANT)); Applicant applicant = ((ApplicantHome) IDOLookup .getHome(Applicant.class)) .findByPrimaryKey(applicantID); if (iwc.isParameterSet(PARAM_NEW_ADDRESS)) { applicant.setResignationAddress(iwc.getParameter(PARAM_NEW_ADDRESS)); } if (iwc.isParameterSet(PARAM_NEW_ZIP)) { applicant.setResignationPO(iwc.getParameter(PARAM_NEW_ZIP)); } if (iwc.isParameterSet(PARAM_NEW_PHONE)) { applicant.setResignationPhone(iwc.getParameter(PARAM_NEW_PHONE)); } if (iwc.isParameterSet(PARAM_NEW_EMAIL)) { applicant.setResignationEmail(iwc.getParameter(PARAM_NEW_EMAIL)); } applicant.store(); } } catch (NumberFormatException e) { e.printStackTrace(); } catch (IDOLookupException e) { e.printStackTrace(); } catch (IDOStoreException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } } private void doAddEmail(int iUserId, IWContext iwc) { String sEmail = iwc.getParameter("new_email"); UserBusiness.addNewUserEmail(iUserId, sEmail); } private PresentationObject getApartmentTable(Apartment A) { Table T = new Table(); Floor F = A.getFloor(); Building B = F.getBuilding(); Complex C = B.getComplex(); T.add(Edit.formatText(A.getName()), 1, 1); T.add(Edit.formatText(F.getName()), 2, 1); T.add(Edit.formatText(B.getName()), 3, 1); T.add(Edit.formatText(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 void main(IWContext iwc) throws Exception { eUser = iwc.getCurrentUser(); isAdmin = iwc.isParameterSet(PARAM_IS_ADMIN); isLoggedOn = com.idega.core.accesscontrol.business.LoginBusinessBean .isLoggedOn(iwc); control(iwc); } }