<?php

require_once 'connect.php';
require_once 'inc/messages.php';

// retorna array com lista de módulos, ou false se deu erro
function regras_comissionamento_getAll() {
  global $conexao;
  $sql = 'select * from erpc_regras_comissionamento where st_ativo=?';
  $values[] = '1';
  $result = _prepareAndQuery($sql, $values);
  return $result;
}

// retorna array associativo com objeto, ou false se deu erro/não encontrar
function regras_comissionamento_getById($id) {
  global $conexao;
  $sql = 'select * from erpc_regras_comissionamento where id=? and st_ativo=1';
  $values[] = $id;
  $result = _prepareAndQuery($sql, $values);
  if ($result !== false) {
    if (count($result) === 1) {
      $result = $result[0];
      $itens = produtos_comissionamento_getById($id);
      // se não tiver itens, cria um array vazio
      if ($itens === false) {
        $result = false;
        addError('Erro ao carregar os itens');
      } else {
        $result['itens'] = $itens;
        // já formato os campos aqui? por hora sim...
        foreach($result as $k => $v) {
          $result[$k] = sgcws_format_field($k, $v);
        }
      }
    } else {
      $result = false;
      addError('Id não encontrado');
    }
  }

  return $result;
}


// retorna array associativo com objeto, ou false se deu erro/não encontrar
function produtos_comissionamento_getById($id_pai) {
  global $conexao;
  $sql = 'select pc.*, prod.ds_produto from erpc_produtos_comissionamento pc 
                        join erpc_regras_comissionamento rc on (rc.id = pc.id_regra_comissionamento) 
                        join erpc_produtos prod on (prod.id = pc.id_produto) where pc.id_regra_comissionamento=?';
  $values[] = $id_pai;
  $result = _prepareAndQuery($sql, $values);
  return $result;
}

// insere novo módulo
function regras_comissionamento_insert($regras_comissionamento, &$error=null) {
  global $conexao;
  $ok = false;
  $sql = 'insert into erpc_regras_comissionamento ';
  $campos = array('ds_regra', 'st_ativo');
  $values = array();
  foreach($campos as $campo) {
    $values[] = $regras_comissionamento[$campo];
  }
  $sql .= '(' . implode(',', $campos) . ') values (' . trim(str_repeat('?,', count($values)), ',') . ')';

  $ok = _prepareAndExecute($sql, $values, $error);
  if ($ok !== false) {

    $regras_comissionamento['id'] = mysqli_insert_id($conexao);
    $ok = produtos_comissionamento_insert($regras_comissionamento, $error);

    if ($error === null) {
      addMessage('Inserido com sucesso');
    }
  }
  return $ok;
}

// insere novo item
function produtos_comissionamento_insert($regras_comissionamento, &$error=null) {
    global $conexao;
    $ok = false;
    $itens = $regras_comissionamento['itens'];
    if (count($itens) > 0) {
      $sql = 'insert into erpc_produtos_comissionamento ';
      $campos = array('id_produto', 'id_regra_comissionamento', 'nr_perc_pgto_emissao', 'nr_perc_pgto_baixa', 'dh_alteracao', 'id_usuario', 'st_ativo');
      $sql .= '(' . implode(',', $campos) . ') values ';
      $sql .= '(' . trim(str_repeat('?,', count($campos)), ',') . ')';
      $values = array();
      foreach($itens as $item) {
        if (!empty($item['id_produto'])) {
          $item['id_regra_comissionamento'] = $regras_comissionamento['id'];
          foreach($campos as $campo) {
            if (in_array($campo, ['st_ativo'])) {
              $values[] = isset($item[$campo]) ? '1' : '0';
            } else {
              $values[] = $item[$campo];
            }
          }
        }
      }
      // remove última ','
      if (empty($values)) {
        // nada para inserir
        $ok = true;
      } else {
        $ok = _prepareAndExecute($sql, $values, $error, true);
      }
    } else {
      // nada para inserir
      $ok = true;
    }
    return $ok;
}

// altera a senha do usuário
function regras_comissionamento_update($regras_comissionamento) {
  global $conexao;
  $ok = false;
  $sql = 'update erpc_regras_comissionamento set ';
  $campos = array('ds_regra');
  $values = array();
  foreach($campos as $campo) {
    $sql .= $campo . '=?,';
    $values[] = $regras_comissionamento[$campo];
  }
  $sql = trim($sql, ',');
  $sql .= ' where id = ?';
  $values[] = $regras_comissionamento['id'];
  $ok = _prepareAndExecute($sql, $values);
  if ($ok !== false) {
    $ok =  produtos_comissionamento_update($regras_comissionamento);
    if ($ok !== false) {
      addMessage('Atualizado com sucesso');
    }
  }
  return $ok;
}

function regras_comissionamento_delete($regras_comissionamento) {
  global $conexao;
  $ok = false;
  $sql = 'update erpc_regras_comissionamento set st_ativo = 0';
  $values = array();
  $sql .= ' where id = ?';
  $values[] = $regras_comissionamento['id'];
  $ok = _prepareAndExecute($sql, $values);

  if ($ok) {
    $ok = produtos_comissionamento_delete($regras_comissionamento);
  }

  if ($ok !== false) {
    addMessage('Removido com sucesso');
  }
  return $ok;
}

function regras_comissionamento_create() {
  $regras_comissionamento = array(
    'id' => '',
    'ds_regra' => '',
    'st_ativo' => '1',
    'itens' => array(),
  );
  return $regras_comissionamento;
}


function produto_comissionamento_create() {
  $u = getLoggedUser();
  $produto_comissionamento = array(
    'id_produto' => '',
    'id_regra_comissionamento' => '',
    'nr_perc_pgto_emissao' => '',
    'nr_perc_pgto_baixa' => '',
    'dh_alteracao' => date('Y-m-d H:i:s'),
    'id_usuario' => $u['id'],
    'st_ativo' => '1',
  );
  return $produto_comissionamento;
}


// atualiza os itens do objeto passado no bd, apaga tudo e insere de novo
function produtos_comissionamento_update($regras_comissionamento) {
  global $conexao;
  $ok = false;
  $sql = 'delete from erpc_produtos_comissionamento where id_regra_comissionamento=?';
  $values = array($regras_comissionamento['id']);
  $ok = _prepareAndExecute($sql, $values);
  if ($ok !== false) {
    $ok = produtos_comissionamento_insert($regras_comissionamento);
  }
  return $ok;
}


function produtos_comissionamento_delete($regras_comissionamento) {
  global $conexao;
  $ok = false;
  $sql = 'update erpc_produtos_comissionamento set st_ativo = 0 where id_regra_comissionamento=?';
  $values = array($regras_comissionamento['id']);
  $ok = _prepareAndExecute($sql, $values);
  return $ok;
}