<?php
namespace OfficeBrain\CustomBundle\CmsBundle\Manager\Extended;

use OfficeBrain\CustomBundle\CmsBundle\Manager\AbstractManager\CreditApplicationFormAbstract as CreditApplicationFormAbstract;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use OfficeBrain\CustomBundle\CmsBundle\Entity\CreditApplicationForm;

/**
 *
 * @author OfficeBrain 4571 <info@officebrain.com>
 *
 * OB eCommerce Product - CMS Third Party Service
 * Extended class for Third Party Service
 *
 */
class CreditApplicationFormExtended extends CreditApplicationFormAbstract
{
    /**
     * @author Employee Id: 4571
     *
     * Description : This function is used to set member variables default value
     *
     * @param 1: $entityManager
     * @param 2: $request
     * @param 3: $translator
     * @param 4: $formFactory
     *
     * @return: NULL
     *
     * @throws Exception: Null
     */
    public function __construct($container,$entityManager, $request, $translator, $formFactory, $paginatorManager)
    {
        parent::__construct($container,$entityManager, $request, $translator, $formFactory, $paginatorManager);
    }
    
    /**
     * @author Employee Id: 4571
     *
     * Description : This function is used to unset member variables
     *
     * @param : None
     *
     * @return NULL
     *
     * @throws Exception: Null
     */
    public function __destruct()
    {
        parent::__destruct();
    }
    
    public function saveFormData($form, $entity)
    {
    	if ($form->isValid()) {
    		$entity->setCreateDate(new \DateTime());
    		$entity->setDateEstablished(new \DateTime());
    		$entity->setCreatedUid($this->projectSettings['user_id']);
    		$entity->setCreatedAt(new \DateTime());
	    	$entity->setInstanceId($this->projectSettings['instance_id']);
	    	$entity->setInstanceType($this->projectSettings['instance_type']);
    		
    		$formStatus = $this->entityManager->getRepository('OfficeBrainCustomBundleCmsBundle:CreditApplicationForm')->saveFormData($entity);
    		return $formStatus;
    	}else{
    		return false;
    	}
    	
    }

    public function getCreditApplicationList()
    {
    	$data = array();
    
    	$creditApplication = $this->creditApplicationFormRepository->getList();
    	if (count($creditApplication) > 0) {
    		$data['pagination'] = $this->paginatorManager->paginate($creditApplication, $this->request->get('page'), $this->recordsPerPage, array(), count($creditApplication));
    	}
    
    	$data['records_per_page'] = $this->recordsPerPage;
    	$data['page'] = $this->request->get('page');
    
    	return $data;
    }  
}
