/*
* $Id: CampusApplicationFormHelper.java,v 1.23.4.8 2007/07/05 11:09:22 palli Exp $
*
* Copyright (C) 2001 Idega hf. All Rights Reserved.
*
* This software is the proprietary information of Idega hf.
* Use is subject to license terms.
*
*/
package is.idega.idegaweb.campus.block.application.business;
import is.idega.idegaweb.campus.block.application.data.Applied;
import is.idega.idegaweb.campus.block.application.data.AppliedHome;
import is.idega.idegaweb.campus.block.application.data.CampusApplication;
import is.idega.idegaweb.campus.block.application.data.CampusApplicationHome;
import is.idega.idegaweb.campus.block.application.presentation.CampusApplicationForm;
import is.idega.idegaweb.campus.block.mailinglist.business.EntityHolder;
import is.idega.idegaweb.campus.block.mailinglist.business.LetterParser;
import is.idega.idegaweb.campus.block.mailinglist.business.MailingListService;
import is.idega.idegaweb.campus.business.CampusService;
import is.idega.idegaweb.campus.business.CampusSettings;
import is.idega.idegaweb.campus.presentation.CampusBlock;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.mail.MessagingException;
import com.idega.block.application.business.ApplicationFormHelper;
import com.idega.block.application.data.Applicant;
import com.idega.block.application.data.ApplicantHome;
import com.idega.block.application.data.Application;
import com.idega.block.application.data.ApplicationHome;
import com.idega.business.IBOLookup;
import com.idega.data.IDOLookup;
import com.idega.data.IDOLookupException;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.util.IWTimestamp;
import com.idega.util.SendMail;
/**
*
* @author <a href="mailto:palli@idega.is">Pall Helgason</a>
* @version 1.0
*/
public class CampusApplicationFormHelper extends ApplicationFormHelper {
private static final String PARAM_SUBCATEGORY3 = CampusApplicationForm.PARAM_SUBCATEGORY3;
private static final String PARAM_SUBCATEGORY2 = CampusApplicationForm.PARAM_SUBCATEGORY2;
private static final String PARAM_SUBCATEGORY1 = CampusApplicationForm.PARAM_SUBCATEGORY1;
/**
*
*/
public static void saveAppliedFor(IWContext iwc) {
String key1 = (String) iwc.getParameter(PARAM_SUBCATEGORY1);
String key2 = (String) iwc.getParameter(PARAM_SUBCATEGORY2);
String key3 = (String) iwc.getParameter(PARAM_SUBCATEGORY3);
Applied applied1 = null;
Applied applied2 = null;
Applied applied3 = null;
try {
applied1 = ((AppliedHome) IDOLookup.getHome(Applied.class))
.create();
int subCat = Integer.parseInt(key1);
applied1.setSubcategoryID(subCat);
applied1.setOrder(1);
if ((key2 != null) && (!key2.equalsIgnoreCase("-1"))) {
applied2 = ((AppliedHome) IDOLookup.getHome(Applied.class))
.create();
subCat = Integer.parseInt(key2);
applied2.setSubcategoryID(subCat);
applied2.setOrder(2);
}
if ((key3 != null) && (!key3.equalsIgnoreCase("-1"))) {
applied3 = ((AppliedHome) IDOLookup.getHome(Applied.class))
.create();
subCat = Integer.parseInt(key3);
applied3.setSubcategoryID(subCat);
applied3.setOrder(3);
}
iwc.setSessionAttribute("applied1", applied1);
if (applied2 != null)
iwc.setSessionAttribute("applied2", applied2);
if (applied3 != null)
iwc.setSessionAttribute("applied3", applied3);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
}
}
/**
*
*/
public static String saveDataToDB(IWContext iwc) {
Applicant applicant = (Applicant) iwc.getSessionAttribute("applicant");
Applicant spouse = (Applicant) iwc.getSessionAttribute("spouse");
Vector childs = (Vector) iwc.getSessionAttribute("childs");
Application application = (Application) iwc
.getSessionAttribute("application");
CampusApplication campusApplication = (CampusApplication) iwc
.getSessionAttribute("campusapplication");
Applied applied1 = (Applied) iwc.getSessionAttribute("applied1");
Applied applied2 = (Applied) iwc.getSessionAttribute("applied2");
Applied applied3 = (Applied) iwc.getSessionAttribute("applied3");
String cypher = "";
javax.transaction.TransactionManager t = com.idega.transaction.IdegaTransactionManager
.getInstance();
if (applicant != null) {
try {
t.begin();
applicant.store();
if (applicant.getChildCount() > 0) {
Iterator it = applicant.getChildren().iterator();
while (it.hasNext()) {
applicant.removeChild((Applicant)it.next());
}
}
applicant.addChild(applicant);
if (spouse != null) {
spouse.store();
applicant.addChild(spouse);
}
if (childs != null && childs.size() > 0) {
for (int i = 0; i < childs.size(); i++) {
Applicant child = (Applicant) childs.get(i);
child.store();
applicant.addChild(child);
}
}
application
.setApplicantId(((Integer) applicant.getPrimaryKey())
.intValue());
application.store();
campusApplication.setAppApplicationId(((Integer) application
.getPrimaryKey()).intValue());
campusApplication.store();
applied1.setApplicationId(new Integer(campusApplication
.getPrimaryKey().toString()));
applied1.store();
if (applied2 != null) {
applied2.setApplicationId(new Integer(campusApplication
.getPrimaryKey().toString()));
applied2.store();
}
if (applied3 != null) {
applied3.setApplicationId(new Integer(campusApplication
.getPrimaryKey().toString()));
applied3.store();
}
cypher = ReferenceNumberFinder.getInstance(iwc).lookup(
((Integer) application.getPrimaryKey()).intValue());
t.commit();
iwc.removeSessionAttribute("applicant");
iwc.removeSessionAttribute("spouse");
iwc.removeSessionAttribute("childs");
iwc.removeSessionAttribute("application");
iwc.removeSessionAttribute("campusapplication");
iwc.removeSessionAttribute("applied1");
iwc.removeSessionAttribute("applied2");
iwc.removeSessionAttribute("applied3");
iwc.removeSessionAttribute("aprtCat");
} catch (Exception e) {
try {
t.rollback();
} catch (javax.transaction.SystemException ex) {
ex.printStackTrace();
}
e.printStackTrace();
return null;
}
String e_mail = campusApplication.getEmail();
if (e_mail != null && applicant != null) {
if (e_mail.length() > 0) {
try {
MailingListService MailingListBusiness = (MailingListService) IBOLookup
.getServiceInstance(iwc, MailingListService.class);
MailingListBusiness.processMailEvent(new EntityHolder(
applicant, application, campusApplication, cypher), LetterParser.SUBMISSION);
} catch (RemoteException e1) {
e1.printStackTrace();
}
}
}
}
return cypher;
}
/**
*
*/
public static void saveCampusInformation(IWContext iwc) {
int studyBeginMon = 0;
int studyBeginYr = 0;
int studyEndMo = 0;
int studyEndYr = 0;
int spouseStudyBeginMo = 0;
int spouseStudyBeginYr = 0;
int spouseStudyEndMo = 0;
int spouseStudyEndYr = 0;
int currentResidence = 0;
int spouseOccupation = 0;
int schoolID = 0;
String faculty = iwc.getParameter("faculty");
String school = iwc.getParameter("school");
String studyTrack = iwc.getParameter("studyTrack");
// String resInfo = iwc.getParameter("resInfo");
String spouseName = iwc.getParameter("spouseName");
String spouseSSN = iwc.getParameter("spouseSSN");
String spouseSchool = iwc.getParameter("spouseSchool");
String spouseStudyTrack = iwc.getParameter("spouseStudyTrack");
String studyBegin = iwc.getParameter("studyBegin");
String studyEnd = iwc.getParameter("studyEnd");
String spouseStudyBegin = iwc.getParameter("spouseStudyBegin");
String spouseStudyEnd = iwc.getParameter("spouseStudyEnd");
// String children = iwc.getParameter("children");
String wantHousingFrom = iwc.getParameter("wantHousingFrom");
String waitingList = iwc.getParameter("waitingList");
String furniture = iwc.getParameter("furniture");
String contact = iwc.getParameter("contact");
String email = iwc.getParameter("email");
String info = iwc.getParameter("extra_info");
CampusApplication application = null;
Applicant spouse = null;
try {
application = ((CampusApplicationHome) IDOLookup
.getHome(CampusApplication.class)).create();
spouse = ((ApplicantHome) IDOLookup.getHome(Applicant.class))
.create();
} catch (IDOLookupException e1) {
e1.printStackTrace();
} catch (CreateException e1) {
e1.printStackTrace();
}
Vector childs = new Vector();
try {
currentResidence = Integer.parseInt(iwc
.getParameter("currentResidence"));
} catch (java.lang.NumberFormatException e) {
}
try {
spouseOccupation = Integer.parseInt(iwc
.getParameter("spouseOccupation"));
} catch (java.lang.NumberFormatException e) {
}
try {
schoolID = new Integer(school).intValue();
} catch (NumberFormatException e) {
}
if (studyBegin != null) {
try {
IWTimestamp stamp = new IWTimestamp(studyBegin);
studyBeginMon = stamp.getMonth();
studyBeginYr = stamp.getYear();
} catch (Exception ex) {
}
}
if (studyEnd != null) {
try {
IWTimestamp stamp = new IWTimestamp(studyEnd);
studyEndMo = stamp.getMonth();
studyEndYr = stamp.getYear();
} catch (Exception ex) {
}
}
if (spouseStudyBegin != null) {
try {
IWTimestamp stamp = new IWTimestamp(spouseStudyBegin);
spouseStudyBeginMo = stamp.getMonth();
spouseStudyBeginYr = stamp.getYear();
} catch (Exception ex) {
}
}
if (spouseStudyEnd != null) {
try {
IWTimestamp stamp = new IWTimestamp(spouseStudyEnd);
spouseStudyEndMo = stamp.getMonth();
spouseStudyEndYr = stamp.getYear();
} catch (Exception ex) {
}
}
application.setCurrentResidenceId(currentResidence);
application.setSpouseOccupationId(spouseOccupation);
application.setStudyBeginMonth(studyBeginMon);
application.setStudyBeginYear(studyBeginYr);
application.setStudyEndMonth(studyEndMo);
application.setStudyEndYear(studyEndYr);
if (faculty != null) {
application.setFaculty(faculty);
}
if (school != null) {
application.setSchoolID(schoolID);
}
application.setStudyTrack(studyTrack);
application.setSpouseName(spouseName);
application.setSpouseSSN(spouseSSN);
application.setSpouseSchool(spouseSchool);
application.setSpouseStudyTrack(spouseStudyTrack);
application.setSpouseStudyBeginMonth(spouseStudyBeginMo);
application.setSpouseStudyBeginYear(spouseStudyBeginYr);
application.setSpouseStudyEndMonth(spouseStudyEndMo);
application.setSpouseStudyEndYear(spouseStudyEndYr);
IWTimestamp t = new IWTimestamp(wantHousingFrom);
System.out.println("want housing from = " + t.toString());
application.setHousingFrom(t.getDate());
if (waitingList == null)
application.setOnWaitinglist(false);
else
application.setOnWaitinglist(true);
if (furniture == null)
application.setWantFurniture(false);
else
application.setWantFurniture(true);
application.setContactPhone(contact);
application.setOtherInfo(info);
application.setEmail(email);
// spouse part
if (spouseName.length() > 0) {
spouse.setFullName(spouseName);
spouse.setSSN(spouseSSN);
spouse.setStatus("P");
iwc.setSessionAttribute("spouse", spouse);
}
// Children part
if (iwc.isParameterSet("children_count")) {
int count = Integer.parseInt(iwc.getParameter("children_count"));
String name, birth;
for (int i = 0; i < count; i++) {
try {
Applicant child = ((ApplicantHome) IDOLookup
.getHome(Applicant.class)).create();
name = iwc.getParameter("childname" + i);
birth = iwc.getParameter("childbirth" + i);
if (name.length() > 0) {
child.setFullName(name);
child.setSSN(birth);
child.setStatus("C");
childs.add(child);
}
} catch (IDOLookupException e2) {
e2.printStackTrace();
} catch (CreateException e2) {
e2.printStackTrace();
}
}
iwc.setSessionAttribute("childs", childs);
}
iwc.setSessionAttribute("campusapplication", application);
}
/**
*
*/
public static void saveSubject(IWContext iwc) {
String subject = (String) iwc.getParameter("subject");
String aprtCat = (String) iwc.getParameter(CampusApplicationForm.PARAM_CATEGORY);
try {
Application application = ((ApplicationHome) IDOLookup
.getHome(Application.class)).create();
application.setSubjectId(Integer.parseInt(subject));
application.setSubmitted(IWTimestamp.getTimestampRightNow());
application.setStatusSubmitted();
application.setStatusChanged(IWTimestamp.getTimestampRightNow());
iwc.setSessionAttribute("application", application);
iwc.setSessionAttribute("aprtCat", aprtCat);
} catch (IDOLookupException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
}
}
public static void sendApplicationConfirmationReminderEmail(IWContext iwc) {
Map map = CampusApplicationFinder
.getEmailAndApplicationIdForApprovedApplications();
Set keys = map.keySet();
Iterator it = keys.iterator();
IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(
CampusBlock.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc);
String subject = iwrb.getLocalizedString("REMINDER_MAIL_SUBJECT",
"Reminder mail subject");
String body = iwrb.getLocalizedString("REMINDER_MAIL_BODY",
"Reminder mail body [ref_num]");
ReferenceNumberFinder instance = ReferenceNumberFinder.getInstance(iwc);
CampusSettings settings = null;
try {
settings = getCampusService(iwc).getCampusSettings();
} catch (RemoteException e1) {
e1.printStackTrace();
}
if (settings != null && settings.getSendEventMail()) {
while (it.hasNext()) {
Integer id = (Integer) it.next();
String email = (String) map.get(id);
String cypher = instance.lookup(id.intValue());
StringBuffer finalText = new StringBuffer();
StringTokenizer st = new StringTokenizer(body, "[]");
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.equals("ref_num")) {
finalText.append(cypher);
} else {
finalText.append(token);
}
}
try {
SendMail.send(settings.getAdminEmail(), email, null,
"palli@idega.is", settings.getSmtpServer(),
subject, finalText.toString());
// SendMail.send(settings.getAdminEmail(), "palli@idega.is", null,
// "palli@idega.is", settings.getSmtpServer(),
// subject, finalText.toString());
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}
public static CampusService getCampusService(IWContext iwc)
throws RemoteException {
return (CampusService) IBOLookup.getServiceInstance(iwc,
CampusService.class);
}
}