select([ 'cadastro_material.id', 'cadastro_material.descricao', ]) ->join('cadastro_material_integracao_bnafar_medicamento', 'cadastro_material_integracao_bnafar_medicamento.material_id', 'cadastro_material.id') ->where('cadastro_material_integracao_bnafar_medicamento.medicamento_id', $id) ->get(); $log = DB::table('cadastro_material') ->select([ DB::raw("DATE_FORMAT(log_cadastro_material_integracao_bnafar_medicamento.created_at, '%d/%m/%Y %h:%i') AS data_hora"), 'log_operacao.nome AS operacao_nome', 'cadastro_material.descricao AS material_descricao', 'cadastro_cidadao.nome AS usuario_nome', ]) ->join('log_cadastro_material_integracao_bnafar_medicamento', 'log_cadastro_material_integracao_bnafar_medicamento.material_id', 'cadastro_material.id') ->join('log_operacao', 'log_operacao.id', 'log_cadastro_material_integracao_bnafar_medicamento.operacao_id') ->join('cadastro_lotacao', 'cadastro_lotacao.id', 'log_cadastro_material_integracao_bnafar_medicamento.created_lotacao_id') ->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id') ->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id') ->where('log_cadastro_material_integracao_bnafar_medicamento.medicamento_id', $id) ->get(); return [ 'materiais' => $materiais, 'log' => $log, ]; } public static function store($request) { $medicamento = Medicamento::find($request->medicamento_id); $sync = $medicamento->materiais()->sync($request->materiais); foreach ($sync['attached'] as $value) { CadastroMaterialIntegracaoBnafarMedicamento::create([ 'operacao_id' => Operacao::INCLUSAO, 'medicamento_id' => $medicamento->id, 'material_id' => $value, ]); } foreach ($sync['detached'] as $value) { CadastroMaterialIntegracaoBnafarMedicamento::create([ 'operacao_id' => Operacao::EXCLUSAO, 'medicamento_id' => $medicamento->id, 'material_id' => $value, ]); } } public static function datatable() { return DB::table('integracao_bnafar_medicamento') ->select([ 'integracao_bnafar_medicamento.id AS medicamento_id', 'integracao_bnafar_medicamento.codigo AS medicamento_codigo', 'integracao_bnafar_medicamento.descricao AS medicamento_descricao', DB::raw("GROUP_CONCAT(DISTINCT cadastro_material.descricao SEPARATOR ', ') AS material_descricao"), ]) ->leftJoin('cadastro_material_integracao_bnafar_medicamento', 'cadastro_material_integracao_bnafar_medicamento.medicamento_id', 'integracao_bnafar_medicamento.id') ->leftJoin('cadastro_material', 'cadastro_material.id', 'cadastro_material_integracao_bnafar_medicamento.material_id') ->groupBy([ 'integracao_bnafar_medicamento.id', 'integracao_bnafar_medicamento.codigo', 'integracao_bnafar_medicamento.descricao', ]); } }