Package org.hoteia.qalingo.core.rest.controller

Source Code of org.hoteia.qalingo.core.rest.controller.CheckoutRestService

/**
* Most of the code in the Qalingo project is copyrighted Hoteia and licensed
* under the Apache License Version 2.0 (release version 0.8.0)
*         http://www.apache.org/licenses/LICENSE-2.0
*
*                   Copyright (c) Hoteia, 2012-2014
* http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
*
*/
package org.hoteia.qalingo.core.rest.controller;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.commons.lang.StringUtils;
import org.hoteia.qalingo.core.domain.Cart;
import org.hoteia.qalingo.core.domain.Customer;
import org.hoteia.qalingo.core.domain.CustomerPaymentInformation;
import org.hoteia.qalingo.core.domain.MarketArea;
import org.hoteia.qalingo.core.pojo.checkout.CheckoutProcessPojoRequest;
import org.hoteia.qalingo.core.pojo.checkout.CheckoutProcessPojoResponse;
import org.hoteia.qalingo.core.service.CartService;
import org.hoteia.qalingo.core.service.CheckoutService;
import org.hoteia.qalingo.core.service.CustomerService;
import org.hoteia.qalingo.core.service.MarketService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;

@Path("/checkout/")
@Component("checkoutRestService")
public class CheckoutRestService {

    private final Logger logger = LoggerFactory.getLogger(getClass());
   
    @Autowired
    private MarketService marketService;
   
    @Autowired
    private CustomerService customerService;
   
    @Autowired
    private CartService cartService;
   
    @Autowired
    private CheckoutService checkoutService;
   
    @POST
    @Path("process-payment")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public CheckoutProcessPojoResponse addProductSkuToCart(CheckoutProcessPojoRequest checkoutProcessPojoRequest) throws Exception {
        CheckoutProcessPojoResponse checkoutProcessPojoResponse = new CheckoutProcessPojoResponse();
               
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (!(authentication instanceof AnonymousAuthenticationToken)) {
            String currentCustomerName = authentication.getName();
           
            if(StringUtils.isNotEmpty(currentCustomerName)){
                Customer customer = customerService.getCustomerByLoginOrEmail(currentCustomerName);
                MarketArea marketArea = marketService.getMarketAreaByCode(checkoutProcessPojoRequest.getMarketAreaCode());
               
                if(checkoutProcessPojoRequest.getPaymentPojo().isWantSavedPaymentInformations()){
                    // Save payment information
                    final CustomerPaymentInformation customerPaymentInformation = new CustomerPaymentInformation();
                    customerPaymentInformation.setPaymentType(checkoutProcessPojoRequest.getPaymentPojo().getPaymentType());
                    customerPaymentInformation.setCardHolderName(checkoutProcessPojoRequest.getPaymentPojo().getCardHolderName());
                    customerPaymentInformation.setCardNumber(checkoutProcessPojoRequest.getPaymentPojo().getCardNumber());
                    customerPaymentInformation.setCardExpMonth(checkoutProcessPojoRequest.getPaymentPojo().getCardExpMonth());
                    customerPaymentInformation.setCardExpYear(checkoutProcessPojoRequest.getPaymentPojo().getCardExpYear());
                    customerPaymentInformation.setCardCVV(checkoutProcessPojoRequest.getPaymentPojo().getCardCVV());
                   
                    customerPaymentInformation.setCustomerMarketAreaId(marketArea.getId());
                   
                    customerService.savePaymentInformation(customer, customerPaymentInformation);
                }

                Cart cart = cartService.getCartByMarketAreaIdAndCustomerId(marketArea.getId(), customer.getId());
               
                // Create and Save a new order
                checkoutService.checkout(customer, cart);
               
                // WebManagementService.buildAndSaveNewOrderConfirmationMail

            }
        }
       
        return checkoutProcessPojoResponse;
    }
   
}
TOP

Related Classes of org.hoteia.qalingo.core.rest.controller.CheckoutRestService

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.