package org.onehippo.forge.konakart.hst.wizard.checkout.activity;
import com.konakart.app.KKException;
import org.apache.commons.lang.StringUtils;
import org.onehippo.forge.konakart.hst.utils.KKActionsConstants;
import org.onehippo.forge.konakart.hst.utils.KKRegisterFormUtils;
import org.onehippo.forge.konakart.hst.utils.KKUtil;
import org.onehippo.forge.konakart.hst.wizard.ActivityException;
import org.onehippo.forge.konakart.hst.wizard.checkout.CheckoutProcessContext;
import org.onehippo.forge.konakart.hst.wizard.checkout.CheckoutSeedData;
import org.onehippo.forge.konakart.site.service.KKServiceHelper;
import java.util.Arrays;
import java.util.List;
public class ShippingAddressActivity extends BaseAddressActivity {
@Override
public void doAction() throws ActivityException {
super.doAction();
CheckoutProcessContext checkoutProcessContext = (CheckoutProcessContext) processorContext;
CheckoutSeedData seedData = checkoutProcessContext.getSeedData();
if (seedData.getAction().equals(KKActionsConstants.ACTIONS.SELECT.name())) {
Integer addressId = Integer.valueOf(KKUtil.getActionRequestParameter(seedData.getRequest(), KKRegisterFormUtils.ADDRESS));
// Ask for a new address
if (addressId == -1) {
try {
addressId = KKServiceHelper.getKKEngineService().
getKKAppEng(hstRequest).getCustomerMgr().addAddressToCustomer(registerFormUtils.createAddressForCustomer(formMap));
} catch (Exception e) {
updateNextLoggedState(KKActionsConstants.STATES.INITIAL.name());
addMessage("globalmessage", seedData.getBundleAsString("checkout.failed.create.address"));
return;
}
}
try {
KKServiceHelper.getKKEngineService().getKKAppEng(hstRequest).getOrderMgr().setCheckoutOrderShippingAddress(addressId);
// Skip the SHIPPING ADDRESS step because the customer has decided to use the
// same billing address
updateNextLoggedState(KKActionsConstants.STATES.SHIPPING_METHOD.name());
} catch (KKException e) {
log.error("Failed to set the shipping address", e);
}
}
}
@Override
public void doAdditionalData() {
super.doAdditionalData();
CheckoutSeedData seedData = (CheckoutSeedData) processorContext.getSeedData();
List<String> acceptedStates = Arrays.asList(KKActionsConstants.STATES.SHIPPING_METHOD.name(), KKActionsConstants.STATES.PAYMENT_METHOD.name(),
KKActionsConstants.STATES.ORDER_REVIEW.name());
String state = seedData.getState();
if (StringUtils.isNotEmpty(state) && acceptedStates.contains(state)) {
hstRequest.getRequestContext().setAttribute(getAcceptState().concat("_EDIT"), true);
hstRequest.setAttribute(getAcceptState().concat("_EDIT"), true);
}
}
}