Proyectos -> Productos
This commit is contained in:
@ -6,58 +6,58 @@ use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
use Slim\Views\Blade as View;
|
||||
|
||||
class Proyectos {
|
||||
class Productos {
|
||||
public function __invoke(Request $request, Response $response, Container $container, View $view): Response {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'segmentos.json'
|
||||
]);
|
||||
$segmentos = json_decode(trim(file_get_contents($filename)));
|
||||
return $view->render($response, 'proyectos.list', compact('segmentos'));
|
||||
return $view->render($response, 'productos.list', compact('segmentos'));
|
||||
}
|
||||
public function show(Request $request, Response $response, Container $container, View $view, $proyecto): Response {
|
||||
public function show(Request $request, Response $response, Container $container, View $view, $producto): Response {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'proyectos.json'
|
||||
'productos.json'
|
||||
]);
|
||||
$proyectos = json_decode(trim(file_get_contents($filename)));
|
||||
$productos = json_decode(trim(file_get_contents($filename)));
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'destacados.json'
|
||||
]);
|
||||
$destacados = json_decode(trim(file_get_contents($filename)));
|
||||
$destacado = false;
|
||||
if (array_search($proyecto, $destacados) !== false) {
|
||||
if (array_search($producto, $destacados) !== false) {
|
||||
$destacado = true;
|
||||
}
|
||||
$id = $proyecto;
|
||||
$proyecto = $proyectos[$proyecto];
|
||||
$proyecto->destacado = $destacado;
|
||||
$proyecto->id = $id;
|
||||
$id = $producto;
|
||||
$producto = $productos[$producto];
|
||||
$producto->destacado = $destacado;
|
||||
$producto->id = $id;
|
||||
$folder = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.public'),
|
||||
'assets',
|
||||
'images',
|
||||
mb_strtolower($proyecto->edificio)
|
||||
mb_strtolower($producto->nombre)
|
||||
]);
|
||||
$files = new \DirectoryIterator($folder);
|
||||
$proyecto->images = [];
|
||||
$producto->images = [];
|
||||
foreach ($files as $file) {
|
||||
if ($file->isDir()) {
|
||||
continue;
|
||||
}
|
||||
$proyecto->images []= $file->getFilename();
|
||||
$producto->images []= $file->getFilename();
|
||||
}
|
||||
return $view->render($response, 'proyectos.show', compact('proyecto'));
|
||||
return $view->render($response, 'productos.show', compact('producto'));
|
||||
}
|
||||
public function segmento(Request $request, Response $response, Container $container, $segmento): Response {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'proyectos.json'
|
||||
'productos.json'
|
||||
]);
|
||||
$proyectos = json_decode(trim(file_get_contents($filename)));
|
||||
$productos = json_decode(trim(file_get_contents($filename)));
|
||||
if ($segmento != 'todo') {
|
||||
$proyectos = array_filter($proyectos, function($item) use ($segmento) {
|
||||
$productos = array_filter($productos, function($item) use ($segmento) {
|
||||
return (str_replace(' ', '_', mb_strtolower($item->segmento)) == $segmento);
|
||||
});
|
||||
}
|
||||
@ -65,7 +65,7 @@ class Proyectos {
|
||||
'information' => [
|
||||
'segmento' => $segmento
|
||||
],
|
||||
'proyectos' => array_keys($proyectos)
|
||||
'productos' => array_keys($productos)
|
||||
];
|
||||
$response->getBody()->write(json_encode($output));
|
||||
return $response
|
||||
@ -93,25 +93,25 @@ class Proyectos {
|
||||
->withHeader('Content-Type', 'application/json')
|
||||
->withStatus(201);
|
||||
}
|
||||
public function ficha(Request $request, Response $response, Container $container, View $view, $proyecto): Response {
|
||||
public function ficha(Request $request, Response $response, Container $container, View $view, $producto): Response {
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'proyectos.json'
|
||||
'productos.json'
|
||||
]);
|
||||
$proyectos = json_decode(trim(file_get_contents($filename)));
|
||||
$productos = json_decode(trim(file_get_contents($filename)));
|
||||
$filename = implode(DIRECTORY_SEPARATOR, [
|
||||
$container->get('folders.data'),
|
||||
'destacados.json'
|
||||
]);
|
||||
$destacados = json_decode(trim(file_get_contents($filename)));
|
||||
$destacado = false;
|
||||
if (array_search($proyecto, $destacados) !== false) {
|
||||
if (array_search($producto, $destacados) !== false) {
|
||||
$destacado = true;
|
||||
}
|
||||
$id = $proyecto;
|
||||
$proyecto = $proyectos[$proyecto];
|
||||
$proyecto->destacado = $destacado;
|
||||
$proyecto->id = $id;
|
||||
return $view->render($response, 'proyectos.ficha', compact('proyecto'));
|
||||
$id = $producto;
|
||||
$producto = $productos[$producto];
|
||||
$producto->destacado = $destacado;
|
||||
$producto->id = $id;
|
||||
return $view->render($response, 'productos.ficha', compact('producto'));
|
||||
}
|
||||
}
|
12
resources/routes/web/productos.php
Normal file
12
resources/routes/web/productos.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
use ProVM\KI\Common\Controller\Web\Productos;
|
||||
|
||||
$app->group('/productos', function($app) {
|
||||
$app->get('/segmento/{segmento}', [Productos::class, 'segmento']);
|
||||
$app->get('/destacados/{page}', [Productos::class, 'destacados']);
|
||||
$app->get('[/]', productos::class);
|
||||
});
|
||||
$app->group('/producto/{producto}', function($app) {
|
||||
$app->get('/ficha', [Productos::class, 'ficha']);
|
||||
$app->get('[/]', [Productos::class, 'show']);
|
||||
});
|
@ -1,12 +0,0 @@
|
||||
<?php
|
||||
use ProVM\KI\Common\Controller\Web\Proyectos;
|
||||
|
||||
$app->group('/proyectos', function($app) {
|
||||
$app->get('/segmento/{segmento}', [Proyectos::class, 'segmento']);
|
||||
$app->get('/destacados/{page}', [Proyectos::class, 'destacados']);
|
||||
$app->get('[/]', Proyectos::class);
|
||||
});
|
||||
$app->group('/proyecto/{proyecto}', function($app) {
|
||||
$app->get('/ficha', [Proyectos::class, 'ficha']);
|
||||
$app->get('[/]', [Proyectos::class, 'show']);
|
||||
});
|
@ -1,54 +1,54 @@
|
||||
<div class="ui card ficha">
|
||||
<div class="content">
|
||||
<div class="header">
|
||||
{{$proyecto->edificio}}
|
||||
{{$producto->nombre}}
|
||||
</div>
|
||||
<div class="right floated meta">
|
||||
{{$proyecto->segmento}}
|
||||
{{$producto->segmento}}
|
||||
</div>
|
||||
<div class="descripcion">
|
||||
{{$proyecto->comuna}}
|
||||
{{$producto->comuna}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="medium image">
|
||||
@if ($proyecto->destacado)
|
||||
@if ($producto->destacado)
|
||||
<div class="overlay">Destacado</div>
|
||||
@endif
|
||||
<img src="{{$urls->images}}/{{$proyecto->imagen}}" />
|
||||
<img src="{{$urls->images}}/{{$producto->imagen}}" />
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="ui basic segment">
|
||||
<span class="right floated">
|
||||
{{$proyecto->valor}} UF
|
||||
{{$producto->valor}} UF
|
||||
</span>
|
||||
Valor depto
|
||||
</div>
|
||||
<div class="ui basic segment">
|
||||
<span class="right floated">
|
||||
{{$proyecto->bono}} UF
|
||||
{{$producto->bono}} UF
|
||||
</span>
|
||||
Bono Pie
|
||||
</div>
|
||||
<div class="ui basic segment">
|
||||
<span class="right floated">
|
||||
{{$proyecto->rentabilidad}}%
|
||||
{{$producto->rentabilidad}}%
|
||||
</span>
|
||||
Rentabilidad
|
||||
</div>
|
||||
<div class="ui basic segment">
|
||||
<span class="right floated">
|
||||
{{$proyecto->cuota}} UF
|
||||
{{$producto->cuota}} UF
|
||||
</span>
|
||||
Valor cuota
|
||||
</div>
|
||||
<div class="ui basic segment">
|
||||
<span class="right floated">
|
||||
{{$proyecto->entrega}}
|
||||
{{$producto->entrega}}
|
||||
</span>
|
||||
Entrega Estimada
|
||||
</div>
|
||||
<span class="right floated">
|
||||
<a href="{{$urls->base}}/proyecto/{{$proyecto->id}}">
|
||||
<a href="{{$urls->base}}/producto/{{$producto->id}}">
|
||||
<button class="ui inverted brand button">
|
||||
Ver
|
||||
</button>
|
@ -1,7 +1,7 @@
|
||||
@extends('layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div id="proyectos">
|
||||
<div id="productos">
|
||||
<div class="ui container">
|
||||
<div class="ui header titulo">
|
||||
PRODUCTOS
|
||||
@ -29,7 +29,7 @@
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->styles}}/proyectos.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->styles}}/productos.css" />
|
||||
@endpush
|
||||
|
||||
@push('scripts')
|
||||
@ -48,20 +48,20 @@
|
||||
if (name.indexOf(' ') > -1) {
|
||||
name = name.replaceAll(' ', '_')
|
||||
}
|
||||
var url = '{{$urls->base}}/proyectos/segmento/' + name
|
||||
var url = '{{$urls->base}}/productos/segmento/' + name
|
||||
$(".tab[data-tab='" + segmento + "']").find('.grid').html('')
|
||||
loaded[segmento] = true
|
||||
$.getJSON(url, (data) => {
|
||||
$(".tab[data-tab='" + segmento + "']").find('.grid').append(
|
||||
$('<div></div>').attr('class', 'ui active centered inline loader')
|
||||
)
|
||||
$.each(data.proyectos, (i, el) => {
|
||||
getProyecto(segmento, el)
|
||||
$.each(data.productos, (i, el) => {
|
||||
getProducto(segmento, el)
|
||||
})
|
||||
})
|
||||
}
|
||||
function getProyecto(segmento, id_proyecto) {
|
||||
var url = '{{$urls->base}}/proyecto/' + id_proyecto + '/ficha'
|
||||
function getProducto(segmento, id_producto) {
|
||||
var url = '{{$urls->base}}/producto/' + id_producto + '/ficha'
|
||||
$.ajax({
|
||||
url: url,
|
||||
success: (data) => {
|
||||
@ -76,7 +76,7 @@
|
||||
}
|
||||
$(document).ready(() => {
|
||||
loadSegmento('todo')
|
||||
$('#proyectos').find('.tabular.menu .item').tab({
|
||||
$('#productos').find('.tabular.menu .item').tab({
|
||||
onFirstLoad: (tabPath, parameterArray, historyEvent) => {
|
||||
if (tabPath == 'todo') {
|
||||
return
|
||||
@ -86,7 +86,7 @@
|
||||
})
|
||||
if (window.location.hash) {
|
||||
var start = (window.location.hash).replace('#', '').replace('%20', ' ')
|
||||
$('#proyectos').find('.tabular.menu .item').tab('change tab', start)
|
||||
$('#productos').find('.tabular.menu .item').tab('change tab', start)
|
||||
}
|
||||
})
|
||||
</script>
|
@ -3,7 +3,7 @@
|
||||
<a class="active item" data-tab="informacion">Información</a>
|
||||
<a class="item" data-tab="mapa">Ver Mapa</a>
|
||||
<a class="item" data-tab="video">Video</a>
|
||||
<a class="item" data-tab="estado">Estado del Proyecto</a>
|
||||
<a class="item" data-tab="estado">Estado del producto</a>
|
||||
</div>
|
||||
<div class="ui bottom attached basic segment active tab" data-tab="informacion">
|
||||
<div class="ui grid">
|
||||
@ -14,7 +14,7 @@
|
||||
Precio:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->valor}} UF
|
||||
{{$producto->valor}} UF
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -22,7 +22,7 @@
|
||||
Estado:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->estado}}
|
||||
{{$producto->estado}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -30,7 +30,7 @@
|
||||
Tipo:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->segmento}}
|
||||
{{$producto->segmento}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -38,7 +38,7 @@
|
||||
Ubicación:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->comuna}}, {{$proyecto->ciudad}}
|
||||
{{$producto->comuna}}, {{$producto->ciudad}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -46,7 +46,7 @@
|
||||
Unidades:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->unidades}}
|
||||
{{$producto->unidades}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -54,7 +54,7 @@
|
||||
Modelos:
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->modelos}}
|
||||
{{$producto->modelos}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -62,13 +62,13 @@
|
||||
Tamaño
|
||||
</div>
|
||||
<div class="column">
|
||||
{{$proyecto->tamaño}}
|
||||
{{$producto->tamaño}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="twelve wide column">
|
||||
{{$proyecto->descripcion}}
|
||||
{{$producto->descripcion}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,15 +1,15 @@
|
||||
<div id="galeria">
|
||||
<div class="ui image" data-id="0">
|
||||
<img src="{{$urls->images}}/{{mb_strtolower($proyecto->edificio)}}/{{$proyecto->imagen}}" />
|
||||
<img src="{{$urls->images}}/{{mb_strtolower($producto->nombre)}}/{{$producto->imagen}}" />
|
||||
</div>
|
||||
<div class="ui grid" id="thumbnails">
|
||||
@foreach ($proyecto->images as $i => $image)
|
||||
@foreach ($producto->images as $i => $image)
|
||||
@if ($i == 0)
|
||||
@continue
|
||||
@endif
|
||||
<div class="three wide column">
|
||||
<div class="ui image" data-id="{{$i}}">
|
||||
<img src="{{$urls->images}}/{{mb_strtolower($proyecto->edificio)}}/{{$image}}" />
|
||||
<img src="{{$urls->images}}/{{mb_strtolower($producto->nombre)}}/{{$image}}" />
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@ -19,8 +19,8 @@
|
||||
@push('scripts')
|
||||
<script type="text/javascript">
|
||||
var images = [
|
||||
@foreach ($proyecto->images as $image)
|
||||
'{{$urls->images}}/{{mb_strtolower($proyecto->edificio)}}/{{$image}}',
|
||||
@foreach ($producto->images as $image)
|
||||
'{{$urls->images}}/{{mb_strtolower($producto->nombre)}}/{{$image}}',
|
||||
@endforeach
|
||||
]
|
||||
function populateThumbs(current) {
|
@ -1,23 +1,23 @@
|
||||
@extends('layout.base')
|
||||
|
||||
@section('page_content')
|
||||
<div id="proyecto">
|
||||
<div id="producto">
|
||||
<div class="ui container">
|
||||
<div class="ui one columns grid">
|
||||
<div class="column">
|
||||
<div class="titulo">
|
||||
<span class="ui header">
|
||||
{{$proyecto->edificio}}
|
||||
{{$producto->nombre}}
|
||||
</span>
|
||||
<span class="direccion">
|
||||
{{$proyecto->direccion}}, {{$proyecto->comuna}}, {{$proyecto->ciudad}}
|
||||
{{$producto->direccion}}, {{$producto->comuna}}, {{$producto->ciudad}}
|
||||
</span>
|
||||
<div class="publicado">
|
||||
Publicado el {{$proyecto->publicacion}}
|
||||
Publicado el {{$producto->publicacion}}
|
||||
</div>
|
||||
</div>
|
||||
@include('proyectos.proyecto.galeria')
|
||||
@include('proyectos.proyecto.datos')
|
||||
@include('productos.producto.galeria')
|
||||
@include('productos.producto.datos')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -25,5 +25,5 @@
|
||||
@endsection
|
||||
|
||||
@push('styles')
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->styles}}/proyecto.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{$urls->styles}}/producto.css" />
|
||||
@endpush
|
Reference in New Issue
Block a user