<?php

namespace OfficeBrain\Bundle\OrderBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Nelmio\ApiDocBundle\Annotation\ApiDoc;

/**
 * @author 410175
 * @Route("api/v1/{_locale}/", defaults={"rule_service"="rule_charges"})
 */
class ApiCustomOrderController extends CustomOrderController
{
    /**
     * @author Employee Id: 410175
     * set Default Value
     */
    protected $user;
    protected $projectUserSetting;

    public function __construct()
    {
        parent::__construct();
    }
    /**
     * @author Employee Id: 410175
     * To unset member variables
     */
    public function __destruct()
    {
        parent::__destruct();
    }
    /**
     * @author Employee Id: 410175
     * Create various objects required action in this class
     */
    public function initAction()
    {
        parent::initAction();
    }
    /**
     * @author Employee Id: 410175
     * Description : Order Status
     * @Route("order-status-detail",name="office_brain_orderbundle_customorder_order_status_detail_api")
     * 
     * @ApiDoc(
     *      resource=true,
     *      section="Order",
     *      description="To get Order status.",
     *      statusCodes={
     *              1="Returned when success",
     *              403="Returned when the user is not authorized to see this link",
     *              0="Returned when form validation is failed",
     *      },
     *      requirements={
     *             {"name"="access_token", "dataType"="string", "required"=true, "description"="valid access token"},
     *             {"name"="_locale", "dataType"="string",  "default"="en_us"},
     *             {"name"="aakronCustomer", "dataType"="string",  "description"=""},
     *             {"name"="aakronOrder", "dataType"="string",  "description"=""},
     *             {"name"="aakronCustomerPO", "dataType"="string",  "description"=""},
     *      },  
     * )
     * 
     * @Template("")
     * @Method("GET")
     */
    public function orderStatusDetailAction()
    {
        if (false === $this->get('security.context')->isGranted('IS_AUTHENTICATED_FULLY')) {
            throw new AccessDeniedException();
        }

        $this->initAction();

        $aakronCustomer = $this->request->get('aakronCustomer', '');
        $aakronOrder = $this->request->get('aakronOrder', '');
        $aakronCustomerPO = $this->request->get('aakronCustomerPO', '');

        if ($aakronCustomer != '' && ($aakronOrder != '' || $aakronCustomerPO != '')) {
            $orderStatusDetail = $this->orderManager->getOrderStatusDetails($aakronCustomer, $aakronOrder, $aakronCustomerPO);

            return array(
                    'status' => 'success',
                    'status_code' => 1,
                    'data' => $orderStatusDetail,
            );
        }

        return array(
                'status' => 'error',
                'status_code' => 0,
                'message' => 'Please enter customer and (customerPO or order).',
        );
    }
}
