/** * Procesa documentos xpdl, previamente seleccionados, generando y/o * actualizando objetos Macro, Paquete, Proceso, Actividad y RolAbstracto. * Retorna un array con los archivos que no pudieron ser procesados. * * @param array $files_xpdl Archivos Xpdls a Importar * @return array Archivos no procesados */ public function processXpdls($files_xpdl = array()) { // Para ir volcando los paquetes no procesados por alguna regla invalida $noimp = array(); foreach ($files_xpdl as $file) { $xpdl = new psdfXpdl($file); // Recupero Id y Nombre del paquete $xpdlPackageId = $xpdl->getPackageId(); $xpdlPackageName = $xpdl->getPackageName(); // Recupero Macro $macro_name = $xpdl->getMacroName(); // Contenido del xpdl como un string para guardarlo $content = $xpdl->getContent(); // Intento recuperar Macro y Paquete si ya estuviesen almacenados $macro = Doctrine::getTable('Macro')->findOneByNombre($macro_name); $pack = Doctrine::getTable('Paquete')->findOneByXpdlId($xpdlPackageId); // REGLAS $err = array(); // Si no se cumple alguna regla generar: // $err['file'] = $this->getNombre(); // $err['error'] = 'Mensaje del error'; // CONTINUO SI SE PASARON TODAS LAS REGLAS if (count($err) == 0) { // Creo el macro si aún no existe if (!$macro) { $macro = new Macro(); $macro->setNombre($macro_name); $macro->setRelProyecto($this->getId()); $macro->save(); } // Creo el paquete si aún no existe y actualizo if (!$pack) { $pack = new Paquete(); $pack->setNombre($xpdlPackageName); $pack->setRelMacro($macro->getId()); $pack->setXpdl($content); $pack->setXpdlId($xpdlPackageId); $pack->save(); // Grabo para que genere el Id } else { if ($pack->getXpdl() != $content) { $pack->setXpdl($content); } if ($pack->getNombre() != $xpdlPackageName) { $pack->setNombre($xpdlPackageName); } } // Guardo el paquete con los cambios if ($pack->isNew() or $pack->isModified()) { $pack->save(); } // Delego en el paquete la sincronizacion de los Procesos $err = $pack->syncProcesses($xpdl); if (count($err) > 0) { $noimp[] = array_merge($noimp, $err); } } else { $noimp[] = $err; } } return $noimp; }
public function changemacros() { $data = json_decode($_POST["json"]); $macrocontent = $data->selectedMacro; $token = (string) JWTAuth::getToken(); $dataObj2 = ""; $user = JWTAuth::toUser($token); $dataObj = $macrocontent; if ($macrocontent == null) { // adding a new macro $macro = new Macro(); $macro->kcals = $macrocontent->kcals; $macro->carbs = $macrocontent->carbs; $macro->prot = $macrocontent->prot; $macro->fats = $macrocontent->fats; $macro->wkcals = $macrocontent->kcals; $macro->wcarbs = $macrocontent->wcarbs; $macro->wprot = $macrocontent->wprot; $macro->wfats = $macrocontent->wfats; $macro->bulking = $macrocontent->bulking; $macro->current = $macrocontent->current; $macro->name = $macrocontent->name; $macro->user_id = $user->id; $macro->save(); $dataObj = $macro; } else { // editing an existing macro $macro_id = $macrocontent->id; $macro = Macros::where('id', $macro_id)->where('user_id', $user->id)->first(); if ($macro !== null) { $dataObj2 = $macrocontent; $macro->kcals = $macrocontent->kcals; $macro->carbs = $macrocontent->carbs; $macro->prot = $macrocontent->prot; $macro->fats = $macrocontent->fats; $macro->wkcals = $macrocontent->wkcals; $macro->wcarbs = $macrocontent->wcarbs; $macro->wprot = $macrocontent->wprot; $macro->wfats = $macrocontent->wfats; $macro->bulking = $macrocontent->bulking; $macro->current = $macrocontent->current; $macro->name = $macrocontent->name; $macro->user_id = $user->id; $macro->save(); $dataObj = $macro; } else { $dataObj = ""; } } //$dataObj = ""; return ['data' => ['dataitem' => $dataObj2]]; }