<?php

namespace OfficeBrain\Bundle\QueueBundle\Document;

use Doctrine\ODM\MongoDB\DocumentRepository;
use OfficeBrain\Bundle\QueueBundle\Document\DistributorQueue;

/**
 * DistributorQueueRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class DistributorQueueRepository extends DocumentRepository
{
    public function getQueryBudler()
    {
        return $this->get('doctrine_mongodb')->getManager()->getRepository('OfficeBrainQueueBundle:DistributorQueue')->createQueryBuilder('p');
    }
    
    public function save($name, $erpEntity, $action, $args)
    {
        $queueObj = new DistributorQueue();
        $date = new \DateTime();
        $queueObj->setName($name);
        $queueObj->setObjectName($erpEntity);
        $queueObj->setAction($action);
        $queueObj->setArgs($args);
        $queueObj->setStatus('New');
        $queueObj->setPriority(0);
        $queueObj->setCreatedAt($date);
        $queueObj->setUpdatedAt($date);
        
        $dm = $this->getDocumentManager();
        
        $dm->persist($queueObj);
        $dm->flush();
        return $queueObj;
    }
    
    public function deleteQueue($queueObj)
    {
        $queryBuilder = $this->getQueryBudler();
        $queryBuilder->remove()->field('id')->equals($queueObj->getId())->getQuery()->execute();
        return true;
    }
    
    public function saveHistory($queue)
    {
        $this->save($queue);
    }
}
