Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 /**
  * 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));
     }
 }
Exemple #5
0
 /**
  * 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;
 }