/** * @param DownloadTokenModel $downloadToken * @return DownloadTokenModel */ public function create(models\ModelAbstract $downloadToken) { if (!$downloadToken instanceof DownloadTokenModel) { throw new InvalidArgumentException('Supplied data must be a download token model'); } $downloadToken->token = UserService::getInstance()->generatePassword(60); $brandService = BrandService::getInstance(); $brand = $brandService->loadByOrganization(\App::getOrgUserLogged()); $router = \Zend_Controller_Front::getInstance()->getRouter(); $downloadToken->url = $brand->endPoint . $router->assemble(array('controller' => $downloadToken->controller, 'action' => $downloadToken->action, 'token' => $downloadToken->token), 'downloadToken'); $downloadToken->orgId = \App::getOrgUserLogged()->getId(); $downloadToken->expireDatetime = \App::config('downloadTokenLifeTime', "+1 day"); $ident = \Zend_Auth::getInstance()->getIdentity(); if (isset($ident['username'])) { $downloadToken->username = $ident['username']; } if (isset($ident['authType'])) { $downloadToken->authType = $ident['authType']; } if (isset($ident['apiId'])) { $downloadToken->apiId = $ident['apiId']; } if (isset($ident['impersonation'])) { $downloadToken->impersonation = $ident['impersonation']; } return parent::create($downloadToken); }
public function isValid($value, $context = null) { if (!parent::isValid($value, $context)) { return false; } $cg = $this->_getCommercialGroup($value, 'id'); if ($cg === false) { return false; } if ($cg === NULL) { $this->_error(self::ERROR_COMMERCIAL_GROUP_NOT_EXISTS, $value); return false; } if ($this->getCheckRestrictions()) { $restricted = $cg->restricted; switch (\App::getOrgUserLogged()->getType()) { case OrgCustomerModel::ORG_TYPE: if ($restricted) { $this->_error(self::ERROR_COMMERCIAL_GROUP_RESTRICTED, $value); return false; } } } return true; }
/** * Route shutdown hook -- Check for router exceptions * * @param Zend_Controller_Request_Abstract $request */ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $auth = Zend_Auth::getInstance(); $orgService = \Application\Service\OrgService::getInstance(); $identity = $auth->getIdentity(); //Bypass other auth methods if ($identity['authType'] != App_Controller_Plugin_Auth::AUTH_TYPE_AUTH_TOKEN) { return; } $front = Zend_Controller_Front::getInstance(); $bs = $front->getParam('bootstrap'); // Fetch logs and apply the token to them $multilog = $bs->getPluginResource('multiplelog'); if (empty($identity['impersonation']) || empty($identity['impersonation']['orgId'])) { return; } $orgId = $identity['impersonation']['orgId']; $userSrv = UserService::getInstance(); \App::log()->info($identity['username'] . " is running as " . $orgId . " admin"); $user = $userSrv->loadByUsername($identity['username']); $userSrv->generateImpersonatedUser($user, $identity['impersonation']); foreach ($multilog->getLogs() as $log) { $log->setEventItem('impersonated', "as {$orgId} admin"); $log->setEventItem('impersonatedOrgId', "{$orgId}"); $log->setEventItem('username', $identity['username'] . " as {$orgId} admin"); } // Application\Model\Mapper\ProtoAbstractMapper::$accountingUserId .= "_impersonated"; Application\Model\Mapper\ProtoAbstractMapper::$organizationId = $orgId; App_ListFilter::addDefaultExtraData('impersonated_org', $orgId); $org = OrgService::getInstance()->load($orgId); \App::getOrgUserLogged($org); }
public function isValid($value, $context = null) { if (!parent::isValid($value, $context)) { return false; } if ($value == BusinessRule::CHANGE_COMMERCIAL_GROUP) { $type = App_Util_Array::getItem($context, '__parent.__parent.universeType'); if ($type == AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP || $type == AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP) { $universeId = App_Util_Array::getItem($context, '__parent.__parent.universeId'); $cg = $this->_getCommercialGroup($universeId, 'id'); if ($cg === NULL) { $this->_error(self::ERROR_COMMERCIAL_GROUP_NOT_EXISTS, $universeId); return false; } $restricted = $cg->restricted; switch (\App::getOrgUserLogged()->getType()) { case OrgCustomerModel::ORG_TYPE: if ($restricted) { $mss = "{$type} with commercial group id {$universeId}"; $this->_error(self::ERROR_UNIVERSE_TYPE_COMMERCIAL_GROUP_RESTRICTED, $mss); return false; } } } } return true; }
public function postAction() { $data = $this->_helper->requestData(true); if (isset($data['endCustomerData'])) { $data = $data['endCustomerData']; } // Filter data $data = $this->_helper->filter($data)->blacklist($this->_getCreateBlackList()); //TODO filter should provide a fluent iface to apply these methods $data = $this->_helper->filter($data)->removeEmpty(); $data = $this->_mapToModel($data); $org = new OrgAggregatorModel($data); $org->parentId = \App::getOrgUserLogged()->id; $org->description = "Organization made by API"; // Check if it's allowed $this->_helper->allowed('create', $org); // Check mandatory fields // $this->_preValidate($org->exportData(), new \Application\Model\Validate\Organization\OrgAggregatorValidate()); // Create the organization via its service $this->_orgSrv->create($org); // Response with the organization id $this->view->endCustomerID = $org->getId(); $url = $this->getFrontController()->getRouter()->assemble(array('controller' => $this->getRequest()->getControllerName(), 'action' => $this->getRequest()->getActionName(), 'id' => $org->getId())); $this->getResponse()->setHeader('Location', $url); $this->getResponse()->setHttpResponseCode(201); }
public function __construct($options = null) { parent::__construct($options); if (isset($this->_spec['validators']['simType'])) { unset($this->_spec['validators']['simType']); } if (isset($this->_spec['validators']['simModel'])) { unset($this->_spec['validators']['simModel']); } if (isset($this->_spec['validators']['staticIpAddress']['Sim\\ApnSubnet'])) { unset($this->_spec['validators']['staticIpAddress']['Sim\\ApnSubnet']); } $org = \App::getOrgUserLogged(); $orgConfig = \Application\Service\OrgService::getInstance()->getOrgConfig($org); // check that ipv6 is disabled if (isset($this->_spec['validators']['staticIpAddress']['Ip']) && $orgConfig->getConfig(OrgConfigModel::ORG_CONFIG_IPV6_DISABLED_KEY, OrgConfigModel::ORG_CONFIG_IPV6_DISABLED_DEFAULT)) { $this->_spec['validators']['staticIpAddress']['Ip']['allowipv6'] = false; } if (isset($this->_spec['validators']['staticIpAddress']['NotEmptyIfField'])) { unset($this->_spec['validators']['staticIpAddress']['NotEmptyIfField']); } if (isset($this->_spec['validators']['staticIpApnIndex'])) { $this->_spec['validators']['staticIpApnIndex'] = array('ApnIndex' => array('breakChainOnFailure' => true, 'min' => 1, 'max' => 10)); } /** * @todo Move icc, imsi, msisdn to validators? * @see AbstractParser.php */ $this->_spec['validators']['icc'] = array('regex' => array('pattern' => "/^[0-9]{2}[1-9][0-9]{0,2}[0-9]{1,4}[0-9]+\$/", 'breakChainOnFailure' => true), 'LuhnAlgorithm' => array('breakChainOnFailure' => true)); $this->_spec['validators']['imsi'] = array('regex' => array('pattern' => "/^[0-9]{15}\$/", 'breakChainOnFailure' => true)); $this->_spec['validators']['msisdn'] = array('regex' => array('pattern' => "/^[1-9][0-9]{0,2}[0-9]{1,15}\$/", 'breakChainOnFailure' => true)); $this->_spec['validators']['apns'] = array('ApnList' => array('breakChainOnFailure' => true)); $this->_spec['validators']['locationManual'] = array('LocationValidate' => array('breakChainOnFailure' => true, 'acceptArrayAsModel' => true)); }
protected function _findByServiceType($serviceType) { $filters = array("_parents" => 1, "organizationId" => \App::getOrgUserLogged()->id); $result = $this->_getPybeService()->callMethod($this::LIST_METHOD, $filters); $httpResponse = $this->_getPybeService()->getLastResult(); $this->_checkResponseResult($httpResponse, 'Pybe error looking for contracts by service type'); $valid_service_ids = array(); $services = \App_Util_Array::getItem($result, $this::SERVICE_KEY . '.items'); if ($services) { foreach ($services as $service) { if (isset($service['type']) && $service['type'] == $serviceType) { $valid_service_ids[] = $service['id']; } } } if (!$valid_service_ids) { return new ListResultModel(array('items' => array(), 'count' => 0)); } $entries = array(); $candidateContracts = array(); $contracts = \App_Util_Array::getItem($result, $this::LIST_KEY . '.items'); if ($contracts) { foreach ($contracts as $contract) { if (isset($contract['serviceId'])) { if (in_array($contract['serviceId'], $valid_service_ids)) { $entries[] = $contract; } } elseif (isset($contract['parentContractId'])) { if (isset($candidateContracts[$contract['parentContractId']])) { $candidateContracts[$contract['parentContractId']][] = $contract; } else { $candidateContracts[$contract['parentContractId']] = array($contract); } } } } if ($candidateContracts) { $parentContracts = \App_Util_Array::getItem($result, $this::PARENT_KEY . '.items'); if ($parentContracts) { foreach ($parentContracts as $contract) { if (isset($contract['serviceId'])) { if (in_array($contract['serviceId'], $valid_service_ids) and isset($candidateContracts[$contract['id']])) { $entries = array_merge($entries, $candidateContracts[$contract['id']]); } } } } } if (!$entries) { return new ListResultModel(array('items' => array(), 'count' => 0)); } $outputItems = array(); foreach ($entries as $entry) { $data = $this->_mapPybeModelToModel($entry); $outputItems[] = !is_null($this->_modelClassResult) ? new $this->_modelClassResult($data) : $data; } return new ListResultModel(array('items' => $outputItems, 'count' => count($outputItems))); }
public function getList() { $options = array(Vpn::IP_TYPE_IPV4); $config = OrgService::getInstance()->getOrgConfig(\App::getOrgUserLogged()); if (!$config->getConfig(OrgConfigModel::ORG_CONFIG_IPV6_DISABLED)) { $options[] = Vpn::IP_TYPE_IPV6; } return $options; }
/** * Return all the roles of a given organization or an * associative list of all organizations and their roles. */ public function indexAction() { $orgClass = get_class(\App::getOrgUserLogged()); $orgType = $this->_getParam('orgType'); if (!$orgType || $orgClass::ORG_TYPE !== $orgType && $orgClass::CHILDREN_ORG_TYPE !== $orgType) { throw new InvalidArgumentException("Invalid organization type."); } $this->view->roles = $this->_roleSrv->getRoles($orgType); }
/** */ public function postAction() { // Filter data $data = $this->_helper->requestData(true); $data = $this->_helper->filter($data)->blacklist(array('id', 'organizationId')); $template = new TemplateModel($data); // Check if it's allowed $this->_helper->allowed('create', $template); $this->_templateSrv->create($template, \App::getOrgUserLogged()); // Response with the user id $this->view->data = $template->getId(); }
public function setUp() { if (App::getEnv() !== 'testing-ericsson') { $this->markTestSkipped(); } $this->simMapper = SimMapper::getInstance(); // Hack: Override the logged user organization $org = new \Application\Model\Organization\OrgMasterModel(); $org->setId(self::ORG_ID); \App::getOrgUserLogged($org); $this->_user = $this->_createAuthUser(array('userName' => 'SimUserTest', 'organizationId' => self::ORG_ID)); }
/** * Create a new service group */ public function postAction() { // Create model $data = $this->_helper->requestData(true); $sg = new SupervisionGroupModel($data); $org = \App::getOrgUserLogged(); $sg->setCustomerId($org->getId()); // Check permissions $this->_helper->allowed('create', $sg); $sg = SupervisionGroupService::getInstance()->create($sg); // Response with the id $this->view->data = $sg->getId(); }
protected function consumptionAction() { // get the organization ID $orgId = \App::getOrgUserLogged()->getId(); $start = $this->_getParam('start'); $end = $this->_getParam('end'); // get target params (comma delimited targets) $target = $this->_getParam('target'); if (!empty($target)) { $params = explode(',', $target); } $this->_reportSrv->getConsumptionData($orgId, $params, $start, $end); }
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $auth = Zend_Auth::getInstance(); $identity = $auth->getIdentity(); $byPassMethods = array(App_Controller_Plugin_Auth::AUTH_TYPE_LOST_PASSWORD, App_Controller_Plugin_Auth::AUTH_TYPE_ASYNC, App_Controller_Plugin_Auth::AUTH_TYPE_EXTERNAL, App_Controller_Plugin_Auth::AUTH_TYPE_THIRD_PARTY); //Bypass some auth methods if ($identity['authType'] && in_array($identity['authType'], $byPassMethods)) { return; } $user = App::getUserLogged(); $org = App::getOrgUserLogged(); App_ListFilter::addDefaultExtraData('user', $user->getUserName()); }
/** * Validate element value * * If a translation adapter is registered, any error messages will be * translated according to the current locale, using the given error code; * if no matching translation is found, the original message will be * utilized. * * Note: The *filtered* value is validated. * * @param array $data * @param mixed $context * @return boolean */ public function isValid($data, $context = null, $removeNotPresentFields = false) { if ($data) { $org = \App::getOrgUserLogged(); $orgConfig = \Application\Service\OrgService::getInstance()->getOrgConfig($org); $lteProvider = $orgConfig->getConfig(OrgConfigModel::ORG_CONFIG_LTE_ENABLED); if (!$lteProvider) { $this->_error(self::LTE_PROVIDER_DISABLED); return false; } } return true; }
public function __construct($options = null) { $this->_spec = array('validators' => array('sms' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true)), 'msisdnList' => array('NotEmptyIfField' => array('breakChainOnFailure' => true, 'field' => 'sms', 'value' => true), 'Array' => array('breakChainOnFailure' => true, 'distinct' => true, 'validators' => array('NotEmpty' => array('breakChainOnFailure' => true), 'StringLength' => array('max' => 15, 'encoding' => "UTF-8", 'breakChainOnFailure' => true)))), 'email' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true)), 'emailList' => array('NotEmptyIfField' => array('breakChainOnFailure' => true, 'field' => 'email', 'value' => true, 'type' => \Zend_Validate_NotEmpty::EMPTY_ARRAY), 'Array' => array('breakChainOnFailure' => true, 'distinct' => true, 'validators' => array('EmailAddress' => array('mx' => false, 'breakChainOnFailure' => true)))), 'snmp' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true)))); $org = \App::getOrgUserLogged(); if ($org->getType() != OrgCustomerModel::ORG_TYPE) { $org = OrgService::getInstance()->getParentByType($org, OrgCustomerModel::ORG_TYPE); } if ($org && !is_null($org->getSupplementaryServicesId())) { $services = SupplServicesService::getInstance()->load($org->getSupplementaryServicesId()); if (!$services || $services->getApplicationOriginatedSms() != SupplServicesModel::ST_ACTIVATED) { $this->_spec['validators']['sms']['Identical'] = array('token' => false, 'messageTemplates' => array(\Zend_Validate_Identical::NOT_SAME => "Application originated sms service not activated")); } } parent::__construct($options); }
/** * Defined by Zend_Validate_Interface * * Returns true if and only if no token has been found inside value. * * @param mixed $value * @param array $context * @return boolean */ public function isValid($value, $context = null) { if (!is_string($value)) { $this->_error(self::INVALID_TYPE); return false; } $config = OrgService::getInstance()->getOrgConfig(\App::getOrgUserLogged()); if ($value === '0' && $config->getConfig(OrgConfigModel::ORG_CONFIG_MSISDNLESS)) { return true; } if (!preg_match('/^[1-9][0-9]{0,17}$/', $value)) { $this->_error(self::INVALID_MSISDN, $value); return false; } return true; }
protected function _getSummary(\App_ListFilter $filterList = NULL) { $org = \App::getOrgUserLogged(); $result = new GroupListModel(); $dumbAlarm = new Application\Model\AlarmModel(); $dumbAlarm->condition = AlarmRuleCondition::CONDITION_LIFE_CYCLE_STATUS_CHANGE; $this->_helper->filterNotAllowedFilters()->setThrowExOnNotAllowed(true); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::STATE, 'value' => AlarmModel::STATE_CLOSED, 'inverted' => true)), 'ALL'); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::SEVERITY, 'value' => AlarmRuleModel::SEVERITY_CRITICAL, 'inverted' => false)), AlarmRuleModel::SEVERITY_CRITICAL, true); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::SEVERITY, 'value' => AlarmRuleModel::SEVERITY_URGENT, 'inverted' => false)), AlarmRuleModel::SEVERITY_URGENT, true); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::SEVERITY, 'value' => AlarmRuleModel::SEVERITY_INFORMATIVE, 'inverted' => false)), AlarmRuleModel::SEVERITY_INFORMATIVE, true); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::STATE, 'value' => AlarmModel::STATE_ATTENDED, 'inverted' => false)), AlarmModel::STATE_ATTENDED); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::STATE, 'value' => AlarmModel::STATE_OPENED, 'inverted' => false)), AlarmModel::STATE_OPENED); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::STATE, 'value' => AlarmModel::STATE_CLOSED, 'inverted' => false)), AlarmModel::STATE_CLOSED); if ($org instanceof OrgCustomerModel) { $alarmType = $filterList->getOneFilterByFieldName(AlarmFilterFields::ALARM_TYPE); $isSupervision = $alarmType && $alarmType->getValue() == AlarmModel::TYPE_SUPERVISION && !$alarmType->getInverted(); if (!$isSupervision) { try { $dumbAlarm->importData(array('entity' => array('universeType' => AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP))); $this->_helper->allowed('read', $dumbAlarm); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::UNIVERSE_TYPE, 'value' => AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP, 'inverted' => false)), AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP, true); } catch (PermissionException $e) { //Nothing to do } catch (NotAllowedException $e) { //Nothing to do } try { $dumbAlarm->importData(array('entity' => array('universeType' => AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP))); $this->_helper->allowed('read', $dumbAlarm); $this->_addGroup($result, $filterList, array(array('fieldName' => AlarmFilterFields::UNIVERSE_TYPE, 'value' => AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP, 'inverted' => false)), AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP, true); } catch (PermissionException $e) { //Nothing to do } catch (NotAllowedException $e) { //Nothing to do } } } return $result; }
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $req) { try { // Avoid error override! :S if (count($this->getResponse()->getException())) { return; } $auth = Zend_Auth::getInstance(); $identity = $auth->getIdentity(); $byPassMethods = array(App_Controller_Plugin_Auth::AUTH_TYPE_LOST_PASSWORD, App_Controller_Plugin_Auth::AUTH_TYPE_ASYNC); //Bypass some auth methods if ($identity['authType'] && in_array($identity['authType'], $byPassMethods)) { return; } $log = $this->_getLogger(); try { $org = App::getOrgUserLogged(); } catch (UnexpectedValueException $ex) { } if (!$org) { $this->_forceLogout($req, "Unexpected fatal error: Impossible to retrieve organization", 500); } $log->setEventItem('organizationId', $org->id); $orgId = OrgService::getInstance()->getServiceProviderLevelId($org); // Construct dynamic log? if (!empty($orgId)) { $key = 'audit-' . $orgId; $log->setEventItem('serviceProviderId', $orgId); $writer = App::config('resources.multiplelog.audit'); $writer['file']['writerParams']['stream'] = APPLICATION_PATH . "/../data/logs/{$key}.log"; $log->addWriter($writer['file']); } } catch (Exception $exc) { $this->_forceLogout($req, "Unexpected fatal error: " . $exc->getMessage(), 500); } }
/** * User dependencies injection */ public static function initUserAccount() { $ident = \Zend_Auth::getInstance()->getIdentity(); // Transaction injection \App::get("trackingtoken"); ProtoAbstractMapper::$accountingTransactionPrefix = 'Testing-'; // User injection ProtoAbstractMapper::$accountingUserId = $ident['id']; ProtoAbstractMapper::$language = 'en'; $user = \App::getUserLogged(null, true); $allowed = Zend_Controller_Action_HelperBroker::getStaticHelper('allowed'); $allowed->setUser($user); AbstractMapper::$organizationId = $user->organizationId; // Org injection if (!empty($ident['orgId'])) { $org = OrgService::getInstance()->load($ident['orgId']); if (!$org) { $org = OrgModelFactory::factory(array('id' => $ident['orgId'], 'type' => OrganizationMapper::getTypeByOrgId($ident['orgId']))); } \App::getOrgUserLogged($org); AbstractMapper::$organizationId = $ident['orgId']; } WatcherMapper::getInstance()->destroySingleton(); }
/** * Lists all prebills matching a criteria */ public function indexAction() { // Check if the user is allowed to perform this action $dumbPreBill = new Application\Model\PreBillModel(); $this->_helper->allowed('list', $dumbPreBill); $filters = $this->_getFilterParams(); if (isset($filters['customerID'])) { $filters['customerId'] = $filters['customerID']; unset($filters['customerID']); } if (isset($filters['billingAccountID'])) { $orgUserLogged = App::getOrgUserLogged(); if ($orgUserLogged instanceof \Application\Model\Organization\OrgCustomerModel) { $filters['customerId'] = $orgUserLogged->id; } else { if (!isset($filters['customerId'])) { throw new InvalidArgumentException('Needed parameter was not found: customerID'); } } $filters['billingAccountId'] = $filters['billingAccountID']; unset($filters['billingAccountID']); } if (isset($filters['startDate'])) { if (isset($filters['endDate']) && strtotime($filters['endDate']) < strtotime($filters['startDate'])) { throw new InvalidArgumentException("Invalid parameter value: The start date can't be after the end date"); } $filters['creationPeriod'] = date('Y-m-d', strtotime($filters['startDate'])) . '<>'; unset($filters['startDate']); } if (isset($filters['endDate'])) { if (!isset($filters['creationPeriod']) || !$filters['creationPeriod']) { $filters['creationPeriod'] = '<>'; } $filters['creationPeriod'] .= date('Y-m-d', strtotime($filters['endDate'])); unset($filters['endDate']); } $this->_checkFilterParams($filters, PreBillFilterFields::getWhiteList()); try { $filterList = $this->_prebillSrv->buildFilterList($filters, true); } catch (\Application\Exceptions\ValidateException $e) { // HACK to override creationPeriod filter errors! $dataMap = array('startDate' => 'creationPeriod.min', 'endDate' => 'creationPeriod.max', 'billingAccountID' => 'billingAccountId', 'customerID' => 'customerId'); $e = $this->_mapException($e, $dataMap, true); $messages = $e->getValidationErrors(); $messageKeys = array_keys($messages); throw new Application\Exceptions\ValidateException("Invalid parameter value: '" . array_shift($messageKeys) . "'. " . array_shift($messages), array('validationErrors' => $messages, 'code' => $e->getCode())); } $this->_helper->filterNotAllowedFilters('filter_by', $filterList); $params = $this->_getPaginatorParams(); $prebillList = $this->_prebillSrv->listAll($filterList, $params); $items = $prebillList->getItems(); $this->view->prebill = array(); $orgUserLogged = App::getOrgUserLogged(); if ($orgUserLogged instanceof \Application\Model\Organization\OrgCustomerModel) { $items = array_slice($items, ($params['page'] - 1) * $params['count'], $params['count']); } foreach ($items as $item) { try { set_time_limit(30); $prebill = $this->_prebillSrv->load($item->getId()); $this->_helper->allowed('read', $prebill); $this->view->prebill[] = $this->_mapToSdp($prebill->exportData()); } catch (Exception $e) { \App::log()->warn($e); } } // $this->view->prebill = $prebillList->getItems(); }
/** * Deletes the given user */ public function deleteAction() { throw new NotImplementedException('Prebill delete not implemented'); // Try to load the chosen user $id = $this->getRequest()->getParam('id'); $preBill = $this->_preBillSrv->load($id, \App::getOrgUserLogged()); if (empty($preBill)) { throw new NotFoundException('PreBill ' . $id . ' not found', 404); } // Check permissions $this->_helper->allowed('delete', $preBill); // Remove the user try { $this->_preBillSrv->delete($id); } catch (Exception $e) { throw new InvalidArgumentException($e->getMessage(), null, $e); } $this->view->data = true; }
/** * * @param string $id * @return \Application\Model\SimModel | null */ public static function find($id) { $sim = SimMapper::getInstance()->findOneById($id, \App::getOrgUserLogged()->getId()); return $sim; }
public function imsiAction() { if (!$this->getRequest()->isPost()) { throw new AppEx\ForbiddenException("Files action must be a post request."); } $this->_commercialGroupService = CommercialGroupService::getInstance(); $data = $this->_helper->requestData(true); $imsiList = array(); if (isset($data['IMSI'])) { foreach ($data['IMSI'] as $id) { try { if (empty($id)) { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_MISSING_PARAMETER_CODE, 'IMSI'); continue; } if (!is_numeric($id)) { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_REQUEST_VALUES_INCORRECT_CODE, 'IMSI'); continue; } $sim = $this->_simService->load($id, \App::getOrgUserLogged(), 'imsi'); if (is_null($sim)) { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_IMSI_NOT_FOUND_CODE, 'IMSI'); continue; } $simOrgId = $sim->getServiceProviderCommercialId(); $backupOrgId = Application\Model\Mapper\ProtoAbstractMapper::$organizationId; $comGroupid = $sim->getCommercialGroupId(); Application\Model\Mapper\ProtoAbstractMapper::$organizationId = $simOrgId; $comm = $this->_commercialGroupService->load($comGroupid); Application\Model\Mapper\ProtoAbstractMapper::$organizationId = $backupOrgId; $spId = $comm->getServicePackId(); if ($spId) { $st = $this->_service->loadByServicePack($spId); if ($st) { $imsi = array('IMSI' => $id, 'RESULT' => SteeringListService::RESULT_SUCCESS_CODE, 'DESCRIPTION' => SteeringListService::RESULT_SUCCESS_DESC); if (isset($st->resId)) { $imsi['RSP_ID'] = $st->resId; } if (isset($st->steeringType)) { $imsi['STEERING_TYPE'] = $this->_getSteeringType($st->steeringType); } $logistics = $sim->getLogistics(); if (isset($logistics)) { $imsi['CARD_TYPE'] = $logistics; } $imsi['MSISDN'] = isset($sim->msisdn) ? $sim->msisdn : 'UNKNOWN'; $imsiList[] = $imsi; continue; } else { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_REQUEST_VALUES_INCORRECT_CODE, 'IMSI'); continue; } } else { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_INTERNAL_ERROR_CODE, 'IMSI'); continue; } } catch (Exception $ex) { $imsiList[] = $this->_getNotSuccessCase($id, SteeringListService::RESULT_INTERNAL_ERROR_CODE, 'IMSI'); continue; } } } $this->view->IMSI_RES = $imsiList; }
protected function __construct() { parent::__construct(); $this->_defaultFilter = array("userId" => \App::getUserLogged()->id, "context" => \App::getOrgUserLogged()->id); }
/** * Validate element value * * If a translation adapter is registered, any error messages will be * translated according to the current locale, using the given error code; * if no matching translation is found, the original message will be * utilized. * * Note: The *filtered* value is validated. * * @param array $data * @param mixed $context * @return boolean */ public function isValid($data, $context = null, $removeNotPresentFields = false) { if (!($data instanceof RestrictionModel || $this->_acceptArrayAsModel && is_array($data))) { $this->_messages = array(); $this->_messages[self::NOT_RESTRICTIONS] = $this->_messageTemplatesUser[self::NOT_RESTRICTIONS]; return false; } if (!parent::isValid($data, $context, $removeNotPresentFields)) { return false; } if (!$data instanceof RestrictionModel) { $data = new RestrictionModel($data); } $contracts = ContractService::getInstance()->getContractsByServiceType('csrm')->getItems(); if (!empty($contracts)) { $validator = new \Zend_Validate_NotEmpty(); } else { $validator = new \App_Validate_Empty(); } if (!$validator->isValid($data->steering)) { $this->_messages['steering'] = $validator->getMessages(); return false; } // If Voice HOME = SMS HOME, roaming is linked if ($data->getVoice() && $data->getVoice()->getMo() && $data->getSms() && $data->getSms()->getMo() && $data->getVoice()->getMo()->getHome() === $data->getSms()->getMo()->getHome() && $data->getVoice()->getMo()->getRoaming() !== $data->getSms()->getMo()->getRoaming()) { $this->_messages = array(); $this->_messages[self::NOT_SYNC_VOICE_SMS_ROAMING] = $this->_messageTemplatesUser[self::NOT_SYNC_VOICE_SMS_ROAMING]; return false; } // https://jira.tid.es/browse/GLOBALPORTAL-115352 // if ($data->getSms() && $data->getSms()->getMo() && // // If HOME is disabled and Roaming Enabled // (($data->getSms()->getMo()->getHome() && !$data->getSms()->getMo()->getRoaming()) || // // If HOME is enabled and Roaming !== International // (isset($data->getSms()->getMo()->roaming) && // $data->getSms()->getMo()->getRoaming() !== $data->getSms()->getMo()->getInternational()))) { // $this->_messages = array(); // $this->_messages[self::NOT_ROAMING_INTERNATIONAL_SAME_VALUE] = // $this->_messageTemplatesUser[self::NOT_ROAMING_INTERNATIONAL_SAME_VALUE]; // return false; // } // Validate leading/commercial OB $org = \App::getOrgUserLogged(); $orgProvider = OrgService::getInstance()->getParentByType($org->id, OrgServiceProviderModel::ORG_TYPE); if ($orgProvider && \Application\Service\OrgService::getInstance()->isCommercial($orgProvider)) { $validator = new RestrictionsCommercialValidate(); if (!$validator->isValid($data, $context, $removeNotPresentFields)) { $this->_messages = $validator->getMessages(); return false; } } return true; }
protected function _mapToModel(array $data, $usePreset = true) { $data = parent::_mapToModel($data, $usePreset); if (isset($data['billingCycleStart']) && !is_array($data['billingCycleStart'])) { $regex = '/^\\-\\-\\-(?P<dayOfMonth>\\d{2,2})(?P<timezone>.*)$/'; if (preg_match($regex, $data['billingCycleStart'], $matches)) { $tz = App_Util_Date::getTimezoneValue($matches['timezone']); $matches['dayOfMonth'] = intval($matches['dayOfMonth']); $enumService = Application\Service\EnumeratedService::getInstance(); $timezones = $enumService->getEnum(Application\Service\EnumeratedService::TIME_ZONE_ENUM_NAME); foreach ($timezones as $exmpl) { if ($exmpl['offset'] == $matches['timezone']) { $tz = $exmpl['id']; break; } } $matches['timezone'] = $tz; $data['billingCycleStart'] = $matches; } else { $data['billingCycleStart'] = array(); } } if (isset($data['defaultBillingAccount']['contact'])) { $data['defaultBillingAccount']['contactIsPrimaryContact'] = false; } if (isset($data['defaultBillingAccount']['address'])) { $data['defaultBillingAccount']['addressIsCompanyAddress'] = false; } if (isset($data['shippingAddress'])) { $data['shippingAddressIsCompanyAddress'] = false; } if (isset($data['billingContact'])) { $data['billingContactIsPrimaryContact'] = false; } if (isset($data['billingContactAddress'])) { $data['billingContactAddressIsCompanyAddress'] = false; } if (isset($data['primaryContactAddress'])) { $data['primaryContactAddressIsCompanyAddress'] = false; } if ($usePreset && !isset($data['parentId'])) { $data['parentId'] = \App::getOrgUserLogged()->getId(); } return $data; }
/** * Retrieve location information from a SIM */ public function locationAction() { $sim = $this->_getSim(); $this->_helper->filterNotAllowedFields('read_field', $sim); $filterList = $this->_simSrv->buildFilterList(array('icc' => $sim->getIcc())); $listResult = $this->_simSrv->listAll($filterList, array('count' => 1), null, \App::getOrgUserLogged()); $items = $listResult->getItems(); if (!empty($items)) { $item = array_shift($items); $sim->importData($item->exportData()); } $this->view->locationDetailData = array(); if ($sim->getLocationManual() && ($loc = $this->_mapLocationToSdp($sim->getLocationManual()->exportData()))) { $this->view->locationDetailData['manualLocation'] = $loc; } if ($sim->getLocationAuto() && ($loc = $this->_mapLocationToSdp($sim->getLocationAuto()->exportData()))) { $this->view->locationDetailData['automaticLocation'] = $loc; } }
/** * Get an specific user by its Id */ public function getAction() { if (!$this->_hasParam('id')) { throw new InvalidArgumentException("Null Identifier recived"); } $spId = $this->_getParam('id'); $sp = $this->_spSrv->load($spId); if (empty($sp)) { throw new NotFoundException("ServicePack {$spId} not found", 404); } // $this->_helper->allowed('read', $sp); $this->_spSrv->loadSubModels($sp); $modified = false; $tpModified = false; $lcModified = false; if (!empty($sp->tariffPlanServices)) { $tariffPlan = $sp->tariffPlanServices; // Check if there's any modified tariff $entries = array('defaultTermVoice', 'origVoice', 'defaultData', 'data', 'defaultOrigVoice', 'defaultSms', 'termVoice'); $fields = array('q1Modified', 't2SModified', 't2QModified', 't4QModified', 't6QModified'); foreach ($entries as $entry) { foreach ($fields as $field) { if (!empty($tariffPlan->{$entry}->{$field})) { $modified = true; $tpModified = true; break 2; } } } if (isset($tariffPlan->zonePlan)) { $zoneGroups = $tariffPlan->zonePlan->zoneGroups; if (!empty($zoneGroups)) { foreach ($zoneGroups as $zoneGroup) { if (!empty($zoneGroup->zonesModified)) { $modified = true; $tpModified = true; break; } } } } } if (!empty($sp->tariffPlanLifeCycle)) { $tariffPlan = $sp->tariffPlanLifeCycle; if (!empty($tariffPlan->status)) { foreach ($tariffPlan->status as $status) { if (!empty($status->costModified)) { $modified = true; $lcModified = true; break; } } } if (!$lcModified && !empty($tariffPlan->transitions)) { foreach ($tariffPlan->transitions as $transition) { if (!empty($transition->costModified)) { $modified = true; $lcModified = true; break; } } } } $this->view->data = $sp->exportData(); try { $this->_helper->allowed('view_discounts', $sp); $discounts = $this->_spSrv->getDiscounts($sp); } catch (Exception $e) { $org = \App::getOrgUserLogged(); try { $acl = \App::get('acl'); if ($acl->existsPrivilege(\App::getUserLogged(), $org, 'read_field_discounts')) { $this->_helper->allowed('read_field_discounts', $org); } else { $this->_helper->allowed('read_field_default', $org); } $discounts = array(); if ($org->getType() === \Application\Model\Organization\OrgCustomerModel::ORG_TYPE && $org->getServicepacksDiscounts() && $org->getServicepacksDiscounts()->customerServicepack) { // Search current service pack $spDisc = $org->getServicepacksDiscounts()->customerServicepack; foreach ($spDisc as $disc) { if ($disc->servicepackId == $sp->id) { // See \Application\Model\ServicePack\Discount $discounts[] = array('customerId' => $org->getId(), 'customerName' => $org->getName(), 'voice' => $disc->getVoiceDiscount(), 'sms' => $disc->getSmsDiscount(), 'data' => $disc->getDataDiscount()); } } } } catch (Exception $e) { // Do nothing } } if (!empty($discounts)) { $this->view->data['discounts'] = $discounts; } try { $this->_helper->allowed('view_voucher_only_discounts', $sp); $voucherOnlyDiscounts = $this->_spSrv->getVoucherOnlyDiscounts($sp); } catch (Exception $e) { $org = \App::getOrgUserLogged(); try { $acl = \App::get('acl'); if ($acl->existsPrivilege(\App::getUserLogged(), $org, 'read_field_voucher_only_discounts')) { $this->_helper->allowed('read_field_voucher_only_discounts', $org); } else { $this->_helper->allowed('read_field_default', $org); } $voucherOnlyDiscounts = array(); if ($org->getType() === \Application\Model\Organization\OrgCustomerModel::ORG_TYPE && $org->getServicepacksDiscounts() && $org->getServicepacksDiscounts()->customerServicepack) { // Search current service pack $spVoucherDisc = $org->getServicepacksDiscounts()->customerServicepack; foreach ($spVoucherDisc as $disc) { if ($disc->servicepackId == $sp->id) { // See \Application\Model\ServicePack\Discount $voucherOnlyDiscounts[] = array('customerId' => $org->getId(), 'customerName' => $org->getName(), 'voice' => $disc->getVoucherOnlyVoiceDiscount(), 'sms' => $disc->getVoucherOnlySmsDiscount(), 'data' => $disc->getVoucherOnlyDataDiscount()); } } } } catch (Exception $e) { // Do nothing } } if (!empty($voucherOnlyDiscounts)) { $this->view->data['voucherOnlyDiscounts'] = $voucherOnlyDiscounts; } $this->view->data['tariffPlanServices']['modified'] = $tpModified; $this->view->data['tariffPlanLifeCycle']['modified'] = $lcModified; $this->view->modified = $modified; }
/** * Validate element value * * If a translation adapter is registered, any error messages will be * translated according to the current locale, using the given error code; * if no matching translation is found, the original message will be * utilized. * * Note: The *filtered* value is validated. * * @param array $data * @param mixed $context * @return boolean */ public function isValid($data, $context = null, $removeNotPresentFields = false) { if (!$data instanceof TemplateModel) { $this->_messages = array(); $this->_messages[self::NOT_TEMPLATE] = $this->_messageTemplatesUser[self::NOT_TEMPLATE]; return false; } if (!parent::isValid($data, $context, $removeNotPresentFields)) { return false; } if ($data instanceof TemplateModel) { $data = $data->exportData(); } $type = $data['type']; $options = array('isTemplateValidation' => true); switch ($type) { case 'tariffPlanLifeCycle': $data = new Model\TariffPlanLifeCycleModel($data); $validator = new TariffPlanLifeCycleValidate($options); break; case 'tariffPlanService': $data = new Model\TariffPlanServicesModel($data); $validator = new TariffPlanServicesValidate($options); break; case 'lifeCycle': $data = new Model\LifeCycleModel($data); $validator = new LifeCycleValidate($options); break; case 'restrictions': $data = new Model\RestrictionModel($data); $validator = new RestrictionsValidate($options); break; case 'supplementaryServices': $data = new Model\SupplServicesModel($data); $validator = new SupplServicesValidate($options); break; case 'zonePlan': $data = new Model\ZonePlanModel($data); $validator = new ZonePlanValidate($options); break; } if (!$validator->isValid($data)) { $this->_messages = $validator->getMessages(); return false; } //check if name exist $templateService = \Application\Service\TemplateService::getInstance(); $filterList = array('name' => $data->getName(), 'type' => $type); $filterList = $templateService->buildFilterList($filterList, \App::getOrgUserLogged()); $items = $templateService->listAll(array('filterList' => $filterList))->getItems(); if (!empty($items)) { foreach ($items as $item) { if ($item->getId() === $data->getId()) { return true; } } $this->_messages[] = 'Template name already exist'; return false; } return true; }