/** * Retorna as informações de uma instituicao * @param null $id * @return array */ public function getInstituicao($id = null) { if ($id) { $instituicao = Instituicao::findOrFail($id); $naturezaJuridica = DB::table('naturezasJuridicas')->select('naturezaJuridica')->where('idNatureza', '=', $instituicao->naturezaJuridica_id)->first(); $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(); $localidade = DB::table('localidades')->select('localidade')->where('idLocalidade', '=', $instituicao->endereco->localidade_id)->first(); $localizacao = DB::table('localizacoes')->select('localizacao')->where('idLocalizacao', '=', $instituicao->endereco->localizacao_id)->first(); return ['idInstituicao' => $instituicao->idInstituicao, 'nome' => $instituicao->nome, 'email' => $instituicao->email, 'url' => $instituicao->url, 'naturezaJuridica' => isset($naturezaJuridica->naturezaJuridica) ? $naturezaJuridica->naturezaJuridica : null, 'endereco' => ['cep' => $instituicao->endereco->cep, 'logradouro' => $instituicao->endereco->logradouro, 'numero' => $instituicao->endereco->numero, 'complemento' => $instituicao->endereco->complemento, 'bairro' => $instituicao->endereco->bairro, 'uf' => $uf->uf, 'cidade' => $cidade->nomeCidade, 'latitude' => $instituicao->endereco->latitude, 'longitude' => $instituicao->endereco->longitude, 'localidade' => isset($localidade->localidade) ? $localidade->localidade : null, 'localizacao' => isset($localizacao->localizacao) ? $localizacao->localizacao : null], 'telefones' => $instituicao->telefones]; } }
/** * 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, ['nome' => 'required', 'email' => 'required', 'url' => 'url', '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.localidade_id' => 'exists:localidades,idLocalidade', 'endereco.localizacao_id' => 'exists:localizacoes,idLocalizacao']); $instituicao = Instituicao::findOrFail($request['idInstituicao']); $instituicao->endereco()->update($request['endereco']); $instituicao->update($request->all()); $telefones = []; foreach ($request['telefones'] as $telefone) { if ($telefone['idTelefone'] == null) { $tel = $instituicao->telefones()->create($telefone); $telefones[] = $tel->idTelefone; } else { $tel = Telefone::find($telefone['idTelefone']); $tel->update($telefone); $telefones[] = $tel->idTelefone; } } $instituicao->telefones()->sync($telefones); return $this->show($instituicao->idInstituicao); }