public function hasPermissionToCreateRegional($regionalIdOwner, $newServiceAreaData, $indice) { $modelServiceArea = new Model_ServiceArea(); $regionalOwnerSA = $modelServiceArea->getAllServiceAreaByRegionalId($regionalIdOwner); switch ($indice) { case 'StateId': // só verifica se tem acesso aos Estados if (!($regionalOwnerSA['indice'] == 'StateId')) { $error['messageError'] = 'Sem permissão para criar regional com Estado(s)'; throw new Vtx_UserException($error['messageError']); return; } // verifica se é/são o(s) mesmo(s) Estado(s) if (!Vtx_Util_Array::array_all_in_array($newServiceAreaData['StateId'], $regionalOwnerSA['value']['StateId'])) { $error['messageError'] = 'Sem permissão para criar regional com este(s) Estado(s)'; throw new Vtx_UserException($error['messageError']); return; } break; case 'CityId': //Regional Estadual, pode criar p/ cidades. if ($regionalOwnerSA['indice'] == 'StateId') { return true; } if ($regionalOwnerSA['indice'] == 'NeighborhoodId') { $error['messageError'] = 'Sem permissão para criar regional com esta(s) Cidade(s)'; throw new Vtx_UserException($error['messageError']); return; } //Regional Municipal, apenas para suas cidades. if (!Vtx_Util_Array::array_all_in_array($newServiceAreaData['CityId'], $regionalOwnerSA['value']['CityId'])) { $error['messageError'] = 'Sem permissão para criar regional com esta(s) Cidade(s)'; throw new Vtx_UserException($error['messageError']); return; } break; case 'NeighborhoodId': //Regional Estadual, pode criar p/ cidades. if ($regionalOwnerSA['indice'] == 'StateId') { return true; } //Regional Municipal, pode criar p/ bairros. if ($regionalOwnerSA['indice'] == 'CityId') { return true; } //Regional Bairro, apenas para seus bairros. if (!Vtx_Util_Array::array_all_in_array($newServiceAreaData['NeighborhoodId'], $regionalOwnerSA['value']['NeighborhoodId'])) { $error['messageError'] = 'Sem permissão para criar regional com este(s) Bairro(s)'; throw new Vtx_UserException($error['messageError']); return; } break; default: break; } return true; }