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

class Group_items extends AdminController
{
    public function __construct()
    {
        parent::__construct();
        // Certifique-se de carregar o model correto
        $this->load->model('group_items_model', 'group_items');
        $this->load->model('item_groups_model');
        if (!is_admin()) {
            access_denied('Group_items');
        }
    }

    /**
     * Método unificado para criação e edição de item de grupo.
     * Se $id estiver vazio, cria um novo item de gru; se estiver preenchido, edita o existente.
     *
     * URL de exemplo:
     * - Criação: admin_url('group_items/group_item')
     * - Edição: admin_url('group_items/group_item/123')
     */
    public function group_item($id = '')
    {
        // Se houver um POST (não via AJAX) trata os dados do formulário
        if ($this->input->post() && !$this->input->is_ajax_request()) {
            $data = $this->input->post();
            if ($id == '') {
                // Criação de item de gru
                $id = $this->group_items->add($data);
                if ($id) {
                    set_alert('success', _l('added_successfully', _l('group_item')));
                    // Se desejar redirecionar para a página de edição do item de gru recém-criado
                    redirect(admin_url('group_items'));
                } else {
                    set_alert('danger', _l('problem_adding', _l('group_item')));
                    redirect(admin_url('group_items/group_item'));
                }
            } else {
                // Atualização do item de gru
                $updated = $this->group_items->edit($data);
                if ($updated) {
                    set_alert('success', _l('updated_successfully', _l('group_item')));
                } else {
                    set_alert('danger', _l('problem_updating', _l('group_item')));
                }
                redirect(admin_url('group_items/group_item/' . $id));
            }
        }

        // Define a variável $data para a view
        if ($id != '') {
            // Busca o item de gru para edição
            $data['group_item'] = $this->group_items->get($id);
            if (!$data['group_item']) {
                set_alert('warning', _l('group_item_not_found'));
                redirect(admin_url('group_items'));
            }
            $title = _l('edit_group_item');
        } else {
            $title = _l('new_group_item');
        }

        $data['title']     = $title;
        $data['item_groups'] = $this->item_groups_model->get();
    
        // Carrega os profissionais para o select
        $this->load->model('professionals_model');
        $data['professionals'] = $this->professionals_model->get();
    
        // Carrega a view unificada para criação/edição
        $this->load->view('admin/group_items/group_item', $data);
    }

    /* Métodos existentes para listagem, gerenciamento via AJAX, deleção, etc. */

    /* List all group_items */
    public function index()
    {
        if ($this->input->is_ajax_request()) {
            $this->app->get_table_data('group_items');
        }
        $data['title'] = _l('group_items');
        $data['item_groups'] = $this->item_groups_model->get();
        $this->load->view('admin/group_items/manage', $data);
    }

    /* Create or update group_item via AJAX */
    public function manage()
    {
        if ($this->input->post()) {
            $data = $this->input->post();
            // Se não há ID, então é uma criação
            if ($data['groupitemid'] == '') {
                $success = $this->group_items->add($data);
                $message = '';
                if ($success == true) {
                    $message = _l('added_successfully', _l('group_item'));
                }
                echo json_encode([
                    'success' => $success,
                    'message' => $message,
                ]);
            } else {
                // Se há groupitemid, edite o produto
                $success = $this->group_items->edit($data);
                $message = '';
                if ($success == true) {
                    $message = _l('updated_successfully', _l('group_item'));
                }
                echo json_encode([
                    'success' => $success,
                    'message' => $message,
                ]);
            }
        }
    }

    // Método para deletar um item de gru
    public function delete($id)
    {
        $group_item = $this->group_items->get($id);
        if (!$group_item) {
            set_alert('warning', _l('group_item_not_found'));
            redirect(admin_url('group_items'));
        }
        $deleted = $this->group_items->delete($id);
        if ($deleted) {
            set_alert('success', _l('deleted', _l('group_item')));
        } else {
            set_alert('danger', _l('problem_deleting', _l('group_item')));
        }
        redirect(admin_url('group_items'));
    }
}