Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.7 kB
3
Indexable
Never
<?php

use App\Model\User;
use App\Model\Perfil;
use App\Model\ControlItem;
use Illuminate\Database\Seeder;
use App\Model\ControlItemPerfil;

class ControlItemMenuImportUsuarioSeeder extends Seeder
{
    public $itens = [
        [
            'des_label_control'			=> 'Usuário - Import',
            'cod_control'				=> 'MN_DIR_IMPORT_USUARIOS',
            'des_control_01'		 	=> 'Visualiza Menu', 
            'val_control_01'			=> 'N',
            'des_control_02'		 	=> 'Utiliza Regra secundária de validação?(S-Sim N-Não)', 
            'val_control_02'			=> 'S',
            'des_control_03'		 	=> 'Ordem', 
            'val_control_03'			=> '4',
            'des_control_04'		 	=> 'Ícone', 
            'val_control_04'			=> 'tasks',
            'des_control_05'		 	=> 'Link Página',
            'des_control_06'		 	=> 'Control PAI', 
            'val_control_06'			=> '27',
            'control_tipo_id'			=> 2 
        ]
    ];

    protected $padraoPerfis = [
        'MN_DIR_IMPORT_USUARIOS' => [
            [
                'perfil_id'         => 1,
                'val_control_01'    => 'S',
            ],
            [
                'perfil_id'         => 2,
                'val_control_01'    => 'S',
            ],
            [
                'perfil_id'         => 3,
                'val_control_01'    => 'S',
            ]
        ]
    ];

    private function saveControl($control){
        $itemControl = ControlItem::where('cod_control', $control['cod_control'])->first();
        if(!$itemControl){
            unset($control['filhos']);
            $itemControl = new ControlItem($control);
            $itemControl->usuario_id_criacao   = 1;
            $itemControl->usuario_id_alteracao = 1;
            $itemControl->ind_situacao         = 'A';
            $itemControl->save();
            
        }
        if(isset($this->padraoPerfis[$control['cod_control']])){
            foreach ($this->padraoPerfis[$control['cod_control']] as $key => $perfil){
                if(!ControlItemPerfil::where('control_item_id',$itemControl->control_item_id)->where('perfil_id',$perfil['perfil_id'])->exists() ){
                    if(Perfil::find($perfil['perfil_id'])){
                        $item = new ControlItemPerfil($perfil);
                        $item->control_item_id      = $itemControl->control_item_id;
                        $item->perfil_id            = $perfil['perfil_id'];
                        $item->usuario_id_criacao   = 1;
                        $item->usuario_id_alteracao = 1;
                        $item->ind_situacao = 'A';
                        $item->save();
                    }
                }
            }
        }
        
        return $itemControl;
    }

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        foreach ($this->itens as $key => $control) {
            if(User::find(1)){
                $controlSave = $this->saveControl($control);
            }
        }
    }


    public function rollback()
    {
        foreach ($this->itens as $key => $control) {
            $itemControl = ControlItem::where('cod_control', $control['cod_control'])->first();
            if($itemControl && isset($this->padraoPerfis[$control['cod_control']])){
                foreach ($this->padraoPerfis[$control['cod_control']] as $key => $perfil){
                    ControlItemPerfil::where('control_item_id',$itemControl->control_item_id)->where('perfil_id',$perfil['perfil_id'])->forceDelete();
                }
            }
            ControlItem::where('cod_control', $control['cod_control'])->forceDelete();
        }
    }

}