示例#1
0
 public function editarAction()
 {
     //ID ENTIDAD
     $id = $this->params()->fromRoute('id');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post_data = $request->getPost();
         $post_files = $request->getFiles();
         //INSTANCIAMOS NUESTRA ENTIDAD
         $entity = \EmpleadoQuery::create()->findPk($id);
         //SETIAMOS NUESTROS DATOS CON EXCEPCIONES
         foreach ($post_data as $key => $value) {
             if (\EmpleadoPeer::getTableMap()->hasColumn($key) && $key != 'empleado_iniciocontrato' && $key != 'empleado_password' && $key != 'empleado_foto') {
                 $entity->setByName($key, $value, \BasePeer::TYPE_FIELDNAME);
             }
         }
         //SETIAMOS LA FECHA DE CONTRATO
         if (!empty($post_data['empleado_iniciocontrato'])) {
             $empleado_iniciocontrato = date_create_from_format('d/m/Y', $post_data['empleado_iniciocontrato']);
             $entity->setEmpleadoIniciocontrato($empleado_iniciocontrato);
         }
         //SETIAMOS LA CONTRASEÑA EN MD5
         if (!empty($post_data['empleado_password'])) {
             $entity->setEmpleadoPassword(md5($post_data['empleado_password']));
         }
         //ELIMINAMOS LA FOTOGRAFIA DEL EMPLEADO
         $entity->setEmpleadoFoto(NULL);
         unlink($_SERVER['DOCUMENT_ROOT'] . "/img/admin/profiles/empleado_avatar_" . $entity->getIdempleado() . ".jpg");
         $entity->save();
         //LA FOTO DEL EMPLEADO
         if (!empty($post_files['empleado_foto']['name'])) {
             $upload_folder = '/img/admin/profiles/';
             $img_type = $post_files['empleado_foto']['type'];
             $img_type = explode('/', $img_type);
             $img_type = $img_type[1];
             $img_info = getimagesize($post_files['empleado_foto']['tmp_name']);
             $img_original = imagecreatefromjpeg($post_files['empleado_foto']['tmp_name']);
             $max_ancho = 250;
             $max_alto = 250;
             list($ancho, $alto) = getimagesize($post_files['empleado_foto']['tmp_name']);
             //Se calcula ancho y alto de la imagen final
             $x_ratio = $max_ancho / $ancho;
             $y_ratio = $max_alto / $alto;
             //Si el ancho y el alto de la imagen no superan los maximos,
             //ancho final y alto final son los que tiene actualmente
             if ($ancho <= $max_ancho && $alto <= $max_alto) {
                 //Si ancho
                 $ancho_final = $ancho;
                 $alto_final = $alto;
             } elseif ($x_ratio * $alto < $max_alto) {
                 $alto_final = ceil($x_ratio * $alto);
                 $ancho_final = $max_ancho;
             } else {
                 $ancho_final = ceil($y_ratio * $ancho);
                 $alto_final = $max_alto;
             }
             //Creamos una imagen en blanco de tamaño $ancho_final  por $alto_final .
             $tmp = imagecreatetruecolor($ancho_final, $alto_final);
             //Copiamos $img_original sobre la imagen que acabamos de crear en blanco ($tmp)
             imagecopyresampled($tmp, $img_original, 0, 0, 0, 0, $ancho_final, $alto_final, $ancho, $alto);
             //Se destruye variable $img_original para liberar memoria
             imagedestroy($img_original);
             //Definimos la calidad de la imagen final
             $calidad = 95;
             //Se crea la imagen final en el directorio indicado
             imagejpeg($tmp, $_SERVER['DOCUMENT_ROOT'] . "/img/admin/profiles/empleado_avatar_" . $entity->getIdempleado() . ".jpg", $calidad);
             //SETIAMOS LA FOTO
             $entity->setEmpleadoFoto("/img/admin/profiles/empleado_avatar_" . $entity->getIdempleado() . ".jpg");
             $entity->save();
         }
         //Agregamos un mensaje
         $this->flashMessenger()->addSuccessMessage('Registro guardado exitosamente!');
         //REDIRECCIONAMOS A LA ENTIDAD QUE ACABAMOS DE CREAR
         return $this->redirect()->toRoute('admin/catalogo/empleados', array('action' => 'editar', 'id' => $entity->getIdempleado()));
     }
     $exist = \EmpleadoQuery::create()->filterByIdempleado($id)->exists();
     if ($exist) {
         $entity = \EmpleadoQuery::create()->findPk($id);
         //INSTANCIAMOS NUESTRO FORMULARIO
         $mexico_states = \Shared\GeneralFunction\Geolocation::getMexicoStates();
         $form = new \Catalogo\Form\EmpleadoForm($mexico_states);
         $form->setData($entity->toArray(\BasePeer::TYPE_FIELDNAME));
         //REMOVEMOS EL CAMPO DE LA FECHA
         $form->get('empleado_iniciocontrato')->setValue('');
         //RETORNAMOS A NUESTRA VISTA
         $view_model = new ViewModel();
         $view_model->setTemplate('admin/catalogo/empleado/editar');
         $view_model->setVariables(array('entity' => json_encode($entity->toArray(\BasePeer::TYPE_FIELDNAME)), 'successMessages' => json_encode($this->flashMessenger()->getSuccessMessages()), 'form' => $form));
         return $view_model;
     } else {
         return $this->redirect()->toRoute('admin/catalogo/empleados', array('action' => 'index'));
     }
 }