find(Proyecto::class)->array(); $base_url = str_replace('/proyectos', '{URL}', $request->getUri()); array_walk($proyectos, function (&$item) use ($base_url) { $link = [ 'rel' => 'proyecto', 'title' => $item['descripcion'], 'href' => str_replace('{URL}', "/proyecto/{$item['id']}", $base_url) ]; $item['link'] = $link; }); return $this->withJson($response, compact('proyectos')); } public function show(Request $request, Response $response, Factory $factory, $proyecto_id): Response { $proyecto = $factory->find(Proyecto::class)->one($proyecto_id); $output = [ 'input' => $proyecto_id, 'proyecto' => $proyecto->toArray(), 'link' => [ 'rel' => 'proyectos', 'title' => 'Proyectos', 'href' => str_replace("/proyecto/{$proyecto_id}", '/proyectos', $request->getUri()) ] ]; $output['links'] = [ [ 'rel' => 'inmobiliaria', 'title' => $proyecto->inmobiliaria()->abreviacion, 'href' => str_replace("/proyecto/{$proyecto_id}", "/inmobiliaria/{$proyecto->inmobiliaria()->rut}", $request->getUri()) ], [ 'rel' => 'direccion', 'title' => $proyecto->direccion()->calle, 'href' => str_replace("/proyecto/{$proyecto_id}", "/direccion/{$proyecto->direccion}", $request->getUri()) ] ]; return $this->withJson($response, $output); } public function add(Request $request, Response $response, Factory $factory): Response { $post = $request->getParsedBody(); $output = [ 'input' => $post ]; if (in_array('proyectos', $post)) { $output['proyectos'] = []; foreach ($post['proyectos'] as $input) { $proyecto = Proyecto::add($factory, $input); $proyecto []= [ 'proyecto' => $proyecto->toArray(), 'created' => $proyecto->is_new() ? $proyecto->save() : false ]; } } elseif (in_array('proyecto', $post)) { $proyecto = Proyecto::add($factory, $post); $output['proyecto'] = $proyecto; $output['created'] = $proyecto->is_new() ? $proyecto->save() : false; } return $this->withJson($response, $output); } public function edit(Request $request, Response $response, Factory $factory, $proyecto_id): Response { $post = $request->getParsedBody(); $input = compact('proyecto_id', 'post'); $proyecto = $factory->find(Proyecto::class)->one($proyecto_id); $output = [ 'input' => $input, 'proyecto' => $proyecto->toArray() ]; $output['edited'] = $proyecto->edit($post); $output['changes'] = $proyecto->toArray(); return $this->withJson($response, $output); } public function delete(Request $request, Response $response, Factory $factory, $proyecto_id): Response { $proyecto = $factory->find(Proyecto::class)->one($proyecto_id); $output = [ 'input' => $proyecto_id, 'proyecto' => $proyecto->toArray() ]; $output['deleted'] = $proyecto->delete(); return $this->withJson($response, $output); } }