<?php
/**
* @author OfficeBrain 4160 <info@officebrain.com>
*
* Description :  Queue Abstract Class
*
**/
namespace OfficeBrain\Bundle\QueueBundle\Manager\AbstractManager;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;

abstract class QueueAbstract
{
    abstract protected function mapQueue($action, $data, $type='json');
    
    public function setQueue($object, $action, $args, $msg=null)
    {
    }
    
    public function processData($data, $dataFields, $type="json")
    {
        return $data;
    }
    
    public function formatData($data, $type='json')
    {
        if ($type == 'json') {
            return json_encode($data);
        } elseif ($type == 'xml') {
            return $this->arrayToXML($data);
        }
    }
    
    public function arrayToXML($data)
    {
        $xml = new SimpleXMLElement('<root/>');
        array_walk_recursive($data, array($xml, 'addChild'));
        return $xml->asXML();
    }
    
    abstract protected function processRunQueue($instance_id, $count);
    abstract protected function processExecuteAction($object, $action, $args, $document);
    
    
    /**
    * @author Employee Id: 4160
    * Description :
    * setDateFormat method to convert string to DateTime Object
    *
    * @param 1 : string date
    *
    * @return DateTime Object
    *
    **/
    public function setDateFormat($date=null)
    {
        if ($date) {
            return new \DateTime($date);
        } else {
            return new \DateTime();
        }
    }
}
