Display data at user level

Asked

Viewed 92 times

0

I have an agenda where users will register reminders and tasks, now I would like each user to view only their own tasks. Each task created is already associated to the user as I will be showing below, for this system I am using Codeigniter + Fullcalendar (javascript), follow my codes and images for better understanding:

Agenda: inserir a descrição da imagem aqui

Codes used to generate this agenda:

View:

<head>

  <script type="text/javascript">  
    $(function(){
        $("#nomeEvento").autocomplete({
          source: "clientes/get_cliente", // path to the method
          appendTo: $("#new_event")
        });
    }); 
  </script>

  <script>
  $(function(){
      $('.form-control.date').datepicker({
          format: 'yyyy-mm-dd',
          language: 'pt-BR',
          todayHighlight: true
      });
   });
  </script>

<script>

$(document).ready(function() {

  $.post('<?php echo base_url();?>calendar2/getEvents', 
  function(data){
  alert(data);

    $('#calendar').fullCalendar({
      locale: 'pt-br',
      header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,basicWeek,basicDay'
      },
      defaultDate: new Date(),
      navLinks: true, // can click day/week names to navigate views
      editable: true,
      eventLimit: true, // allow "more" link when too many events
      editable: true,
      events: $.parseJSON(data),

      eventDrop: function(event, delta, revertFunc){
        var id = event.id;
        var fi = event.start.format();
        var ff = event.end.format();

        $.post("<?php echo base_url();?>calendar2/updateEvents",
        {
          id:id,
          inicio:fi,
          fim:ff,
        },
        function(data){
          if(data == 1){
            alert('Evento atualizado');
          }else{
            alert('Evento Nao atualizado')
          }
        });    
      },

      eventResize: function(event, delta, revertFunc) {
        var id = event.id;
        var fi = event.start.format();
        var ff = event.end.format();

        $.post("<?php echo base_url();?>calendar2/updateEvents",
        {
          id:id,
          inicio:fi,
          fim:ff,
        },
        function(data){
          if(data == 1){
          //alert('Evento atualizado');
        }else{
         // alert('Evento não atualizado')
        }

        });  
      },

      // eventClick: function(event,jsEvent, view){
      //   $('#calendar').fullCalendar('removeEvents',event.id);
      //  }

      eventRender: function(event, element,data){
        var el = element.html();
        element.html("<div style='width:90%;float:left;'>" + el + "</div><div class='closeee' style='color:red; text-align:right;'>X</div>");

        element.find('.closeee').click(function(){
          if(!confirm("Excluir registro ??")){
            revertFunc();
          }else{
                var id = event.id
                $.post("<?php echo base_url();?>calendar2/deleteEvents",
                {
                  id:id,
                },
                function(data){
                  if(data == 1){
                    $('#calendar').fullCalendar('deleteEvents', event.id);
                  //alert('Tarefa Excluida');
                }else{
                 //alert('Tarefa não Excluida')
                }

                }); 
              }
          });
      },

      eventClick: function(event, jsEvent, view){
        $('#id').html(event.id);
        $('#mtitulo').html(event.title);
        $('#autor').html(event.autor);
        $('#inicioEdit').val(event.start);
        $('#importanciaEdit').val(event.impor);
        $('#descricaoEventoEdit').val(event.text);
        $('#modalEvento').modal();
      },

    });
  });
});

$(function(){
      $('.form-control.date').datepicker({
          format: 'yyyy-mm-dd',
          language: 'pt-BR',
          todayHighlight: true
      });
   });

</script>



</head>


<body>

    <div id='calendar'></div>

</body>

Controller:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Calendar2 extends CI_controller{

    function __construct(){
        parent:: __construct();
        $this->load->model('calendar2Model', 'model', TRUE);
    } 

    public function index(){
        $this->template->set('title', 'Agenda');
        $this->template->load('layout', 'calendar_v.php');
        //$this->load->view('calendar_v.php');
    }

    public function getEvents(){
        $data = $this->model->get_events();
        echo json_encode($data);
    }

    public function updateEvents(){
        $param['id'] = $this->input->post('id');
        $param['inicio'] = $this->input->post('inicio');
        $param['fim'] = $this->input->post('fim');
        $r =  $this->model->updateEvents($param);
        echo json_encode($r);
    }

    public function updateEvents2(){
        $this->load->library('form_validation');

        /* Define as tags onde a mensagem de erro será exibida na página */
        $this->form_validation->set_error_delimiters('<span>', '</span>');

        /* Aqui estou definindo as regras de validação do formulário, assim como 
           na função inserir do controlador, porém estou mudando a forma de escrita */
        $this->form_validation->set_rules('mtitulo', 'Nome', 'required|max_length[40]');
        $this->form_validation->set_rules('autor', 'Autor', 'trim|required|max_length[100]');
        $this->form_validation->set_rules('inicioEdit', 'Data', 'trim|required|max_length[20]');
        $this->form_validation->set_rules('importanciaEdit', 'importancia', 'trim|required|max_length[20]');
        $this->form_validation->set_rules('descricaoEventoEdit', 'Descricao', 'trim|required|max_length[60]');

        /* Executa a validação e caso houver erro chama a função editar do controlador novamente */
        if ($this->form_validation->run() === FALSE) {
                    $this->session->set_flashdata('mensagem', "<div class='alert alert-danger'> preencha todos os campos antes de salvar </div>");
                redirect('clientes');
        } else 
            /* Senão obtém os dados do formulário */
            $data['idevento'] = $this->input->post('nomeEvento');
            $data['nomeEvento'] = $this->input->post('mtitulo');
            $data['inicio'] = $this->input->post('inicioEdit');
            $data['fim'] = date('Y-m-d', strtotime($this->input->post('inicioEdit'). ' + 1 day'));
            $data['user'] = $this->input->post('autor');    
            $data['importancia'] = $this->input->post('importanciaEdit');   
            $data['descricaoEvento'] = $this->input->post('descricaoEventoEdit');

            /* Executa a função atualizar do modelo passando como parâmetro os dados obtidos do formulário */
            if ($this->model->updateEvents2($data)) {
                $this->session->set_flashdata('mensagem', "<div class='alert alert-success'> Cliente editado com sucesso</div>");
                redirect('clientes');
            } else {
                $this->session->set_flashdata('mensagem', "<div class='alert alert-danger'> Erro ao editar cliente</div>");
            }
        }


    public function deleteEvents(){
        $id = $this->input->post('id');
        $r = $this->model->deleteEvents($id);
        echo json_encode($r);
    }

    public function new_event(){

        $this->template->set('title', 'Nova tarefa');

        $this->load->library('form_validation');

        /* Define as tags onde a mensagem de erro será exibida na página */
        $this->form_validation->set_error_delimiters('<span>', '</span>');

        /* Define as regras para validação */
        $this->form_validation->set_rules('nomeEvento', 'Nome', 'required|max_length[40]');
        $this->form_validation->set_rules('inicio', 'Data de inicio', 'trim|required|max_length[60]');
        $this->form_validation->set_rules('importancia', 'Prioridade', 'trim|required|max_length[60]');
        $this->form_validation->set_rules('descricaoEvento', 'descricaoEvento', 'trim|required|max_length[150]');

        /* Executa a validação e caso houver erro chama a função index do controlador */
        if ($this->form_validation->run() === FALSE) {

            $this->session->set_flashdata('mensagem', "<div class='alert alert-warning'> preencha todos os campos antes de salvar </div>");
                redirect('clientes');
            /* Senão, caso sucesso: */
        } else {

            /* Recebe os dados do formulário (visão) */
            $data['nomeEvento'] = $this->input->post('nomeEvento');
            $data['inicio'] = $this->input->post('inicio');
            $data['fim'] = date('Y-m-d', strtotime($this->input->post('inicio'). ' + 1 day'));
            $data['user'] = $this->input->post('user'); 
            $data['importancia'] = $this->input->post('importancia');   
            $data['descricaoEvento'] = $this->input->post('descricaoEvento');   


            /* Chama a função inserir do modelo */
            if ($this->model->inserir($data)) {
                $this->session->set_flashdata('mensagem', "<div class='alert alert-success'> Lembrete salvo com sucesso</div>");
                redirect('clientes');
            } else {
                $this->session->set_flashdata('mensagem', "<div class='alert alert-danger'> Erro ao salvar Lembrete </div>");
                redirect('clientes');
            }

        }
    }


}

Model:

<?php

class calendar2Model extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    public function get_events(){
        $this->db->select('idevento id, inicio start, fim end,descricaoEvento text, user autor,importancia impor ,cnome title');
        $this->db->from('eventos');
        $this->db->join('clientes','clientes.ccod = eventos.nomeEvento');
        return $this->db->get()->result();

    }   

    function inserir($data) {
        return $this->db->insert('eventos', $data);
    }

    function updateEvents($param) {
        $campos = array(
                'inicio' => $param['inicio'],
                'fim' => $param['fim']
            );

        $this->db->where('idevento', $param['id']);
        $this->db->update('eventos', $campos);

        if($this->db->affected_rows() == 1){
            return 1;
        } else{
            return 0;
            }       
        }

    function deleteEvents($id){
        $this->db->where('idevento', $id);
        $this->db->delete('eventos');
        if($this->db->affected_rows() == 1){
            return 1;
        } else{
            return 0;
            }       
        }
}

Database: inserir a descrição da imagem aqui

  • In Getevents missing the WHERE id = id_logged in... or not?

  • Exact André, I added the following line and solved my problem $this->db->where('user', $_SESSION['usuario_logado']['username']);

  • But you can do with $this->Session->userdata('logged in')->username

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.