<?php

namespace OfficeBrain\Bundle\ServiceGroupBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * ServiceRuleMappingInnerConditionsRepository.
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ServiceRuleMappingInnerConditionsRepository 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 Mapping Rule Inner Condition.
     *
     * @param object $ServiceRuleMappingInnerConditionsObj
     *
     * @return \OfficeBrain\Bundle\ServiceGroupBundle\Entity\ServiceRuleMappingInnerConditions
     */
    public function addServiceRuleMappingInnerCondition($mainConditionObj, $conditionField, $conditionOperator, $conditionVal, $displayOrder = 0)
    {
        $serviceRuleInnerCond = new ServiceRuleMappingInnerConditions();

        $serviceRuleInnerCond->setRuleMappingMainConditionId($mainConditionObj);
        $serviceRuleInnerCond->setConditionField($conditionField);
        $serviceRuleInnerCond->setConditionOperator($conditionOperator);
        $serviceRuleInnerCond->setConditionValue($conditionVal);
        $serviceRuleInnerCond->setDisplayOrder($displayOrder);

        $serviceRuleInnerCond->setCreatedUid($this->userId);
        $serviceRuleInnerCond->setCreatedAt(new \DateTime());
        $serviceRuleInnerCond->setUpdatedUid($this->userId);
        $serviceRuleInnerCond->setUpdatedAt(new \DateTime());

        $this->_em->persist($serviceRuleInnerCond);
        $this->_em->flush();

        return $serviceRuleInnerCond;
    }

    /**
     * To delete RuleMappingInnerCondition.
     *
     * @param unknown $RuleMappingMainCondID
     *
     * @return bool
     */
    public function deleteServiceRuleMappingInnerCondition($RuleMappingMainCondID)
    {
        $isDeleted = $this->createQueryBuilder('ric')
                ->delete()
                ->where('ric.ruleMappingMainConditionId  = :ruleMappingMainConditionId')->setParameter('ruleMappingMainConditionId', $RuleMappingMainCondID)
                ->getQuery()->execute();

        return $isDeleted;
    }
}
