<?php

class Servicos extends CI_Controller {
    private $modelPagina = 'servicos_model';
    const TBL_013_SERVICOS = 'tbl_013_servicos';
    const TBL_REL_PECAS_SERVICO = 'tbl_rel_001_pecas_por_servico';

    function __construct() {
        parent::__construct();
        $this->load->helper(get_helpers_paginas());
        ValidacaoUtils::verificarLoginUtils($this->session);
        ValidacaoUtils::nivelTemAcessoPermitido($this->session->userdata('nivel'), $this->router->class);
        ValidacaoUtils::carregarModelsPagina($this->modelPagina, $this);
    }

    function index() {
        $this->gerenciar();
    }

    public function gerenciar() {
        $this->data['view'] = 'sistema/servicos/listarServicos';
        $this->data['servicos'] = $this->servicos_model->get(self::TBL_013_SERVICOS, '*');
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);
    }


    public function adicionar() {
        $this->load->library(DadosPaginas::FORM_VALIDATION);
        $this->data['custom_error'] = '';

        if ($this->form_validation->run('servicos') == false) {
            $this->data['custom_error'] = (validation_errors() ? true : false);
        } else {
            $this->load->library('encrypt');
            $cpfSemMascara = $cpf = preg_replace("/\D+/", "", $this->input->post('cpfFuncionario'));
            $data = array(
                'DS_DESCRICAO_SERVICO' => $this->input->post('descricaoServico'),
                'DS_APLICACAO' => $this->input->post('aplicacao'),
                'NU_MESES_GARANTIA' => $this->input->post('garantia'),
                'DS_DURACAO_SERVICO' => $this->input->post('duracao'),
                'DS_FREQUENCIA' => $this->input->post('frequencia')
            );

            if (is_numeric($id = $this->servicos_model->add(self::TBL_013_SERVICOS, $data, true))) {
                $this->session->set_flashdata('success', 'Serviço cadastrado com sucesso.');

            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>';
            }
        }
            redirect('servicos');

//        $this->data['view'] = 'sistema/pecas/adicionarPecas';
//        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);
    }

    function editar() {

        $this->load->library(DadosPaginas::FORM_VALIDATION);
        $this->data['custom_error'] = '';
        $dataReserva = null;

        if ($this->form_validation->run('servicos') == false) {
            $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
        } else {
            $data = array(
                'DS_DESCRICAO_SERVICO' => $this->input->post('descricaoServico'),
                'DS_APLICACAO' => $this->input->post('aplicacao'),
                'NU_MESES_GARANTIA' => $this->input->post('garantia'),
                'DS_DURACAO_SERVICO' => $this->input->post('duracao'),
                'DS_FREQUENCIA' => $this->input->post('frequencia')


            );


            if ($this->servicos_model->edit(self::TBL_013_SERVICOS, $data, 'ID_SERVICO', $this->input->post('servico_id')) == TRUE) {
//                GerenciarEmail::enviarEmailEditarReservas($data, $morador->email_morador);
//                $this->enviarSMSMoradorEditar($morador, $this->input->post('id'));
                $this->session->set_flashdata('success', 'Reserva editada com sucesso e Morador solicitante informado por email!');
                redirect('/servicos/editar/'.$this->input->post('servico_id'));
            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro</p></div>';
            }
        }

        $this->data['servicoEditar'] = $this->servicos_model->getById($this->uri->segment(3));
        $this->data['pecasPorServico'] = $this->servicos_model->getPecasPorServico($this->uri->segment(3));
        $this->data['view'] = 'sistema/servicos/editarServicos';
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);

    }

    public function adicionarPecasAoServico() {
        $this->load->library(DadosPaginas::FORM_VALIDATION);
        $this->data['custom_error'] = '';

        $this->form_validation->set_rules('peca_id', 'Id da Peca', 'required');
        $this->form_validation->set_rules('servico_id', 'Id do Serviço', 'required');

        if ($this->form_validation->run() == false) {
            $this->data['custom_error'] = (validation_errors() ? true : false);
        } else {
            $data = array(
                'PECA_ID' => $this->input->post('peca_id'),
                'SERVICO_ID' => $this->input->post('servico_id'),
                'NU_QUANTIDADE' => $this->input->post('quantidade')
            );

            if (is_numeric($id = $this->servicos_model->add(self::TBL_REL_PECAS_SERVICO, $data, true))) {
                $this->session->set_flashdata('success', 'Peça adicionada ao Serviço com sucesso.');

            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>';
            }
        }

        $this->data['servicoEditar'] = $this->servicos_model->getById($this->input->post('servico_id'));
        $this->data['pecasPorServico'] = $this->servicos_model->getPecasPorServico($this->input->post('servico_id'));
        $this->data['view'] = 'sistema/servicos/editarServicos';
        $this->load->view(DadosPaginas::PG_TOPO_SISTEMA, $this->data);
    }

    function excluir() {
        $id = $this->input->post('id');
        $idItemEditar = $this->input->post('idItemEditar');
        if ($id == null) {
            $this->session->set_flashdata('error', 'Erro ao tentar excluir reserva.');
        } else {
            $this->db->where('ID_SERVICO', $id);
            $this->db->delete(self::TBL_013_SERVICOS);
            $this->session->set_flashdata('success', 'Serviço excluído com sucesso!');
        }
        redirect('servicos/');
    }

    function excluirPecasServico() {
        $id = $this->input->post('id');
        $idItemEditar = $this->input->post('idItemEditar');
        if ($id == null) {
            $this->session->set_flashdata('error', 'Erro ao tentar excluir reserva.');
        } else {
            $this->db->where('ID_PECAS_SEVICO', $id);
            $this->db->delete(self::TBL_REL_PECAS_SERVICO);
            $this->session->set_flashdata('success', ' Peça excluída do Serviço com sucesso!');
        }
        redirect('servicos/editar/'.$idItemEditar);
    }

    public function autoCompleteServico() {
        if (isset($_GET['term'])) {
            $q = strtolower($_GET['term']);
            $this->servicos_model->autoCompleteServico($q);
        }
    }
}