@Override protected QueryParameters prepareForm(final ActionContext context) { final SearchScheduledPaymentsForm form = context.getForm(); final HttpServletRequest request = context.getRequest(); final ScheduledPaymentQuery query = getDataBinder().readFromString(form.getQuery()); query.fetch( ScheduledPayment.Relationships.TRANSFERS, RelationshipHelper.nested( ScheduledPayment.Relationships.FROM, MemberAccount.Relationships.MEMBER), RelationshipHelper.nested( ScheduledPayment.Relationships.TO, MemberAccount.Relationships.MEMBER)); // Account owner AccountOwner owner = null; if (form.getMemberId() > 0) { owner = (Member) elementService.load(form.getMemberId()); request.setAttribute("memberId", form.getMemberId()); } else { // An admin or member or an operator searching his own scheduled payments owner = context.getAccountOwner(); } query.setOwner(owner); List<? extends AccountType> accountTypes; if (context.isAdmin() && owner instanceof SystemAccountOwner) { final SystemAccountTypeQuery satq = new SystemAccountTypeQuery(); accountTypes = accountTypeService.search(satq); } else { final MemberAccountTypeQuery matq = new MemberAccountTypeQuery(); matq.setOwner((Member) owner); accountTypes = accountTypeService.search(matq); } request.setAttribute("accountTypes", accountTypes); if (query.getMember() != null) { final Member member = getFetchService().fetch(query.getMember(), Element.Relationships.USER); query.setMember(member); } if (query.getStatusList() == null) { query.setStatusGroup(ScheduledPaymentQuery.StatusGroup.OPEN); form.setQuery("statusGroup", ScheduledPaymentQuery.StatusGroup.OPEN); } RequestHelper.storeEnum(request, ScheduledPaymentQuery.SearchType.class, "searchTypes"); RequestHelper.storeEnum(request, ScheduledPaymentQuery.StatusGroup.class, "statusGroups"); request.setAttribute("accountOwner", owner); return query; }
/** Validate the typed username */ private Member validateTo(final MobileActionContext context) { final MobileDoPaymentForm form = context.getForm(); final String username = form.getUsername(); if (StringUtils.isEmpty(username)) { throw new MobileException("errors.required", context.message("mobile.payment.username")); } User user; try { user = elementService.loadUser(username, User.Relationships.ELEMENT); if (!(user instanceof MemberUser) || context.getUser().equals(user)) { throw new Exception(); } } catch (final Exception e) { throw new MobileException("errors.invalid", context.message("mobile.payment.username")); } return (Member) user.getElement(); }