/** * Returns a new TipoQuery object. * * @param string $modelAlias The alias of a model in the query * @param TipoQuery|Criteria $criteria Optional Criteria to build the query from * * @return TipoQuery */ public static function create($modelAlias = null, $criteria = null) { if ($criteria instanceof TipoQuery) { return $criteria; } $query = new TipoQuery(null, null, $modelAlias); if ($criteria instanceof Criteria) { $query->mergeWith($criteria); } return $query; }
/** * Removes this object from datastore and sets delete attribute. * * @param PropelPDO $con * @return void * @throws PropelException * @throws Exception * @see BaseObject::setDeleted() * @see BaseObject::isDeleted() */ public function delete(PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("This object has already been deleted."); } if ($con === null) { $con = Propel::getConnection(TipoPeer::DATABASE_NAME, Propel::CONNECTION_WRITE); } $con->beginTransaction(); try { $deleteQuery = TipoQuery::create()->filterByPrimaryKey($this->getPrimaryKey()); $ret = $this->preDelete($con); if ($ret) { $deleteQuery->delete($con); $this->postDelete($con); $con->commit(); $this->setDeleted(true); } else { $con->commit(); } } catch (Exception $e) { $con->rollBack(); throw $e; } }
public function editarAction() { $request = $this->getRequest(); //Cachamos el valor desde nuestro params $id = (int) $this->params()->fromRoute('id'); //Verificamos que el Id articulo que se quiere modificar exista if (!ArticuloQuery::create()->filterByIdarticulo($id)->exists()) { $id = 0; } //Si es incorrecto redireccionavos al action nuevo if (!$id) { return $this->redirect()->toRoute('articulo', array('action' => 'nuevo')); } //Instanciamos nuestro articulo $articulo = ArticuloQuery::create()->findPk($id); //propiedades $propiedades = \PropiedadQuery::create()->filterByIdarticulo($articulo->getIdarticulo())->find(); //Almacenamos en un arreglo todas los Tipos $tipoCollection = \TipoQuery::create()->find(); $tipoArray = array(); foreach ($tipoCollection as $tipo) { $tipoArray[$tipo->getIdtipo()] = $tipo->getTipoNombre(); } //Instanciamos nuestro formulario $articuloForm = new ArticuloForm($tipoArray); //Le ponemos los datos de nuestro articulo a nuestro formulario $articuloForm->setData($articulo->toArray(BasePeer::TYPE_FIELDNAME)); if ($request->isPost()) { //Si hicieron POST //Instanciamos nuestro filtro de articulo $articuloFilter = new ArticuloFilter(); //Le ponemos nuestro filtro a nuesto fromulario $articuloForm->setInputFilter($articuloFilter->getInputFilter()); //Le ponemos los datos a nuestro formulario $articuloForm->setData($request->getPost()); //Validamos nuestro formulario de articulo if ($articuloForm->isValid()) { //Recorremos nuestro formulario y seteamos los valores a nuestro objeto Articulo foreach ($articuloForm->getData() as $articuloKey => $articuloValue) { $articulo->setByName($articuloKey, $articuloValue, \BasePeer::TYPE_FIELDNAME); } //Guardamos en nuestra base de datos Articulo $articulo->save(); //Si el articulo tiene propiedades las eliminamos para volverlas a setear if ($propiedades->count()) { foreach ($propiedades as $propiedad) { $propiedad->delete(); //Eliminamos de la base de datos } } //Verificamos si nos enviaron propiedades foreach ($_POST as $key => $value) { if (strstr($key, 'propiedad') && $value['nombre'] != null) { //Guardamos las propiedades $propiedad = new \Propiedad(); $propiedad->setIdarticulo($articulo->getIdarticulo()); $propiedad->setPropiedadNombre($value["nombre"]); $propiedad->save(); //Guardamos las variantes de la propiedad foreach ($value as $varianteKey => $varianteValue) { if ($varianteKey !== "nombre" && $varianteValue != null) { $variante = new \Propiedadvalor(); $variante->setIdarticulo($articulo->getIdarticulo()); $variante->setIdpropiedad($propiedad->getIdpropiedad()); $variante->setPropiedadvalorNombre($varianteValue); $variante->save(); } } } } //Despues de haber insertado el esquelo, insertamos en las tablas de variaciones //Comenzamos a itinerar sobre las propiedad para obtener el numero de combinaciones posibles $propiedadCollection = $articulo->getPropiedads(); $combinaciones = 0; foreach ($propiedadCollection as $propiedad) { if ($combinaciones == 0) { $combinaciones = $propiedad->getPropiedadvalors()->count(); } else { $combinaciones *= $propiedad->getPropiedadvalors()->count(); } } //De acuerdo al numero de combinaciones posibles insertamos en la tabla articulo variante if ($combinaciones > 0) { for ($i = 0; $i < $combinaciones; $i++) { $articulovariante = new \Articulovariante(); $articulovariante->setIdarticulo($articulo->getIdarticulo()); $articulovariante->save(); } } //Guardamos en un arreglo las propiedades Valores $propiedadValor = array(); $propiedadValorCollection = \PropiedadvalorQuery::create()->findByIdarticulo($articulo->getIdarticulo()); foreach ($propiedadValorCollection as $pvk => $pvv) { $idpropiedadNombre = $pvv->getPropiedad()->getPropiedadNombre(); $propiedadValor[$idpropiedadNombre][] = $pvv->toArray(); } $idArticuloVarianteArray = array(); $propiedadVarianteCollection = \ArticulovarianteQuery::create()->findByIdarticulo($articulo->getIdarticulo()); foreach ($propiedadVarianteCollection as $propiedadVariante) { $idArticuloVarianteArray[] = $propiedadVariante->getIdArticuloVariante(); } $i = 0; foreach ($propiedadValor as $key => $value) { $php .= 'foreach ($propiedadValor[' . $key . '] as $k' . $key . ' => $v' . $key . '){'; } foreach ($propiedadValor as $key => $value) { $php .= '$articulovariantevalor = new \\Articulovariantevalor();'; $php .= '$articulovariantevalor->setIdarticulo($articulo->getIdarticulo())'; $php .= '->setIdpropiedad($v' . $key . '["Idpropiedad"])'; $php .= '->setIdpropiedadvalor($v' . $key . '["Idpropiedadvalor"])'; $php .= '->setIdarticulovariante($idArticuloVarianteArray[$i])'; $php .= '->save();'; } $php .= '$i++;'; foreach ($propiedadValor as $key => $value) { $php .= '}'; } eval($php); //Agregamos un mensaje $this->flashMessenger()->addMessage('Articulo Modificado exitosamente!'); //Redireccionamos a nuestro list return $this->redirect()->toRoute('articulo'); } else { } } return new ViewModel(array('id' => $id, 'articuloForm' => $articuloForm, 'propiedades' => $propiedades)); }
public function editarAction() { $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { return $this->redirect()->toRoute('producto', array('action' => 'nuevo')); } $request = $this->getRequest(); //Verificamos que el idarticulo que se quiere modificar exista if (ArticuloQuery::create()->filterByIdarticulo($id)->exists()) { //Instanciamos nuestro idarticulo $articulo = ArticuloQuery::create()->findPk($id); //Almacenamos en un arreglo todas las propiedades $tipoCollection = \TipoQuery::create()->find(); $tipoArray = array(); foreach ($tipoCollection as $tipoEntity) { $tipoArray[$tipoEntity->getIdtipo()] = $tipoEntity->getTipoNombre(); } //Instanciamos nuestro formulario $productoForm = new ProductoForm($tipoArray); $productoArray = array(); foreach ($articulo->toArray(BasePeer::TYPE_FIELDNAME) as $articuloKey => $articuloValue) { $productoArray[$articuloKey] = $articuloValue; } //Almacenamos en un arreglo todas las propiedades $propiedadCollection = \PropiedadQuery::create()->filterByIdarticulo($productoArray['idarticulo'])->find(); $propiedadArray = array(); // Si existen registros if ($propiedadCollection->getArrayCopy()) { foreach ($propiedadCollection->getArrayCopy() as $propiedadEntity) { foreach ($propiedadEntity->toArray(BasePeer::TYPE_FIELDNAME) as $propiedadKey => $propiedadValue) { //Si los keys son igual a idpropiedad o propiedad_nombre if ($propiedadKey == 'idpropiedad' || $propiedadKey == 'propiedad_nombre') { $propiedadArray[$propiedadKey] = $propiedadValue; //Almacenamos en un arreglo todas los valores de las propiedades $propiedadvalorCollection = \PropiedadvalorQuery::create()->filterByIdpropiedad($propiedadArray['idpropiedad'])->filterByIdarticulo($productoArray['idarticulo'])->find(); $propiedadvalorArray = array(); if ($propiedadvalorCollection->getArrayCopy()) { foreach ($propiedadvalorCollection->getArrayCopy() as $propiedadvalorEntity) { foreach ($propiedadvalorEntity->toArray(BasePeer::TYPE_FIELDNAME) as $propiedadvalorKey => $propiedadvalorValue) { if ($propiedadvalorKey == 'idpropiedadvalor' || $propiedadvalorKey == 'propiedadvalor_nombre') { $propiedadvalorArray[$propiedadvalorKey] = $propiedadvalorValue; array_push($productoArray, $propiedadvalorArray); } } } } array_push($productoArray, $propiedadArray); } } } } //Le ponemos los datos de nuestro producto a nuestro formulario $productoForm->setData($productoArray); if ($request->isPost()) { //Si hicieron POST //Instanciamos nuestro filtro $productoFilter = new ProductoFilter(); //Le ponemos nuestro filtro a nuesto fromulario $productoForm->setInputFilter($productoFilter->getInputFilter()); //Le ponemos los datos a nuestro formulario $productoForm->setData($request->getPost()); //Validamos nuestro formulario if ($productoForm->isValid()) { //Recorremos nuestro formulario y seteamos los valores a nuestro objeto Medico foreach ($productoForm->getData() as $productoKey => $productoValue) { $articulo->setByName($productoKey, $productoValue, \BasePeer::TYPE_FIELDNAME); } //Guardamos en nuestra base de datos $articulo->save(); //Agregamos un mensaje $this->flashMessenger()->addMessage('Medico guardado exitosamente!'); //Redireccionamos a nuestro list return $this->redirect()->toRoute('producto'); } else { } } return new ViewModel(array('id' => $id, 'ProductoForm' => $productoForm)); } }
/** * Get the associated Tipo object * * @param PropelPDO $con Optional Connection object. * @param $doQuery Executes a query to get the object if required * @return Tipo The associated Tipo object. * @throws PropelException */ public function getTipo(PropelPDO $con = null, $doQuery = true) { if ($this->aTipo === null && $this->idtipo !== null && $doQuery) { $this->aTipo = TipoQuery::create()->findPk($this->idtipo, $con); /* The following can be used additionally to guarantee the related object contains a reference to this object. This level of coupling may, however, be undesirable since it could result in an only partially populated collection in the referenced object. $this->aTipo->addArticulos($this); */ } return $this->aTipo; }