/**
  * Lists all servicePacks matching a criteria
  */
 public function indexAction()
 {
     // Check permissions
     $sp = new ServicePackModel();
     $this->_helper->allowed('list', $sp);
     // Pagination
     $params = $this->_getPaginatorParams();
     // Filters
     $filters = $this->_mapToFilter($this->_getFilterParams());
     $this->_checkFilterParams($filters, ServicePackFilterFields::getWhiteList());
     $filterList = $this->_spSrv->buildFilterList($filters);
     $this->_helper->filterNotAllowedFilters('filter_by', $filterList);
     // Search
     $spList = $this->_spSrv->listAll($filterList, $params);
     if ($spList) {
         $list = array();
         foreach ($spList->getItems() as $item) {
             try {
                 $this->_helper->allowed('read', $item);
                 $this->_helper->filterNotAllowedFields('read_field', $item);
                 $list[] = $item;
             } catch (Exception $e) {
                 // Do nothing
             }
         }
         // Simulate pagination
         $it = new ArrayIterator($list);
         $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Iterator($it));
         $paginator->setItemCountPerPage($params['count']);
         // Result
         $iterator = $paginator->getItemsByPage($params['page']);
         $this->view->servicePacks = iterator_to_array($iterator, false);
     }
 }
 public function isValid($value, $context = null)
 {
     $this->_messages = array();
     if (!is_string($value)) {
         $message = $this->_createMessage(self::ERROR_INVALID_TYPE, $value);
         $this->_messages[self::ERROR_INVALID_TYPE] = $message;
         return false;
     }
     $service = ServicePackService::getInstance();
     try {
         $list = $service->listAll()->getItems();
     } catch (Application\Exceptions\GlobalServiceException $e) {
         $message = $this->_createMessage(self::ERROR_ON_CONNECTION, $value);
         $this->_messages[self::ERROR_ON_CONNECTION] = $message;
         return false;
     }
     foreach ($list as $sp) {
         if ($sp->getName() === $value) {
             $item = $sp;
             break;
         }
     }
     if (isset($item) && (!isset($context['id']) || $item->getId() != $context['id'])) {
         $message = $this->_createMessage(self::ERROR_SERVICE_PACK_NAME_ALREADY_USED, $value);
         $this->_messages[self::ERROR_SERVICE_PACK_NAME_ALREADY_USED] = $message;
         return false;
     }
     return true;
 }
 public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     if (!$resource instanceof CommercialGroupModel) {
         throw new Exception('Resource must be an instance of CommercialGroupModel');
     }
     $service = ServicePackService::getInstance();
     try {
         $spack = $service->load($resource->servicePackId);
     } catch (Exception $e) {
         $spack = null;
     }
     if (!isset($spack)) {
         throw new Exception('No service pack found');
     }
     if ($spack->customers) {
         if ($resource->customerId) {
             foreach ($spack->customers as $custRest) {
                 if ($custRest->customerId == $resource->customerId) {
                     if ($custRest->restricted) {
                         return false;
                     } else {
                         break;
                     }
                 }
             }
         } else {
             throw new Exception('No customer found');
         }
     }
     return true;
 }
 public function init()
 {
     $this->_spSrv = ServicePackService::getInstance();
     $this->_lifeCycleSrv = LifeCycleService::getInstance();
     $this->_restrictionsSrv = RestrictionService::getInstance();
     $this->_tariffSrv = TariffPlanService::getInstance();
     $this->_orgSrv = \Application\Service\OrgService::getInstance();
 }
 public function init()
 {
     $this->_spSrv = ServicePackService::getInstance();
     $this->_lifeCycleSrv = LifeCycleService::getInstance();
     $this->_restrictionsSrv = RestrictionService::getInstance();
     $this->_tariffSrv = TariffPlanService::getInstance();
     $this->_steeringListSrv = SteeringListService::getInstance();
 }
 protected function _setDiscounts($sp, $data)
 {
     /**
      * Check if the input data is as expected
      */
     if (is_null($data['discounts']) || !is_array($data['discounts'])) {
         throw new InvalidArgumentException('Bad Request. Malformed Json. Missing "discounts" field or is not an array.');
     }
     $sp->setDiscounts($data['discounts']);
     $this->view->data = $this->_spSrv->setDiscounts($sp);
 }
 /**
  * Deletes the given servicepack
  */
 public function deleteAction()
 {
     $spId = $this->getRequest()->getParam('id');
     $sp = $this->_spSrv->load($spId);
     if (empty($sp)) {
         throw new NotFoundException('ServicePack ' . $spId . ' not found', 404);
     }
     // Check permissions
     $this->_helper->allowed('delete', $sp);
     // Remove the user
     $this->_spSrv->delete($sp);
     $this->view->data = true;
 }
 public function isValid($value, $context = array())
 {
     $this->_messages = array();
     if (!is_string($value)) {
         $this->_error(self::ERROR_INVALID_TYPE, $value);
         return false;
     }
     $service = ServicePackService::getInstance();
     try {
         $item = $service->load($value);
     } catch (\Application\Exceptions\NotFoundException $e) {
         $item = null;
     } catch (\Application\Exceptions\GlobalServiceException $e) {
         $this->_error(self::ERROR_ON_CONNECTION, $value);
         return false;
     }
     if (!isset($item)) {
         $this->_error(self::ERROR_SERVICE_PACK_NOT_FOUND, $value);
         return false;
     }
     if ($this->getCheckRestrictions() && !isset($context['id'])) {
         switch (\App::getOrgUserLogged()->getType()) {
             case OrgCustomerModel::ORG_TYPE:
                 $restriction = $item->getCustomerRestriction(\App::getOrgUserLogged()->id);
                 if ($restriction === false) {
                     break;
                 }
                 if ($restriction === true) {
                     $this->_error(self::ERROR_SERVICE_PACK_RESTRICTED, $value);
                 } else {
                     $this->_error(self::ERROR_SERVICE_PACK_NOT_FOUND, $value);
                 }
                 return false;
             case OrgServiceProviderModel::ORG_TYPE:
                 $restriction = $item->getCustomerRestriction($context['customerId']);
                 if ($restriction === false) {
                     $this->_error(self::ERROR_SERVICE_PACK_NOT_RESTRICTED, $value);
                     return false;
                 }
         }
     }
     if ($this->getCheckPublished() && $item->published !== ServicePackModel::STATUS_PUBLISHED) {
         $this->_error(self::ERROR_SERVICE_PACK_NOT_PUBLISHED, $value);
         return false;
     }
     return true;
 }
 public function isValid($value, $context = array())
 {
     $this->_messages = array();
     if (!is_string($value)) {
         $this->_error(self::ERROR_INVALID_TYPE, $value);
         return false;
     }
     $service = ServicePackService::getInstance();
     try {
         $spack = $service->load($value);
     } catch (\Exception $e) {
         $spack = null;
     }
     if (!isset($spack)) {
         $this->_error(self::NO_SPACK_FOUND);
         return false;
     }
     if (isset($context['customerId'])) {
         $custId = $context['customerId'];
         try {
             $org = OrgService::getInstance()->load($custId);
         } catch (\Exception $e) {
             $org = null;
         }
         if (!isset($org)) {
             $this->_error(self::NO_ORG_FOUND);
             return false;
         }
         if ($org->currency == $spack->currency) {
             return true;
         } else {
             $this->_error(self::NO_CURRENCY_MATCHING);
             return false;
         }
     } else {
         $this->_error(self::NO_CUSTOMER_ID);
         return false;
     }
 }
 public function init()
 {
     $this->_tariffPlanSrv = \Application\Service\TariffPlanService::getInstance();
     $this->_servicePackSrv = \Application\Service\ServicePackService::getInstance();
 }
 public function init()
 {
     $this->_spSrv = ServicePackService::getInstance();
 }
 public function init()
 {
     $this->_spSrv = \Application\Service\ServicePackService::getInstance();
     $this->_orgSrv = \Application\Service\OrgService::getInstance();
 }
 /**
  * @expectedException \Application\Exceptions\ValidateException
  * @expectedExceptionMessage The ServicePack does not pass the validation rules.
  */
 public function testSumaDiscountsValidationException()
 {
     $sp = array("id" => "123", "name" => "BS_All_Act", "description" => "Description", "published" => "PUBLISHED", "customers" => array(array("id" => "customer-4ddd31cd0e49ad4073000003", "name" => "customer")), "serviceProviderId" => "provider-movistar1376f0c049eGAFyImcQxeblg", "serviceProviderName" => "movistar", "currency" => "978", "tariffPlanServicesId" => "2", "tariffPlanServicesName" => "1395771944.3417", "tariffPlanLifeCycleId" => "2", "tariffPlanLifeCycleName" => "1395771944.2079", "lifeCycleId" => "2", "lifeCycleName" => "1395771944.6719", "modified" => false, "listsLocked" => true, "discounts" => array("discounts" => array(array("customerId" => "customer-4ddd31cd0e49ad4073000003", "customerName" => "customer", "voice" => 9000, "data" => 2000, "sms" => 3000)), "modified" => true), "voucherOnlyDiscounts" => array("discounts" => array(array("customerId" => "customer-4ddd31cd0e49ad4073000003", "customerName" => "customer", "voice" => 9000, "data" => 2000, "sms" => 3000)), "modified" => true), "maxSubscriptions" => 0);
     $srvModel = new ServicePackModel();
     $srvModel->load($sp['id']);
     $srvModel->setId($sp['id']);
     $srvModel->setDiscounts($sp['discounts']['discounts']);
     $service = \Application\Service\ServicePackService::getInstance();
     $service->validate($srvModel, true, new ServicePack\VoucherOnlyDiscountsValidate());
 }