Package com.arcbees.gwtpwebsite.server.order

Source Code of com.arcbees.gwtpwebsite.server.order.OrderProcessorImpl

package com.arcbees.gwtpwebsite.server.order;

import javax.inject.Inject;

import com.arcbees.gwtpwebsite.server.email.EmailSender;
import com.arcbees.gwtpwebsite.shared.domain.Order;
import com.arcbees.gwtpwebsite.shared.domain.OrderConfirmation;
import com.stripe.exception.StripeException;
import com.stripe.model.Customer;
import com.stripe.model.Plan;

public class OrderProcessorImpl implements OrderProcessor {
    private final PlanCreator planCreator;
    private final CustomerCreator customerCreator;
    private final ConfirmationNumberGenerator confirmationNumberGenerator;
    private final EmailSender emailSender;

    @Inject
    OrderProcessorImpl(PlanCreator planCreator,
                       CustomerCreator customerCreator,
                       ConfirmationNumberGenerator confirmationNumberGenerator,
                       EmailSender emailSender) {
        this.planCreator = planCreator;
        this.customerCreator = customerCreator;
        this.confirmationNumberGenerator = confirmationNumberGenerator;
        this.emailSender = emailSender;
    }

    @Override
    public OrderConfirmation processOrder(Order order) throws StripeException {
        Plan plan = planCreator.createPlan(order);

        Customer customer = customerCreator.createCustormer(plan, order);

        String confirmationNumber = confirmationNumberGenerator.generateConfirmationNumber(customer);

        emailSender.sendOrderEmail(confirmationNumber);

        OrderConfirmation orderConfirmation = new OrderConfirmation();
        orderConfirmation.setConfirmationNumber(confirmationNumber);

        return orderConfirmation;
    }
}
TOP

Related Classes of com.arcbees.gwtpwebsite.server.order.OrderProcessorImpl

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.