| Server IP : 54.233.248.239 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/app/Services/ |
Upload File : |
<?php
namespace App\Services;
use Illuminate\Support\Facades\Log;
use Exception;
use DB;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Permission;
use App\Gerador;
use Sentinel;
use File;
use App\CampoModulo;
use App\CampoOption;
use App\FkModulo;
use Illuminate\Database\Schema\Blueprint;
class GeradorService {
public static function createTable($input, $modulo){
if($modulo->id_tipo_modulo != 3){
$sqlColumns = '( id INT NOT NULL AUTO_INCREMENT, thumbnail_principal VARCHAR(255) DEFAULT NULL';
if($modulo->id_tipo_modulo != 4){
$sqlDescricaoColumns = '( id INT NOT NULL AUTO_INCREMENT, '.$modulo->nome_tabela.'_id INT (11) NOT NULL, locale VARCHAR (10) NOT NULL';
}
}else{
$sqlColumns = '( id INT NOT NULL AUTO_INCREMENT';
}
if($modulo->id_tipo_modulo == 1 || $modulo->id_tipo_modulo == 4){
$sqlColumns .= ', meta_keywords TEXT DEFAULT NULL, meta_descricao TEXT DEFAULT NULL, slug VARCHAR(255) NOT NULL';
}
if(isset($input['campo-nome']) && count($input['campo-nome'])){
foreach ($input['campo-nome'] as $key => $nome_campo) {
switch ($input['campo-tipo-campo'][$key]) {
case 'INT':
$tipo = 'INT';
$valor_tipo = '(11)';
break;
case 'I':
$tipo = 'VARCHAR';
$valor_tipo = '(255)';
break;
case 'N':
$tipo = 'DECIMAL';
$valor_tipo = '(15,2)';
break;
case 'T':
$tipo = 'TEXT';
$valor_tipo = '';
break;
case 'D':
$tipo = 'DATE';
$valor_tipo = '';
break;
case 'DT':
$tipo = 'DATETIME';
$valor_tipo = '';
break;
case 'TIME':
$tipo = 'TIME';
$valor_tipo = '';
break;
case 'S':
$tipo = 'TINYINT';
$valor_tipo = '';
break;
case 'SI':
$tipo = 'VARCHAR';
$valor_tipo = '(255)';
break;
case 'E':
$tipo = 'ENUM';
$valor_tipo = '(';
if (isset($input['key-enum'][$key])) {
foreach ($input['key-enum'][$key] as $keyEnum => $chave) {
if($keyEnum)
$valor_tipo .= ',';
$valor_tipo .= "'".$chave."'";
}
}
$valor_tipo .= ')';
break;
}
if(!$input['campo-translatable'][$key]){
$sqlColumns .= ', '.$nome_campo.' '.$tipo.' '.$valor_tipo.' DEFAULT NULL';
}elseif($modulo->id_tipo_modulo != 3 && $modulo->id_tipo_modulo != 4){
$sqlDescricaoColumns .= ', '.$nome_campo.' '.$tipo.' '.$valor_tipo.' DEFAULT NULL';
}
$campoInfo = array(
'nome' => $nome_campo,
'valor_padrao' => $input['campo-valor-padrao'][$key],
'listagem' => $input['campo-listagem'][$key],
'required' => $input['campo-required'][$key],
'label' => $input['campo-label'][$key],
'required' => $input['campo-required'][$key],
'tipo_campo' => $input['campo-tipo-campo'][$key],
'translatable' => $input['campo-translatable'][$key],
'ordem' => $input['campo-ordem'][$key],
'id_modulo' => $modulo->id,
);
$id_campo_modulo = \App\CampoModulo::criar($campoInfo);
if($input['campo-tipo-campo'][$key] == 'E'){
if(isset($input['key-enum'][$key])){
foreach ($input['key-enum'][$key] as $keyEnum => $chave) {
$campoOption = new CampoOption();
$campoOption->id_campo_modulo = $id_campo_modulo;
$campoOption->chave = $chave;
$campoOption->valor = $input['value-enum'][$key][$keyEnum];
$campoOption->save();
}
}
}
}
}
if(isset($input['fk-nome']) && count($input['fk-nome'])){
foreach ($input['fk-nome'] as $key => $nome_fk) {
$sqlColumns .= ', ';
$sqlColumns .= $nome_fk.' INT (11) DEFAULT NULL';
$fkModulo = new FkModulo();
$fkModulo->nome = $nome_fk;
$fkModulo->label = $input['fk-label'][$key];
$fkModulo->id_modulo = $modulo->id;
$fkModulo->id_modulo_relacionado = $input['fk-modulo'][$key];
$fkModulo->id_campo_modulo_relacionado = $input['fk-campo-label'][$key];
$fkModulo->ordem = $input['fk-ordem'][$key];
$fkModulo->listagem = $input['fk-listagem'][$key];
$fkModulo->save();
}
}
$sqlColumns .= ', PRIMARY KEY (id)';
$fks = FkModulo::where('id_modulo', $modulo->id)->get();
foreach ($fks as $fk) {
$sqlColumns .= ', FOREIGN KEY ('.$fk->nome.') REFERENCES '.$fk->moduloRelacionado->nome_tabela.'(id)';
}
$sqlColumns .= ')';
DB::statement('SET foreign_key_checks = 0');
DB::statement('CREATE TABLE '.$input['nome_tabela'].' '.$sqlColumns);
if($modulo->id_tipo_modulo != 3){
if($modulo->id_tipo_modulo != 4){
$sqlDescricaoColumns .= ', PRIMARY KEY (id), FOREIGN KEY ('.$modulo->nome_tabela.'_id) REFERENCES '.$modulo->nome_tabela.' (id) ON DELETE CASCADE';
$sqlDescricaoColumns .= ')';
DB::statement('CREATE TABLE '.$input['nome_tabela'].'_descricao '.$sqlDescricaoColumns);
}
DB::statement('CREATE TABLE '.$input['nome_tabela'].'_imagens (id INT NOT NULL AUTO_INCREMENT, thumbnail_principal VARCHAR (255) DEFAULT NULL, id_'.$modulo->item_modulo.' INT(11) NOT NULL, PRIMARY KEY (id))');
}
if($modulo->id_tipo_modulo == 2){
DB::statement('INSERT INTO '.$input['nome_tabela'].' (id) VALUES (1)');
}
DB::statement('SET foreign_key_checks = 1');
return true;
}
}