コード例 #1
0
 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
 }