function _save_subficha($id = null) { $respuesta = new stdClass(); if ($id) { try { $subficha = Doctrine::getTable('SubFicha')->find($id); } catch (Exception $e) { $respuesta->validacion = FALSE; $respuesta->errores = "<p class='error'>" . $e . "</p>"; return json_encode($respuesta); } } else { // TODO: sacar, no deberia crearse nunca desde aca la subficha -> se crea desde la ficha $subficha = new SubFicha(); } try { $metaficha = $subficha->MetaFicha; $metaficha_campos = unserialize($metaficha->metaficha_campos); foreach ($metaficha_campos as $key => $value) { // INFO: // 0 - Se guarda en SubFicha // 1 - Se guarda en MetaFicha $subficha[$key] = $value == 0 ? $this->input->post($key) : ''; } $comentarios = $this->input->post('comentario'); $subficha->comentarios = json_encode($comentarios); $subficha->save(); $subficha->generarVersion(); $this->session->set_flashdata('message', 'SubFicha actualizada exitosamente'); $respuesta->validacion = TRUE; $respuesta->redirect = site_url('backend/subfichas/ver/' . $subficha->id); } catch (Exception $e) { $respuesta->validacion = FALSE; $respuesta->errores = "<p class='error'>" . $e . "</p>"; return json_encode($respuesta); } return json_encode($respuesta); }
function _save_ficha($id = null, $flujo = FALSE) { $respuesta = new stdClass(); if ($id) { try { $ficha = Doctrine::getTable('Ficha')->find($id); } catch (Exception $e) { $respuesta->validacion = FALSE; $respuesta->errores = "<p class='error'>" . $e . "</p>"; return json_encode($respuesta); } } else { $ficha = new Ficha(); $ficha->votos_positivos = 0; $ficha->votos_negativos = 0; } $this->form_validation->set_rules('titulo', 'Nombre del ' . ($flujo ? 'flujo' : 'trámite'), 'trim|required'); $this->form_validation->set_rules('objetivo', 'Descripción', 'trim|required'); $this->form_validation->set_rules('servicio_codigo', 'Servicio', 'required|callback_check_servicio'); $this->form_validation->set_rules('correlativo', 'Código', 'required|is_natural_no_zero|callback_check_codigo[' . $id . ']'); $this->form_validation->set_rules('guia_online_url', 'Guia Online URL', 'trim|prep_url'); $this->form_validation->set_rules('metaficha', 'MetaFicha', 'required'); if ($this->input->post('exterior')) { $this->form_validation->set_rules('tipo_residente', 'motivo de estadía para chilenos en el exterior (al menos uno)', 'required'); } if ($this->input->post('metaficha') == 1) { $this->form_validation->set_rules('metaficha_categoria', 'Criterio para categorizar las SubFichas', 'required'); } if ($this->form_validation->run() == TRUE) { try { $ficha->metaficha = $this->input->post('metaficha') == 1 ? 1 : 0; $metaficha_campos = array('cc_observaciones' => 1, 'beneficiarios' => 1, 'doc_requeridos' => 1, 'guia_online' => 1, 'guia_online_url' => 1, 'guia_oficina' => 1, 'guia_telefonico' => 1, 'guia_correo' => 1, 'guia_chileatiende' => 1, 'plazo' => 1, 'vigencia' => 1, 'costo' => 1, 'informacion_multimedia' => 1, 'marco_legal' => 1); // INFO: llena los campos de la Ficha dependiendo si estan marcados para SubFicha o no foreach ($metaficha_campos as $key => $value) { $metaficha_campos[$key] = $this->input->post('metaficha_' . $key); // INFO: // 0 - Se guarda en SubFicha // 1 - Se guarda en MetaFicha if ($ficha->metaficha == 1) { $ficha[$key] = $metaficha_campos[$key] == 1 ? $this->input->post($key) : ''; } else { $ficha[$key] = $this->input->post($key); } } $ficha->metaficha_campos = serialize($metaficha_campos); // INFO: seleccion de Servicios o Grupos $seleccion_servicios = $this->input->post('metaficha_servicios') ? $this->input->post('metaficha_servicios') : array(); $metaficha_servicios = array(); foreach ($seleccion_servicios as $codigo_seleccionado) { // INFO: si es tag se agregan todos los servicios del tag if (substr($codigo_seleccionado, 0, 4) == 'TAG-') { $tag = Doctrine::getTable('Tag')->find(substr($codigo_seleccionado, 4)); foreach ($tag->Servicios as $servicio) { $metaficha_servicios[] = $servicio->codigo; } } else { $metaficha_servicios[] = $codigo_seleccionado; } } $metaficha_servicios = array_unique($metaficha_servicios); $ficha->metaficha_servicios = serialize($metaficha_servicios); $metaficha_opciones = array('categoria' => $this->input->post('metaficha_categoria'), 'servicios_no_publican' => $this->input->post('metaficha_servicios_no_publican')); $ficha->metaficha_opciones = serialize($metaficha_opciones); $comentarios = $this->input->post('comentario'); $ficha->comentarios = json_encode($comentarios); $ficha->destacado = $this->input->post('destacado') ? 1 : 0; $ficha->correlativo = $this->input->post('correlativo'); $ficha->titulo = $this->input->post('titulo'); //Updated fecha if ($id) { if ($this->input->post('updated_data_at')) { //Convertir fecha a mysql $_updated_data_at = $this->input->post('updated_data_at'); if (preg_match("/^(\\d{2})[-\\/](\\d{2})[-\\/](\\d{4})\$/", $_updated_data_at)) { $_aDate = explode('-', $_updated_data_at); $_updated_data_at = $_aDate[2] . '-' . $_aDate[1] . '-' . $_aDate[0]; } $ficha->updated_data_at = $_updated_data_at; } } else { //Nueva ficha $ficha->updated_data_at = date('Y-m-d H:i:s'); } $ficha->alias = url_title(convert_accented_characters($this->input->post('titulo')), 'dash', TRUE); $ficha->objetivo = $this->input->post('objetivo'); if ($this->input->post('resumen')) { $ficha->resumen = $this->input->post('resumen'); } $ficha->beneficiarios = $this->input->post('beneficiarios'); $ficha->costo = $this->input->post('costo'); $ficha->vigencia = $this->input->post('vigencia'); $ficha->marco_legal = $this->input->post('marco_legal'); $ficha->plazo = $this->input->post('plazo'); ////corresponde a información relacionada que pertenecía a los campos de ChileClic $ficha->cc_observaciones = $this->input->post('cc_observaciones'); $ficha->doc_requeridos = $this->input->post('doc_requeridos'); $ficha->guia_online = $this->input->post('guia_online'); $ficha->guia_online_url = $this->input->post('guia_online_url'); $ficha->guia_oficina = $this->input->post('guia_oficina'); $ficha->guia_oficina_nombre = $this->input->post('guia_oficina_nombre'); $ficha->guia_telefonico = $this->input->post('guia_telefonico'); $ficha->guia_correo = $this->input->post('guia_correo'); $ficha->guia_chileatiende = $this->input->post('guia_chileatiende'); $ficha->guia_consulado = $this->input->post('guia_consulado'); $ficha->maestro = 1; $ficha->servicio_codigo = $this->input->post('servicio_codigo'); $ficha->genero_id = $this->input->post('genero') ? $this->input->post('genero') : NULL; $ficha->setRangosEdadFromString($this->input->post('rangos')); $ficha->setTemasFromArray($this->input->post('temas')); $ficha->setTagsFromArray($this->input->post('tags')); $ficha->setHechosVidaFromArray($this->input->post('hechosvida')); $ficha->informacion_multimedia = $this->input->post('informacion_multimedia'); if ($this->input->post('keywords')) { $ficha->keywords = $this->input->post('keywords'); } if ($this->input->post('sic')) { $ficha->sic = $this->input->post('sic'); } $ficha->tipo = $this->input->post('tipo'); //1 personas, 2 empresas, 3 ambos $ficha->flujo = $flujo ? 1 : 0; //0 no flujo, 1 flujo // INFO: emprendete $tipo_empresa_o_ambos = $ficha->tipo == 2 || $ficha->tipo == 3; if ($tipo_empresa_o_ambos) { $ficha->formalizacion = $this->input->post('formalidad_sel') ? NULL : $this->input->post('formalizacion'); $ficha->fps = $this->input->post('fps') ? $this->input->post('fps') : 0; $ficha->puntaje_fps_min = $this->input->post('puntaje_fps_min') ? $this->input->post('puntaje_fps_min') : 2000; $ficha->puntaje_fps_max = $this->input->post('puntaje_fps_max') ? $this->input->post('puntaje_fps_max') : 20000; //$ficha->req_adicional = $this->input->post('req_adicional'); $ficha->req_especial = $this->input->post('req_especial'); $ficha->setTemasEmpresaFromArray($this->input->post('temas_empresa')); $ficha->setHechosEmpresaFromArray($this->input->post('hechosempresa')); $ficha->setApoyosFromArray($this->input->post('apoyosestado')); // INFO: filtro para todos o específico if ($this->input->post('rubro_sel')) { $Rubros = Doctrine::getTable('Rubro')->findAll(); $aRubros = array(); foreach ($Rubros as $r) { $aRubros[] = $r->id; } } else { $aRubros = $this->input->post('rubro'); } $ficha->setRubrosFromArray($aRubros); //actividad economica // INFO: filtro para todos o específico if ($this->input->post('venta_anual_sel')) { $TiposEmpresa = Doctrine::getTable('TipoEmpresa')->findAll(); $aTiposEmpresa = array(); foreach ($TiposEmpresa as $te) { $aTiposEmpresa[] = $te->id; } } else { $aTiposEmpresa = $this->input->post('venta_anual'); } $ficha->setTiposEmpresaFromArray($aTiposEmpresa); } $ficha->content_updated_data_at = date('Y-m-d H:i:s'); $ficha->es_tramite_exterior = $this->input->post('exterior') == 'on'; $ficha->save(); if ($this->input->post('tipo_residente')) { Doctrine::getTable('TramiteEnExterior')->findByIdFicha($ficha->id)->delete(); foreach ($this->input->post('tipo_residente') as $key => $value) { $tramite_exterior = new TramiteEnExterior(); $tramite_exterior->id_ficha = $ficha->id; $tramite_exterior->destacado = $this->input->post('exterior_destacado') == 'on'; $tramite_exterior->motivo = $value; $tramite_exterior->content_updated_data_at = date('Y-m-d H:i:s'); $tramite_exterior->save(); } } // INFO: crea las nuevas SubFichas para cada Servicio si la Ficha es MetaFicha if ($ficha->metaficha == 1) { $_sub_fichas_serv_codigos = array(); foreach ($ficha->SubFichas as $subficha) { if ($subficha->maestro == 1) { $_sub_fichas_serv_codigos[$subficha->id] = $subficha->servicio_codigo; } } $aSubFichas = array(); foreach ($metaficha_servicios as $metaficha_servicio) { if (!in_array($metaficha_servicio, $_sub_fichas_serv_codigos)) { $sub_ficha = new SubFicha(); $sub_ficha->metaficha_id = $ficha->id; $sub_ficha->servicio_codigo = $metaficha_servicio; $sub_ficha->maestro = 1; $sub_ficha->publicado = 0; $sub_ficha->save(); $sub_ficha->generarVersion(); $aSubFichas[] = $sub_ficha->id; } else { $sub_ficha_id = array_search($metaficha_servicio, $_sub_fichas_serv_codigos); $sub_ficha = Doctrine::getTable('SubFicha')->find($sub_ficha_id); if ($sub_ficha->estado === "eliminado") { $sub_ficha->estado = NULL; $sub_ficha->save(); $sub_ficha->generarVersion(); } $aSubFichas[] = $sub_ficha->id; } } $ficha->setSubFichasFromArray($aSubFichas); } $ficha->generarVersion(); if ($id) { $mensaje = ($flujo ? 'Flujo' : 'Trámite') . ' actualizada exitosamente'; } else { $mensaje = ($flujo ? 'Flujo' : 'Trámite') . ' creado exitosamente'; } $this->session->set_flashdata('message', $mensaje); $respuesta->validacion = TRUE; $respuesta->redirect = site_url('backend/fichas/' . ($flujo ? 'verflujo' : 'ver') . '/' . $ficha->id); } catch (Exception $e) { $respuesta->validacion = FALSE; $respuesta->errores = "<p class='error'>" . $e . "</p>"; return json_encode($respuesta); } } else { $respuesta->validacion = FALSE; $respuesta->errores = validation_errors('<p class="error">', '</p>'); } return json_encode($respuesta); }
public function compareWith(SubFicha $subficha) { $comparacion = NULL; $left = $this->toArray(false); $right = $subficha->toArray(false); $exclude = array('id', 'metaficha_id', 'locked', 'estado', 'estado_justificacion', 'actualizable', 'servicio_codigo', 'maestro', 'maestro_id', 'publicado', 'publicado_at', 'updated_at', 'primera_version_publicada_id', 'comentarios'); $labels = array('tipo' => array(1 => 'Personas', 2 => 'Empresas', 3 => 'Ambos', 0 => 'No asignado')); foreach ($left as $key => $val) { if (!in_array($key, $exclude)) { if ($right[$key] != $left[$key]) { if (array_key_exists($key, $labels)) { $diff = htmlDiff(strip_tags($labels[$key][$right[$key]]), strip_tags($labels[$key][$left[$key]])); } else { $diff = htmlDiff(strip_tags($right[$key]), strip_tags($left[$key])); } $diff = trim($diff); if ($diff) { $comparacion[$key]->left[] = $diff; $comparacion[$key]->right[] = $right[$key]; } } } } return $comparacion; }