Proyectos -> Productos

This commit is contained in:
2020-05-26 23:03:14 -04:00
parent 168fbbcb09
commit e27cd5c68d
9 changed files with 80 additions and 80 deletions

View File

@ -6,58 +6,58 @@ use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View; use Slim\Views\Blade as View;
class Proyectos { class Productos {
public function __invoke(Request $request, Response $response, Container $container, View $view): Response { public function __invoke(Request $request, Response $response, Container $container, View $view): Response {
$filename = implode(DIRECTORY_SEPARATOR, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $container->get('folders.data'),
'segmentos.json' 'segmentos.json'
]); ]);
$segmentos = json_decode(trim(file_get_contents($filename))); $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, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $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, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $container->get('folders.data'),
'destacados.json' 'destacados.json'
]); ]);
$destacados = json_decode(trim(file_get_contents($filename))); $destacados = json_decode(trim(file_get_contents($filename)));
$destacado = false; $destacado = false;
if (array_search($proyecto, $destacados) !== false) { if (array_search($producto, $destacados) !== false) {
$destacado = true; $destacado = true;
} }
$id = $proyecto; $id = $producto;
$proyecto = $proyectos[$proyecto]; $producto = $productos[$producto];
$proyecto->destacado = $destacado; $producto->destacado = $destacado;
$proyecto->id = $id; $producto->id = $id;
$folder = implode(DIRECTORY_SEPARATOR, [ $folder = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.public'), $container->get('folders.public'),
'assets', 'assets',
'images', 'images',
mb_strtolower($proyecto->edificio) mb_strtolower($producto->nombre)
]); ]);
$files = new \DirectoryIterator($folder); $files = new \DirectoryIterator($folder);
$proyecto->images = []; $producto->images = [];
foreach ($files as $file) { foreach ($files as $file) {
if ($file->isDir()) { if ($file->isDir()) {
continue; 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 { public function segmento(Request $request, Response $response, Container $container, $segmento): Response {
$filename = implode(DIRECTORY_SEPARATOR, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $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') { 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); return (str_replace(' ', '_', mb_strtolower($item->segmento)) == $segmento);
}); });
} }
@ -65,7 +65,7 @@ class Proyectos {
'information' => [ 'information' => [
'segmento' => $segmento 'segmento' => $segmento
], ],
'proyectos' => array_keys($proyectos) 'productos' => array_keys($productos)
]; ];
$response->getBody()->write(json_encode($output)); $response->getBody()->write(json_encode($output));
return $response return $response
@ -93,25 +93,25 @@ class Proyectos {
->withHeader('Content-Type', 'application/json') ->withHeader('Content-Type', 'application/json')
->withStatus(201); ->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, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $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, [ $filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.data'), $container->get('folders.data'),
'destacados.json' 'destacados.json'
]); ]);
$destacados = json_decode(trim(file_get_contents($filename))); $destacados = json_decode(trim(file_get_contents($filename)));
$destacado = false; $destacado = false;
if (array_search($proyecto, $destacados) !== false) { if (array_search($producto, $destacados) !== false) {
$destacado = true; $destacado = true;
} }
$id = $proyecto; $id = $producto;
$proyecto = $proyectos[$proyecto]; $producto = $productos[$producto];
$proyecto->destacado = $destacado; $producto->destacado = $destacado;
$proyecto->id = $id; $producto->id = $id;
return $view->render($response, 'proyectos.ficha', compact('proyecto')); return $view->render($response, 'productos.ficha', compact('producto'));
} }
} }

View 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']);
});

View File

@ -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']);
});

View File

@ -1,54 +1,54 @@
<div class="ui card ficha"> <div class="ui card ficha">
<div class="content"> <div class="content">
<div class="header"> <div class="header">
{{$proyecto->edificio}} {{$producto->nombre}}
</div> </div>
<div class="right floated meta"> <div class="right floated meta">
{{$proyecto->segmento}} {{$producto->segmento}}
</div> </div>
<div class="descripcion"> <div class="descripcion">
{{$proyecto->comuna}} {{$producto->comuna}}
</div> </div>
</div> </div>
<div class="medium image"> <div class="medium image">
@if ($proyecto->destacado) @if ($producto->destacado)
<div class="overlay">Destacado</div> <div class="overlay">Destacado</div>
@endif @endif
<img src="{{$urls->images}}/{{$proyecto->imagen}}" /> <img src="{{$urls->images}}/{{$producto->imagen}}" />
</div> </div>
<div class="content"> <div class="content">
<div class="ui basic segment"> <div class="ui basic segment">
<span class="right floated"> <span class="right floated">
{{$proyecto->valor}} UF {{$producto->valor}} UF
</span> </span>
Valor depto Valor depto
</div> </div>
<div class="ui basic segment"> <div class="ui basic segment">
<span class="right floated"> <span class="right floated">
{{$proyecto->bono}} UF {{$producto->bono}} UF
</span> </span>
Bono Pie Bono Pie
</div> </div>
<div class="ui basic segment"> <div class="ui basic segment">
<span class="right floated"> <span class="right floated">
{{$proyecto->rentabilidad}}% {{$producto->rentabilidad}}%
</span> </span>
Rentabilidad Rentabilidad
</div> </div>
<div class="ui basic segment"> <div class="ui basic segment">
<span class="right floated"> <span class="right floated">
{{$proyecto->cuota}} UF {{$producto->cuota}} UF
</span> </span>
Valor cuota Valor cuota
</div> </div>
<div class="ui basic segment"> <div class="ui basic segment">
<span class="right floated"> <span class="right floated">
{{$proyecto->entrega}} {{$producto->entrega}}
</span> </span>
Entrega Estimada Entrega Estimada
</div> </div>
<span class="right floated"> <span class="right floated">
<a href="{{$urls->base}}/proyecto/{{$proyecto->id}}"> <a href="{{$urls->base}}/producto/{{$producto->id}}">
<button class="ui inverted brand button"> <button class="ui inverted brand button">
Ver Ver
</button> </button>

View File

@ -1,7 +1,7 @@
@extends('layout.base') @extends('layout.base')
@section('page_content') @section('page_content')
<div id="proyectos"> <div id="productos">
<div class="ui container"> <div class="ui container">
<div class="ui header titulo"> <div class="ui header titulo">
PRODUCTOS PRODUCTOS
@ -29,7 +29,7 @@
@endsection @endsection
@push('styles') @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 @endpush
@push('scripts') @push('scripts')
@ -48,20 +48,20 @@
if (name.indexOf(' ') > -1) { if (name.indexOf(' ') > -1) {
name = name.replaceAll(' ', '_') name = name.replaceAll(' ', '_')
} }
var url = '{{$urls->base}}/proyectos/segmento/' + name var url = '{{$urls->base}}/productos/segmento/' + name
$(".tab[data-tab='" + segmento + "']").find('.grid').html('') $(".tab[data-tab='" + segmento + "']").find('.grid').html('')
loaded[segmento] = true loaded[segmento] = true
$.getJSON(url, (data) => { $.getJSON(url, (data) => {
$(".tab[data-tab='" + segmento + "']").find('.grid').append( $(".tab[data-tab='" + segmento + "']").find('.grid').append(
$('<div></div>').attr('class', 'ui active centered inline loader') $('<div></div>').attr('class', 'ui active centered inline loader')
) )
$.each(data.proyectos, (i, el) => { $.each(data.productos, (i, el) => {
getProyecto(segmento, el) getProducto(segmento, el)
}) })
}) })
} }
function getProyecto(segmento, id_proyecto) { function getProducto(segmento, id_producto) {
var url = '{{$urls->base}}/proyecto/' + id_proyecto + '/ficha' var url = '{{$urls->base}}/producto/' + id_producto + '/ficha'
$.ajax({ $.ajax({
url: url, url: url,
success: (data) => { success: (data) => {
@ -76,7 +76,7 @@
} }
$(document).ready(() => { $(document).ready(() => {
loadSegmento('todo') loadSegmento('todo')
$('#proyectos').find('.tabular.menu .item').tab({ $('#productos').find('.tabular.menu .item').tab({
onFirstLoad: (tabPath, parameterArray, historyEvent) => { onFirstLoad: (tabPath, parameterArray, historyEvent) => {
if (tabPath == 'todo') { if (tabPath == 'todo') {
return return
@ -86,7 +86,7 @@
}) })
if (window.location.hash) { if (window.location.hash) {
var start = (window.location.hash).replace('#', '').replace('%20', ' ') 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> </script>

View File

@ -3,7 +3,7 @@
<a class="active item" data-tab="informacion">Informaci&oacute;n</a> <a class="active item" data-tab="informacion">Informaci&oacute;n</a>
<a class="item" data-tab="mapa">Ver Mapa</a> <a class="item" data-tab="mapa">Ver Mapa</a>
<a class="item" data-tab="video">Video</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>
<div class="ui bottom attached basic segment active tab" data-tab="informacion"> <div class="ui bottom attached basic segment active tab" data-tab="informacion">
<div class="ui grid"> <div class="ui grid">
@ -14,7 +14,7 @@
Precio: Precio:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->valor}} UF {{$producto->valor}} UF
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -22,7 +22,7 @@
Estado: Estado:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->estado}} {{$producto->estado}}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -30,7 +30,7 @@
Tipo: Tipo:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->segmento}} {{$producto->segmento}}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -38,7 +38,7 @@
Ubicaci&oacute;n: Ubicaci&oacute;n:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->comuna}}, {{$proyecto->ciudad}} {{$producto->comuna}}, {{$producto->ciudad}}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -46,7 +46,7 @@
Unidades: Unidades:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->unidades}} {{$producto->unidades}}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -54,7 +54,7 @@
Modelos: Modelos:
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->modelos}} {{$producto->modelos}}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -62,13 +62,13 @@
Tama&ntilde;o Tama&ntilde;o
</div> </div>
<div class="column"> <div class="column">
{{$proyecto->tamaño}} {{$producto->tamaño}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="twelve wide column"> <div class="twelve wide column">
{{$proyecto->descripcion}} {{$producto->descripcion}}
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,15 +1,15 @@
<div id="galeria"> <div id="galeria">
<div class="ui image" data-id="0"> <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>
<div class="ui grid" id="thumbnails"> <div class="ui grid" id="thumbnails">
@foreach ($proyecto->images as $i => $image) @foreach ($producto->images as $i => $image)
@if ($i == 0) @if ($i == 0)
@continue @continue
@endif @endif
<div class="three wide column"> <div class="three wide column">
<div class="ui image" data-id="{{$i}}"> <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>
</div> </div>
@endforeach @endforeach
@ -19,8 +19,8 @@
@push('scripts') @push('scripts')
<script type="text/javascript"> <script type="text/javascript">
var images = [ var images = [
@foreach ($proyecto->images as $image) @foreach ($producto->images as $image)
'{{$urls->images}}/{{mb_strtolower($proyecto->edificio)}}/{{$image}}', '{{$urls->images}}/{{mb_strtolower($producto->nombre)}}/{{$image}}',
@endforeach @endforeach
] ]
function populateThumbs(current) { function populateThumbs(current) {

View File

@ -1,23 +1,23 @@
@extends('layout.base') @extends('layout.base')
@section('page_content') @section('page_content')
<div id="proyecto"> <div id="producto">
<div class="ui container"> <div class="ui container">
<div class="ui one columns grid"> <div class="ui one columns grid">
<div class="column"> <div class="column">
<div class="titulo"> <div class="titulo">
<span class="ui header"> <span class="ui header">
{{$proyecto->edificio}} {{$producto->nombre}}
</span> </span>
<span class="direccion"> <span class="direccion">
{{$proyecto->direccion}}, {{$proyecto->comuna}}, {{$proyecto->ciudad}} {{$producto->direccion}}, {{$producto->comuna}}, {{$producto->ciudad}}
</span> </span>
<div class="publicado"> <div class="publicado">
Publicado el {{$proyecto->publicacion}} Publicado el {{$producto->publicacion}}
</div> </div>
</div> </div>
@include('proyectos.proyecto.galeria') @include('productos.producto.galeria')
@include('proyectos.proyecto.datos') @include('productos.producto.datos')
</div> </div>
</div> </div>
</div> </div>
@ -25,5 +25,5 @@
@endsection @endsection
@push('styles') @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 @endpush