Example #1
0
 /**
  * Updates an existing Usuarios model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionActualizar($id)
 {
     $model = $this->findModel($id);
     $articulo = $this->findModel($id);
     $session = Yii::$app->session;
     $idUsuario = Yii::$app->user->getId();
     $claveSession = ImagenHelper::SESSION_IMAGEN_ARTICULO . $idUsuario;
     $files = [];
     $imagenes = [];
     $imagenesEliminar = [];
     if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
         Yii::$app->response->format = Response::FORMAT_JSON;
         return ActiveForm::validate($model);
     }
     if ($session->has($claveSession)) {
         $files = $session->get($claveSession);
         $imagenesAgregar = $files['file'];
         $imagenesEliminar = $files['delete'];
     }
     if ($model->load(Yii::$app->request->post())) {
         $imagenPrincipal = Yii::$app->request->post('dropzone_imagen_principal');
         //actualizar imagen principal
         //guardamos la imagen principal
         if (isset($imagenPrincipal) || $imagenPrincipal == 0) {
             $imagenesArticulo = Archivos::findAll(['articulo' => $id]);
             $principal = '';
             foreach ($imagenesArticulo as $key => $imagen) {
                 if ($key == $imagenPrincipal) {
                     $principal = $imagen->idarchivo;
                 }
             }
             //si existe
             if (!empty($principal)) {
                 //seteamos todas las imagenes a 0
                 Archivos::updateAll(['principal' => Archivos::NO_ES_PRINCIPAL], ['articulo' => $id]);
                 //seteamos todas la principal a 1
                 $imagen = Archivos::findOne(['idarchivo' => $principal]);
                 $imagen->principal = Archivos::ES_PRINCIPAL;
                 $imagen->save();
             }
             $session->remove($claveSession);
             Yii::$app->session->setFlash('toasts', 'Se ha actualizado el articulo con exito');
         }
         if ($model->save() || !empty($files)) {
             //guardamos imagenes nuevas
             if (!empty($imagenesAgregar)) {
                 foreach ($imagenesAgregar as $key => $file) {
                     $file = (object) $file;
                     // the path to save file, you can set an uploadPath
                     $nombre = ImagenHelper::obtenerNombreArchivo(['usuario' => $idUsuario, 'articulo' => $model->idarticulo, 'imagen' => $file->name]);
                     $archivo = new Archivos();
                     $archivo->usuario = $idUsuario;
                     $archivo->articulo = $articulo->idarticulo;
                     $archivo->nombre = $nombre;
                     $archivo->tipo = $file->type;
                     $archivo->peso = $file->size;
                     $archivo->fechacreado = MetodosHelper::fechaHoy();
                     if ($archivo->save()) {
                         file_put_contents(ImagenHelper::rutaImagenesArticulos() . $nombre, base64_decode($file->base64));
                     }
                 }
             }
             //eliminamos imagenes
             if (!empty($imagenesEliminar)) {
                 $listaImagenes = [];
                 foreach ($model->archivos as $key => $imagen) {
                     $listaImagenes[$key] = $imagen->nombre;
                 }
                 $resultado = array_diff($listaImagenes, $imagenesEliminar);
                 if (empty($resultado)) {
                     Archivos::deleteAll(['articulo' => $model->idarticulo, 'usuario' => $idUsuario]);
                 } else {
                     foreach ($listaImagenes as $nombre) {
                         if (in_array($nombre, $imagenesEliminar)) {
                             Archivos::deleteAll(['nombre' => $nombre, 'articulo' => $model->idarticulo, 'usuario' => $idUsuario]);
                             ImagenHelper::eliminarImagen($nombre);
                         }
                     }
                 }
             }
             $session->remove($claveSession);
             Yii::$app->session->setFlash('toasts', 'Se ha actualizado el articulo con exito');
             //Yii::$app->session->setFlash('success', ['toast'=>'Se ha actualizado la categoria con exito'], true);
             return $this->redirect(['detalle', 'id' => $model->idarticulo]);
         }
     }
     $session->remove($claveSession);
     return $this->render('actualizar', ['model' => $model]);
 }