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

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="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>

View File

@ -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>

View File

@ -3,7 +3,7 @@
<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="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&oacute;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&ntilde;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>

View File

@ -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) {

View File

@ -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