package is.idega.idegaweb.travel.presentation;
import is.idega.idegaweb.travel.business.TravelStockroomBusiness;
import java.rmi.RemoteException;
import com.idega.block.trade.stockroom.data.PriceCategory;
import com.idega.block.trade.stockroom.data.PriceCategoryBMPBean;
import com.idega.block.trade.stockroom.data.PriceCategoryHome;
import com.idega.block.trade.stockroom.data.Supplier;
import com.idega.data.IDOLookup;
import com.idega.idegaweb.IWResourceBundle;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.HiddenInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
/**
* Title: idegaWeb TravelBooking
* Description:
* Copyright: Copyright (c) 2001
* Company: idega
* @author <a href="mailto:gimmi@idega.is">Grimur Jonsson</a>
* @version 1.0
*/
public class PriceCategoryDesigner extends TravelManager {
private IWResourceBundle iwrb;
private Supplier supplier;
private TravelStockroomBusiness tsb;
private static String parameterSavePriceCategories = "p_sv_pcs";
private static String parameterPriceCategoryId = "p_pr_cId";
private String parameterMiscellaneousServices = "p_mc_sr";
private static String sAction = "a_pcd";
private boolean miscellaneousServices = false;
public PriceCategoryDesigner(IWContext iwc) throws Exception {
super.main(iwc);
iwrb = super.getResourceBundle();
supplier = super.getSupplier();
tsb = getTravelStockroomBusiness(iwc);
}
public void handleInsert(IWContext iwc) {
String action = iwc.getParameter(sAction);
if (action != null) {
if (action.equals(parameterSavePriceCategories)) {
savePriceCategories(iwc);
}
}
}
public Form getPriceCategoriesForm(int supplierId) throws RemoteException{
int extraRows = 3;
Form form = new Form();
Table table = new Table();
form.add(table);
table.setColor(super.WHITE);
table.setCellspacing(1);
PriceCategory[] categories = {};
if (this.miscellaneousServices) {
categories = tsb.getMiscellaneousServices(supplierId);
}else {
categories = tsb.getPriceCategories(supplierId);
}
Text nameTxt = (Text) theText.clone();
nameTxt.setFontColor(super.WHITE);
nameTxt.setBold();
nameTxt.setText(iwrb.getLocalizedString("travel.name","Name"));
Text onlineTxt = (Text) theText.clone();
onlineTxt.setFontColor(super.WHITE);
onlineTxt.setBold();
onlineTxt.setText(iwrb.getLocalizedString("travel.visible","Visible"));
Text typeTxt = (Text) theText.clone();
typeTxt.setFontColor(super.WHITE);
typeTxt.setBold();
typeTxt.setText(iwrb.getLocalizedString("travel.type","Type"));
Text discOfTxt = (Text) theText.clone();
discOfTxt.setFontColor(super.WHITE);
discOfTxt.setBold();
discOfTxt.setText(iwrb.getLocalizedString("travel.discount_of","Discount of"));
Text deleteTxt = (Text) theText.clone();
deleteTxt.setFontColor(super.WHITE);
deleteTxt.setBold();
deleteTxt.setText(iwrb.getLocalizedString("travel.delete","Delete"));
int row = 1;
int counter = 0;
table.add(nameTxt,2,row);
table.add(onlineTxt,3,row);
if (this.miscellaneousServices) {
table.mergeCells(3, row, 5, row);
}else {
table.add(typeTxt,4,row);
table.add(discOfTxt,5,row);
}
table.add(deleteTxt,6,row);
table.setRowColor(row,super.backgroundColor);
Text numberTxt;
TextInput nameInp;
// BooleanInput online;
// DropdownMenu online = getVisibilityDropdown();
// DropdownMenu ddType = getTypeDropdown();
// DropdownMenu ddDisc = getDiscountDropdown(categories);
CheckBox delete;
for (int i = 0; i < categories.length; i++) {
++counter;
++row;
numberTxt = (Text) super.smallText.clone();
numberTxt.setFontColor(super.BLACK);
numberTxt.setText(Integer.toString(counter));
nameInp = new TextInput("priceCategoryName");
nameInp.setContent(categories[i].getName());
DropdownMenu online = getVisibilityDropdown();
online.setSelectedElement(categories[i].getVisibility());
DropdownMenu ddVis = (DropdownMenu) online.clone();
ddVis.setSelectedElement(categories[i].getVisibility());
DropdownMenu ddOne = getTypeDropdown();
ddOne.setSelectedElement(categories[i].getType());
DropdownMenu ddTwo = getDiscountDropdown(categories);
ddTwo.setSelectedElement(Integer.toString(categories[i].getParentId()));
delete = new CheckBox("priceCategoryToDelete_"+categories[i].getID());
table.add(new HiddenInput(this.parameterPriceCategoryId,Integer.toString(categories[i].getID())));
table.add(numberTxt,1,row);
table.add(nameInp,2,row);
table.add(ddVis,3,row);
if ( this.miscellaneousServices ) {
table.add(new HiddenInput(ddOne.getName(), com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE), 3, row);
table.add(new HiddenInput(ddTwo.getName(), "-1"), 3, row);
table.mergeCells(3, row, 5 ,row);
}else {
table.add(ddOne,4,row);
table.add(ddTwo,5,row);
}
table.add(delete,6,row);
table.setRowColor(row,super.GRAY);
}
for (int i = 0; i < extraRows; i++) {
++counter;
++row;
numberTxt = (Text) super.smallText.clone();
numberTxt.setFontColor(super.BLACK);
numberTxt.setText(Integer.toString(counter));
nameInp = new TextInput("priceCategoryName");
// online = new BooleanInput("priceCategoryOnline");
//ddVis = new DropdownMenu("priceCategoryVisible");
// ddVis.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE, iwrb.getLocalizedString("travel.web_only","Web only"));
// ddVis.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_PUBLIC, iwrb.getLocalizedString("travel.online_only","Online only"));
// ddVis.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_BOTH_PRIVATE_AND_PUBLIC, iwrb.getLocalizedString("travel.everywhere","Everywhere"));
DropdownMenu ddVis = getVisibilityDropdown();
ddVis.setSelectedElement(Integer.toString(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE));
DropdownMenu ddOne = getTypeDropdown();
ddOne.setSelectedElement(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE);
DropdownMenu ddTwo = getDiscountDropdown(categories);
ddTwo.setSelectedElement(-1);
table.add(new HiddenInput(this.parameterPriceCategoryId,"-1"));
table.add(numberTxt,1,row);
table.add(nameInp,2,row);
/* table.add(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE+" / "+ddVis.getSelectedElementValue(),3,row);
table.add(ddVis,3,row);
if ( this.miscellaneousServices ) {
table.add(new HiddenInput(ddOne.getName(), com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE), 3, row);
table.add(new HiddenInput(ddTwo.getName(), "-1"), 3, row);
table.mergeCells(3, row, 5 ,row);
}else {
table.add(PriceCategoryBMPBean.PRICETYPE_PRICE+" / "+ddOne.getSelectedElementValue(),4,row);
table.add(ddOne,4,row);
table.add("-1 / "+ddTwo.getSelectedElementValue(),5,row);
table.add(ddTwo,5,row);
}*/
table.add(ddVis,3,row);
if (this.miscellaneousServices) {
table.add(new HiddenInput(ddOne.getName(), com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE), 3, row);
table.add(new HiddenInput(ddTwo.getName(), "-1"), 3, row);
table.mergeCells(3, row, 5, row);
}else {
table.add(ddOne,4,row);
table.add(ddTwo,5,row);
}
table.setRowColor(row,super.GRAY);
}
++row;
table.setRowColor(row,super.GRAY);
SubmitButton lSave = new SubmitButton(iwrb.getImage("buttons/save.gif"),this.sAction, this.parameterSavePriceCategories);
table.mergeCells(1,row,6,row);
table.setColumnAlignment(1,"center");
table.setColumnAlignment(6,"center");
table.setWidth(1,row-1,"15");
table.setAlignment(1,row,"right");
if (super.isInPermissionGroup) {
table.add(lSave,1,row);
}
DropdownMenu a = new DropdownMenu("repps");
a.addMenuElement("1", "N�mer 1");
a.addMenuElement("2", "N�mer 2");
/*
for (int c = 1; c < 2; c++) {
DropdownMenu r = (DropdownMenu) a.clone();
r.setSelectedElement("1");
form.add(r);
}
for (int b = 1; b < 2; b++) {
DropdownMenu r = (DropdownMenu) a.clone();
r.setSelectedElement("2");
form.add(r);
}
DropdownMenu ddVis1 = (DropdownMenu) online.clone();
ddVis1.setSelectedElement(Integer.toString(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE));
form.add(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE+" / "+ddVis1.getSelectedElementValue());
form.add(ddVis1);
*/
return form;
}
private DropdownMenu getTypeDropdown() {
DropdownMenu ddType = new DropdownMenu("priceCategoryType");
ddType.addMenuElement(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE, iwrb.getLocalizedString("travel.price","Price"));
ddType.addMenuElement(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_DISCOUNT, iwrb.getLocalizedString("travel.discount","Discount"));
return ddType;
}
private DropdownMenu getDiscountDropdown(PriceCategory[] categories) {
DropdownMenu ddDisc = new DropdownMenu(categories,"priceCategoryParent");
ddDisc.addMenuElementFirst("-1",Text.NON_BREAKING_SPACE);
return ddDisc;
}
public DropdownMenu getVisibilityDropdown() {
DropdownMenu online = new DropdownMenu("priceCategoryVisible");
online.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_PRIVATE, iwrb.getLocalizedString("travel.web_only","Web only"));
online.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_PUBLIC, iwrb.getLocalizedString("travel.online_only","Online only"));
online.addMenuElement(PriceCategoryBMPBean.PRICE_VISIBILITY_BOTH_PRIVATE_AND_PUBLIC, iwrb.getLocalizedString("travel.everywhere","Everywhere"));
return online;
}
public void savePriceCategories(IWContext iwc) {
String[] catIds = iwc.getParameterValues(this.parameterPriceCategoryId);
String[] names = iwc.getParameterValues("priceCategoryName");
String[] visible= iwc.getParameterValues("priceCategoryVisible");
String[] type = iwc.getParameterValues("priceCategoryType");
String[] parent = iwc.getParameterValues("priceCategoryParent");
PriceCategoryHome pCatHome = (PriceCategoryHome) IDOLookup.getHomeLegacy(PriceCategory.class);
PriceCategory pCat;
try {
for (int i = 0; i < catIds.length; i++) {
if (catIds[i].equals("-1")) { //NEW
if ((names[i] != null) && (!names[i].equals(""))){
int priceCategoryId = 0;
int parentId;
int visibility = -1;
visibility = Integer.parseInt(visible[i]);
boolean bOnline;
if (type[i].equals(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_DISCOUNT)) {
parentId = Integer.parseInt(parent[i]);
priceCategoryId = tsb.createPriceCategory(supplier.getID(), names[i], "",type[i], "", visibility, parentId);
}else if (type[i].equals(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_PRICE)) {
priceCategoryId = tsb.createPriceCategory(supplier.getID(), names[i], "",type[i], "", visibility);
}
if (this.miscellaneousServices) {
pCat = pCatHome.findByPrimaryKeyLegacy(priceCategoryId);
pCat.setCountAsPerson(false);
pCat.update();
}
}
}else { //UPDATE
String del = iwc.getParameter("priceCategoryToDelete_"+catIds[i]);
pCat = pCatHome.findByPrimaryKeyLegacy(Integer.parseInt(catIds[i]));
if (del != null) {
pCat.delete();
}else {
boolean bOnline;
int visibility = -1;
visibility = Integer.parseInt(visible[i]);
pCat.setName(names[i]);
pCat.setDescription("");
pCat.setType(type[i]);
if (type[i].equals(com.idega.block.trade.stockroom.data.PriceCategoryBMPBean.PRICETYPE_DISCOUNT)) {
pCat.setParentId(Integer.parseInt(parent[i]));
}
pCat.setSupplierId(supplier.getID());
pCat.setExtraInfo("");
pCat.setVisibility(visibility);
pCat.isNetbookingCategory(false);
if (this.miscellaneousServices) {
pCat.setCountAsPerson(false);
}else {
pCat.setCountAsPerson(true);
}
pCat.update();
}
}
}
}catch (Exception e) {
e.printStackTrace(System.err);
}
}
public void setMiscellaneousServices(boolean misc) {
this.miscellaneousServices = misc;
}
}