Your IP : 216.73.217.117


Current Path : /var/www/v3.cesa.co.za/src/MemberBundle/Services/
Upload File :
Current File : /var/www/v3.cesa.co.za/src/MemberBundle/Services/ADecMemberFirmManager.php

<?php

namespace App\MemberBundle\Services;

use Symfony\Component\DependencyInjection\ContainerInterface;
use Monolog\Logger;
use App\MemberBundle\Entity\ADecMemberFirm;

/**
 * Annual Declaration Member Firm List manager
 *
 * @author Otto Saayman <otto@igotafrica.com>
 * @package MemberBundle
 * @subpackage ADecMemberFirm
 * @version 0.0.1
 */
final class ADecMemberFirmManager
{

    /**
     * Service Container
     * @var object
     */
    private $container = null;

    /**
     * Entity manager
     * @var object
     */
    private $em;

    /**
     * Class construct
     *
     * @param  ContainerInterface $container
     * @param  Logger             $logger
     * @return void
     */
    public function __construct(
        ContainerInterface $container
    ) {
        $this->setContainer($container);
        $this->setEm($container->get('doctrine')->getManager('default'));

        return;
    }

    /**
     * Get Container
     *
     * @return ContainerInterface $container
     */
    public function getContainer()
    {
        return $this->container;
    }

    /**
     * Set Container
     *
     * @param  ContainerInterface $container
     * @return void
     */
    public function setContainer($container)
    {
        $this->container = $container;
    }

    /**
     * Get Entity Manager
     *
     * @return string
     */
    public function getEm()
    {
        return $this->em;
    }

    /**
     * Set Container
     *
     * @param  string $em
     * @return void
     */
    public function setEm($em)
    {
        $this->em = $em;
    }

    /**
     * Get a Member Firm
     *
     * @return ADecMemberFirm
     */
    public function find($id)
    {

        if (strlen($id) <= 0) {
            return null;
        }

        return $this->em->getRepository(ADecMemberFirm::class)->find($id);
    }

    /**
     * Get a Member Firm by parameters
     *
     * @param array $params
     * @return ADecMemberFirm
     */
    public function findOneBy($params)
    {
        return $this->em->getRepository(ADecMemberFirm::class)->findOneBy($params);
    }

    /**
     * Get a Member Firm by parameters
     *
     * @param array $params
     * @return array
     */
    public function findBy($params)
    {
        return $this->em->getRepository(ADecMemberFirm::class)->findBy($params);
    }

    /**
     * Get all Member Firms
     *
     * @return array
     */
    public function findAll()
    {
        return $this->em->getRepository(ADecMemberFirm::class)->findAll();
    }

    /**
     * Get all Member Firm IDs
     *
     * @return array
     */
    public function findAllIds()
    {
        return $this->em->getRepository(ADecMemberFirm::class)->findAllIds();
    }

    /**
     * Save a Member Firm
     *
     * @return array
     */
    public function getLists(&$return)
    {

        $years = [];
        $memberFirmManager = $this->getContainer()->get('member_firm.manager');
        $transformationManager = $this->getContainer()->get('adec_member_firm_transformation.manager');

        // $return[date('Y')]['member_list'] = $this->em->getRepository(ADecMemberFirm::class)->getList();

        // foreach ($return[date('Y')]['member_list'] as $key => $member) {

        //     $memberFirm = $memberFirmManager->find($member['id']);

        //     if (is_object($memberFirm)) {

        //         $memberTransform = $transformationManager->findOneByArray(array('member_firm' => $memberFirm, 'declaration_year' => date('Y')));

        //         if (is_array($memberTransform) && count($memberTransform) > 0) {
        //             $return[date('Y')]['member_list'][$key] = array_merge($return[date('Y')]['member_list'][$key], $memberTransform[0]);
        //         }

        //         $memberTransform = null;
        //         $transformationManager->getEm()->clear();
        //     }

        //     $memberFirmManager->getEm()->clear();
        // }

        // $return[date('Y')]['statistics'] = $memberFirmManager->processStats($return[date('Y')]['member_list']);

        for ($yCnt = date('Y'); $yCnt >= 2015; $yCnt--) {
            $years[] = $yCnt;
        }

        foreach ($years as $year) {

            $return[$year]['member_list'] = $this->em->getRepository(ADecMemberFirm::class)->getList($year);

            // foreach ($return[$year]['member_list'] as $key => $member) {

            //     // var_dump(array_keys($member));
            //     // echo count($member) . '<br /><br />';
            //     // exit;

            //     $memberFirm = $memberFirmManager->find($member['Prev_FirmID']);

            //     if (is_object($memberFirm)) {

            //         $memberTransform = $transformationManager->findOneByArray(array('member_firm' => $memberFirm, 'declaration_year' => $year));

            //         if (is_array($memberTransform) && count($memberTransform) > 0) {
            //             $return[$year]['member_list'][$key] = array_merge($return[$year]['member_list'][$key], $memberTransform[0]);
            //         }

            //         $memberTransform = null;
            //         $transformationManager->getEm()->clear();
            //     }

            //     $memberFirmManager->getEm()->clear();
            // }

            // echo count($return[$year]['member_list']) . '<br />';

            $return[$year]['statistics'] = $memberFirmManager->processStats($return[$year]['member_list']);

            // echo $year . '<br /><br />';
        }

        return $return;
    }
}