/** * Retorna as informações de uma iniciativa * @param $id */ public function getIniciativa($id = null) { if ($id) { $iniciativa = Iniciativa::findOrFail($id); $instituicoes = []; foreach ($iniciativa->instituicoes as $instituicao) { $cidade = DB::table('cidades')->select('nomeCidade', 'uf_id')->where('idCidade', '=', $instituicao->endereco->cidade_id)->first(); $uf = DB::table('uf')->select('uf')->where('idUf', '=', $cidade->uf_id)->first(); $instituicoes[] = array('idInstituicao' => $instituicao->idInstituicao, 'nome' => $instituicao->nome, 'nomeCidade' => $cidade->nomeCidade, 'uf' => $uf->uf, 'tipoVinculo' => $instituicao->pivot->tipoVinculo == 1 ? 'Apoiador' : 'Mantenendor'); } $dimensoes = []; $dm = DB::table('dimensoes')->select('dimensao', 'idDimensao')->lists('dimensao', 'idDimensao'); foreach ($iniciativa->dimensoes as $dimensao) { $dimensoes[] = $dm[$dimensao->idDimensao]; } $cidade = DB::table('cidades')->select('nomeCidade', 'uf_id')->where('idCidade', '=', $iniciativa->endereco->cidade_id)->first(); $uf = DB::table('uf')->select('uf')->where('idUf', '=', $cidade->uf_id)->first(); $tipo = DB::table('iniciativaTipos')->select('tipo')->where('idTipo', '=', $iniciativa->tipo_id)->first(); $localidade = DB::table('localidades')->select('localidade')->where('idLocalidade', '=', $iniciativa->endereco->localidade_id)->first(); $localizacao = DB::table('localizacoes')->select('localizacao')->where('idLocalizacao', '=', $iniciativa->endereco->localizacao_id)->first(); $naturezaJuridica = DB::table('naturezasJuridicas')->select('naturezaJuridica')->where('idNatureza', '=', $iniciativa->naturezaJuridica_id)->first(); $categoria = DB::table('iniciativaCategorias')->select('categoria')->where('idCategoria', '=', $iniciativa->categoria_id)->first(); return ['idIniciativa' => $iniciativa->idIniciativa, 'tipo' => isset($tipo->tipo) ? $tipo->tipo : null, 'nome' => $iniciativa->nome, 'sigla' => $iniciativa->sigla, 'endereco' => ['cep' => $iniciativa->endereco->cep, 'logradouro' => $iniciativa->endereco->logradouro, 'numero' => $iniciativa->endereco->numero, 'complemento' => $iniciativa->endereco->complemento, 'bairro' => $iniciativa->endereco->bairro, 'uf' => $uf->uf, 'cidade' => $cidade->nomeCidade, 'latitude' => $iniciativa->endereco->latitude, 'longitude' => $iniciativa->endereco->longitude, 'localidade' => isset($localidade->localidade) ? $localidade->localidade : null, 'localizacao' => isset($localizacao->localizacao) ? $localizacao->localizacao : null], 'email' => $iniciativa->email, 'url' => $iniciativa->url, 'objetivo' => $iniciativa->objetivo, 'informacaoComplementar' => $iniciativa->informacaoComplementar, 'categoria' => isset($categoria->categoria) ? $categoria->categoria : null, 'fonte' => $iniciativa->fonte, 'telefones' => $iniciativa->telefones, 'instituicoes' => $instituicoes, 'dimensoes' => $dimensoes]; } }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request) { $this->validate($request, ['tipo_id' => 'required|exists:iniciativaTipos,idTipo', 'nome' => 'required|min:3|max:255', 'sigla' => 'min:2|max:10', 'endereco.logradouro' => 'required|min:3|max:150', 'endereco.bairro' => 'required|min:3|max:150', 'endereco.uf' => 'required', 'endereco.cidade_id' => 'required|exists:cidades,idCidade', 'endereco.latitude' => 'numeric', 'endereco.longitude' => 'numeric', 'endereco.localidade_id' => 'exists:localidades,idLocalidade', 'endereco.localizacao_id' => 'exists:localizacoes,idLocalizacao', 'naturezaJuridica_id' => 'exists:naturezasJuridicas,idNatureza', 'email' => 'required|email', 'url' => 'url', 'objetivo' => 'min:3|max:255', 'informacaoComplementar' => 'min:3|max:1000', 'categoria_id' => 'required|exists:iniciativaCategorias,idCategoria', 'fonte' => 'required|min:3|max:255']); $iniciativa = Iniciativa::findOrFail($request['idIniciativa']); $iniciativa->endereco()->update($request['endereco']); $iniciativa->update($request->all()); $telefones = []; foreach ($request['telefones'] as $telefone) { if ($telefone['idTelefone'] == null) { $tel = $iniciativa->telefones()->create($telefone); $telefones[] = $tel->idTelefone; } else { $tel = Telefone::find($telefone['idTelefone']); $tel->update($telefone); $telefones[] = $tel->idTelefone; } } $iniciativa->telefones()->sync($telefones); $instituicoes = []; foreach ($request['instituicoes'] as $instituicao) { $instituicoes[$instituicao['idInstituicao']] = array('tipoVinculo' => $instituicao['tipoVinculo']); } $iniciativa->instituicoes()->sync($instituicoes); $iniciativa->dimensoes()->sync($request['dimensoes']); return $this->show($iniciativa->idIniciativa); }