예제 #1
0
  public Resource get(final ResourceRequest request) {
    final DraftGallery gallery = ServiceLocator.getPersistance().getDraftItem(request.getSizeId());
    if (gallery == null) {
      return null;
    }

    final Resource resource = ServiceLocator.getPersistance().getFormFileById(request.getId());
    if (resource == null) {
      return null;
    }

    final ResourceSize resourceSize =
        ResourceSizeCustom.createByWidthHeight(
            gallery.getThumbnailWidth(), gallery.getThumbnailHeight());
    return ResourceCustom.copyWithSize(resource, resourceSize);
  }
예제 #2
0
@RemoteProxy
@Filter(
    type = SynchronizeForDwrFilter.class,
    params = {})
public class DeleteBlogPostService extends AbstractService {

  @SynchronizeByMethodParameter(entityClass = BlogPost.class, method = SynchronizeMethod.WRITE)
  @RemoteMethod
  public void execute(final int blogPostId) {
    final User user = new UsersManager().getLoginedUser();
    final Integer loginedUserId = user != null ? user.getUserId() : null;
    final BlogPost blogPost = BlogRight.getBlogPostOnEdit(loginedUserId, blogPostId);
    persistanceTransaction.execute(
        new Runnable() {

          public void run() {
            persistance.removeBlogPost(blogPost);
          }
        });
  }

  private final SessionStorage sessionStorage = ServiceLocator.getSessionStorage();
  private final Persistance persistance = ServiceLocator.getPersistance();
  private final PersistanceTransaction persistanceTransaction =
      ServiceLocator.getPersistanceTransaction();
}
  @Test(expected = InvalidContactUsEmailException.class)
  public void executeWithoutEmail() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail(null);
    request.setHeader("header");
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    service.execute(request);
  }
  @Test
  public void executeFromManageItems() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    final FunctionalWidgetInfo response = service.execute(request);

    Assert.assertNotNull(response);
    Assert.assertNull(response.getWidget());
    Assert.assertEquals("name", contactUs.getName());
    Assert.assertEquals("header", contactUs.getDescription());
    Assert.assertTrue(contactUs.isShowDescription());
    Assert.assertEquals(FormType.CONTACT_US, contactUs.getType());
  }
  @Test(expected = ContactUsNameNotUniqueException.class)
  public void executeWithNotUniqueName() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);
    PageManager pageVersion = TestUtil.createPageVersionAndPage(site);

    WidgetItem widget = TestUtil.createWidgetItem();
    widget.setPosition(0);
    persistance.putWidget(widget);
    pageVersion.addWidget(widget);

    DraftContactUs contactUs = new DraftContactUs();
    contactUs.setShowDescription(true);
    contactUs.setEmail("[email protected]");
    contactUs.setDescription("header");
    contactUs.setName("name2");
    contactUs.setSiteId(site.getSiteId());
    ServiceLocator.getPersistance().putContactUs(contactUs);

    DraftContactUs contactUs2 = new DraftContactUs();
    contactUs2.setShowDescription(true);
    contactUs2.setEmail("[email protected]");
    contactUs2.setDescription("header2");
    contactUs2.setName("name");
    contactUs2.setSiteId(site.getSiteId());
    ServiceLocator.getPersistance().putContactUs(contactUs2);

    widget.setDraftItem(contactUs);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setContactUsId(contactUs.getId());
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    request.setWidgetId(widget.getWidgetId());
    final List<DraftFormItem> formItems =
        TestUtil.createFormItems(FormItemName.FIRST_NAME, FormItemName.REGISTRATION_EMAIL);
    request.setFormItems(formItems);

    service.execute(request);
  }
/** @author Balakirev Anatoliy */
@RemoteProxy
public class RestoreDefaultStructureService extends AbstractService {

  @RemoteMethod
  public UpdateMenuItemResponse execute(final Integer menuId) throws Exception {
    final UpdateMenuItemResponse response = new UpdateMenuItemResponse();
    final DraftMenu menu = persistance.getMenuById(menuId);
    if (menu == null) {
      logger.warning(
          "Can`t create default structure for menu with id = " + menuId + ". Menu not found.");
      return response;
    }
    final Site site = persistance.getSite(menu.getSiteId());
    if (site == null) {
      logger.warning(
          "Can`t create default structure for menu with id = "
              + menuId
              + ". Site not found. Site id "
              + "in this menu = "
              + menu.getSiteId());
      return response;
    }
    final DraftMenu defaultMenu = site.getMenu();
    if (defaultMenu == null) {
      logger.warning(
          "Can`t create default structure for menu with id = "
              + menuId
              + ". Default menu not found"
              + " for site with id = "
              + menu.getSiteId());
      return response;
    }
    ServiceLocator.getPersistanceTransaction()
        .execute(
            new Runnable() {
              public void run() {
                MenuItemsManager.restoreDefaultStructure(defaultMenu, menu);
              }
            });
    final MenuPagesHtmlTextCreator pagesHtmlTextCreator =
        new MenuPagesHtmlTextCreator(
            menu, new MenuPageCheckSometimes(menu), SiteShowOption.getDraftOption());
    response.setTreeHtml(pagesHtmlTextCreator.getHtml());
    if (!menu.getMenuItems().isEmpty()) {
      final int selectedMenuItemId = menu.getMenuItems().get(0).getId();
      response.setInfoAboutSelectedItem(new GetInfoAboutItemService().execute(selectedMenuItemId));
      response.setSelectedMenuItemId(selectedMenuItemId);
    }
    return response;
  }

  private final Persistance persistance = ServiceLocator.getPersistance();
  private final Logger logger = Logger.getLogger(this.getClass().getName());
}
/** @author Artem Stasuk */
@RemoteProxy
@Filter(type = SynchronizeForDwrFilter.class)
public class ShowRequestContentService extends ServiceWithExecutePage {

  @SynchronizeByAllEntity(entityClass = Site.class)
  @RemoteMethod
  public String execute(final Integer targetSiteId) throws IOException, ServletException {
    userSitesUrl = configStorage.get().getUserSitesUrl();

    final UserManager userManager = new UsersManager().getLogined();

    if (targetSiteId != null) {
      targetSite = userManager.getRight().getSiteRight().getSiteForEdit(targetSiteId).getSite();
      targetSites = Arrays.asList(targetSite);
    } else {
      targetSites =
          persistance.getSites(userManager.getUserId(), SiteAccessLevel.getUserAccessLevels());
      Collections.sort(targetSites, new SiteByTitleComparator());
    }

    sites = new ArrayList<Site>();
    for (final Site site : persistance.getAllSites()) {
      if (site.getType() == SiteType.COMMON
          && site.getSitePaymentSettings().getSiteStatus() == SiteStatus.ACTIVE) {
        sites.add(site);
      }
    }
    Collections.sort(sites, new SiteByTitleComparator());
    return executePage("/site/showRequestContent.jsp");
  }

  public List<Site> getSites() {
    return sites;
  }

  public Site getTargetSite() {
    return targetSite;
  }

  public List<Site> getTargetSites() {
    return targetSites;
  }

  public String getUserSitesUrl() {
    return userSitesUrl;
  }

  private List<Site> sites;
  private List<Site> targetSites;
  private Site targetSite;
  private String userSitesUrl;
  private final Persistance persistance = ServiceLocator.getPersistance();
  private final ConfigStorage configStorage = ServiceLocator.getConfigStorage();
}
예제 #8
0
 public FormData(final FilledForm filledForm) {
   description = filledForm.getFormDescription();
   final DraftForm form = ServiceLocator.getPersistance().getFormById(filledForm.getFormId());
   formId = form.getFormId();
   formName = form.getName();
   showDescription = form.isShowDescription();
   termsAndConditions =
       form instanceof DraftRegistrationForm
           ? ((DraftRegistrationForm) form).getTermsAndConditions()
           : null;
   requireTermsAndConditions =
       form instanceof DraftRegistrationForm
           && ((DraftRegistrationForm) form).isRequireTermsAndConditions();
   updateChildSiteRegistrationFields(form);
   this.formItems = FormItemsManager.createFormItemsByFilledForm(filledForm, form);
 }
예제 #9
0
/** @author Artem Stasuk, dmitry.solomadin */
@RemoteProxy
public class SaveScriptService extends AbstractService {

  @RemoteMethod
  public FunctionalWidgetInfo execute(final SaveScriptRequest request) throws Exception {
    final UserManager userManager = new UsersManager().getLogined();

    final WidgetItem widget;
    if (request.getWidgetId() != null) {
      widget =
          (WidgetItem)
              userManager
                  .getRight()
                  .getSiteRight()
                  .getWidgetForEditInPresentationalService(request.getWidgetId());
    } else {
      widget = null;
    }

    persistanceTransaction.execute(
        new Runnable() {

          @Override
          public void run() {
            final DraftScript draftScript = persistance.getDraftItem(request.getScriptItemId());
            if (draftScript == null || draftScript.getSiteId() <= 0) {
              throw new ScriptNotFoundException(
                  "Cannot find script item by Id=" + request.getScriptItemId());
            }

            draftScript.setText(request.getText());
            draftScript.setName(request.getName());
            draftScript.setDescription(request.getDescription());
            draftScript.setShowDescription(request.isShowDescription());
          }
        });

    return new GetFunctionalWidgetsService().createFunctionalWidgetInfo(widget, "widget", true);
  }

  private final PersistanceTransaction persistanceTransaction =
      ServiceLocator.getPersistanceTransaction();
  private Persistance persistance = ServiceLocator.getPersistance();
}
 public static void execute() {
   for (final Site site : ServiceLocator.getPersistance().getSitesWithNotEmptyIncomeSettings()) {
     if (site.getIncomeSettings() != null && site.getIncomeSettings().getSum() > 0) {
       final PayPalPaymentRequest request = new PayPalPaymentRequest();
       request.setEmail(site.getIncomeSettings().getPaypalAddress());
       request.setSum(site.getIncomeSettings().getSum());
       request.setNote(StringUtil.getEmptyOrString(site.getIncomeSettings().getPaymentDetails()));
       request.setSiteId(site.getId());
       try {
         // Here should be default PayPal because we must send money from our system to child
         // site`s owner,
         // which decided to use our payment system instead of their own one.
         ((PayPal) PaymentSystem.newInstance(PaymentMethod.PAYPAL))
             .massPayment(Arrays.asList(request), PaymentReason.AUTO_PAYMENT);
         new SiteManager(site).clearIncomeSettings();
       } catch (Exception exception) {
         Logger.getLogger(IncomeSettingsOwnerMoneySender.class.getName())
             .log(Level.SEVERE, "Can`t send money for parent site.", exception);
       }
     }
   }
 }
  @Test
  public void execute() throws Exception {
    TestUtil.createUserAndLogin();
    final Site site = TestUtil.createSite();

    final PageManager pageVersion = TestUtil.createPageVersionSiteUser();
    Widget widgetCustomForm = TestUtil.createCustomFormWidget(pageVersion);
    final DraftCustomForm customForm = TestUtil.createCustomForm(site);

    final List<FilledFormItem> filledFormItems =
        TestUtil.createFilledFormItems(FormItemName.FIRST_NAME, FormItemName.LAST_NAME);
    filledFormItems.get(0).setValue("FN1");
    filledFormItems.get(1).setValue("LN1");

    final SubmitCustomFormRequest request = new SubmitCustomFormRequest();
    request.setFormId(customForm.getFormId());
    request.setWidgetId(widgetCustomForm.getWidgetId());
    request.setFilledFormItems(new ArrayList<FilledFormItem>());
    request.setVerificationCode("aaaaaa");
    request.setFilledFormItems(filledFormItems);
    ServiceLocator.getSessionStorage()
        .setNoBotCode(null, "customForm" + widgetCustomForm.getWidgetId(), "aaaaaa");

    final SubmitCustomFormResponse response = service.execute(request);

    Assert.assertNull(response.getNextPageHtml());

    final FilledForm filledCustomForm =
        ServiceLocator.getPersistance().getFilledFormById(response.getFilledFormId());
    Assert.assertNotNull(filledCustomForm);
    Assert.assertEquals(
        filledFormItems.get(0).getValues(),
        filledCustomForm.getFilledFormItems().get(0).getValues());
    Assert.assertEquals(
        filledFormItems.get(1).getValues(),
        filledCustomForm.getFilledFormItems().get(1).getValues());
  }
/** @author Balakirev Anatoliy */
@UrlBinding("/uploadFormVideoFiles.action")
public class UploadFormVideoFilesAction extends Action implements UploadedFiles {
  @DefaultHandler
  public Resolution upload() {
    try {
      if (fileData == null || filledFormId < 1) {
        throw new UnsupportedOperationException();
      }
      final FilledForm filledForm = persistance.getFilledFormById(filledFormId);
      final DraftForm form = persistance.getFormById(filledForm.getFormId());
      final FilledFormItem filledFormItem =
          FilledFormManager.getFilledFormItemByItemPosition(filledForm, position);
      final FormVideo formVideo = getFormVideoOrCreateNew(filledFormItem);

      final int siteId = form.getSiteId();
      final SourceVideoFileCreator sourceVideoFileCreator =
          new SourceVideoFileCreator(
              siteId,
              FileNameUtil.createExtension(fileData.getFileName()),
              fileData.getFileName(),
              fileData.getInputStream());
      final Video video = sourceVideoFileCreator.execute();

      persistanceTransaction.execute(
          new PersistanceTransactionContext<Void>() {
            public Void execute() {
              if (formItemName == FormItemName.VIDEO_FILE_UPLOAD) {
                try {
                  video.setFilledFormId(filledForm.getFilledFormId());
                  video.setFilledFormItemId(filledFormItem.getItemId());
                  formVideo.setVideoId(video.getVideoId());
                  FlvVideoManager.getFlvVideoOrCreateNew(
                      video.getVideoId(),
                      video.getSourceWidth(),
                      video.getSourceHeight(),
                      formVideo.getQuality(),
                      video.getSiteId());
                } catch (Exception exception) {
                  logger.log(Level.SEVERE, "Can`t create video file!", exception);
                }
              } else if (formItemName == FormItemName.IMAGE_FILE_UPLOAD) {
                formVideo.setImageId((new CreateFormFileUtil().createFormFile(fileData, siteId)));
              }
              return null;
            }
          });
      ServiceLocator.getPersistanceTransaction()
          .execute(
              new Runnable() {
                public void run() {
                  GalleriesManager.updateVideoFilesForGalleriesThatUseCurentForm(
                      filledForm.getFormId());
                }
              });
    } catch (Exception exception1) {
      try {
        this.getContext().getResponse().getOutputStream().println("-200");
      } catch (Exception exception2) {
        logger.log(Level.SEVERE, "Error while writing file", exception2);
      }
      logger.log(Level.SEVERE, "Error while writing file", exception1);
      return resolutionCreator.forwardToUrl("/SWFUpload/error.jsp");
    }
    return resolutionCreator.forwardToUrl("/SWFUpload/success.jsp");
  }

  private FormVideo getFormVideoOrCreateNew(final FilledFormItem filledFormItem) {
    final FormVideo formVideo =
        persistance.getFormVideoById(FilledFormItemManager.getIntValue(filledFormItem));
    if (formVideo == null) {
      return persistanceTransaction.execute(
          new PersistanceTransactionContext<FormVideo>() {
            public FormVideo execute() {
              final FormVideo newFormVideo = new FormVideo();
              persistance.putFormVideo(newFormVideo);
              filledFormItem.setValue("" + newFormVideo.getFormVideoId());
              return newFormVideo;
            }
          });
    } else {
      return formVideo;
    }
  }

  public FormItemName getFormItemName() {
    return formItemName;
  }

  public void setFormItemName(FormItemName formItemName) {
    this.formItemName = formItemName;
  }

  public int getFilledFormId() {
    return filledFormId;
  }

  public void setFilledFormId(int filledFormId) {
    this.filledFormId = filledFormId;
  }

  public FileBean getFileData() {
    return fileData;
  }

  public void setFileData(FileBean fileData) {
    this.fileData = fileData;
  }

  public int getPosition() {
    return position;
  }

  public void setPosition(int position) {
    this.position = position;
  }

  private FormItemName formItemName;
  private int filledFormId;
  private int position;
  private final Persistance persistance = ServiceLocator.getPersistance();
  private final ResolutionCreator resolutionCreator = ServiceLocator.getResolutionCreator();
  private final PersistanceTransaction persistanceTransaction =
      ServiceLocator.getPersistanceTransaction();
  private static final Logger logger = Logger.getLogger(UploadFormFilesAction.class.getName());
  private FileBean fileData;

  public String getResourceUrl() {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }

  public int getResourceId() {
    return 0; // To change body of implemented methods use File | Settings | File Templates.
  }

  public ResourceType getResourceType() {
    return null; // To change body of implemented methods use File | Settings | File Templates.
  }
}
예제 #13
0
  @RemoteMethod
  public String goToPaypalCSR(final PaypalRequest request) throws Exception {
    final PaymentReason paymentReason = PaymentReason.CHILD_SITE_CREATION;

    // Modifying redirect url
    // Check on hash presence. We sould remove all old hash.
    if (request.getRedirectToUrl().contains("#")) {
      request.setRedirectToUrl(
          request.getRedirectToUrl().substring(0, request.getRedirectToUrl().indexOf("#")));
    }

    if (request.getPageBreakIndex() > request.getTotalPageBreaks()) {
      // If payment page is last page then update return url with setting that will show message
      // about registration completion.
      request.setRedirectToUrl(
          request.getRedirectToUrl() + "#showSuccessMessageLastPage" + request.getWidgetId());
    } else {
      // Upadting return from paypal url with correct form page.
      request.setRedirectToUrl(
          request.getRedirectToUrl()
              + (request.getRedirectToUrl().contains("?") ? "&" : "?")
              + "pageBreaksToPass="******"&filledFormToUpdateId="
              + request.getFilledFormToUpdateId()
              + "&childSiteUserId="
              + request.getChildSiteUserId()
              + "&settingsId="
              + request.getSettingsId()
              + "#showSuccessMessage"
              + request.getWidgetId());
    }

    final PaypalPaymentInfoRequest paymentInfoRequest =
        new PaypalPaymentInfoRequest(
            request.getOwnerId(),
            PaymentSettingsOwnerType.CHILD_SITE_SETTINGS,
            request.getChargeType(),
            request.getRedirectToUrl(),
            createRedirectOnErrorUrl(request),
            paymentReason,
            request.getChildSiteUserId());
    final int requestId =
        ServiceLocator.getPaypalPaymentInfoRequestStorage().put(paymentInfoRequest);

    final ChildSiteSettings childSiteSettings =
        ServiceLocator.getPersistance().getChildSiteSettingsById(request.getSettingsId());
    // Here we should check, which paypal we should use: default Web-Deva`s or own. Tolik
    final PayPal payPal =
        (PayPal) new PaymentSettingsOwnerManager(childSiteSettings).getAppropriatePaymentSystem();

    final String networkName = childSiteSettings.getChildSiteRegistration().getName();
    final String applicationUrl =
        "http://" + ServiceLocator.getConfigStorage().get().getApplicationUrl();
    final String token =
        payPal.setCustomerBillingAgreement(
            applicationUrl + "/account/createProfile.action?requestId=" + requestId,
            request.getRedirectToUrl()
                + (request.getRedirectToUrl().contains("?") ? "&" : "?")
                + "pageBreaksToPass="******"&filledFormToUpdateId="
                + request.getFilledFormToUpdateId(),
            (networkName + " fee for child site"),
            paymentReason,
            null,
            request.getOwnerId(),
            request.getChildSiteUserId());

    return (payPal.getPaypalLink() + token);
  }
  @Test
  public void testExecute_WithFirstState() throws Exception {
    ServiceLocator.getConfigStorage().get().setUserSitesUrl("web-deva.com");
    User user = TestUtil.createUser();
    user.setActiveted(null);
    Site parentSite = TestUtil.createSite();
    DraftChildSiteRegistration registration = TestUtil.createChildSiteRegistration(parentSite);
    ChildSiteSettings settings = TestUtil.createChildSiteSettings(registration, parentSite);
    settings.setCreatedDate(new Date());
    settings.setUserId(user.getUserId());
    settings.setConfirmCode("confirm");
    settings.setAccessLevel(SiteAccessLevel.ADMINISTRATOR);

    FilledForm filledForm = TestUtil.createFilledForm(registration.getFormId());
    FilledFormItem filledFormItemDomainName =
        TestUtil.createFilledFormItem(FormItemName.YOUR_OWN_DOMAIN_NAME);
    List<String> values = Arrays.asList("domainName");
    filledFormItemDomainName.setValues(values);

    FilledFormItem filledFormItemSiteName =
        TestUtil.createFilledFormItem(FormItemName.YOUR_PAGE_SITE_NAME);
    List<String> siteNameValues = Arrays.asList("siteName");
    filledFormItemSiteName.setValues(siteNameValues);

    filledForm.setFilledFormItems(Arrays.asList(filledFormItemDomainName, filledFormItemSiteName));
    settings.setFilledFormId(filledForm.getFilledFormId());

    action.setSettingsId(settings.getChildSiteSettingsId());
    action.setConfirmCode("confirm");

    DraftChildSiteRegistration childSiteRegistration =
        TestUtil.createChildSiteRegistration("name", "comment");
    Site blueprint = TestUtil.createBlueprint();
    childSiteRegistration.setBlueprintsId(Arrays.asList(blueprint.getSiteId()));

    settings.setRequiredToUseSiteBlueprint(true);
    final SitePaymentSettings sitePaymentSettings = new SitePaymentSettings();
    sitePaymentSettings.setSiteStatus(SiteStatus.ACTIVE);
    settings.setSitePaymentSettings(sitePaymentSettings);
    settings.setChildSiteRegistration(childSiteRegistration);

    Assert.assertNull(user.getActiveted());
    Assert.assertNull(new UsersManager().getLoginedUser());
    Assert.assertNull(ServiceLocator.getPersistance().getSiteBySubDomain("domainname"));

    ForwardResolution resolutionMock = (ForwardResolution) action.show();
    Assert.assertNotNull(new UsersManager().getLoginedUser());
    Assert.assertEquals(user, new UsersManager().getLoginedUser());
    Assert.assertEquals(
        "/account/registration/childSiteRigistrationConfirmationFirstState.jsp",
        resolutionMock.getPath());

    Assert.assertNotNull(user.getActiveted());
    Assert.assertNotNull(new UsersManager().getLoginedUser());
    Assert.assertEquals(user, new UsersManager().getLoginedUser());
    Site site = ServiceLocator.getPersistance().getSiteBySubDomain("domainname");
    Assert.assertNotNull(site);
    Assert.assertNotNull(new UserRightManager(user).toSite(site).getSiteAccessType());
    Assert.assertEquals(
        settings.getAccessLevel(), new UserRightManager(user).toSite(site).getSiteAccessType());
    Assert.assertEquals("domainname", site.getSubDomain());
    Assert.assertEquals("http://domainname.web-deva.com", action.getUrl());
    Assert.assertNotNull(action.getTellFriendHtml());
    Assert.assertEquals(2, site.getPages().size());

    Assert.assertEquals("siteName", site.getTitle());
    Assert.assertEquals(blueprint, site.getBlueprintParent());
  }
  @Test
  public void executeWithPageBreaksFromAddRecord() throws Exception {
    TestUtil.createUserAndLogin();
    final Site site = TestUtil.createSite();

    final DraftCustomForm customForm = TestUtil.createCustomForm(site);

    final List<DraftFormItem> formItems = new ArrayList<DraftFormItem>();
    formItems.add(TestUtil.createFormItem(FormItemName.FIRST_NAME, 0));
    formItems.add(TestUtil.createFormItem(FormItemName.PAGE_BREAK, 1));
    formItems.add(TestUtil.createFormItem(FormItemName.LAST_NAME, 2));
    customForm.setFormItems(formItems);

    // FIRST PAGE
    List<FilledFormItem> filledFormItems = TestUtil.createFilledFormItems(FormItemName.FIRST_NAME);
    filledFormItems.get(0).setValue("FN1");

    SubmitCustomFormRequest request = new SubmitCustomFormRequest();
    request.setFormId(customForm.getFormId());
    request.setWidgetId(0);
    request.setFilledFormItems(new ArrayList<FilledFormItem>());
    request.setRequestNextPage(true);
    request.setPageBreaksToPass(1);
    request.setVerificationCode("aaaaaa");
    request.setFilledFormItems(filledFormItems);
    request.setShowFromAddRecord(true);

    SubmitCustomFormResponse response = service.execute(request);
    Assert.assertEquals(
        "/site/showCustomForm.action?formId="
            + request.getFormId()
            + "&showFromAddRecord=true"
            + "&pageBreaksToPass="******"&filledFormToUpdateId="
            + response.getFilledFormId(),
        response.getNextPageHtml());

    FilledForm filledContactUsForm =
        ServiceLocator.getPersistance().getFilledFormById(response.getFilledFormId());
    Assert.assertNotNull(filledContactUsForm);
    Assert.assertEquals(
        filledFormItems.get(0).getValues(),
        filledContactUsForm.getFilledFormItems().get(0).getValues());

    // SECOND PAGE
    filledFormItems = TestUtil.createFilledFormItems(FormItemName.LAST_NAME);
    filledFormItems.get(0).setValue("LN1");

    request = new SubmitCustomFormRequest();
    request.setFormId(customForm.getFormId());
    request.setWidgetId(0);
    request.setFilledFormItems(new ArrayList<FilledFormItem>());
    request.setShowFromAddRecord(true);
    request.setRequestNextPage(true);
    request.setFilledFormId(response.getFilledFormId());
    request.setPageBreaksToPass(2);
    request.setFilledFormItems(filledFormItems);

    response = service.execute(request);

    Assert.assertNull(response.getNextPageHtml());

    filledContactUsForm =
        ServiceLocator.getPersistance().getFilledFormById(response.getFilledFormId());
    Assert.assertEquals(
        filledFormItems.get(0).getValues(),
        filledContactUsForm.getFilledFormItems().get(1).getValues());
  }
예제 #16
0
/** @author Artem Stasuk */
public class FormFiltersManager {

  public FormFiltersManager(final UserManager userManager) {
    this.userManager = userManager;
  }

  public FormFilterManager save(final FormFilterEdit edit) {
    return persistanceTransaction.execute(
        new PersistanceTransactionContext<FormFilterManager>() {

          @Override
          public FormFilterManager execute() {
            final DraftFormFilter originalFormFilter =
                persistance.getFormFilterByNameAndFormId(edit.getName(), edit.getFormId());
            if (originalFormFilter != null && edit.getId() == null) {
              throw new FormFilterNotUniqueNameException("Not unique name " + edit.getName());
            } else if (originalFormFilter != null
                && originalFormFilter.getFormFilterId() != edit.getId()) {
              throw new FormFilterNotUniqueNameException("Not unique name " + edit.getName());
            }

            final DraftFormFilter formFilter;
            final UserRightManager userRightManager = userManager.getRight();
            if (edit.getId() == null) {
              final DraftForm form = persistance.getFormById(edit.getFormId());
              if (userRightManager.toSiteItem(form) != SiteOnItemRightType.EDIT) {
                throw new FormNotFoundException("Can't find form " + edit.getFormId());
              }

              formFilter = new DraftFormFilter();
              formFilter.setName(edit.getName());
              form.addFilter(formFilter);
              persistance.putFormFilter(formFilter);
            } else {
              formFilter = persistance.getFormFilterById(edit.getId());
              if (formFilter == null
                  || userRightManager.toSiteItem(formFilter.getForm())
                      != SiteOnItemRightType.EDIT) {
                throw new FormFilterNotFoundException("Can't find " + edit.getId());
              }
              formFilter.setName(edit.getName());
            }

            final List<DraftFormFilterRule> rules =
                new ArrayList<DraftFormFilterRule>(formFilter.getRules());
            for (final DraftFormFilterRule rule : rules) {
              persistance.removeFormFilterRule(rule);
            }

            for (final FormFilterRuleEdit ruleEdit : edit.getRules()) {
              final DraftFormFilterRule rule = new DraftFormFilterRule();
              rule.setInclude(ruleEdit.isInclude());
              rule.setCriteria(ruleEdit.getCriteria());
              rule.setFormItemId(ruleEdit.getFormItemId());
              formFilter.addRule(rule);
              persistance.putFormFilterRule(rule);
            }

            return new FormFilterManager(formFilter);
          }
        });
  }

  public List<FormFilterManager> getFilters() {
    final List<DraftFormFilter> filters =
        persistance.getFormFiltersByUserId(userManager.getUserId());
    final List<FormFilterManager> filterManagers = new ArrayList<FormFilterManager>(filters.size());
    for (final DraftFormFilter filter : filters) {
      filterManagers.add(new FormFilterManager(filter));
    }
    return filterManagers;
  }

  public FormFilterManager get(final Integer id) {
    if (id != null) {
      final DraftFormFilter formFilter = persistance.getFormFilterById(id);
      if (formFilter != null) {
        return new FormFilterManager(formFilter);
      }
    }
    throw new FormFilterNotFoundException("Can't find " + id);
  }

  public String getDefaultName(final int formId) {
    final Set<String> usedNames = new HashSet<String>();
    for (final DraftFormFilter filter : persistance.getFormById(formId).getDraftFilters()) {
      usedNames.add(filter.getName());
    }

    int number = 1;
    final String name = "Form Filter";

    while (true) {
      if (!usedNames.contains(name + number)) {
        return name + number;
      }
      if (number >= Integer.MAX_VALUE) {
        number = (int) Math.round(Math.random());
      } else {
        number++;
      }
    }
  }

  public void delete(final int id) {
    final DraftFormFilter formFilter = persistance.getFormFilterById(id);
    final UserRightManager userRightManager = userManager.getRight();
    if (formFilter != null
        && userRightManager.toSiteItem(formFilter.getForm()) == SiteOnItemRightType.EDIT) {
      persistanceTransaction.execute(
          new Runnable() {

            @Override
            public void run() {
              persistance.removeFormFilter(formFilter);
              formFilter.getDraftForm().removeFilter(formFilter);
            }
          });
    }
  }

  private final UserManager userManager;
  private final Persistance persistance = ServiceLocator.getPersistance();
  private final PersistanceTransaction persistanceTransaction =
      ServiceLocator.getPersistanceTransaction();
}
예제 #17
0
@RemoteProxy
public class ShowVisitorLoginService extends ServiceWithExecutePage {

  /**
   * @param widgetId - selected widget id
   * @param force - if this parameter true login show always. If false login show only if visitor
   *     not logined.
   * @return - html with login controls
   * @throws IOException
   * @throws ServletException
   */
  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String execute(final int widgetId, final boolean force)
      throws IOException, ServletException {
    this.widgetId = widgetId;
    widget = persistance.getWidget(widgetId);
    if (widget == null) {
      throw new WidgetNotFoundException("Cannot find widget by id " + widgetId);
    }
    final Cookie[] cookies = getContext().getHttpServletRequest().getCookies();
    final Site site = widget.getSite();
    if (cookies != null) {
      final Cookie crypted = ActionUtil.findCookie(cookies, "sh_cpt" + site.getSiteId());
      final Cookie visitorId = ActionUtil.findCookie(cookies, "sh_vid" + site.getSiteId());
      if (crypted != null && visitorId != null && !force) {
        // Getting our user from cookie
        user = persistance.getUserById(Integer.parseInt(visitorId.getValue()));

        // Check for rights.
        if (user == null
            || persistance.getUserOnSiteRightByUserAndSiteId(user.getUserId(), site.getSiteId())
                == null) {
          return executePage("/site/render/widgetLogin.jsp");
        }

        // Checking if user md5(login + password) matches the same form cookie
        if (MD5.crypt(user.getEmail() + user.getPassword()).equals(crypted.getValue())) {
          // If so - login our user
          new UsersManager().login(user.getUserId());
        }
      }
    }

    user = new UsersManager().getLoginedUser();
    if (user != null && !force) {
      final boolean isVisitorLogined =
          user != null && new UserRightManager(user).toSite(site) != null;

      if (isVisitorLogined) {
        return executePage("/site/render/visitorLogined.jsp");
      } else {
        return executePage("/site/render/widgetLogin.jsp");
      }
    }
    return executePage("/site/render/widgetLogin.jsp");
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForRegistration(final int widgetId) throws IOException, ServletException {
    returnToRegistration = true;
    return execute(widgetId, false);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForChildSiteRegistration(final int widgetId)
      throws IOException, ServletException {
    returnToChildSiteRegistration = true;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForManageVotes(final int widgetId, final int formId)
      throws IOException, ServletException {
    returnToManageVotes = true;
    this.formId = formId;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForGalleryWithForm(
      final int widgetId, final int formId, final Integer shouldBeRegisteredFromRightFormId)
      throws IOException, ServletException {
    returnToGallery = true;
    this.formId = formId;
    this.shouldBeRegisteredFromRightFormId = shouldBeRegisteredFromRightFormId;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForShoppingCart(final int widgetId, final int formId)
      throws IOException, ServletException {
    returnToShoppingCart = true;
    this.formId = formId;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForGallery(final int widgetId) throws IOException, ServletException {
    returnToGallery = true;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForForum(final int widgetId) throws IOException, ServletException {
    returnToForum = true;
    return execute(widgetId, true);
  }

  @RemoteMethod
  @SynchronizeByMethodParameter(entityClass = Widget.class)
  public String executeForBlog(final int widgetId) throws IOException, ServletException {
    returnToBlog = true;
    return execute(widgetId, true);
  }

  public User getVisitor() {
    return user;
  }

  public int getWidgetId() {
    return widgetId;
  }

  public void setWidgetId(int widgetId) {
    this.widgetId = widgetId;
  }

  public void setVisitor(User user) {
    this.user = user;
  }

  public Widget getWidget() {
    return widget;
  }

  public boolean isReturnToRegistration() {
    return returnToRegistration;
  }

  public boolean isReturnToChildSiteRegistration() {
    return returnToChildSiteRegistration;
  }

  public boolean isReturnToManageVotes() {
    return returnToManageVotes;
  }

  public boolean isReturnToGallery() {
    return returnToGallery;
  }

  public Integer getFormId() {
    return formId;
  }

  public boolean isReturnToForum() {
    return returnToForum;
  }

  public boolean isReturnToBlog() {
    return returnToBlog;
  }

  public Integer getShouldBeRegisteredFromRightFormId() {
    return shouldBeRegisteredFromRightFormId;
  }

  public boolean isReturnToShoppingCart() {
    return returnToShoppingCart;
  }

  private final Persistance persistance = ServiceLocator.getPersistance();
  private final SessionStorage sessionStorage = ServiceLocator.getSessionStorage();
  private int widgetId;
  private Integer formId;
  private Integer shouldBeRegisteredFromRightFormId;
  private User user;
  private Widget widget;
  private boolean returnToRegistration;
  private boolean returnToChildSiteRegistration;
  private boolean returnToManageVotes;
  private boolean returnToGallery;
  private boolean returnToForum;
  private boolean returnToBlog;
  private boolean returnToShoppingCart;
}
예제 #18
0
  @RemoteMethod
  public GoToPaypalResponse goToPaypal(final PaypalRequest request) throws Exception {
    final PaymentReason paymentReason = PaymentReason.SHROGGLE_MONTHLY_PAYMENT;
    final Site site = ServiceLocator.getPersistance().getSite(request.getOwnerId());

    if (site == null) {
      throw new PaymentException(
          "Cannot pay for null site. Site by Id=" + request.getOwnerId() + " not found.");
    }

    final GoToPaypalResponse response = new GoToPaypalResponse();
    if (site.getSitePaymentSettings().getSiteStatus() == SiteStatus.ACTIVE
        && site.getSitePaymentSettings().getChargeType() == ChargeType.SITE_ONE_TIME_FEE) {
      response.setActivatedWithOneTimeFee(true);
      return response;
    }

    final String redirectOnErrorUrl = "/account/updatePaymentInfo.action?showPaypalError=true";
    final PaypalPaymentInfoRequest paymentInfoRequest =
        new PaypalPaymentInfoRequest(
            request.getOwnerId(),
            PaymentSettingsOwnerType.SITE,
            request.getChargeType(),
            request.getRedirectToUrl(),
            redirectOnErrorUrl,
            paymentReason,
            null);
    final int requestId =
        ServiceLocator.getPaypalPaymentInfoRequestStorage().put(paymentInfoRequest);

    final String description;
    if (request.getChargeType().getPaymentPeriod().equals(PaymentPeriod.MONTH)) {
      description = "Monthly cost of " + site.getTitle() + " site.";
    } else {
      description = "Annual cost of " + site.getTitle() + " site.";
    }
    // Here we should check, which paypal we should use: default Web-Deva`s or own. Tolik
    final PayPal payPal =
        (PayPal) new PaymentSettingsOwnerManager(site).getAppropriatePaymentSystem();

    final String applicationUrl =
        "http://" + ServiceLocator.getConfigStorage().get().getApplicationUrl();
    final String token =
        payPal.setCustomerBillingAgreement(
            applicationUrl + "/account/createProfile.action?requestId=" + requestId,
            applicationUrl + "/account/updatePaymentInfo.action",
            description,
            paymentReason,
            site.getSiteId(),
            null,
            null);

    response.setPaypalLink(payPal.getPaypalLink() + token);

    if (site.getSitePaymentSettings().getSiteStatus() == SiteStatus.ACTIVE) {
      if (site.getSitePaymentSettings().getPaymentMethod() == PaymentMethod.AUTHORIZE_NET) {
        response.setJavienActivated(true);
      } else if (payPal.getProfileStatus(site.getSitePaymentSettings().getRecurringPaymentId())
          == PayPalRecurringProfileStatus.ACTIVE) {
        response.setActiveProfile(true);
      }
    }
    return response;
  }
@RunWith(value = TestRunnerWithMockServices.class)
public class CreateContactUsServiceTest {

  @Before
  public void before() {
    MockWebContext mockWebContext = (MockWebContext) service.getContext();
    mockWebContext.setHttpServletRequest(new MockHttpServletRequest("", ""));
  }

  @Test
  public void executeFromSiteEditPage() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);
    final PageManager pageVersion = TestUtil.createPageVersionAndPage(site);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    WidgetItem widget = TestUtil.createTextWidget();
    widget.setPosition(0);
    persistance.putWidget(widget);
    pageVersion.addWidget(widget);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    request.setWidgetId(widget.getWidgetId());
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    final FunctionalWidgetInfo response = service.execute(request);

    Assert.assertNotNull(response);
    Assert.assertEquals(widget.getWidgetId(), response.getWidget().getWidgetId());
    Assert.assertEquals("name", contactUs.getName());
    Assert.assertEquals("header", contactUs.getDescription());
    Assert.assertTrue(contactUs.isShowDescription());
    Assert.assertEquals(FormType.CONTACT_US, contactUs.getType());
  }

  @Test
  public void executeFromManageItems() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    final FunctionalWidgetInfo response = service.execute(request);

    Assert.assertNotNull(response);
    Assert.assertNull(response.getWidget());
    Assert.assertEquals("name", contactUs.getName());
    Assert.assertEquals("header", contactUs.getDescription());
    Assert.assertTrue(contactUs.isShowDescription());
    Assert.assertEquals(FormType.CONTACT_US, contactUs.getType());
  }

  @Test(expected = InvalidContactUsEmailException.class)
  public void executeWithBadEmail() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail("a");
    request.setHeader("header");
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    service.execute(request);
  }

  @Test(expected = InvalidContactUsEmailException.class)
  public void executeWithoutEmail() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);

    final ContactUs contactUs = TestUtil.createContactUs(site);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail(null);
    request.setHeader("header");
    request.setContactUsId(contactUs.getId());

    DraftFormItem item = new DraftFormItem();
    item.setPosition(0);
    item.setRequired(true);
    item.setFormItemName(FormItemName.FIRST_NAME);
    ServiceLocator.getPersistance().putFormItem(item);
    List<DraftFormItem> items = new ArrayList<DraftFormItem>();
    items.add(item);
    request.setFormItems(items);

    service.execute(request);
  }

  @Test(expected = PageBreakBeforeRequiredFieldsException.class)
  public void executeWithPageBreakBeforeMandatory() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);
    final PageManager pageVersion = TestUtil.createPageVersionAndPage(site);

    WidgetItem widget = TestUtil.createWidgetItem();
    widget.setPosition(0);
    persistance.putWidget(widget);
    pageVersion.addWidget(widget);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setDisplayHeader(true);
    request.setEmail("*****@*****.**");
    request.setHeader("header");
    request.setWidgetId(widget.getWidgetId());

    final List<DraftFormItem> formItems =
        TestUtil.createFormItems(
            FormItemName.FIRST_NAME, FormItemName.PAGE_BREAK, FormItemName.REGISTRATION_EMAIL);

    request.setFormItems(formItems);

    service.execute(request);
  }

  @Test(expected = ContactUsNameNotUniqueException.class)
  public void executeWithNotUniqueName() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);
    PageManager pageVersion = TestUtil.createPageVersionAndPage(site);

    WidgetItem widget = TestUtil.createWidgetItem();
    widget.setPosition(0);
    persistance.putWidget(widget);
    pageVersion.addWidget(widget);

    DraftContactUs contactUs = new DraftContactUs();
    contactUs.setShowDescription(true);
    contactUs.setEmail("[email protected]");
    contactUs.setDescription("header");
    contactUs.setName("name2");
    contactUs.setSiteId(site.getSiteId());
    ServiceLocator.getPersistance().putContactUs(contactUs);

    DraftContactUs contactUs2 = new DraftContactUs();
    contactUs2.setShowDescription(true);
    contactUs2.setEmail("[email protected]");
    contactUs2.setDescription("header2");
    contactUs2.setName("name");
    contactUs2.setSiteId(site.getSiteId());
    ServiceLocator.getPersistance().putContactUs(contactUs2);

    widget.setDraftItem(contactUs);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setContactUsId(contactUs.getId());
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    request.setWidgetId(widget.getWidgetId());
    final List<DraftFormItem> formItems =
        TestUtil.createFormItems(FormItemName.FIRST_NAME, FormItemName.REGISTRATION_EMAIL);
    request.setFormItems(formItems);

    service.execute(request);
  }

  @Test(expected = ContactUsNotFoundException.class)
  public void executeWithNotFoundContactUs() throws ServletException, IOException {
    final Site site = TestUtil.createSite();
    TestUtil.createUserAndUserOnSiteRightAndLogin(site, SiteAccessLevel.ADMINISTRATOR);
    PageManager pageVersion = TestUtil.createPageVersionAndPage(site);

    WidgetItem widget = TestUtil.createWidgetItem();
    widget.setPosition(0);
    persistance.putWidget(widget);
    pageVersion.addWidget(widget);

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setContactUsName("name");
    request.setContactUsId(-1);
    request.setDisplayHeader(true);
    request.setEmail("[email protected]");
    request.setHeader("header");
    final List<DraftFormItem> formItems =
        TestUtil.createFormItems(FormItemName.FIRST_NAME, FormItemName.REGISTRATION_EMAIL);
    request.setFormItems(formItems);

    service.execute(request);
  }

  @Test(expected = UserNotLoginedException.class)
  public void executeWithoutLogin() throws ServletException, IOException {
    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    service.execute(request);
  }

  @Test(expected = WidgetNotFoundException.class)
  public void executeWithoutWidget() throws ServletException, IOException {
    TestUtil.createUserAndLogin();

    final CreateContactUsWidgetRequest request = new CreateContactUsWidgetRequest();
    request.setWidgetId(2);
    service.execute(request);
  }

  private final CreateContactUsService service = new CreateContactUsService();
  private final Persistance persistance = ServiceLocator.getPersistance();
}
  @Test
  public void executeWithPageBreaks() throws Exception {
    TestUtil.createUserAndLogin();
    final Site site = TestUtil.createSite();

    final PageManager pageVersion = TestUtil.createPageVersionSiteUser();
    Widget widgetCustomForm = TestUtil.createCustomFormWidget(pageVersion);
    final DraftCustomForm customForm = TestUtil.createCustomForm(site);

    final List<DraftFormItem> formItems = new ArrayList<DraftFormItem>();
    formItems.add(TestUtil.createFormItem(FormItemName.FIRST_NAME, 0));
    formItems.add(TestUtil.createFormItem(FormItemName.PAGE_BREAK, 1));
    formItems.add(TestUtil.createFormItem(FormItemName.LAST_NAME, 2));
    customForm.setFormItems(formItems);

    // FIRST PAGE
    List<FilledFormItem> filledFormItems = TestUtil.createFilledFormItems(FormItemName.FIRST_NAME);
    filledFormItems.get(0).setValue("FN1");

    SubmitCustomFormRequest request = new SubmitCustomFormRequest();
    request.setFormId(customForm.getFormId());
    request.setWidgetId(widgetCustomForm.getWidgetId());
    request.setFilledFormItems(new ArrayList<FilledFormItem>());
    request.setRequestNextPage(true);
    request.setPageBreaksToPass(1);
    request.setVerificationCode("aaaaaa");
    request.setFilledFormItems(filledFormItems);
    ServiceLocator.getSessionStorage()
        .setNoBotCode(null, "customForm" + widgetCustomForm.getWidgetId(), "aaaaaa");

    SubmitCustomFormResponse response = service.execute(request);

    Assert.assertNotNull(response.getNextPageHtml());

    FilledForm filledContactUsForm =
        ServiceLocator.getPersistance().getFilledFormById(response.getFilledFormId());
    Assert.assertNotNull(filledContactUsForm);
    Assert.assertEquals(
        filledFormItems.get(0).getValues(),
        filledContactUsForm.getFilledFormItems().get(0).getValues());

    // SECOND PAGE
    filledFormItems = TestUtil.createFilledFormItems(FormItemName.LAST_NAME);
    filledFormItems.get(0).setValue("LN1");

    request = new SubmitCustomFormRequest();
    request.setFormId(customForm.getFormId());
    request.setWidgetId(widgetCustomForm.getWidgetId());
    request.setFilledFormItems(new ArrayList<FilledFormItem>());
    request.setRequestNextPage(true);
    request.setFilledFormId(response.getFilledFormId());
    request.setPageBreaksToPass(2);
    request.setFilledFormItems(filledFormItems);

    response = service.execute(request);

    // Ok, now after we have filled out last form page we need to show first form page again with
    // the
    // message about successfull form submit.
    Assert.assertNotNull(response.getNextPageHtml());
    Assert.assertTrue(response.isShowSuccessfullSubmitMessage());

    filledContactUsForm =
        ServiceLocator.getPersistance().getFilledFormById(response.getFilledFormId());
    Assert.assertEquals(
        filledFormItems.get(0).getValues(),
        filledContactUsForm.getFilledFormItems().get(1).getValues());
  }