public function salvar($request, $id, $tipo_operacao) { /* ------------------ INICIA TRANSACTION -----------------------*/ \DB::transaction(function () use($request, $id, $tipo_operacao) { $input = $request->except(array('_token')); //não levar o token $this->validate($request, ['celulas' => 'required', 'mes' => 'required', 'ano' => 'required', 'data_encontro' => 'required']); $descricao_celula = explode("|", $input["celulas"]); if ($tipo_operacao == "create") { $dados = new controle_atividades(); } else { $dados = controle_atividades::firstOrNew(['id' => $id]); } $dados->empresas_clientes_cloud_id = $this->dados_login->empresas_clientes_cloud_id; $dados->empresas_id = $this->dados_login->empresas_id; $dados->celulas_id = $descricao_celula[0]; $dados->data_encontro = $input['ano'] . "-" . $input['mes'] . "-" . $input['data_encontro']; $dados->dia = $input['data_encontro']; $dados->mes = $input['mes']; $dados->ano = $input['ano']; $dados->hora_inicio = $input['hora_inicio']; $dados->hora_fim = $input['hora_fim']; //$dados->valor_oferta = ($input['valor_oferta']=="" ? null : $this->formatador->GravarCurrency($input['valor_oferta'])); $dados->obs = trim($input['observacao']); $dados->link_externo = trim($input['link_externo']); $dados->texto = trim($input['texto_encontro']); $dados->lider_pessoas_id = substr($descricao_celula[1], 0, 9); if (isset($input["ckFinalizar"])) { $dados->encontro_encerrado = $input["ckFinalizar"] ? "S" : "N"; } $dados->save(); $id_atividade = $dados->id; //Pega ID recem criado //Controle de presenca if ($id_atividade != "") { $i_index = 0; /*initialize*/ $var_total_membros_presentes = 0; /* $input['id_obs_membro'] have all indexes with ID */ if (isset($input['id_obs_membro'])) { foreach ($input['id_obs_membro'] as $selected) { $whereForEach = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade, 'pessoas_id' => $selected]; $controle_presencas = \App\Models\controle_presencas::firstOrNew($whereForEach); $presenca = ""; //initialize if (isset($input['presenca'])) { //if found value in ck_resposta array if (in_array($selected, $input['presenca'])) { $presenca = "S"; //Yes $var_total_membros_presentes = $var_total_membros_presentes + 1; } } $valores = ['pessoas_id' => $selected, 'empresas_id' => $this->dados_login->empresas_id, 'empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'controle_atividades_id' => $id_atividade, 'presenca_simples' => $presenca, 'observacao' => $input['obs_membro'][$i_index] == "" ? null : $input['obs_membro'][$i_index]]; $controle_presencas->fill($valores)->save(); $controle_presencas->save(); $i_index = $i_index + 1; //Incrementa sequencia do array para pegar proximos campos (se houver) } //end foreach } //Visitantes $i_index = 0; /*initialize*/ $var_total_visitantes = 0; //Excluir antes... $where = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade]; $excluir = \App\Models\controle_visitantes::where($where)->delete(); if (isset($input['nome_visitante'])) { foreach ($input['nome_visitante'] as $selected) { if ($selected != "") { $whereForEach = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade, 'nome' => $selected]; $controle_visitantes = \App\Models\controle_visitantes::firstOrNew($whereForEach); $valores = ['nome' => $selected, 'empresas_id' => $this->dados_login->empresas_id, 'empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'controle_atividades_id' => $id_atividade, 'fone' => $input['fone_visitante'][$i_index] == "" ? null : $input['fone_visitante'][$i_index], 'email' => $input['email_visitante'][$i_index] == "" ? null : $input['email_visitante'][$i_index]]; $controle_visitantes->fill($valores)->save(); $controle_visitantes->save(); $i_index = $i_index + 1; //Incrementa sequencia do array para pegar proximos campos (se houver) $var_total_visitantes = $var_total_visitantes + 1; } } //end for each visitantes } //questions $i_index = 0; /*initialize*/ if (isset($input['id_hidden_pergunta'])) { foreach ($input['id_hidden_pergunta'] as $selected) { $whereForEach = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade, 'questionarios_id' => $selected]; $controle_questions = \App\Models\controle_questions::firstOrNew($whereForEach); $answer = ""; //initialize //if found value in ck_resposta array if (in_array($selected, $input['ck_resposta'])) { $answer = "S"; } if ($answer == "") { if (array_key_exists($i_index, $input['text_resposta'])) { $answer = $input['text_resposta'][$i_index]; } } $valores = ['questionarios_id' => $selected, 'empresas_id' => $this->dados_login->empresas_id, 'empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'controle_atividades_id' => $id_atividade, 'resposta' => $answer]; $controle_questions->fill($valores)->save(); $controle_questions->save(); $i_index = $i_index + 1; //Incrementa sequencia do array para pegar proximos campos (se houver) } //end for each question } } //----------------------------RESUMO ENCONTRO------------------------------------- $whereForEach = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade]; $controle_resumo = \App\Models\controle_resumo::firstOrNew($whereForEach); $valores = ['empresas_id' => $this->dados_login->empresas_id, 'empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'controle_atividades_id' => $id_atividade, 'total_membros' => $var_total_membros_presentes, 'total_visitantes' => $var_total_visitantes, 'total_geral' => $var_total_membros_presentes + $var_total_visitantes]; $controle_resumo->fill($valores)->save(); $controle_resumo->save(); //----------------------------FIM RESUMO ENCONTRO------------------------------------- /* //--------------------------RESUMO POR TIPOS DE PESSOAS //Excluir antes... $where = [ 'empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade ]; $excluir = \App\Models\controle_resumo_tipo_pessoa::where($where)->delete(); $strSql = " INSERT INTO controle_resumo_tipo_pessoa (empresas_id, empresas_clientes_cloud_id, controle_atividades_id, tipos_pessoas_id, total)"; $strSql .= " SELECT cp.empresas_id, cp.empresas_clientes_cloud_id , cp.controle_atividades_id , p.tipos_pessoas_id, count(p.tipos_pessoas_id) FROM "; $strSql .= " controle_presencas cp INNER JOIN pessoas p on cp.pessoas_id = p.id and cp.empresas_id = p.empresas_id and cp.empresas_clientes_cloud_id = p.empresas_clientes_cloud_id "; $strSql .= " WHERE "; //$strSql .= " cp.presenca_simples = 'S' AND "; $strSql .= " cp.controle_atividades_id = " . $id_atividade . " AND "; $strSql .= " cp.empresas_id = " . $this->dados_login->empresas_id . " AND "; $strSql .= " cp.empresas_clientes_cloud_id = " . $this->dados_login->empresas_clientes_cloud_id . ""; $strSql .= " group by cp.empresas_id, cp.empresas_clientes_cloud_id , cp.controle_atividades_id , p.tipos_pessoas_id"; $gravar_resumo = \DB::select($strSql); //--------------------------FIM - RESUMO POR TIPOS DE PESSOAS */ //-------------------------------------------------Material para encontro-------------------------------------------------- //UPLOAD FILES $fileName = ""; $file_count = 0; $uploadcount = 0; $lista_arquivos = ""; $seq = 0; $arquivo = $request->file('upload_arquivo'); if ($request->hasFile('upload_arquivo')) { $file_count = count($arquivo); foreach ($arquivo as $file) { if ($_FILES["upload_arquivo"]["size"][$seq] <= 200000) { //caminho onde será gravado $destinationPath = base_path() . '/public/arquivos/encontros'; $fileName = $file->getClientOriginalName(); // renameing image $file->move($destinationPath, $fileName); // uploading file to given path $whereForEach = ['empresas_clientes_cloud_id' => $this->dados_login->empresas_clientes_cloud_id, 'empresas_id' => $this->dados_login->empresas_id, 'controle_atividades_id' => $id_atividade, 'arquivo' => $fileName]; $controle_materiais = \App\Models\controle_materiais::firstOrNew($whereForEach); $controle_materiais->empresas_clientes_cloud_id = $this->dados_login->empresas_clientes_cloud_id; $controle_materiais->empresas_id = $this->dados_login->empresas_id; $controle_materiais->controle_atividades_id = $id_atividade; $controle_materiais->arquivo = $fileName; $controle_materiais->save(); $uploadcount++; //contabiliza somente enviados } else { if ($lista_arquivos == "") { $lista_arquivos = $file->getClientOriginalName(); } else { $lista_arquivos .= "," . $file->getClientOriginalName(); } } $seq++; //sequencial de arquivos } } if ($uploadcount != $file_count) { \Session::flash('flash_message_erro', 'Os dados foram salvos, porém existe(m) arquivo(s) com tamanho máximo excedido : ' . $lista_arquivos); return redirect($this->rota); } //-------------------------------------------------FIM Material para encontro-------------------------------------------------- return $id_atividade; }); // ------------ FIM TRANSACTION }