Пример #1
0
 public function nuevoAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post_data = $request->getPost();
         $post_files = $request->getFiles();
         $entity = new \Empleado();
         foreach ($post_data as $key => $value) {
             if (\EmpleadoPeer::getTableMap()->hasColumn($key) && !empty($value)) {
                 $entity->setByName($key, $value, \BasePeer::TYPE_FIELDNAME);
             }
         }
         //SETIAMOS LA FECHA EN EL FORMATO CORRECTO
         $empleado_iniciocontrato = date_create_from_format('d/m/Y', $post_data['empleado_iniciocontrato']);
         $entity->setEmpleadoIniciocontrato($empleado_iniciocontrato);
         //SETIAMOS LA CONTRASEÑA EN MD5
         $entity->setEmpleadoPassword(md5($post_data['empleado_password']));
         //SETIAMOS EL STATUS COMO ACTIVO
         $entity->setEmpleadoEstatus('activo');
         $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();
         }
     }
     //INSTANCIAMOS NUESTRO FORMULARIO
     $mexico_states = \Shared\GeneralFunction\Geolocation::getMexicoStates();
     $form = new \Catalogo\Form\EmpleadoForm($mexico_states);
     //RETORNAMOS A NUESTRA VISTA
     $view_model = new ViewModel();
     $view_model->setTemplate('admin/catalogo/empleado/nuevo');
     $view_model->setVariable('form', $form);
     return $view_model;
 }