All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.voucherify.client.module.LoyaltiesModule Maven / Gradle / Ivy

package io.voucherify.client.module;

import io.voucherify.client.api.VoucherifyApi;
import io.voucherify.client.callback.VoucherifyCallback;
import io.voucherify.client.model.campaign.CampaignsFilter;
import io.voucherify.client.model.campaign.CreateCampaign;
import io.voucherify.client.model.campaign.DeleteCampaignParams;
import io.voucherify.client.model.campaign.UpdateCampaign;
import io.voucherify.client.model.campaign.response.CampaignResponse;
import io.voucherify.client.model.campaign.response.CampaignsResponse;
import io.voucherify.client.model.loyalties.AddBalance;
import io.voucherify.client.model.loyalties.AddMember;
import io.voucherify.client.model.loyalties.CreateEarningRule;
import io.voucherify.client.model.loyalties.EarningRulesFilter;
import io.voucherify.client.model.loyalties.MembersFilter;
import io.voucherify.client.model.loyalties.RedeemReward;
import io.voucherify.client.model.loyalties.UpdateEarningRule;
import io.voucherify.client.model.loyalties.response.AddBalanceResponse;
import io.voucherify.client.model.loyalties.response.EarningRuleResponse;
import io.voucherify.client.model.loyalties.response.ListEarningRulesResponse;
import io.voucherify.client.model.redemption.response.RedeemVoucherResponse;
import io.voucherify.client.model.rewards.CreateRewardAssignment;
import io.voucherify.client.model.rewards.RewardsAssignmentsFilter;
import io.voucherify.client.model.rewards.UpdateRewardAssignment;
import io.voucherify.client.model.rewards.response.ListRewardAssignmentsResponse;
import io.voucherify.client.model.rewards.response.RewardAssignmentResponse;
import io.voucherify.client.model.voucher.response.VoucherResponse;
import io.voucherify.client.model.voucher.response.VouchersResponse;
import io.voucherify.client.module.LoyaltiesModule.ExtAsync;
import io.voucherify.client.module.LoyaltiesModule.ExtRxJava;
import io.voucherify.client.utils.RxUtils;
import rx.Observable;

import java.util.HashMap;
import java.util.List;
import java.util.concurrent.Executor;

public class LoyaltiesModule extends AbsModule {

    public LoyaltiesModule(VoucherifyApi api, Executor executor) {
        super(api, executor);
    }

    public CampaignsResponse list(CampaignsFilter filter) {
        return api.listLoyaltyCampaigns(filter != null ? filter.asMap() : new HashMap());
    }

    public CampaignResponse create(CreateCampaign createCampaign) {
        return api.createLoyaltyCampaign(createCampaign);
    }

    public CampaignResponse update(String id, UpdateCampaign updateCampaign) {
        return api.updateLoyaltyCampaign(id, updateCampaign);
    }

    public CampaignResponse get(String id) {
        return api.getLoyaltyCampaign(id);
    }

    public void delete(String id, DeleteCampaignParams params) {
        api.deleteLoyaltyCampaign(id, params != null ? params.asMap() : new HashMap());
    }

    public ListRewardAssignmentsResponse listRewardAssignments(String id, RewardsAssignmentsFilter filter) {
        return api.listLoyaltyRewardAssignments(id, filter != null ? filter.asMap() : new HashMap());
    }

    public RewardAssignmentResponse createRewardAssignment(String id, List assignments) {
        return api.createLoyaltyRewardAssignment(id, assignments);
    }

    public RewardAssignmentResponse updateRewardAssignment(String id, String assignmentId, UpdateRewardAssignment updateRewardAssignment) {
        return api.updateLoyaltyRewardAssignment(id, assignmentId, updateRewardAssignment);
    }

    public void deleteRewardAssignment(String id, String assignmentId) {
        api.deleteLoyaltyRewardAssignment(id, assignmentId);
    }

    public ListEarningRulesResponse listEarningRules(String id, EarningRulesFilter filter) {
        return api.listLoyaltyEarningRules(id, filter != null ? filter.asMap() : new HashMap());
    }

    public EarningRuleResponse createEarningRules(String id, List rules) {
        return api.createLoyaltyEarningRule(id, rules);
    }

    public EarningRuleResponse updateEarningRule(String id, String ruleId, UpdateEarningRule update) {
        return api.updateLoyaltyEarningRule(id, ruleId, update);
    }

    public void deleteEarningRule(String id, String ruleId) {
        api.deleteLoyaltyEarningRule(id, ruleId);
    }

    public VouchersResponse listMembers(String id, MembersFilter filter) {
        return api.listLoyaltyMembers(id, filter != null ? filter.asMap() : new HashMap());
    }

    public VoucherResponse addMember (String id, AddMember addMember) {
        return api.addLoyaltyMember(id, addMember);
    }

    public VoucherResponse getMember (String id, String memberId) {
        return api.getLoyaltyMember(id, memberId);
    }

    public RedeemVoucherResponse redeemReward(String id, String memberId, RedeemReward redeemReward) {
        return api.redeemLoyaltyReward(id, memberId, redeemReward);
    }

    public AddBalanceResponse addLoyaltyCardBalance(String id, String memberId, AddBalance addBalance) {
        return api.addLoyaltyBalance(id, memberId, addBalance);
    }

    @Override
    ExtAsync createAsyncExtension() {
        return new ExtAsync();
    }

    @Override
    ExtRxJava createRxJavaExtension() {
        return new ExtRxJava();
    }

    @Override
    public ExtAsync async() {
        return extAsync;
    }

    @Override
    public ExtRxJava rx() {
        return extRxJava;
    }

    public class ExtAsync extends AbsModule.Async {

        public void create(CreateCampaign createCampaign, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().create(createCampaign), callback);
        }

        public void delete(String id, DeleteCampaignParams deleteCampaignParams, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().delete(id, deleteCampaignParams), callback);
        }

        public void list(CampaignsFilter campaignsFilter, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().list(campaignsFilter), callback);
        }

        public void get(String id, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().get(id), callback);
        }

        public void update(String id, UpdateCampaign updateCampaign, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().update(id, updateCampaign), callback);
        }

        public void createRewardAssignment(String id, List create, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().createRewardAssignment(id, create), callback);
        }

        public void updateRewardAssignment(String id, String assignmentId, UpdateRewardAssignment update, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().updateRewardAssignment(id, assignmentId, update), callback);
        }

        public void deleteRewardAssignment(String id, String assignmentId, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().deleteRewardAssignment(id, assignmentId), callback);
        }

        public void listRewardAssignments(String id, RewardsAssignmentsFilter filter, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().listRewardAssignments(id, filter), callback);
        }

        public void createEarningRules(String id, List create, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().createEarningRules(id, create), callback);
        }

        public void updateEarningRule(String id, String ruleId, UpdateEarningRule update, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().updateEarningRule(id, ruleId, update), callback);
        }

        public void deleteEarningRule(String id, String ruleId, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().deleteEarningRule(id, ruleId), callback);
        }

        public void listEarningRules(String id, EarningRulesFilter filter, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().listEarningRules(id, filter), callback);
        }

        public void addMember(String id, AddMember addMember, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().addMember(id, addMember), callback);
        }

        public void listMembers(String id, MembersFilter filter, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().listMembers(id, filter), callback);
        }

        public void getMember(String id, String memberId, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().getMember(id, memberId), callback);
        }

        public void redeemReward(String id, String memberId, RedeemReward redeemReward, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().redeemReward(id, memberId, redeemReward), callback);
        }

        public void addLoyaltyCardBalance(String id, String memberId, AddBalance addBalance, VoucherifyCallback callback) {
            RxUtils.subscribe(executor, rx().addLoyaltyCardBalance(id, memberId, addBalance), callback);
        }
    }

    public class ExtRxJava extends AbsModule.Rx {

        public Observable create(final CreateCampaign createCampaign) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public CampaignResponse method() {
                    return LoyaltiesModule.this.create(createCampaign);
                }
            });
        }

        public Observable delete(final String id, final DeleteCampaignParams deleteCampaignParams) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public Void method() {
                    LoyaltiesModule.this.delete(id, deleteCampaignParams);
                    return null;
                }
            });
        }

        public Observable list(final CampaignsFilter campaignsFilter) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public CampaignsResponse method() {
                    return LoyaltiesModule.this.list(campaignsFilter);
                }
            });
        }

        public Observable get(final String id) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public CampaignResponse method() {
                    return LoyaltiesModule.this.get(id);
                }
            });
        }

        public Observable update(final String id, final UpdateCampaign updateCampaign) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public CampaignResponse method() {
                    return LoyaltiesModule.this.update(id, updateCampaign);
                }
            });
        }

        public Observable createRewardAssignment(final String id, final List createRewardAssignment) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public RewardAssignmentResponse method() {
                    return LoyaltiesModule.this.createRewardAssignment(id, createRewardAssignment);
                }
            });
        }

        public Observable updateRewardAssignment(final String id, final String assignmentId,  final UpdateRewardAssignment updateRewardAssignment) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public RewardAssignmentResponse method() {
                    return LoyaltiesModule.this.updateRewardAssignment(id, assignmentId, updateRewardAssignment);
                }
            });
        }

        public Observable deleteRewardAssignment(final String id, final String assignmentId) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public Void method() {
                    LoyaltiesModule.this.deleteRewardAssignment(id, assignmentId);
                    return null;
                }
            });
        }

        public Observable listRewardAssignments(final String id, final RewardsAssignmentsFilter filter) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public ListRewardAssignmentsResponse method() {
                    return LoyaltiesModule.this.listRewardAssignments(id, filter);
                }
            });
        }

        public Observable createEarningRules(final String id, final List create) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public EarningRuleResponse method() {
                    return LoyaltiesModule.this.createEarningRules(id, create);
                }
            });
        }

        public Observable updateEarningRule(final String id, final String ruleId,  final UpdateEarningRule update) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public EarningRuleResponse method() {
                    return LoyaltiesModule.this.updateEarningRule(id, ruleId, update);
                }
            });
        }

        public Observable deleteEarningRule(final String id, final String assignmentId) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public Void method() {
                    LoyaltiesModule.this.deleteEarningRule(id, assignmentId);
                    return null;
                }
            });
        }

        public Observable listEarningRules(final String id, final EarningRulesFilter filter) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public ListEarningRulesResponse method() {
                    return LoyaltiesModule.this.listEarningRules(id, filter);
                }
            });
        }

        public Observable listMembers(final String id, final MembersFilter filter) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public VouchersResponse method() {
                    return LoyaltiesModule.this.listMembers(id, filter);
                }
            });
        }

        public Observable getMember(final String id, final String memberId) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public VoucherResponse method() {
                    return LoyaltiesModule.this.getMember(id, memberId);
                }
            });
        }

        public Observable addMember(final String id, final AddMember addMember) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public VoucherResponse method() {
                    return LoyaltiesModule.this.addMember(id, addMember);
                }
            });
        }

        public Observable redeemReward(final String id, final String memberId, final RedeemReward redeemReward) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public RedeemVoucherResponse method() {
                    return LoyaltiesModule.this.redeemReward(id, memberId, redeemReward);
                }
            });
        }

        public Observable addLoyaltyCardBalance(final String id, final String memberId, final AddBalance addBalance) {
            return RxUtils.defer(new RxUtils.DefFunc() {
                @Override
                public AddBalanceResponse method() {
                    return LoyaltiesModule.this.addLoyaltyCardBalance(id, memberId, addBalance);
                }
            });
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy