function remove($plan) { if ($this->countUsuarios($plan) > 0) { AppError::write(AppError::PLAN_USO_CANT_DELETE); } $id = is_object($plan) ? $plan->id : $plan; $query = "DELETE FROM usuarios_planes where id = ?"; return DB::prepareExecute($query, array($id)); }
function cifrasExceptionHandler(Exception $e) { global $app; $app->getLog()->error($e); if ($e instanceof PDOException && $e->getCode() == '2002') { AppError::write(AppError::DB_CONNECTION); } else { AppError::internal(AppError::GENERIC_ERROR, $e->getMessage()); } }
function importar($concepto, $toParent) { try { DB::beginTransaction(); $importado = $this->importador->importar($concepto, $toParent); DB::commit(); return $importado; } catch (exception $e) { DB::rollBack(); AppError::write($e->getMessage(), $concepto); } }
private function security() { $idModelo = $_REQUEST['id_modelo']; $modo = $_REQUEST['modo']; if (!isset($modo) || !isset($idModelo)) { AppError::write(AppError::PARAMS_NOT_VALID); } if ($modo == 'model') { $this->app->loginService->mustHave(AppPermisos::MAESTRO); } else { if ($modo == 'user') { $this->app->loginService->mustOwnerObra($idModelo); } else { AppError::write(AppError::PARAMS_NOT_VALID); } } }
protected function copyModelo($modelo, $nuevoNombre) { $query = "SELECT * FROM " . $this->fromTables->modelos . " WHERE id = ?"; $original = DB::prepareExecuteFetch($query, array($modelo->id)); unset($original->id); if ($this->toType == TYPES::MODEL) { // es un MODELO $original->visible = 0; } else { // es una OBRA // las obras no tienen atributo visible, solo es para los modelos unset($original->visible); //se setea el id_usuario if (!isset($modelo->id_usuario)) { AppError::write(AppError::OBRA_WIDTOUT_OWNER); } $original->id_usuario = $modelo->id_usuario; } if (isset($nuevoNombre)) { $original->nombre = $nuevoNombre; } $original->id = ABM2::save($this->toTables->modelos, $original); return $original; }
/** * @array array de conceptos * @parent id del nodo superior * @model id del modelo */ function saveBatch($array, $parent, $modelo = null) { //TODO: crear en ABM2 batch de update, insert y delete $ret = array(); $removedIds = array(); $addedIds = array(); $toImport = array(); // guarda o elimina los conceptos foreach ($array as $key => $rec) { $toReplace = isset($rec->replace) && $rec->replace; $toDelete = isset($rec->deleted) && $rec->deleted; $toClonar = isset($rec->clonar) && $rec->clonar; unset($rec->replace); unset($rec->deleted); unset($rec->clonar); if ($toReplace && !$toDelete) { //PARA REEMPLAZAR, SE BORRA EL ACTUAL ID Y SE CREA COMO NUEVO $copy = clone $rec; //SE BORRA $this->interalRemoveBath($rec, $parent); // se agrega id para borrar la relaciones array_push($removedIds, $rec->id); //SE PREPARA LA COPIA COMO UN NUEVO REGISTRO unset($copy->id); unset($rec->replace); $rec = $copy; } if ($toDelete) { //SE BORRA $this->interalRemoveBath($rec, $parent); // se agrega id para borrar la relaciones array_push($removedIds, $rec->id); //cuando se borra un insumo, si ese tiene el id_maestro como null quiere decir que no esta asociado a la hora de publicar un precio //y se puede borrar direcatmene de la tabla conceptos_modelos y conceptos_usuarios if ($rec->id_maestro == null) { parent::remove($rec); } } else { if ($toClonar) { //PARA CLONAR, esto se da cuando se cambia el codigo del item // clon del propio modelo u obra $clonRec = $this->clonar($rec, $parent, $modelo); // si no es el maestro, borrar el original / ¿hacer o dejar transparente? } else { // PARA GUARDAR //PARA DESVINCULAR ANALISIS /*if(isset($rec->customPrecio) && $rec->customPrecio){ unset($rec->customPrecio); $this->convertToInsumo($rec); }*/ //CONTINUA CON EL GUARDAR if ($modelo) { $rec->id_modelo = $modelo->id; } if (isset($rec->id_maestro) && $rec->id_maestro > 0 && (!isset($rec->id) || $rec->id == 0)) { // PARA IMPORTAR. ES UNA IMPORTACION DEL MAESTRO $toImport[] = $rec; $rec->id = $rec->id_maestro; } else { if (isset($rec->customPrecio) && $rec->customPrecio && !$toDelete) { //permite cambiar el precio de un insumo, esto lo hace desvinculando, clonando y luego borra el isumo original unset($rec->customPrecio); if ($rec->tipo = TYPES_CONCEPTOS::INSUMO) { if ($this->type != TYPES::MASTER) { $clonRec = $this->clonar($rec, $parent, $modelo); array_push($removedIds, $rec->id); //$this->interalRemoveBath($rec,$parent); $this->removeRelations($parent, $rec->id); //desvincula el insumo del maestro para que no se actualize su precio al publicar $this->convertToInsumo($clonRec); } } else { if ($rec->tipo = TYPES_CONCEPTOS::ANALISIS) { $this->convertToInsumo($rec); } } } else { // PARA GUARDAR if (!isset($rec->tipo)) { $rec->tipo = TYPES_CONCEPTOS::INSUMO; $rec->id_familia = $this->idFamiliaDefault; } //chequea si tiene el identificador del cliente o front-end // de esta forma se soluciona el bug #7235 if (isset($rec->cid)) { $cid = $rec->cid; } unset($rec->cid); $saved = parent::save($this->filterToSave($rec)); if (isset($cid)) { // vuelve a poner el id del cliente $saved->cid = $cid; } if (isset($parent)) { // si existe el nodo padre se guarda. // El unica caso que no existe, es para los analisis del maestro, // donde se puede crear un analisis sin rubro if (!isset($rec->id) || $saved->id != $rec->id) { // es un registro nuevo, la relación no existe, se inserta $rec->id = $saved->id; $this->insertRelation($parent, $rec, $modelo); } else { //ya existe el registro, la relación tambien existe, se actualiza $this->updateRelation($parent, $rec, $modelo); } } array_push($ret, $saved); } } } } } // elimina relaciones if (count($removedIds) > 0 && isset($parent)) { $this->removeRelations($parent, $removedIds); } //importacion de conceptos de maestros if (count($toImport) > 0) { if (!isset($parent)) { // no se puede importar un elemento si no tiene padre. AppError::write(AppError::IMPORT_WITHOUT_PARENT); } $importador = $this->app->newConceptoImportador; $importador->setType($this->type); $parent->modelo = $modelo; foreach ($toImport as $key => $item) { $importado = $importador->importar($item, $parent); if (isset($item->cid)) { $importado->cid = $item->cid; } array_push($ret, $importado); } } if (isset($parent)) { // retorna los hijos del concepto parent $children = $this->getChildren($parent); $this->updateTipoConcepto($parent, $children); //seta los cid si existen foreach ($ret as $key => $itemSaved) { $child = $this->searchById($children, $itemSaved->id); if (isset($child)) { $child->cid = $itemSaved->cid; } } return $children; } else { return $ret; } }
public function error(Exception $argument = null) { AppError::write(AppError::GENERIC_ERROR, $e->getMessage()); }
function mustLogged() { $user = $this->getUserLogged(); if (!isset($user)) { AppError::write(AppError::USER_NOT_LOGGED); } }
public static function handleException($exception) { $errorHandler = AppError::getErrorHandler(); $errorHandler::handleException($exception); //ErrorHandler::handleException($exception); }