<?php

namespace OfficeBrain\Bundle\ServiceGroupBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * ServiceRuleMappingActionsRepository.
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ServiceRuleMappingActionsRepository extends EntityRepository
{
    protected $projectSetting;
    protected $instanceId;
    protected $instanceType;
    protected $cultureId;
    protected $cultureCode;
    protected $userId;

    public function setProjectSetting($projetSetting)
    {
        $this->projectSetting = $projetSetting;
        $this->prepareProjectSettingData();

        return $this;
    }

    public function getProjectSetting()
    {
        return $this->projetSetting;
    }

    public function prepareProjectSettingData()
    {
        $this->instanceId = $this->projectSetting['instance_id'];
        $this->instanceType = $this->projectSetting['instance_type'];
        $this->userId = $this->projectSetting['user_id'];
        $this->cultureId = $this->projectSetting['culture_id'];
        $this->cultureCode = $this->projectSetting['culture_code'];
    }

    /**
     * To add rule mapping Actions.
     *
     * @param object $ServiceRuleMappingActionsObj
     *
     * @return \OfficeBrain\Bundle\ServiceGroupBundle\Entity\ServiceRuleMappingActions
     */
    public function addServiceRuleMappingActions($ruleMappingRuleId, $type, $limitBy, $limitAllowed, $ruleType, $chargeType, $amountType, $amount, $maxQty, $isShippingFree, $isTaxFree, $isActive)
    {
        $serviceRuleActions = new ServiceRuleMappingActions();
        $em = $this->getEntityManager();

        $serviceRuleActions->setRuleMappingRuleId($ruleMappingRuleId);
        $serviceRuleActions->setType($type);
        $serviceRuleActions->setLimitBy($limitBy);
        $serviceRuleActions->setLimitAllowed($limitAllowed);
        $serviceRuleActions->setRuleType($ruleType);
        $serviceRuleActions->setChargeType($chargeType);
        $serviceRuleActions->setAmountType($amountType);
        $serviceRuleActions->setAmount($amount);
        $serviceRuleActions->setMaxQty($maxQty);
        $serviceRuleActions->setIsShippingFree((int) $isShippingFree);
        $serviceRuleActions->setIsTaxFree((int) $isTaxFree);
        $serviceRuleActions->setIsActive((int) $isActive);

        $em->persist($serviceRuleActions);
        $em->flush();

        return $serviceRuleActions;
    }

    /**
     * To edit rule mapping Actions.
     *
     * @param object $ServiceRuleMappingActionsObj
     *
     * @return \OfficeBrain\Bundle\ServiceGroupBundle\Entity\ServiceRuleMappingActions
     */
    public function editServiceRuleMappingActions($id, $type, $limitBy, $limitAllowed, $ruleType, $chargeType, $amountType, $amount, $maxQty, $isShippingFree, $isTaxFree, $isActive)
    {
        $serviceRuleActions = $this->findOneBy(array('id' => $id));
        $em = $this->getEntityManager();

        $serviceRuleActions->setType($type);
        $serviceRuleActions->setLimitBy($limitBy);
        $serviceRuleActions->setLimitAllowed($limitAllowed);
        $serviceRuleActions->setRuleType($ruleType);
        $serviceRuleActions->setChargeType($chargeType);
        $serviceRuleActions->setAmountType($amountType);
        $serviceRuleActions->setAmount($amount);
        $serviceRuleActions->setMaxQty($maxQty);
        $serviceRuleActions->setIsShippingFree((int) $isShippingFree);
        $serviceRuleActions->setIsTaxFree((int) $isTaxFree);
        $serviceRuleActions->setIsActive((int) $isActive);

        $em->persist($serviceRuleActions);
        $em->flush();

        return $serviceRuleActions;
    }
    /**
     * To Check RuleActions exists.
     *
     * @param object $ServiceRuleMappingActionsObj
     *
     * @return \OfficeBrain\Bundle\ServiceGroupBundle\Entity\ServiceRuleMappingActions
     */
    public function checkRuleActionExists($rulesId)
    {
        /* $serviceRuleActions = $this->findOneBy(array('ruleMappingRuleId' => $rulesId));
        if ($serviceRuleActions) {
            return $serviceRuleActions;
        }*/

        $em = $this->getEntityManager();
        $qb = $em->createQueryBuilder();
        $qb->select('rma');
        $qb->from('OfficeBrainServiceGroupBundle:ServiceRuleMappingActions', 'rma');
        $qb->where('rma.ruleMappingRuleId = :ruleId');
        $qb->andWhere('rma.deletedAt is null');

        $qb->setParameter(':ruleId', $rulesId);

        $result = $qb->getQuery()->getArrayResult();
        if ($result) {
            return $result[0];
        }

        return;
    }
}
