Package com.jada.admin.coupon

Source Code of com.jada.admin.coupon.CouponMaintAction

/*
* Copyright 2007-2010 JadaSite.

* This file is part of JadaSite.
* JadaSite is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.

* JadaSite is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with JadaSite.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.jada.admin.coupon;

import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.persistence.EntityManager;
import com.jada.util.JSONEscapeObject;

import com.jada.admin.AdminBean;
import com.jada.admin.AdminLookupDispatchAction;
import com.jada.dao.CouponDAO;
import com.jada.dao.ItemDAO;
import com.jada.dao.CategoryDAO;
import com.jada.jpa.connection.JpaConnection;
import com.jada.jpa.entity.Category;
import com.jada.jpa.entity.Coupon;
import com.jada.jpa.entity.CouponCurrency;
import com.jada.jpa.entity.CouponLanguage;
import com.jada.jpa.entity.Item;
import com.jada.jpa.entity.Site;
import com.jada.jpa.entity.SiteCurrencyClass;
import com.jada.jpa.entity.SiteProfileClass;
import com.jada.jpa.entity.User;
import com.jada.util.Constants;
import com.jada.util.Format;
import com.jada.util.GoogleTranslate;
import com.jada.util.Utility;

import fr.improve.struts.taglib.layout.util.FormUtils;

import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.Vector;

public class CouponMaintAction
    extends AdminLookupDispatchAction {
 
    public ActionForward create(ActionMapping actionMapping,
                             ActionForm actionForm,
                             HttpServletRequest request,
                             HttpServletResponse response)
        throws Throwable {

    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    Site site = getAdminBean(request).getSite();
    initSiteProfiles(form, site);
        form.setCouponId("0");
        form.setPublished(true);
        form.setMode("C");
        form.setCouponType(Constants.COUPONTYPE_DISCOUNT_PERCENT);
       
        FormUtils.setFormDisplayMode(request, form, FormUtils.CREATE_MODE);
        ActionForward actionForward = actionMapping.findForward("success");
        return actionForward;
    }
   
    public ActionForward translate(ActionMapping actionMapping,
            ActionForm actionForm,
            HttpServletRequest request,
            HttpServletResponse response)
    throws Throwable {
 
    EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    if (form == null) {
      form = new CouponMaintActionForm();
    }
   
    Site site = getAdminBean(request).getSite();
    initSiteProfiles(form, site);
   
    Coupon coupon = (Coupon) em.find(Coupon.class, Format.getLong(form.getCouponId()));
    copyProperties(form, coupon);
   
      GoogleTranslate translator = new GoogleTranslate(form.getFromLocale(), form.getToLocale());
      form.setCouponNameLangFlag(true);
      form.setCouponNameLang(translator.translate(coupon.getCouponLanguage().getCouponName()));
 
    FormUtils.setFormDisplayMode(request, form, FormUtils.EDIT_MODE);
    ActionForward actionForward = actionMapping.findForward("success");
    return actionForward;
  }
   
    public ActionForward language(ActionMapping actionMapping,
            ActionForm actionForm,
            HttpServletRequest request,
            HttpServletResponse response)
    throws Throwable {
 
    EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    if (form == null) {
      form = new CouponMaintActionForm();
    }
   
    Site site = getAdminBean(request).getSite();
    initSiteProfiles(form, site);
   
    Coupon coupon = (Coupon) em.find(Coupon.class, Format.getLong(form.getCouponId()));
    copyProperties(form, coupon);
   
    FormUtils.setFormDisplayMode(request, form, FormUtils.EDIT_MODE);
    ActionForward actionForward = actionMapping.findForward("success");
    return actionForward;
  }

    public ActionForward edit(ActionMapping actionMapping,
                              ActionForm actionForm,
                              HttpServletRequest request,
                              HttpServletResponse response)
        throws Throwable {

        CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
        Site site = getAdminBean(request).getSite();
    initSiteProfiles(form, site);
        if (form == null) {
            form = new CouponMaintActionForm();
        }
    String couponId = request.getParameter("couponId");
        Coupon coupon = new Coupon();
        coupon = CouponDAO.load(getAdminBean(request).getSite().getSiteId(), Format.getLong(couponId));
        form.setMode("U");
        copyProperties(form, coupon);
        FormUtils.setFormDisplayMode(request, form, FormUtils.EDIT_MODE);
        ActionForward actionForward = actionMapping.findForward("success");
        return actionForward;
    }
   
    public ActionForward remove(ActionMapping actionMapping,
            ActionForm actionForm,
            HttpServletRequest request,
            HttpServletResponse response)
    throws Throwable {
   
    EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
        Site site = getAdminBean(request).getSite();
    initSiteProfiles(form, site);
 
    try {
      Coupon coupon = CouponDAO.load(getAdminBean(request).getSite().getSiteId(), Format.getLong(form.getCouponId()));
      em.remove(coupon);
      em.getTransaction().commit();
    }
    catch (Exception e) {
      if (Utility.isConstraintViolation(e)) {
        ActionMessages errors = new ActionMessages();
        errors.add("error", new ActionMessage("error.remove.coupon.constraint"));
        saveMessages(request, errors);
        return actionMapping.findForward("error");
      }
      throw e;
    }
   
    ActionForward actionForward = actionMapping.findForward("removeSuccess");
    return actionForward;
  }

  public ActionForward save(ActionMapping mapping,
                ActionForm actionForm,
                HttpServletRequest request,
                HttpServletResponse response)
    throws Throwable {

      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    boolean insertMode = false;
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    if (form.getMode().equals("C")) {
      insertMode = true;
    }

    AdminBean adminBean = getAdminBean(request);
    Site site = adminBean.getSite();
    String siteId = site.getSiteId();
     initSiteProfiles(form, site);

    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));

    form.setCouponCode(form.getCouponCode().toUpperCase());
    ActionMessages errors = validate(form, insertMode, site.getSiteId());
    if (errors.size() != 0) {
      saveMessages(request, errors);
      return mapping.findForward("error");
    }

    if (insertMode) {
      coupon = new Coupon();
      coupon.setSite(site);
      coupon.setCouponTotalUsed(Integer.valueOf(0));
      coupon.setRecCreateBy(adminBean.getUser().getUserId());
      coupon.setRecCreateDatetime(new Date(System.currentTimeMillis()));
    }
    if (form.isSiteProfileClassDefault() && form.isSiteCurrencyClassDefault()) {
      saveDefault(coupon, form, adminBean);
    }
    else {
      if (!form.isSiteProfileClassDefault()) {
        saveLanguage(coupon, form, adminBean);
      }
      if (!form.isSiteCurrencyClassDefault()) {
        saveCurrency(coupon, form, adminBean);
      }
    }
    if (insertMode) {
      em.persist(coupon);
    }
    form.setCouponTotalUsed(Format.getInt(coupon.getCouponTotalUsed()));
    form.setMode("U");
    form.setCouponId(coupon.getCouponId().toString());
        FormUtils.setFormDisplayMode(request, form, FormUtils.EDIT_MODE);
    return mapping.findForward("success");
  }
 
  private void saveDefault(Coupon coupon, CouponMaintActionForm form, AdminBean adminBean) throws Exception {
      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    coupon.setCouponCode(form.getCouponCode());
    coupon.setCouponStartDate(Format.getDate(form.getCouponStartDate()));
    coupon.setCouponEndDate(Format.getDate(form.getCouponEndDate()));
    coupon.setCouponScope(form.getCouponScope().charAt(0));
    coupon.setCouponAutoApply(form.isCouponAutoApply() ? Constants.VALUE_YES : Constants.VALUE_NO);
    coupon.setCouponApplyAll(form.isCouponApplyAll() ? Constants.VALUE_YES : Constants.VALUE_NO);
    coupon.setCouponType(form.getCouponType().charAt(0));
    coupon.setCouponDiscountPercent(null);
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_PERCENT)) {
      coupon.setCouponDiscountPercent(Format.getFloat(form.getCouponDiscountPercent()));
    }
    if (!Format.isNullOrEmpty(form.getCouponMaxCustUse())) {
      coupon.setCouponMaxCustUse(Format.getInt(form.getCouponMaxCustUse()));
    }
    if (!Format.isNullOrEmpty(form.getCouponMaxUse())) {
      coupon.setCouponMaxUse(Format.getInt(form.getCouponMaxUse()));
    }
    coupon.setCouponPriority(Integer.valueOf(form.getCouponPriority()));
    coupon.setPublished(form.isPublished() ? Constants.PUBLISHED_YES : Constants.PUBLISHED_NO);
    coupon.setRecUpdateBy(adminBean.getUser().getUserId());
    coupon.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
    CouponLanguage couponLanguage = coupon.getCouponLanguage();
    if (couponLanguage == null) {
      couponLanguage = new CouponLanguage();
      couponLanguage.setCoupon(coupon);
      coupon.getCouponLanguages().add(couponLanguage);
        SiteProfileClass siteProfileClass = (SiteProfileClass) em.find(SiteProfileClass.class, form.getSiteProfileClassDefaultId());
        couponLanguage.setSiteProfileClass(siteProfileClass);
        couponLanguage.setRecCreateBy(adminBean.getUser().getUserId());
        couponLanguage.setRecCreateDatetime(new Date(System.currentTimeMillis()));
        coupon.setCouponLanguage(couponLanguage);
    }
   
    CouponCurrency couponCurrency = coupon.getCouponCurrency();
    if (couponCurrency == null) {
      couponCurrency = new CouponCurrency();
      couponCurrency.setCoupon(coupon);
      coupon.getCouponCurrencies().add(couponCurrency);
        SiteCurrencyClass siteCurrencyClass = (SiteCurrencyClass) em.find(SiteCurrencyClass.class, form.getSiteCurrencyClassDefaultId());
        couponCurrency.setSiteCurrencyClass(siteCurrencyClass);
        couponCurrency.setRecCreateBy(adminBean.getUser().getUserId());
        couponCurrency.setRecCreateDatetime(new Date(System.currentTimeMillis()));
        coupon.setCouponCurrency(couponCurrency);
    }
   
    couponLanguage.setCouponName(form.getCouponName());
    couponLanguage.setRecUpdateBy(adminBean.getUser().getUserId());
    couponLanguage.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
    em.persist(couponLanguage);
   
    couponCurrency.setCouponDiscountAmount(null);
    couponCurrency.setCouponOrderAmount(null);
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_AMOUNT)) {
      couponCurrency.setCouponDiscountAmount(Format.getFloat(form.getCouponDiscountAmount()));
    }
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_OVER_AMOUNT)) {
      couponCurrency.setCouponDiscountAmount(Format.getFloat(form.getCouponDiscountAmount()));
      couponCurrency.setCouponOrderAmount(Format.getFloatObj(form.getCouponOrderAmount()));
    }
    couponCurrency.setRecUpdateBy(adminBean.getUser().getUserId());
    couponCurrency.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
    em.persist(couponCurrency);
  }
 
  private void saveLanguage(Coupon coupon, CouponMaintActionForm form, AdminBean adminBean) throws Exception {
      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponLanguage couponLanguage = null;
    User user = adminBean.getUser();
      Long siteProfileClassId = form.getSiteProfileClassId();
    boolean found = false;
    Iterator<?> iterator = coupon.getCouponLanguages().iterator();
    while (iterator.hasNext()) {
      couponLanguage = (CouponLanguage) iterator.next();
      if (couponLanguage.getSiteProfileClass().getSiteProfileClassId().equals(siteProfileClassId)) {
        found = true;
        break;
      }
    }
    if (!found) {
      couponLanguage = new CouponLanguage();
      couponLanguage.setRecCreateBy(user.getUserId());
      couponLanguage.setRecCreateDatetime(new Date(System.currentTimeMillis()));
        SiteProfileClass siteProfileClass = (SiteProfileClass) em.find(SiteProfileClass.class, siteProfileClassId);
        couponLanguage.setSiteProfileClass(siteProfileClass);
        couponLanguage.setCoupon(coupon);
        coupon.getCouponLanguages().add(couponLanguage);
    }
    if (form.isCouponNameLangFlag()) {
      couponLanguage.setCouponName(form.getCouponNameLang());
    }
    else {
      couponLanguage.setCouponName(null);
    }
    couponLanguage.setRecUpdateBy(user.getUserId());
    couponLanguage.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
    em.persist(couponLanguage);
  }
 
  private void saveCurrency(Coupon coupon, CouponMaintActionForm form, AdminBean adminBean) throws Exception {
      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponCurrency couponCurrency = null;
    User user = adminBean.getUser();
      Long siteCurrencyClassId = form.getSiteCurrencyClassId();
    boolean found = false;
    Iterator<?> iterator = coupon.getCouponCurrencies().iterator();
    while (iterator.hasNext()) {
      couponCurrency = (CouponCurrency) iterator.next();
      if (couponCurrency.getSiteCurrencyClass().getSiteCurrencyClassId().equals(siteCurrencyClassId)) {
        found = true;
        break;
      }
    }
    if (!found) {
      couponCurrency = new CouponCurrency();
      couponCurrency.setRecCreateBy(user.getUserId());
      couponCurrency.setRecCreateDatetime(new Date(System.currentTimeMillis()));
        SiteCurrencyClass siteCurrencyClass = (SiteCurrencyClass) em.find(SiteCurrencyClass.class, siteCurrencyClassId);
        couponCurrency.setSiteCurrencyClass(siteCurrencyClass);
        couponCurrency.setCoupon(coupon);
        coupon.getCouponCurrencies().add(couponCurrency);
    }
    couponCurrency.setCouponDiscountAmount(null);
    couponCurrency.setCouponOrderAmount(null);
    if (form.isCouponDiscountAmountCurrFlag()) {
      couponCurrency.setCouponDiscountAmount(Format.getFloat(form.getCouponDiscountAmountCurr()));
    }
    if (form.isCouponOrderAmountCurrFlag()) {
      couponCurrency.setCouponOrderAmount(Format.getFloat(form.getCouponOrderAmountCurr()));
    }
    couponCurrency.setRecUpdateBy(user.getUserId());
    couponCurrency.setRecUpdateDatetime(new Date(System.currentTimeMillis()));
    em.persist(couponCurrency);
  }
 
  private void copyProperties(CouponMaintActionForm form, Coupon coupon) {
    form.setCouponId(Format.getLong(coupon.getCouponId()));
    form.setCouponCode(coupon.getCouponCode());
    form.setCouponName(coupon.getCouponLanguage().getCouponName());
    form.setCouponStartDate(Format.getDate(coupon.getCouponStartDate()));
    form.setCouponEndDate(Format.getDate(coupon.getCouponEndDate()));
    if (coupon.getCouponAutoApply() == Constants.VALUE_YES) {
      form.setCouponAutoApply(true);
    }
    if (coupon.getCouponApplyAll() == Constants.VALUE_YES) {
      form.setCouponApplyAll(true);
    }
    form.setCouponType(String.valueOf(coupon.getCouponType()));
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_AMOUNT)) {
      form.setCouponDiscountAmount(Format.getFloat(coupon.getCouponCurrency().getCouponDiscountAmount()));
    }
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_PERCENT)) {
      form.setCouponDiscountPercent(Format.getFloat(coupon.getCouponDiscountPercent()));
    }
    if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_OVER_AMOUNT)) {
      form.setCouponOrderAmount(Format.getFloat(coupon.getCouponCurrency().getCouponOrderAmount()));
      form.setCouponDiscountAmount(Format.getFloat(coupon.getCouponCurrency().getCouponDiscountAmount()));
    }
    form.setCouponTotalUsed(Format.getInt(coupon.getCouponTotalUsed()));
    if (coupon.getCouponMaxUse() != null) {
      if (coupon.getCouponMaxUse().intValue() > 0) {
        form.setCouponMaxUse(Format.getInt(coupon.getCouponMaxUse()));
      }
    }
    if (coupon.getCouponMaxCustUse() != null) {
      if (coupon.getCouponMaxCustUse().intValue() > 0) {
        form.setCouponMaxCustUse(Format.getInt(coupon.getCouponMaxCustUse()));
      }
    }
    form.setCouponScope(String.valueOf(coupon.getCouponScope()));
    form.setPublished(coupon.getPublished() == Constants.PUBLISHED_YES);
    form.setCouponPriority(coupon.getCouponPriority().toString());
    form.setRecUpdateBy(coupon.getRecUpdateBy());
    form.setRecUpdateDatetime(Format.getFullDate(coupon.getRecUpdateDatetime()));
    form.setRecCreateBy(coupon.getRecCreateBy());
    form.setRecCreateDatetime(Format.getFullDate(coupon.getRecCreateDatetime()));
   
    form.setCouponNameLangFlag(false);
    form.setCouponNameLang(coupon.getCouponLanguage().getCouponName());
    if (!form.isSiteProfileClassDefault()) {
        Iterator<?> iterator = coupon.getCouponLanguages().iterator();
        Long siteProfileClassId = form.getSiteProfileClassId();
        while (iterator.hasNext()) {
          CouponLanguage CouponLanguage = (CouponLanguage) iterator.next();
          if (CouponLanguage.getSiteProfileClass().getSiteProfileClassId().equals(siteProfileClassId)) {
            if (CouponLanguage.getCouponName() != null) {
              form.setCouponNameLangFlag(true);
              form.setCouponNameLang(CouponLanguage.getCouponName());
            }
            break;
          }
        }
    }
    form.setCouponDiscountAmountCurrFlag(false);
    form.setCouponDiscountAmountCurr("");
    if (coupon.getCouponCurrency().getCouponDiscountAmount() != null) {
      form.setCouponDiscountAmountCurr(Format.getFloat(coupon.getCouponCurrency().getCouponDiscountAmount()));
    }
    form.setCouponOrderAmountCurrFlag(false);
    form.setCouponOrderAmountCurr("");
    if (coupon.getCouponCurrency().getCouponOrderAmount() != null) {
      form.setCouponOrderAmountCurr(Format.getFloat(coupon.getCouponCurrency().getCouponOrderAmount()));
    }
    if (!form.isSiteCurrencyClassDefault()) {
      Long siteCurrencyClassId = form.getSiteCurrencyClassId();
      for (CouponCurrency couponCurrency : coupon.getCouponCurrencies()) {
        if (couponCurrency.getSiteCurrencyClass().getSiteCurrencyClassId().equals(siteCurrencyClassId)) {
          if (couponCurrency.getCouponDiscountAmount() != null) {
            form.setCouponDiscountAmountCurrFlag(true);
            form.setCouponDiscountAmountCurr(Format.getFloat(couponCurrency.getCouponDiscountAmount()));
          }
          if (couponCurrency.getCouponOrderAmount() != null) {
            form.setCouponOrderAmountCurrFlag(true);
            form.setCouponOrderAmountCurr(Format.getFloat(couponCurrency.getCouponOrderAmount()));
          }
        }
      }
    }
  }

    public ActionMessages validate(CouponMaintActionForm form, boolean insertMode, String siteId) throws SecurityException, Exception {
      ActionMessages errors = new ActionMessages();
     
      Coupon coupon = CouponDAO.loadByCouponCode(siteId, form.getCouponCode());
      if (coupon != null) {
        if (!form.getCouponId().equals(coupon.getCouponId().toString())) {
          errors.add("couponCode", new ActionMessage("error.record.duplicate"));
        }
      }
      if (Format.isNullOrEmpty(form.getCouponCode())) {
        errors.add("couponCode", new ActionMessage("error.string.required"));
      }
      if (Format.isNullOrEmpty(form.getCouponName())) {
        errors.add("couponName", new ActionMessage("error.string.required"));
      }
      if (Format.isNullOrEmpty(form.getCouponStartDate())) {
        errors.add("couponStartDate", new ActionMessage("error.string.required"));
      }
      else {
          if (!Format.isDate(form.getCouponStartDate())) {
            errors.add("couponStartDate", new ActionMessage("error.date.invalid"));
          }
      }
      if (Format.isNullOrEmpty(form.getCouponEndDate())) {
        errors.add("couponEndDate", new ActionMessage("error.string.required"));
      }
      else {
          if (!Format.isDate(form.getCouponEndDate())) {
            errors.add("couponEndDate", new ActionMessage("error.date.invalid"));
          }
      }
      if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_AMOUNT)) {
        if (Format.isNullOrEmpty(form.getCouponDiscountAmount())) {
          errors.add("couponDiscountAmount", new ActionMessage("error.string.required"));
        }
        else {
          if (!Format.isFloat(form.getCouponDiscountAmount())) {
            errors.add("couponDiscountAmount", new ActionMessage("error.float.invalid"));
          }
        }
          if (!form.isSiteCurrencyClassDefault()) {
            if (Format.isNullOrEmpty(form.getCouponDiscountAmountCurr())) {
              errors.add("couponDiscountAmount", new ActionMessage("error.string.required"));
            }
            else {
              if (!Format.isFloat(form.getCouponDiscountAmountCurr())) {
                errors.add("couponDiscountAmount", new ActionMessage("error.float.invalid"));
              }
            }
          }
      }
      if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_PERCENT)) {
        if (Format.isNullOrEmpty(form.getCouponDiscountPercent())) {
          errors.add("couponDiscountPercent", new ActionMessage("error.string.required"));
        }
        else {
          if (!Format.isFloat(form.getCouponDiscountPercent())) {
            errors.add("couponDiscountPercent", new ActionMessage("error.float.invalid"));
          }
        }
      }
      if (form.getCouponType().equals(Constants.COUPONTYPE_DISCOUNT_OVER_AMOUNT)) {
        if (Format.isNullOrEmpty(form.getCouponDiscountAmount())) {
          errors.add("couponDiscountAmount", new ActionMessage("error.string.required"));
        }
        else {
          if (!Format.isFloat(form.getCouponDiscountAmount())) {
            errors.add("couponDiscountAmount", new ActionMessage("error.float.invalid"));
          }
        }
        if (Format.isNullOrEmpty(form.getCouponOrderAmount())) {
          errors.add("couponOrderAmount", new ActionMessage("error.string.required"));
        }
        else {
          if (!Format.isFloat(form.getCouponOrderAmount())) {
            errors.add("couponOrderAmount", new ActionMessage("error.float.invalid"));
          }
        }
          if (!form.isSiteCurrencyClassDefault()) {
            if (Format.isNullOrEmpty(form.getCouponDiscountAmountCurr())) {
              errors.add("couponDiscountAmountCurr", new ActionMessage("error.string.required"));
            }
            else {
              if (!Format.isFloat(form.getCouponDiscountAmountCurr())) {
                errors.add("couponDiscountAmountCurr", new ActionMessage("error.float.invalid"));
              }
            }
            if (Format.isNullOrEmpty(form.getCouponOrderAmountCurr())) {
              errors.add("couponOrderAmountCurr", new ActionMessage("error.string.required"));
            }
            else {
              if (!Format.isFloat(form.getCouponOrderAmountCurr())) {
                errors.add("couponOrderAmountCurr", new ActionMessage("error.float.invalid"));
              }
            }
          }
      }
      if (!Format.isNullOrEmpty(form.getCouponMaxUse())) {
        if (!Format.isInt(form.getCouponMaxUse())) {
          errors.add("couponMaxUse", new ActionMessage("error.int.invalid"));
        }
      }
      if (!Format.isNullOrEmpty(form.getCouponMaxCustUse())) {
        if (!Format.isInt(form.getCouponMaxCustUse())) {
          errors.add("couponMaxCustUse", new ActionMessage("error.int.invalid"));
        }
      }
      return errors;
    }
   
    private String getJSONItemList(Coupon coupon, CouponMaintActionForm form) throws Exception {
      String result = null;
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_SUCCESS);
      java.util.Iterator<Item> iterator = coupon.getItems().iterator();
      Vector<JSONEscapeObject> items = new Vector<JSONEscapeObject>();
      while (iterator.hasNext()) {
        Item item = (Item) iterator.next();
        JSONEscapeObject object = new JSONEscapeObject();
        object.put("itemId", item.getItemId());
        object.put("itemNum", item.getItemNum());
        object.put("itemShortDesc", item.getItemLanguage().getItemShortDesc());
        object.put("itemDesc", item.getItemLanguage().getItemDesc());
        items.add(object);
      }
      jsonResult.put("items", items);
      result = jsonResult.toHtmlString();
      return result;
    }
 
    private String getJSONCategoryList(Coupon coupon) throws Exception {
      String result = null;
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_SUCCESS);
      java.util.Iterator<Category> iterator = coupon.getCategories().iterator();
      Vector<JSONEscapeObject> categories = new Vector<JSONEscapeObject>();
      while (iterator.hasNext()) {
        Category category = (Category) iterator.next();
        JSONEscapeObject object = new JSONEscapeObject();
        object.put("catId", category.getCatId());
        object.put("catShortTitle", category.getCategoryLanguage().getCatShortTitle());
        categories.add(object);
      }
      jsonResult.put("categories", categories);
      result = jsonResult.toHtmlString();
      return result;
    }
   
  public ActionForward listItem(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    String result = getJSONItemList(coupon, form);
    streamWebService(response, result);
    return null;
  }
   
  public ActionForward listCategory(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    String result = getJSONCategoryList(coupon);
    streamWebService(response, result);
    return null;
  }
 
  public ActionForward removeItems(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    Vector<Item> removeList = new Vector<Item>();
    if (form.getItemIds() != null) {
      for (Item item : coupon.getItems()) {
        for (String itemId : form.getItemIds()) {
          if (item.getItemId().toString().equals(itemId)) {
            removeList.add(item);
          }
        }
      }
    }
    Iterator<?> iterator = removeList.iterator();
    while (iterator.hasNext()) {
      Item item = (Item) iterator.next();
      coupon.getItems().remove(item);
    }
    String result = getJSONItemList(coupon, form);
    streamWebService(response, result);
    return null;
  }
 
  public ActionForward removeCategories(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    Vector<Category> removeList = new Vector<Category>();
    if (form.getCatIds() != null) {
      for (Category category : coupon.getCategories()) {
        for (String catId : form.getCatIds()) {
          if (category.getCatId().toString().equals(catId)) {
            removeList.add(category);
          }
        }
      }
    }
    Iterator<?> iterator = removeList.iterator();
    while (iterator.hasNext()) {
      Category category = (Category) iterator.next();
      coupon.getCategories().remove(category);
    }
    String result = getJSONCategoryList(coupon);
    streamWebService(response, result);
    return null;
  }
 
  public ActionForward addItem(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
      EntityManager em = JpaConnection.getInstance().getCurrentEntityManager();
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    MessageResources resources = this.getResources(request);
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    boolean found = false;
    java.util.Iterator<Item> iterator = coupon.getItems().iterator();
    while (iterator.hasNext()) {
      Item item = (Item) iterator.next();
      if (item.getItemId().equals(Format.getLong(form.getItemId()))) {
        found = true;
        break;
      }
    }
    if (found) {
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_FAILED);
      jsonResult.put("message", resources.getMessage("error.item.exist"));
      streamWebService(response, jsonResult.toHtmlString());
    }
    Item item = ItemDAO.load(siteId, Format.getLong(form.getItemId()));
    if (item == null) {
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_FAILED);
      jsonResult.put("message", resources.getMessage("error.item.notexist"));
      streamWebService(response, jsonResult.toHtmlString());
    }
    coupon.getItems().add(item);
    em.persist(coupon);
    String result = getJSONItemList(coupon, form);
    streamWebService(response, result);
    return null;
  }
 
  public ActionForward addCategory(ActionMapping mapping,
        ActionForm actionForm,
        HttpServletRequest request,
        HttpServletResponse response)
      throws Throwable {
    CouponMaintActionForm form = (CouponMaintActionForm) actionForm;
    AdminBean adminBean = getAdminBean(request);
    String siteId = adminBean.getSite().getSiteId();
   
    MessageResources resources = this.getResources(request);
    Coupon coupon = CouponDAO.load(siteId, Format.getLong(form.getCouponId()));
    boolean found = false;
    java.util.Iterator<Category> iterator = coupon.getCategories().iterator();
    while (iterator.hasNext()) {
      Category category = (Category) iterator.next();
      if (category.getCatId().equals(Format.getLong(form.getCatId()))) {
        found = true;
        break;
      }
    }
    if (found) {
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_FAILED);
      jsonResult.put("message", resources.getMessage("error.record.duplicate"));
      streamWebService(response, jsonResult.toHtmlString());
    }
    Category category = CategoryDAO.load(siteId, Format.getLong(form.getCatId()));
    if (category == null) {
      JSONEscapeObject jsonResult = new JSONEscapeObject();
      jsonResult.put("status", Constants.WEBSERVICE_STATUS_FAILED);
      jsonResult.put("message", resources.getMessage("error.category.notexist"));
      streamWebService(response, jsonResult.toHtmlString());
    }
    coupon.getCategories().add(category);
    String result = getJSONCategoryList(coupon);
    streamWebService(response, result);
    return null;
  }
 
    protected java.util.Map<String, String> getKeyMethodMap()  {
        Map<String, String> map = new HashMap<String, String>();
        map.put("save", "save");
        map.put("edit", "edit");
        map.put("create", "create");
        map.put("remove", "remove");
        map.put("listItem", "listItem");
        map.put("listCategory", "listCategory");
        map.put("addItem", "addItem");
        map.put("removeItems", "removeItems");
        map.put("addCategory", "addCategory");
        map.put("removeCategories", "removeCategories");
        map.put("language", "language");
        map.put("translate", "translate");
        return map;
    }
}
TOP

Related Classes of com.jada.admin.coupon.CouponMaintAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.