/*
* $Id:$
*
* Copyright (C) 2002 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.allocation.presentation;
import is.idega.idegaweb.campus.block.application.data.WaitingList;
import is.idega.idegaweb.campus.block.application.data.WaitingListHome;
import is.idega.idegaweb.campus.data.SystemProperties;
import is.idega.idegaweb.campus.presentation.CampusWindow;
import java.util.Collection;
import com.idega.block.application.data.Applicant;
import com.idega.block.application.data.ApplicantHome;
import com.idega.core.user.data.User;
import com.idega.data.IDOLookup;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.DataTable;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
/**
* A window class for making it possible to move people up and down on a waiting
* list.
*
* @author <a href="mailto:palli@idega.is">Pall Helgason</a>
* @version 1.0
*/
public class WaitingListOrganizerWindow extends CampusWindow {
private static final String ACTION_CANCEL = "cancel";
private static final String ACTION_MOVE = "move";
private static final String MOVE_TO = "move_to";
//public static String COMPLEX_ID = "complex";
//public static String APARTMENT_TYPE_ID = "aprtType";
public static String SUBCATEGORY_ID = "subcategoryID";
public static String WL_ORDER = "order";
public static String WL_ID = "wlId";
public static String NUMBER_ON_LIST = "onlist";
public static String PRIORITY = "priority";
public static String MAX_LIST = "maxlist";
private boolean isAdmin;
private boolean isLoggedOn;
private SystemProperties SysProps = null;
private User eUser = null;
public static final String prmAdmin = "is_camp_isit";
public WaitingListOrganizerWindow() {
setWidth(300);
setHeight(300);
setResizable(true);
}
protected void control(IWContext iwc) {
if (isAdmin || isLoggedOn) {
if (iwc.isParameterSet(ACTION_MOVE)) {
doRenumberWaitingList(iwc);
setParentToReload();
close();
} else if (iwc.isParameterSet(ACTION_CANCEL)) {
close();
} else {
add(getRenumberTable(iwc));
}
} else
add(getHeader(localize("access_denied", "Access denied")));
}
protected boolean doRenumberWaitingList(IWContext iwc) {
//int complexId = Integer.parseInt(iwc.getParameter(COMPLEX_ID));
int subcategoryID = Integer.parseInt(iwc.getParameter(SUBCATEGORY_ID));
int id = Integer.parseInt(iwc.getParameter(WL_ID));
int moveTo = -1;
String priority = iwc.getParameter(PRIORITY);
try {
moveTo = Integer.parseInt(iwc.getParameter(MOVE_TO));
} catch (NumberFormatException e) {
e.printStackTrace();
}
if (moveTo > 0) {
try {
Collection L = getContractService(iwc).getWaitingListHome()
.findByApartmentSubcategory(subcategoryID);
WaitingList[] waitingList = (WaitingList[]) L
.toArray(new WaitingList[0]);
WaitingList item = ((WaitingListHome) IDOLookup
.getHome(WaitingList.class))
.findByPrimaryKey(new Integer(id));
if (L.size() > moveTo) {
WaitingList beforeEntry = waitingList[moveTo - 1];
item.setSamePriority(beforeEntry);
item.setOrder(beforeEntry.getOrder().intValue() - 1);
item.store();
} else {
WaitingList beforeEntry = waitingList[L.size() - 1];
item.setSamePriority(beforeEntry);
item.setOrder(beforeEntry.getOrder().intValue() + 1);
item.store();
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (priority != null) {
try {
WaitingList item = ((WaitingListHome) IDOLookup
.getHome(WaitingList.class))
.findByPrimaryKey(new Integer(id));
if ("A".equals(priority)) {
item.setPriorityLevelA();
} else if ("B".equals(priority)) {
item.setPriorityLevelB();
} else if ("C".equals(priority)) {
item.setPriorityLevelC();
} else if ("D".equals(priority)) {
item.setPriorityLevelD();
} else if ("E".equals(priority)) {
item.setPriorityLevelE();
}
item.store();
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
private DropdownMenu priorityDrop(String name, String selected) {
DropdownMenu drp = new DropdownMenu(name);
drp.addMenuElement("A", "A");
drp.addMenuElement("B", "B");
drp.addMenuElement("C", "C");
drp.addMenuElement("D", "D");
drp.addMenuElement("E", "E");
drp.setSelectedElement(selected);
return drp;
}
protected PresentationObject getRenumberTable(IWContext iwc) {
//int complexId = Integer.parseInt(iwc.getParameter(COMPLEX_ID));
//int aprtTypeId = Integer.parseInt(iwc.getParameter(APARTMENT_TYPE_ID));
int subcategoryID = Integer.parseInt(iwc.getParameter(SUBCATEGORY_ID));
int onList = Integer.parseInt(iwc.getParameter(NUMBER_ON_LIST));
int max = Integer.parseInt(iwc.getParameter(MAX_LIST));
int id = Integer.parseInt(iwc.getParameter(WL_ID));
Form form = new Form();
//form.maintainParameter(COMPLEX_ID);
//form.maintainParameter(APARTMENT_TYPE_ID);
form.maintainParameter(SUBCATEGORY_ID);
form.maintainParameter(WL_ID);
DataTable table = new DataTable();
table.setTitlesVertical(true);
table.add(getHeader(localize("name", "Name")), 1, 1);
table.add(getHeader(localize("no_on_list", "No. On list")), 1, 2);
table.add(getHeader(localize("list_count", "List count")), 1, 3);
table.add(getHeader(localize("move_to_no", "Move to No.")), 1, 4);
table.add(getHeader(localize("priority", "Priority")), 1, 5);
WaitingList item = null;
Applicant applicant = null;
String prioritySelected = "";
try {
item = ((WaitingListHome) IDOLookup.getHome(WaitingList.class))
.findByPrimaryKey(new Integer(id));
prioritySelected = item.getPriorityLevel();
applicant = ((ApplicantHome) IDOLookup.getHome(Applicant.class))
.findByPrimaryKey(item.getApplicantId());
} catch (Exception e) {
}
table.add(getText(applicant.getFullName()), 2, 1);
table.add(getText(String.valueOf(onList)), 2, 2);
table.add(getText(String.valueOf(max)), 2, 3);
TextInput input = new TextInput(MOVE_TO);
table.add(input, 2, 4);
DropdownMenu priorities = priorityDrop(PRIORITY, prioritySelected);
table.add(priorities, 2, 5);
table.addTitle(localize("move_person_on_waitinglist",
"Move person on waitinglist"));
SubmitButton ok = new SubmitButton(ACTION_MOVE, localize(ACTION_MOVE,
"Move"));
SubmitButton cancel = new SubmitButton(ACTION_CANCEL, localize(
ACTION_CANCEL, "Cancel"));
table.addButton(ok);
table.addButton(cancel);
form.add(table);
form.add(Text.getBreak());
form
.add(getHeader(localize("waitinglist_priority_will_be_upated",
"Priority level of will be changed to be the same as in the target area")));
return form;
}
public String getBundleIdentifier() {
return IW_BUNDLE_IDENTIFIER;
}
public void main(IWContext iwc) {
eUser = iwc.getCurrentUser();
isAdmin = iwc.isParameterSet(prmAdmin);
isLoggedOn = com.idega.core.accesscontrol.business.LoginBusinessBean
.isLoggedOn(iwc);
control(iwc);
}
}