Advertisement
viajerou

panel.php

Jul 20th, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 41.76 KB | None | 0 0
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class Panel extends CI_Controller
  4. {
  5.  
  6.     function __construct()
  7.     {
  8.         parent::__construct();
  9.        
  10.         if(!$this->session->userdata('valid_admin')) redirect('adminlogin');
  11.         $this->load->model('Admin_model');
  12.         $this->load->model('Cursos_model');
  13.         $this->load->model('Tienda_model');
  14.         $this->load->model('Clientes_model');
  15.  
  16.         $this->load->library('grocery_CRUD');
  17.     }
  18.  
  19.     public function index()
  20.     {
  21.         $this->cursos_programados();
  22.     }
  23.  
  24.     public function _example_output($output = null)
  25.     {
  26.         $this->load->view('panel/panel.php',$output);
  27.     }
  28.  
  29.     ///////////////////////// ORGANIZADORES /////////////////////////////
  30.     public function organizadores()
  31.     {
  32.         $crud = new grocery_CRUD();
  33.  
  34.         $crud->set_theme('datatables');
  35.         $crud->set_table('organizadores');
  36.         $crud->set_relation('id_pais','paises','{nombre}');
  37.         $crud->set_subject('Organizador');
  38.         $crud->display_as('calle','Dirección')
  39.              ->display_as("id_pais", "Pais");
  40.         $crud->required_fields('nombre', 'calle');
  41.         $crud->unset_texteditor('observaciones');
  42.         $crud->set_rules('correos','Correo','trim|strip_tags|valid_email');
  43.         $crud->unset_read();
  44.  
  45.         $output = $crud->render();
  46.  
  47.         $this->_example_output($output);
  48.     }
  49.  
  50.  
  51.     ///////////////////////// ORGANIZADORES /////////////////////////////
  52.  
  53.  
  54.     ///////////////////////// INSTRUCTORES /////////////////////////////
  55.     public function instructores()
  56.     {
  57.         $crud = new grocery_CRUD();
  58.  
  59.         $crud->set_theme('datatables');
  60.         $crud->set_table('instructores');
  61.         $crud->set_relation('id_pais','paises','{nombre}');
  62.         $crud->set_subject('Instructor');
  63.         $crud->display_as('calle','Dirección')
  64.              ->display_as("id_pais", "Pais")
  65.              ->display_as("listacats", "Cursos que puede dar");
  66.         $crud->required_fields('nombre', 'calle');
  67.  
  68.         $crud->unset_texteditor('observaciones', 'listacats');
  69.        
  70.         $crud->set_rules('correos','Correo','trim|strip_tags|valid_email');
  71.        
  72.         $crud->callback_column('tipo', array($this, 'link_categorias'));
  73.         $crud->callback_column('observaciones', array($this, 'link_notas_instructor'));
  74.  
  75.         $crud->unset_read();
  76.  
  77.         $output = $crud->render();
  78.  
  79.         $this->_example_output($output);
  80.     }
  81.  
  82.     function link_categorias($value, $row)
  83.     {
  84.         $atts = array(
  85.         'width'   => '900px',
  86.         'height'     => '300',
  87.         'scrollbars' => 'yes',
  88.         'status'     => 'yes',
  89.         'resizable'  => 'yes',
  90.         'screenx'   => '200px',
  91.         'screeny'   => '200px'
  92.         );
  93.  
  94.         return $value . " " . anchor_popup('panel/instructor_categorias/' . $row->id, "Cursos que da", $atts);
  95.     }
  96.  
  97.     public function instructor_categorias($id_instructor)
  98.     {
  99.         $crud = new grocery_CRUD();
  100.  
  101.         $crud->where('id_instructor', $id_instructor);
  102.         $crud->set_table('instructores_categorias');
  103.         $crud->set_relation('id_categoria','categorias','{nombre}');
  104.         $crud->set_subject('Categoria');
  105.         $crud->unset_print();
  106.         $crud->unset_export();
  107.  
  108.         $crud->fields('id_categoria');
  109.         $crud->required_fields('id_categoria');
  110.         $crud->field_type('id_instructor', 'hidden', $id_instructor);
  111.         $crud->unset_read();
  112.  
  113.         $output = $crud->render();
  114.  
  115.         $this->load->view('panel/panel2.php',$output);
  116.     }
  117.  
  118.     function link_notas_instructor($value, $row)
  119.     {
  120.         $atts = array(
  121.         'width'   => '900px',
  122.         'height'     => '300',
  123.         'scrollbars' => 'yes',
  124.         'status'     => 'yes',
  125.         'resizable'  => 'yes',
  126.         'screenx'   => '200px',
  127.         'screeny'   => '200px'
  128.         );
  129.  
  130.         return $value . " " . anchor_popup('panel/get_notas/instructor/' . $row->id, "Ver notas", $atts);
  131.     }
  132.  
  133.  
  134.     ///////////////////////// INSTRUCTORES /////////////////////////////
  135.  
  136.  
  137.     /////////////////////////// CLIENTES //////////////////////////////
  138.  
  139.     public function clientes()
  140.     {
  141.         $crud = new grocery_CRUD();
  142.  
  143.         $crud->set_theme('datatables');
  144.         $crud->set_table('clientes');
  145.         $crud->set_relation('id_pais','paises','{nombre}');
  146.         $crud->set_subject('Cliente');
  147.         $crud->display_as('calle','Dirección')
  148.              ->display_as("id_pais", "Pais");
  149.         $crud->required_fields('nombre', 'usuario', 'password', 'calle');
  150.        
  151.         $crud->add_fields("nombre", "apellidos", "usuario", "password", "repite_password", "calle", "rfc",  "id_pais",
  152.             "ciudad", "region", "cp", "telefonos", "correos", "paginasweb", "observaciones");
  153.         $crud->edit_fields("nombre", "apellidos", "usuario", "calle", "rfc", "id_pais",
  154.             "ciudad", "region", "cp", "telefonos", "correos", "paginasweb", "observaciones");
  155.         $crud->set_rules('repite_password','Password','matches[password]');
  156.  
  157.         $crud->add_action('Cursos tomados', '', 'panel/cursos_tomados','ui-icon-document');
  158.  
  159.         $crud->unset_edit_fields('password', 'repite_password');
  160.         $crud->unset_columns('password', 'repite_password');
  161.         $crud->unset_texteditor('observaciones');
  162.  
  163.         $crud->callback_edit_field('usuario',array($this,'edit_field_usuario'));
  164.  
  165.         $crud->callback_before_insert(array($this,'encrypt_password_callback'));
  166.         $crud->callback_after_insert(array($this, 'enviar_correo_after_insert'));
  167.  
  168.         $crud->callback_add_field('nombre',array($this,'add_field_nombre'));
  169.         $crud->callback_add_field('usuario',array($this,'add_field_usuario'));
  170.         $crud->callback_add_field('correos',array($this,'add_field_correo'));
  171.         $crud->callback_add_field('password',array($this,'add_field_password'));
  172.  
  173.         $crud->callback_column('observaciones', array($this, 'link_notas_cliente'));
  174.  
  175.         $crud->set_rules('correos','Correo','trim|strip_tags|valid_email');
  176.  
  177.         $crud->unset_read();
  178.         //$crud->set_rules('usuario','Usuario','min_length[6]');
  179.        
  180.         /*$crud->callback_before_insert(function($post_array){
  181.             if($this->Clientes_model->existe_cliente("clientes", $post_array['usuario'])) return FALSE;
  182.             return $post_array;
  183.         });*/
  184.  
  185.         $output = $crud->render();
  186.  
  187.         $this->_example_output($output);
  188.     }
  189.  
  190.     function enviar_correo_after_insert($post_array,$primary_key)
  191.     {
  192.         $password = $this->session->userdata('password_nuevo_cliente');
  193.         $cliente = $this->Clientes_model->get_cliente($primary_key);
  194.  
  195.         $this->load->library('email');
  196.         $config['mailtype'] = 'html';
  197.         $this->email->initialize($config);
  198.  
  199.         $this->email->from('info@cika.com.mx', 'Administración de Cika');
  200.         $this->email->to('info@cika.com.mx');
  201.  
  202.         $this->email->subject('NUEVA CUENTA DE CLIENTE GENERADA DESDE EL PANEL DE CIKA');
  203.         $message = "<h2>NUEVA CUENTA EN CIKA.COM.MX</h2>";
  204.         $message .= "<p>Ha sido generada una nueva cuenta para un cliente:</p>";
  205.         $message .= "<p><strong>Nombre:</strong> $cliente->nombre $cliente->apellidos</p>";
  206.         $message .= "<p><strong>Usuario:</strong> $cliente->usuario</p>";
  207.         $message .= "<p><strong>Nueva contraseña: </strong>$password</p>";
  208.         $message .= "<p><strong>Fecha de creación: </strong>" . date("d/m/Y") . "</p>";
  209.         $message .= "<p>Por favor envie estos datos al usuario a su correo: $cliente->correos, porque son necesarios para iniciar sesión en la página.</p>";
  210.  
  211.         $this->email->message($message);
  212.         $this->email->send();
  213.  
  214.         //echo $this->email->print_debugger();
  215.  
  216.         return true;
  217.     }
  218.  
  219.     function encrypt_password_callback($post_array)
  220.     {
  221.         $this->session->set_userdata("password_nuevo_cliente", $post_array['password']);
  222.         unset($post_array['repite_password']);
  223.         $post_array['password'] = md5($post_array['password']);
  224.  
  225.         return $post_array;
  226.     }
  227.  
  228.     function add_field_nombre()
  229.     {
  230.         return '<div style="position:fixed;top:350px;right:50px;width:35%;box-shadow:0 0 5px #444;
  231.         background:#ddffff;color:#ff5555;margin-left:1em;font-size:0.9em;padding:10px;">' .
  232.         '<p><strong>Notas Importantes</strong></p>' .
  233.         '<p>Antes de capturar la información del Cliente lea estas notas por favor.</p>' .
  234.         '<ol><li>- El nombre de Usuario es unico, si ingresa uno que ya existe el Sistema se lo indicará.</li>' .
  235.         '<li>- El Correo es unico, si ingresa uno que ya existe el Sistema se lo indicará.</li>' .
  236.         '<li>- Si el Cliente tiene más de un correo por favor solo deje el principal en el campo Correo ' .
  237.         'y los demás puede ponerlos en el campo de Observaciones.</li>' .
  238.         '<li>Copie el password porque una vez almacenado en la base de datos ya no se puede recuperar, ' .
  239.         'solo generar otro.</li>' .
  240.         '<li>El Sistema genera automaticamente el password, si desea otro solo recargue la página (F5)</li></ol></div>' .
  241.         '<input type="text" maxlength="20" value="" name="nombre" id="nombre">';
  242.     }
  243.  
  244.     function add_field_usuario()
  245.     {
  246.         return '<input type="text" maxlength="20" value="" name="usuario" id="usuario">';
  247.     }
  248.  
  249.     function add_field_correo()
  250.     {
  251.         return '<input type="text" maxlength="50" value="" name="correos" id="correo">';
  252.     }
  253.  
  254.     function add_field_password()
  255.     {
  256.         return '<input type="text" maxlength="20" readonly="readonly" value="' . get_random_password() . '" name="password">';
  257.     }
  258.  
  259.     function validar_usuario_ajax()
  260.     {
  261.         $usuario = trim(strip_tags($this->input->post("usuario")));
  262.  
  263.         echo $this->Clientes_model->existe_cliente("usuario", $usuario);
  264.     }
  265.  
  266.     function validar_correo_ajax()
  267.     {
  268.         $correo = trim(strip_tags($this->input->post("correo")));
  269.  
  270.         echo $this->Clientes_model->existe_cliente("correos", $correo);
  271.     }
  272.  
  273.     function edit_field_usuario($value, $primary_key)
  274.     {
  275.  
  276.         return '<input type="text" name="usuario" id="usuario" value="' . $value . '"> '
  277.                 . anchor("panel/nuevo_password/$primary_key", "Generar una nuevo password para este cliente");
  278.     }
  279.  
  280.     function nuevo_password($id_cliente)
  281.     {
  282.         $data["cliente"] = $this->Clientes_model->get_cliente($id_cliente);
  283.        
  284.         $this->load->view('panel/nuevo_password', $data);
  285.     }
  286.  
  287.     function guardar_nuevo_password()
  288.     {
  289.         $id_cliente = (int)$this->input->post("id_cliente");
  290.         $password = trim(strip_tags($this->input->post("password")));
  291.  
  292.         if($this->Clientes_model->actualizar_password("id", $id_cliente, $password)){
  293.  
  294.             $cliente = $this->Clientes_model->get_cliente($id_cliente);
  295.  
  296.             $this->load->library('email');
  297.             $config['mailtype'] = 'html';
  298.             $this->email->initialize($config);
  299.  
  300.             $this->email->from('info@cika.com.mx', 'Administración de Cika');
  301.             $this->email->to('info@cika.com.mx');
  302.  
  303.             $this->email->subject('NUEVA CONTRASEÑA DE CLIENTE GENERADA DESDE EL PANEL DE CIKA');
  304.             $message = "<h2>NUEVA CONTRASEÑA DE CLIENTE</h2>";
  305.             $message .= "<p>Ha sido generada una nueva contraseña para el cliente:</p>";
  306.             $message .= "<p><strong>Nombre:</strong> $cliente->nombre $cliente->apellidos</p>";
  307.             $message .= "<p><strong>Usuario:</strong> $cliente->usuario</p>";
  308.             $message .= "<p><strong>Nueva contraseña: </strong>$password</p>";
  309.             $message .= "<p><strong>Fecha de creación: </strong>" . date("d/m/Y") . "</p>";
  310.             $message .= "<p>Por favor envie estos datos al usuario a su correo: $cliente->correos, porque son necesarios para iniciar sesión en la página.</p>";
  311.  
  312.             $this->email->message($message);
  313.             $this->email->send();
  314.  
  315.             //echo $this->email->print_debugger();
  316.  
  317.             $msg = "<p>¡Password actualizado correctamente!<br />Revise por favor el correo info@cika.com.mx si quiere enviar los datos al cliente.</p>";
  318.            
  319.         } else $msg = "<p>¡Error al actualizar el password, consulte con el Administrador del sitio!</p>";
  320.  
  321.         $this->session->set_flashdata('msg', $msg);
  322.         redirect("panel/clientes/edit/$id_cliente", 'refresh');
  323.     }
  324.  
  325.     function link_notas_cliente($value, $row)
  326.     {
  327.         $atts = array(
  328.         'width'   => '900px',
  329.         'height'     => '300',
  330.         'scrollbars' => 'yes',
  331.         'status'     => 'yes',
  332.         'resizable'  => 'yes',
  333.         'screenx'   => '200px',
  334.         'screeny'   => '200px'
  335.         );
  336.  
  337.         return $value . "<br>" . anchor_popup('panel/get_notas/cliente/' . $row->id, img("back/images/notas.png"), $atts) .
  338.                 "<span class='resaltar'> " . $this->get_total_notas2($row->id) . " </span>" .
  339.                 anchor_popup('panel/get_cursos_interes/' . $row->id, img("back/images/notas2.png"), $atts);
  340.     }
  341.  
  342.     public function get_notas($concepto, $id)
  343.     {
  344.         $crud = new grocery_CRUD();
  345.  
  346.         $crud->where('concepto', $concepto);
  347.         $crud->where('id_concepto', $id);
  348.         $crud->set_table('notas');
  349.         $crud->set_subject('Nota');
  350.        
  351.         $crud->unset_print();
  352.         $crud->unset_export();
  353.         $crud->unset_texteditor('texto');
  354.  
  355.         $crud->unset_edit_fields('concepto', 'id_concepto');
  356.         $crud->unset_columns('concepto', 'id_concepto');
  357.  
  358.         $crud->required_fields('fecha', 'texto');
  359.         $crud->field_type('concepto', 'hidden', $concepto);
  360.         $crud->field_type('id_concepto', 'hidden', $id);
  361.        
  362.         //$crud->unset_read();
  363.  
  364.         $output = $crud->render();
  365.  
  366.         $this->load->view('panel/panel2.php',$output);
  367.     }
  368.  
  369.     public function get_cursos_interes($id_cliente)
  370.     {
  371.         $crud = new grocery_CRUD();
  372.  
  373.         $crud->where('id_cliente', $id_cliente);
  374.         $crud->set_table('cursos_interes');
  375.         $crud->set_subject('Curso de Interes');
  376.         $crud->set_relation('id_curso','cursos','{nombre}');
  377.         $crud->display_as('id_curso','Curso');
  378.        
  379.         $crud->unset_print();
  380.         $crud->unset_export();
  381.         $crud->unset_texteditor('observaciones');
  382.         $crud->unset_columns('id_cliente');
  383.  
  384.         $crud->field_type('id_cliente', 'hidden', $id_cliente);
  385.  
  386.         $crud->required_fields('id_curso');
  387.        
  388.         $crud->unset_read();
  389.  
  390.         $output = $crud->render();
  391.  
  392.         $this->load->view('panel/panel2.php',$output);
  393.     }
  394.  
  395.     public function get_total_notas()
  396.     {
  397.         $id_cliente = trim(strip_tags($this->input->post("id_cliente")));
  398.  
  399.         $total = $this->Clientes_model->get_total_notas($id_cliente);
  400.  
  401.         echo $total;
  402.     }
  403.  
  404.     public function get_total_notas2($id_cliente)
  405.     {
  406.         $id_cliente = trim(strip_tags($id_cliente));
  407.  
  408.         $total = $this->Clientes_model->get_total_notas($id_cliente);
  409.  
  410.         return $total;
  411.     }
  412.  
  413.     public function cursos_tomados($id_cliente)
  414.     {
  415.         $id_cliente = trim(strip_tags($id_cliente));
  416.  
  417.         $data["cliente"] = $this->Clientes_model->get_cliente($id_cliente);
  418.         $data["cursos"] = $this->Clientes_model->get_cursos_tomados($id_cliente);
  419.         $data["total_notas"] = $this->Clientes_model->get_total_notas($id_cliente);
  420.        
  421.         $this->load->view('panel/cursos_tomados', $data);
  422.     }
  423.  
  424.  
  425.     /////////////////////////// CLIENTES //////////////////////////////
  426.  
  427.  
  428.     ///////////////////////////// CURSOS ////////////////////////////////
  429.  
  430.     public function categorias()
  431.     {
  432.         $crud = new grocery_CRUD();
  433.  
  434.         $crud->set_theme('datatables');
  435.         $crud->set_table('categorias');
  436.         $crud->set_subject('Categoría');
  437.  
  438.         $crud->required_fields('nombre');
  439.         $crud->unset_read();
  440.  
  441.         $output = $crud->render();
  442.  
  443.         $this->_example_output($output);
  444.     }
  445.  
  446.     public function cursos()
  447.     {
  448.         $crud = new grocery_CRUD();
  449.  
  450.         $crud->set_theme('datatables');
  451.         $crud->set_table('cursos');
  452.         $crud->set_relation('categoria','categorias','{nombre}');
  453.         $crud->set_subject('Curso');
  454.         $crud->set_field_upload('pdf','pdf');
  455.         $crud->unset_texteditor('descripcion');
  456.  
  457.         $crud->required_fields('nombre', 'categoria');
  458.         $crud->unset_read();
  459.  
  460.         $output = $crud->render();
  461.  
  462.         $this->_example_output($output);
  463.     }
  464.  
  465.     public function cursos_programados()
  466.     {
  467.         $crud = new grocery_CRUD();
  468.  
  469.         $crud->set_theme('datatables');
  470.         $crud->set_table('cursos_prog');
  471.         $crud->order_by('fecini');
  472.         $crud->set_relation('id_curso','cursos','{nombre}');
  473.         $crud->set_relation('id_organizador','organizadores','{nombre}');
  474.         $crud->set_relation('id_instructor','instructores','{nombre} {apellidos}');
  475.         $crud->display_as('id_curso','Curso')
  476.                  ->display_as('id_organizador','Organizador')
  477.                  ->display_as('id_instructor','Instructor')
  478.                  ->display_as('duracion','Duración (días)')
  479.                  ->display_as('horas','Duración (horas)')
  480.                  ->display_as('id','Clave')
  481.                  ->display_as('fecini','Fecha inicio');
  482.         $crud->set_subject('Curso programado');
  483.         $crud->required_fields('id_curso');
  484.         $crud->callback_column('duracion', array($this, 'link_horario'));
  485.         $crud->callback_column('precio',array($this,'precio_cp'));
  486.         $crud->unset_texteditor('observaciones');
  487.         $crud->add_action('Asistentes', '', 'panel/lista_asistentes','ui-icon-document');
  488.         $crud->order_by('fecini','desc');
  489.         $crud->callback_add_field('duracion',array($this,'add_field_duracion'));
  490.         $crud->callback_add_field('horas',array($this,'add_field_horas'));
  491.         $crud->callback_edit_field('duracion',array($this,'edit_field_duracion'));
  492.         $crud->callback_edit_field('horas',array($this,'edit_field_horas'));
  493.         $crud->unset_read();
  494.  
  495.         $output = $crud->render();
  496.  
  497.         $this->_example_output($output);
  498.     }
  499.  
  500.     function add_field_duracion()
  501.     {
  502.         return '<input type="number" min="1" value="1" name="duracion" id="duracion" class="numeric">';
  503.     }
  504.  
  505.     function add_field_horas()
  506.     {
  507.         return '<input type="number" min="1" value="1" name="horas" id="horas" class="numeric">';
  508.     }
  509.  
  510.     function edit_field_duracion($value, $primary_key)
  511.     {
  512.         return '<input type="number" min="1" value="' . $value . '" name="duracion" id="duracion" class="numeric">';
  513.     }
  514.  
  515.     function edit_field_horas($value, $primary_key)
  516.     {
  517.         return '<input type="number" min="1" value="' . $value . '" name="horas" id="horas" class="numeric">';
  518.     }
  519.  
  520.     function precio_cp($value, $row)
  521.     {
  522.         return "$ " . number_format($value, 2);
  523.     }
  524.  
  525.     function link_horario($value, $row)
  526.     {
  527.         $atts = array(
  528.         'width'   => '900px',
  529.         'height'     => '300',
  530.         'scrollbars' => 'yes',
  531.         'status'     => 'yes',
  532.         'resizable'  => 'yes',
  533.         'screenx'   => '200px',
  534.         'screeny'   => '200px'
  535.         );
  536.  
  537.         return $value . " <small>" . anchor_popup('panel/horarios/' . $row->id, "(Horarios)", $atts) . "</small>";
  538.     }
  539.  
  540.     public function horarios($id_curso_prog)
  541.     {
  542.         $crud = new grocery_CRUD();
  543.  
  544.         $crud->where('id_curso_prog', $id_curso_prog);
  545.         $crud->set_table('horarios');
  546.         $crud->set_subject('Horario');
  547.        
  548.         $crud->unset_print();
  549.         $crud->unset_export();
  550.         $crud->unset_columns('id_curso_prog');
  551.  
  552.         $crud->fields('id_curso_prog', 'fecha', 'horaini', 'horafin');
  553.         $crud->required_fields('fecha', 'horaini', 'horafin');
  554.         $crud->field_type('id_curso_prog', 'hidden', $id_curso_prog);
  555.         $crud->unset_read();
  556.  
  557.         $output = $crud->render();
  558.  
  559.         $this->load->view('panel/panel2.php',$output);
  560.     }
  561.  
  562.  
  563.     public function lista_asistentes($id_curso_prog)
  564.     {
  565.         $data["cp"] = $this->Cursos_model->get_curso_programado($id_curso_prog);
  566.         $data["fechafin"] = $this->Cursos_model->get_fechafin($id_curso_prog);
  567.         $data["asistentes"] = $this->Cursos_model->get_asistentes_cp($id_curso_prog);
  568.         $data["horarios"] = $this->Cursos_model->get_horarios($id_curso_prog);
  569.        
  570.         $this->load->view('panel/lista_asistentes', $data);
  571.     }
  572.  
  573.     public function lista_asistentes_preview($id_curso_prog)
  574.     {
  575.         $data["cp"] = $this->Cursos_model->get_curso_programado($id_curso_prog);
  576.         $data["fechafin"] = $this->Cursos_model->get_fechafin($id_curso_prog);
  577.         $data["asistentes"] = $this->Cursos_model->get_asistentes_cp($id_curso_prog);
  578.         $data["horarios"] = $this->Cursos_model->get_horarios($id_curso_prog);
  579.        
  580.         $this->load->view('panel/lista_asistentes_preview', $data);
  581.     }
  582.  
  583.     public function lista_asistentes_preview2($id_curso_prog)
  584.     {
  585.         $data["cp"] = $this->Cursos_model->get_curso_programado($id_curso_prog);
  586.         $data["fechafin"] = $this->Cursos_model->get_fechafin($id_curso_prog);
  587.         $data["asistentes"] = $this->Cursos_model->get_asistentes2_cp($id_curso_prog);
  588.         $data["horarios"] = $this->Cursos_model->get_horarios($id_curso_prog);
  589.        
  590.         $this->load->view('panel/lista_asistentes_preview2', $data);
  591.     }
  592.  
  593.     public function lista_asistentes_excel()
  594.     {
  595.         header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  596. header('Content-Disposition: attachment;filename="exportado.xls"');
  597. header('Cache-Control: max-age=0');
  598. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  599. $objWriter->save('php://output');
  600.  
  601.         echo iconv("UTF-8", "ISO-8859-1",$this->input->post('datos'));
  602.     }
  603.  
  604.     public function lista_aprobados($id_curso_prog)
  605.     {
  606.         $data["cp"] = $this->Cursos_model->get_curso_programado($id_curso_prog);
  607.         $data["aprobados"] = $this->Cursos_model->get_aprobados_cp($id_curso_prog);
  608.        
  609.         $this->load->view('panel/lista_aprobados', $data);
  610.     }
  611.  
  612.     public function update_asistente_cp()
  613.     {
  614.         $this->form_validation->set_rules("observaciones", "Nombre", "trim|strip_tags|xss");
  615.         $this->form_validation->set_rules("descuento", "Descuentos", "numeric|xss");
  616.         $this->form_validation->set_rules("cargo", "Cargos", "numeric|xss");
  617.         $this->form_validation->set_rules("iva", "IVA", "numeric|xss");
  618.  
  619.         $this->form_validation->set_message('required', "El campo %s es un dato obligatorio");
  620.         $this->form_validation->set_message('numeric', "%s debe ser un valor númerico");
  621.  
  622.         if($this->form_validation->run() == FALSE){
  623.             $this->lista_asistentes($this->input->post('id_curso_prog'));
  624.         }else{
  625.             $data = array(
  626.                 'id' => $this->input->post('id'),
  627.                 'descuento' => $this->input->post('descuento'),
  628.                 'cargo' => $this->input->post('cargo'),
  629.                 'iva' => $this->input->post('iva'),
  630.                 'observaciones' => $this->input->post('observaciones'),
  631.             );
  632.  
  633.             $update = $this->Cursos_model->update_asistente_cp($data);
  634.  
  635.             if($update){
  636.                 $msg = "<p>¡Datos actualizados correctamente!</p>";
  637.             }else{
  638.                 $msg = "<p>¡Los datos NO pudieron ser actualizados, verifique con el Administrador!</p>";
  639.             }
  640.            
  641.             $this->session->set_flashdata('msg', $msg);
  642.             redirect("panel/lista_asistentes/" . $this->input->post('id_curso_prog'), "refresh");
  643.         }
  644.     }
  645.  
  646.     public function update_aprobado_cp()
  647.     {
  648.         //print_r($this->input->post()); die();
  649.         $this->form_validation->set_rules("observaciones", "Observaciones", "trim|strip_tags|xss");
  650.  
  651.         if($this->form_validation->run() == FALSE){
  652.             $this->lista_aprobados($this->input->post('id_curso_prog'));
  653.         }else{
  654.             if(isset($_POST['acreditado']))  $acreditado  = 1; else $acreditado  = 0;
  655.             if(isset($_POST['certificado'])) $certificado = 1; else $certificado = 0;
  656.            
  657.             $data = array(
  658.                 'id'            => $this->input->post('id'),
  659.                 'acreditado'    => $acreditado,
  660.                 'certificado'   => $certificado,
  661.                 'fecha'         => $this->input->post('fecha'),
  662.                 'observaciones' => $this->input->post('observaciones'),
  663.             );
  664.  
  665.             $update = $this->Cursos_model->update_aprobado_cp($data);
  666.  
  667.             if($update){
  668.                 $msg = "<p>¡Datos actualizados correctamente!</p>";
  669.             }else{
  670.                 $msg = "<p>¡Los datos NO pudieron ser actualizados, verifique con el Administrador!</p>";
  671.             }
  672.            
  673.             $this->session->set_flashdata('msg', $msg);
  674.             redirect("panel/lista_aprobados/" . $this->input->post('id_curso_prog'), "refresh");
  675.         }
  676.     }
  677.  
  678.     public function asistente_cp_pagos($id_asistente, $id_curso_prog)
  679.     {
  680.         $data["cp"]         = $this->Cursos_model->get_curso_programado($id_curso_prog);
  681.         $data["asistente"]  = $this->Cursos_model->get_asistente_cp($id_asistente);
  682.         $data["pagos"]      = $this->Cursos_model->get_asistente_cp_pagos($id_asistente);
  683.        
  684.         $this->load->view('panel/asistente_cp_pagos', $data);
  685.     }
  686.  
  687.     public function asistente_cp_nuevo_pago()
  688.     {
  689.         $this->form_validation->set_rules("fecha", "Fecha", "required|xss");
  690.         $this->form_validation->set_rules("pago", "Pago", "required|numeric");
  691.         $this->form_validation->set_rules("observaciones", "Observaciones", "strip_tags");
  692.  
  693.         $this->form_validation->set_message('required', "El campo %s es un dato obligatorio");
  694.         $this->form_validation->set_message('numeric', "%s debe ser un valor númerico");
  695.  
  696.         if($this->form_validation->run() == FALSE){
  697.             $this->asistente_cp_pagos($this->input->post('id_asistente'), $this->input->post('id_curso_prog'));
  698.         }else{
  699.             $agregar = $this->Cursos_model->asistente_cp_nuevo_pago($this->input->post());
  700.  
  701.             if($agregar){
  702.                 $msg = "<p>¡Pago agregado correctamente!</p>";
  703.             }else{
  704.                 $msg = "<p>¡El pago NO pudo ser agregado, verifique con el Administrador!</p>";
  705.             }
  706.            
  707.             $this->session->set_flashdata('msg', $msg);
  708.             redirect("panel/asistente_cp_pagos/" . $this->input->post('id_asistente') . "/" .
  709.                 $this->input->post('id_curso_prog'), "refresh");
  710.         }
  711.     }
  712.  
  713.     public function update_asistente_cp_pago()
  714.     {
  715.         $this->form_validation->set_rules("fecha", "Fecha", "required|xss");
  716.         $this->form_validation->set_rules("pago", "Pago", "required|numeric");
  717.         $this->form_validation->set_rules("observaciones", "Observaciones", "strip_tags");
  718.  
  719.         $this->form_validation->set_message('required', "El campo %s es un dato obligatorio");
  720.         $this->form_validation->set_message('numeric', "%s debe ser un valor númerico");
  721.  
  722.         if($this->form_validation->run() == FALSE){
  723.             $this->asistente_cp_pagos($this->input->post('id_asistente'), $this->input->post('id_curso_prog'));
  724.         }else{
  725.             $update = $this->Cursos_model->update_asistente_cp_pago($this->input->post());
  726.  
  727.             if($update) $msg = "<p>¡Datos actualizados correctamente!</p>";
  728.             else $msg = "<p>¡Los datos NO pudieron ser actualizados, verifique con el Administrador!</p>";
  729.            
  730.             $this->session->set_flashdata('msg', $msg);
  731.             redirect("panel/asistente_cp_pagos/" . $this->input->post('id_asistente') . "/" .
  732.                 $this->input->post('id_curso_prog'), "refresh");
  733.         }
  734.     }
  735.  
  736.     /*public function agregar_asistente_cp()
  737.     {
  738.         $this->form_validation->set_rules("cliente", "Cliente", "required|xss");
  739.  
  740.         $this->form_validation->set_message('required', "El campo %s es un dato obligatorio");
  741.  
  742.         if($this->form_validation->run() == FALSE){
  743.             $this->lista_asistentes($this->input->post('id_curso_prog'));
  744.         }else{
  745.             $cliente = explode("-", strip_tags(trim($this->input->post("cliente"))));
  746.             $id_cliente = (int)$cliente[0];
  747.  
  748.             $data = array(
  749.                 'id_curso_prog' => $this->input->post("id_curso_prog"),
  750.                 'id_cliente'    => $id_cliente,
  751.                 'total'         => 0,
  752.                 'descuento'     => 0,
  753.                 'estado'        => 1,
  754.                 'observaciones' => '',
  755.                 'cargo'         => 0,
  756.                 'iva'           => 0,
  757.             );
  758.             $agregar = $this->Cursos_model->agregar_asistente_cp($data);
  759.  
  760.             if($agregar) $msg = "<p>¡Asistente agregado correctamente!</p>";
  761.             else $msg = "<p>¡El Asistente NO pudo ser agregado, verifique con el Administrador!</p>";
  762.            
  763.             $this->session->set_flashdata('msg', $msg);
  764.             redirect("panel/lista_asistentes/" . $this->input->post('id_curso_prog'), "refresh");
  765.         }
  766.     }*/
  767.  
  768.     public function clientes_para_cp($id_curso_prog)
  769.     {
  770.         $data["cp"] = $this->Cursos_model->get_curso_programado($id_curso_prog);
  771.         $data["clientes"] = $this->Clientes_model->get_clientes_autocomplete2();
  772.        
  773.         $this->load->view('panel/clientes_para_cp', $data);
  774.     }
  775.  
  776.     public function agregar_asistentes_cp()
  777.     {
  778.         $ids = array();
  779.         foreach($this->input->post() as $val){
  780.             if(strpos($val, "cliente_") !== FALSE){
  781.                 $data = explode("_", strip_tags(trim($val)));
  782.                 $ids[] = (int)$data[1];
  783.             }
  784.         }
  785.  
  786.         if(count($ids) > 0){
  787.             foreach($ids as $id_cliente){
  788.                 $data = array(
  789.                     'id_curso_prog' => $this->input->post("id_cp"),
  790.                     'id_cliente'    => $id_cliente,
  791.                     'total'         => 0,
  792.                     'descuento'     => 0,
  793.                     'estado'        => 1,
  794.                     'observaciones' => '',
  795.                     'cargo'         => 0,
  796.                     'iva'           => 0,
  797.                 );
  798.                 $agregar = $this->Cursos_model->agregar_asistente_cp($data);
  799.             }
  800.             $msg = "<p>¡Los clientes elegidos han sido agregados a este curso!</p>";
  801.             $this->session->set_flashdata('msg', $msg);
  802.             redirect("panel/lista_asistentes/" . $this->input->post('id_cp'), "refresh");
  803.         }else{
  804.             $msg = "<p>¡Elige por favor los clientes que deseas agregar a este curso!</p>";
  805.             $this->session->set_flashdata('msg', $msg);
  806.             redirect("panel/clientes_para_cp/" . $this->input->post('id_cp'), "refresh");
  807.         }
  808.     }
  809.  
  810.     public function eliminar_asistente_cp($id_cp, $id_asistente)
  811.     {
  812.         $id_cp = (int)strip_tags(trim($id_cp));
  813.         $id_asistente = (int)strip_tags(trim($id_asistente));
  814.  
  815.         if($id_cp <= 0 || $id_asistente <= 0) redirect("panel/cursos_programados");
  816.  
  817.         $eliminar = $this->Cursos_model->eliminar_asistente_cp($id_asistente);
  818.  
  819.         if($eliminar) $msg = "<p>Asistente quitado correctamente!</p>";
  820.         else $msg = "<p>¡El asistente NO pudo ser quitado, verifique con el Administrador!</p>";
  821.            
  822.         $this->session->set_flashdata('msg', $msg);
  823.         redirect("panel/lista_asistentes/" . $id_cp, "refresh");
  824.     }
  825.  
  826.     public function eliminar_asistente_cp_pago($id_cp, $id_asistente, $id_pago, $pago)
  827.     {
  828.         $id_cp = (int)strip_tags(trim($id_cp));
  829.         $id_asistente = (int)strip_tags(trim($id_asistente));
  830.         $id_pago = (int)strip_tags(trim($id_pago));
  831.         $pago = (float)strip_tags(trim($pago));
  832.  
  833.         if($id_cp <= 0 || $id_asistente <= 0 || $id_pago <= 0 || $pago <= 0) redirect("panel/cursos_programados");
  834.         $data = array(
  835.             'id_asistente' => $id_asistente,
  836.             'id_pago' => $id_pago,
  837.             'pago' => $pago
  838.         );
  839.  
  840.         $eliminar = $this->Cursos_model->eliminar_asistente_cp_pago($data);
  841.  
  842.         if($eliminar) $msg = "<p>Pago eliminado correctamente!</p>";
  843.         else $msg = "<p>¡El pago NO pudo ser eliminado, verifique con el Administrador!</p>";
  844.            
  845.         $this->session->set_flashdata('msg', $msg);
  846.         redirect("panel/asistente_cp_pagos/" . $id_asistente. "/" . $id_cp, "refresh");
  847.     }
  848.  
  849.     public function cursos_interes()
  850.     {
  851.         $crud = new grocery_CRUD();
  852.  
  853.         $crud->set_theme('datatables');
  854.         $crud->set_table('cursos_interes');
  855.         $crud->set_relation('id_cliente','clientes','{nombre} {apellidos} ({usuario})');
  856.         $crud->set_relation('id_curso','cursos','{nombre}');
  857.         $crud->display_as('id_cliente','Cliente');
  858.         $crud->display_as('id_curso','Curso');
  859.         $crud->set_subject('Interes por Curso');
  860.         $crud->required_fields('id_cliente', 'id_curso');
  861.         $crud->columns("id_curso", "id_cliente", "datos", "observaciones");
  862.         $crud->fields("id_curso", "id_cliente", "observaciones");
  863.         $crud->callback_column('datos',array($this,'_callback_datos'));
  864.         //$crud->set_rules('posicion','Posición','numeric');
  865.  
  866.         $crud->unset_read();
  867.  
  868.         $output = $crud->render();
  869.  
  870.         $this->_example_output($output);
  871.     }
  872.  
  873.     public function _callback_datos($value, $row)
  874.     {
  875.         $cliente = $this->Clientes_model->get_cliente($row->id_cliente);
  876.         $cliente = $cliente;
  877.  
  878.         return $cliente->correos . "<br>\t" .
  879.             $cliente->telefonos;
  880.     }
  881.  
  882.     ///////////////////////////// CURSOS ////////////////////////////////
  883.  
  884.  
  885.     /////////////////////////// CONTENIDOS //////////////////////////////
  886.  
  887.     public function menu()
  888.     {
  889.         $crud = new grocery_CRUD();
  890.  
  891.         $crud->set_theme('datatables');
  892.         $crud->set_table('menu');
  893.         $crud->set_subject('Item');
  894.         $crud->required_fields('titulo', 'slug');
  895.         $crud->set_rules('posicion','Posición','numeric');
  896.        
  897.         $crud->callback_add_field('titulo',array($this,'add_field_titulo'));
  898.         $crud->callback_add_field('slug',array($this,'add_field_slug'));
  899.         $crud->callback_add_field('posicion',array($this,'add_field_posicion'));
  900.         $crud->callback_add_field('id_seccion_default',array($this,'add_field_seccion_default'));
  901.        
  902.         $crud->callback_edit_field('titulo',array($this,'edit_field_titulo'));
  903.         $crud->callback_edit_field('slug',array($this,'edit_field_slug'));
  904.         $crud->callback_edit_field('posicion',array($this,'edit_field_posicion'));
  905.         $crud->callback_edit_field('id_seccion_default',array($this,'edit_field_seccion_default'));
  906.  
  907.         $crud->unset_read();
  908.  
  909.         $output = $crud->render();
  910.  
  911.         $this->_example_output($output);
  912.     }
  913.  
  914.     // Secciones
  915.     public function secciones()
  916.     {
  917.         $crud = new grocery_CRUD();
  918.  
  919.         $crud->set_theme('datatables');
  920.         $crud->set_table('secciones');
  921.         $crud->set_relation('id_menu','menu','{titulo}');
  922.         $crud->display_as('id_menu','Menú');
  923.         $crud->display_as('slug','Título amigable');
  924.         $crud->set_subject('Sección');
  925.         $crud->required_fields('titulo', 'slug');
  926.  
  927.         $crud->callback_add_field('titulo',array($this,'add_field_titulo'));
  928.         $crud->callback_add_field('slug',array($this,'add_field_slug'));
  929.         $crud->callback_add_field('posicion',array($this,'add_field_posicion'));
  930.        
  931.         $crud->callback_edit_field('titulo',array($this,'edit_field_titulo'));
  932.         $crud->callback_edit_field('slug',array($this,'edit_field_slug'));
  933.         $crud->callback_edit_field('posicion',array($this,'edit_field_posicion'));
  934.  
  935.         $crud->unset_read();
  936.  
  937.         $output = $crud->render();
  938.  
  939.         $this->_example_output($output);
  940.     }
  941.  
  942.     // Blog
  943.     public function blog()
  944.     {
  945.         $crud = new grocery_CRUD();
  946.  
  947.         $crud->set_theme('datatables');
  948.         $crud->set_table('blog');
  949.         $crud->display_as('slug','Título amigable');
  950.         $crud->set_field_upload('portada','uploads/images/blog');
  951.         $crud->set_subject('Noticia');
  952.         $crud->unset_texteditor('estilos');
  953.         $crud->required_fields('titulo', 'slug');
  954.  
  955.         $crud->callback_add_field('titulo',array($this,'add_field_titulo'));
  956.         $crud->callback_add_field('slug',array($this,'add_field_slug'));
  957.        
  958.         $crud->callback_edit_field('titulo',array($this,'edit_field_titulo'));
  959.         $crud->callback_edit_field('slug',array($this,'edit_field_slug'));
  960.  
  961.         $crud->unset_read();
  962.  
  963.         $output = $crud->render();
  964.  
  965.         $this->_example_output($output);
  966.     }
  967.  
  968.     // Funciones auxiliares
  969.  
  970.     function add_field_titulo()
  971.     {
  972.         return '<input type="text" name="titulo" id="titulo" class="toslug">';
  973.     }
  974.  
  975.     function add_field_slug()
  976.     {
  977.         return '<input type="text" name="slug" id="slug" readonly="readonly">';
  978.     }
  979.  
  980.     function add_field_posicion()
  981.     {
  982.         return '<input type="number" min="1" value="1" name="posicion" id="posicion" class="numeric">';
  983.     }
  984.  
  985.     function add_field_seccion_default()
  986.     {
  987.         return '<input type="number" min="1" value="1" name="id_seccion_default" id="id_seccion_default" class="numeric">';
  988.     }
  989.  
  990.     function edit_field_titulo($value, $primary_key)
  991.     {
  992.         return '<input type="text" value="' . $value . '" name="titulo" id="titulo" class="toslug">';
  993.     }
  994.  
  995.     function edit_field_slug($value, $primary_key)
  996.     {
  997.         return '<input type="text" value="' . $value . '" name="slug" id="slug" readonly="readonly">';
  998.     }
  999.  
  1000.     function edit_field_posicion($value, $primary_key)
  1001.     {
  1002.         return '<input type="number" min="1" value="' . $value . '" name="posicion" id="posicion" class="numeric">';
  1003.     }
  1004.  
  1005.     function edit_field_seccion_default($value, $primary_key)
  1006.     {
  1007.         return '<input type="number" min="1" value="' . $value . '" name="id_seccion_default" id="id_seccion_default" class="numeric">';
  1008.     }
  1009.  
  1010.     /////////////////////////// /CONTENIDOS //////////////////////////////
  1011.  
  1012.  
  1013.     /////////////////////////// PRODUCTOS //////////////////////////////
  1014.     public function productos_cats()
  1015.     {
  1016.         $crud = new grocery_CRUD();
  1017.  
  1018.         $crud->set_theme('datatables');
  1019.         $crud->set_table('productos_cats');
  1020.         $crud->set_subject('Categoría');
  1021.         $crud->required_fields('nombre');
  1022.         $crud->unset_texteditor('descripcion', 'observaciones');
  1023.  
  1024.         $crud->unset_read();
  1025.  
  1026.         $output = $crud->render();
  1027.  
  1028.         $this->_example_output($output);
  1029.     }
  1030.  
  1031.     public function proveedores()
  1032.     {
  1033.         $crud = new grocery_CRUD();
  1034.  
  1035.         $crud->set_theme('datatables');
  1036.         $crud->set_table('proveedores');
  1037.         $crud->set_subject('Proveedor');
  1038.         $crud->required_fields('nombre');
  1039.         $crud->unset_texteditor('observaciones');
  1040.  
  1041.         $crud->unset_read();
  1042.  
  1043.         $output = $crud->render();
  1044.  
  1045.         $this->_example_output($output);
  1046.     }
  1047.  
  1048.     public function productos()
  1049.     {
  1050.         $crud = new grocery_CRUD();
  1051.  
  1052.         $crud->set_theme('datatables');
  1053.         $crud->set_table('productos');
  1054.         $crud->set_relation('categoria','productos_cats','{nombre}');
  1055.         $crud->set_relation('proveedor','proveedores','{nombre}');
  1056.         $crud->set_subject('Producto');
  1057.         $crud->set_field_upload('imagen','uploads/images/tienda');
  1058.         $crud->unset_texteditor('descripcion', 'observaciones');
  1059.         $crud->order_by('categoria', 'asc');
  1060.         $crud->required_fields('titulo', 'categoria');
  1061.         $crud->unset_fields('vendible');
  1062.         $crud->unset_columns('vendible');
  1063.  
  1064.         $crud->callback_column('visible', array($this, 'visible_si_no'));
  1065.  
  1066.         $crud->unset_read();
  1067.  
  1068.         /*$crud->callback_before_insert(function($post_array){
  1069.             if(isset($post_array["visible"])){
  1070.                 $post_array["visible"] = 1;
  1071.             }else{
  1072.                 $post_array["visible"] = 0;
  1073.             }
  1074.             return $post_array;
  1075.         });
  1076.  
  1077.         $crud->callback_before_update(function($post_array){
  1078.             if(isset($post_array["visible"])){
  1079.                 $post_array["visible"] = 1;
  1080.             }else{
  1081.                 $post_array["visible"] = 0;
  1082.             }
  1083.             return $post_array;
  1084.         });
  1085.         */
  1086.        
  1087.         $crud->callback_before_insert(array($this,'insert_visible'));
  1088.         $crud->callback_before_update(array($this,'update_visible'));
  1089.  
  1090.         $crud->callback_add_field('posicion',array($this,'add_field_posicion'));
  1091.         $crud->callback_add_field('visible',array($this,'add_field_visible'));
  1092.        
  1093.         $crud->callback_edit_field('posicion',array($this,'edit_field_posicion'));
  1094.         $crud->callback_edit_field('visible',array($this,'edit_field_visible'));
  1095.  
  1096.         $output = $crud->render();
  1097.  
  1098.         $this->_example_output($output);
  1099.     }
  1100.  
  1101.     function insert_visible($post_array)
  1102.     {
  1103.         if(isset($post_array["visible"])){
  1104.             $post_array["visible"] = 1;
  1105.         }else{
  1106.             $post_array["visible"] = 0;
  1107.         }
  1108.         return $post_array;
  1109.     }
  1110.  
  1111.     function update_visible($post_array, $primary_key)
  1112.     {
  1113.         if(isset($post_array["visible"])){
  1114.             $post_array["visible"] = 1;
  1115.         }else{
  1116.             $post_array["visible"] = 0;
  1117.         }
  1118.         return $post_array;
  1119.     }
  1120.  
  1121.     function visible_si_no($value, $row){
  1122.         if($value == 1) return "Si";
  1123.         return "No";
  1124.     }
  1125.  
  1126.     function add_field_visible()
  1127.     {
  1128.         $data = array(
  1129.             'name'        => 'visible',
  1130.             'id'          => 'visible',
  1131.             'value'       => '1',
  1132.             'checked'     => TRUE,
  1133.         );
  1134.  
  1135.         return form_checkbox($data);
  1136.     }
  1137.  
  1138.     function edit_field_visible($value, $primary_key)
  1139.     {
  1140.         $data = array(
  1141.             'name'        => 'visible',
  1142.             'id'          => 'visible',
  1143.             'value'       => "$value",
  1144.             'checked'     => $value == 1 ? TRUE : FALSE,
  1145.         );
  1146.  
  1147.         return form_checkbox($data);
  1148.     }
  1149.  
  1150.  
  1151.     // Pedidos
  1152.     public function pedidos()
  1153.     {
  1154.         $crud = new grocery_CRUD();
  1155.  
  1156.         $crud->set_theme('datatables');
  1157.         $crud->set_table('pedidos');
  1158.         $crud->set_relation('id_cliente','clientes','{nombre} {apellidos}');
  1159.         $crud->display_as('id_cliente','Cliente');
  1160.         $crud->set_subject('Pedido');
  1161.         $crud->unset_texteditor('observaciones');
  1162.         $crud->required_fields('id_cliente', 'fecha');
  1163.  
  1164.         $crud->callback_column('estado',array($this,'estado_pedido'));
  1165.         $crud->callback_column('observaciones', array($this, 'link_detalle'));
  1166.        
  1167.         $crud->callback_add_field('subtotal',array($this,'add_field_subtotal'));
  1168.         $crud->callback_edit_field('subtotal',array($this,'edit_field_subtotal'));
  1169.  
  1170.         $crud->callback_add_field('estado',array($this,'add_field_estado'));
  1171.         $crud->callback_edit_field('estado',array($this,'edit_field_estado'));
  1172.  
  1173.         $crud->unset_read();
  1174.  
  1175.         $output = $crud->render();
  1176.  
  1177.         $this->_example_output($output);
  1178.     }
  1179.  
  1180.     function add_field_estado()
  1181.     {
  1182.  
  1183.         $options = array(
  1184.             '1'  => 'Recibido',
  1185.             '2'  => 'Enviado',
  1186.             '3'  => 'Cancelado',
  1187.         );
  1188.  
  1189.         return form_dropdown('estado', $options, '1');
  1190.     }
  1191.  
  1192.     function edit_field_estado($value, $primary_key)
  1193.     {
  1194.  
  1195.         $options = array(
  1196.             '1'  => 'Recibido',
  1197.             '2'  => 'Enviado',
  1198.             '3'  => 'Cancelado',
  1199.         );
  1200.  
  1201.         return form_dropdown('estado', $options, $value);
  1202.     }
  1203.  
  1204.     function estado_pedido($value, $row)
  1205.     {
  1206.         $options = array(
  1207.             '1'  => 'Recibido',
  1208.             '2'  => 'Enviado',
  1209.             '3'  => 'Cancelado',
  1210.         );
  1211.  
  1212.         return $options[$value];
  1213.     }
  1214.  
  1215.     function add_field_subtotal()
  1216.     {
  1217.         return '<input type="text" name="subtotal" id="subtotal" value="0" readonly="readonly">'
  1218.                 . '<span> Una vez generado el Pedido de click en <strong>Editar pedido</strong> para agregarle productos.';
  1219.     }
  1220.  
  1221.     function edit_field_subtotal($value, $primary_key)
  1222.     {
  1223.         $atts = array(
  1224.         'width'   => '900px',
  1225.         'height'     => '300',
  1226.         'scrollbars' => 'yes',
  1227.         'status'     => 'yes',
  1228.         'resizable'  => 'yes',
  1229.         'screenx'   => '200px',
  1230.         'screeny'   => '200px'
  1231.         );
  1232.  
  1233.         return '<input type="text" name="subtotal" id="subtotal" value="' . $value . '" readonly="readonly"> '
  1234.                 . anchor_popup("panel/detalle_pedido/$primary_key", "Ver detalle del Pedido", $atts);
  1235.     }
  1236.  
  1237.     function link_detalle($value, $row)
  1238.     {
  1239.         $atts = array(
  1240.         'width'   => '900px',
  1241.         'height'     => '300',
  1242.         'scrollbars' => 'yes',
  1243.         'status'     => 'yes',
  1244.         'resizable'  => 'yes',
  1245.         'screenx'   => '200px',
  1246.         'screeny'   => '200px'
  1247.         );
  1248.  
  1249.         return $value . " " . anchor_popup('panel/detalle_pedido/' . $row->id, "Ver detalle", $atts);
  1250.     }
  1251.  
  1252.     public function detalle_pedido($id_pedido)
  1253.     {
  1254.         $crud = new grocery_CRUD();
  1255.  
  1256.         //$crud->set_theme('datatables');
  1257.         $crud->set_table('pedidos_detalle');
  1258.         $crud->where('id_pedido', $id_pedido);
  1259.         $crud->display_as('id_producto','Producto');
  1260.         $crud->set_subject('Producto al Pedido');
  1261.         $crud->set_relation('id_producto','productos','{titulo}');
  1262.         $crud->required_fields('id_producto', 'cantidad');
  1263.         $crud->field_type('id_pedido', 'hidden', $id_pedido);
  1264.         $crud->add_action('Regresar al pedido', '', 'panel/pedidos/edit/' . $id_pedido,'ui-icon-document');
  1265.  
  1266.         $crud->unset_columns('id_pedido');     
  1267.  
  1268.         $crud->callback_after_insert(array($this, 'after_insert_item_detalle'));
  1269.         $crud->callback_before_update(array($this, 'before_update_item_detalle'));
  1270.         $crud->callback_after_update(array($this, 'after_update_item_detalle'));
  1271.         $crud->callback_before_delete(array($this, 'before_delete_item_detalle'));
  1272.  
  1273.         $crud->unset_read();
  1274.  
  1275.         $output = $crud->render();
  1276.  
  1277.         $this->load->view('panel/panel3.php',$output);
  1278.        
  1279.         /*
  1280.  
  1281.         CAMBIAR FUNCIONALIDAD DEL FRONT ----------------------------
  1282.  
  1283.         */
  1284.     }
  1285.  
  1286.     function after_insert_item_detalle($post_array,$primary_key)
  1287.     {
  1288.         $pedido = $this->Tienda_model->after_insert_item_detalle($post_array);
  1289.  
  1290.         return $pedido;
  1291.     }
  1292.  
  1293.     function before_update_item_detalle($post_array,$primary_key)
  1294.     {
  1295.         $pedido = $this->Tienda_model->before_update_item_detalle($post_array,$primary_key);
  1296.  
  1297.         return $pedido;
  1298.     }
  1299.  
  1300.     function after_update_item_detalle($post_array,$primary_key)
  1301.     {
  1302.         $pedido = $this->Tienda_model->after_insert_item_detalle($post_array);
  1303.  
  1304.         return $pedido;
  1305.     }
  1306.  
  1307.     function before_delete_item_detalle($primary_key)
  1308.     {
  1309.         $pedido = $this->Tienda_model->before_delete_item_detalle($primary_key);
  1310.  
  1311.         return $pedido;
  1312.     }
  1313.  
  1314.     public function get_producto()
  1315.     {
  1316.         $producto = $this->Tienda_model->get_producto($this->input->post("id"));
  1317.  
  1318.         echo json_encode($producto);
  1319.     }
  1320.  
  1321.  
  1322.     /////////////////////////// /PRODUCTOS /////////////////////////////
  1323.  
  1324.     /////////////////////////// SLIDER /////////////////////////////
  1325.     public function slider()
  1326.     {
  1327.         $crud = new grocery_CRUD();
  1328.  
  1329.         $crud->set_theme('datatables');
  1330.         $crud->set_table('slider');
  1331.         $crud->set_subject('Imagen');
  1332.         $crud->set_field_upload('imagen','uploads/images/slider');
  1333.  
  1334.         $crud->unset_read();
  1335.  
  1336.         $output = $crud->render();
  1337.  
  1338.         $this->_example_output($output);
  1339.     }
  1340.  
  1341.     /////////////////////////// /SLIDER ////////////////////////////
  1342.  
  1343.  
  1344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement