7 Commits

23 changed files with 411 additions and 124 deletions

View File

@ -4,9 +4,31 @@ namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
use Psr\Container\ContainerInterface as Container;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View;
use Carbon\Carbon;
use ProVM\Common\Service\Filemanager;
class Documentos {
public function __invoke(Request $request, Response $response, Container $container, View $view, $tipo): Response {
$glob = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$tipo . '*.pdf'
]);
$files = glob($glob);
$archivos = [];
foreach ($files as $filename) {
$file = new \SplFileInfo($filename);
$archivos []= $file;
}
$titulo = $tipo;
$months = (object) ['full' => [], 'short' => []];
$m = Carbon::createFromDate(0, 1, 1);
for ($i = 0; $i < 12; $i ++) {
$months->full []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMMM'));
$months->short []= ucwords($m->copy()->addMonths($i)->locale('es_ES')->isoFormat('MMM'));
}
return $view->render($response, 'admin.archivos.list', compact('titulo', 'archivos', 'months'));
}
public function upload(Request $request, Response $response, Filemanager $filemanager, Container $container): Response {
$post = $request->getParsedBody();
$files = $request->getUploadedFiles();
@ -33,4 +55,21 @@ class Documentos {
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
public function delete(Request $request, Response $response, Container $container): Response {
$post = $request->getParsedBody();
$filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$post['archivo'] . '.pdf'
]);
$status = unlink($filename);
$output = [
'informacion' => $post,
'estado' => $status,
'archivo' => $filename
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
}

View File

@ -0,0 +1,58 @@
<?php
namespace ProVM\NotariaRaby\Common\Controller\Web\Admin;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\Blade as View;
use ProVM\Common\Service\Filemanager;
class Equipos {
public function __invoke(Request $request, Response $response, View $view, Filemanager $filemanager): Response {
$filename = 'equipos.yml';
$equipos = $filemanager->folder('data')->load($filename);
return $view->render($response, 'admin.equipos', compact('equipos'));
}
public function add(Request $request, Response $response, Filemanager $filemanager): Response {
$post = $request->getParsedBody();
$filename = 'equipos.yml';
$equipos = $filemanager->folder('data')->load($filename);
$miembro = (object) [
'nombre' => $post['nombre'],
'email' => $post['email']
];
$equipos[$post['equipo']]->miembros []= $miembro;
$status = $filemanager->folder('data')->save($filename, $equipos);
$output = [
'information' => $post,
'estado' => $status,
'equipos' => $equipos
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
public function remove(Request $request, Response $response, Filemanager $filemanager): Response {
$post = $request->getParsedBody();
$filename = 'equipos.yml';
$equipos = $filemanager->folder('data')->load($filename);
unset($equipos[$post['equipo']]->miembros[$post['id']]);
$status = $filemanager->folder('data')->save($filename, $equipos);
$output = [
'information' => $post,
'estado' => $status,
'equipos' => $equipos
];
$response->getBody()->write(json_encode($output));
return $response
->withHeader('Content-Type', 'application/json')
->withStatus(201);
}
}

View File

@ -6,7 +6,7 @@ use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
class Documentos {
public function existe(Request $request, Response $response, Container $container, $documento) {
public function existe(Request $request, Response $response, Container $container, $documento): Response {
$filename = implode(DIRECTORY_SEPARATOR, [
$container->get('folders.upload'),
$documento . '.pdf'

View File

@ -11,7 +11,7 @@ use ProVM\Common\Service\Filemanager;
class Home {
public function __invoke(Request $request, Response $response, View $view, Filemanager $manager, Container $container): Response {
$banner = (object) [
'titulo' => "5° NOTARÍA DE SANTIAGO",
'titulo' => "5° NOTARIA DE SANTIAGO",
'contenido' => '<a href="' . $container->get('urls.direccion') . '">Gertrudis Echenique 30, of. 32, El Golf' . "\n" . '<i class="large icon icon-metro"></i> Metro Alcantara</a>'
];

View File

@ -0,0 +1,3 @@
#equipos {
background-color: grey;
}

View File

@ -1,30 +1,47 @@
- titulo: ESCRITURAS PÚBLICAS
-
titulo: ESCRITURAS PUBLICAS
miembros:
- nombre: Paola Díaz de Lartundo
-
nombre: Paola Díaz de Lartundo
email: pdiaz@notariaraby.cl
- nombre: Roxana Muñoz Donoso
-
nombre: Roxana Muñoz Donoso
email: rmunozd@notariaraby.cl
- nombre: Alejandro González Villalobos
-
nombre: Alejandro González Villalobos
email: agonzalez@notariaraby.cl
- nombre: Elizabeth Ancamil Munizaga
-
nombre: Elizabeth Ancamil Munizaga
email: eancamil@notariaraby.cl
- titulo: INSTRUMENTOS PRIVADOS
-
titulo: INSTRUMENTOS PRIVADOS
miembros:
- nombre: Massiel Guzmán Villalobos
-
nombre: Massiel Guzmán Villalobos
email: mguzman@notariaraby.cl
- titulo: ADMINISTRACIÓN CUENTAS-TRANSFERENCIAS
-
titulo: ADMINISTRACION CUENTAS-TRANSFERENCIAS
miembros:
- nombre: Juan Corrales Carrasco
-
nombre: Juan Corrales Carrasco
email: jcorrales@notariaraby.cl
- titulo: REPERTORIO-INDICES
-
titulo: REPERTORIO-INDICES
miembros:
- nombre: María Andreina Rojas Morales
-
nombre: María Andreina Rojas Morales
email: repertorio@notariaraby.cl
- titulo: ABOGADO
-
titulo: ABOGADO
miembros:
- nombre: María Virginia Wielandt Covarrubias
-
nombre: María Virginia Wielandt Covarrubias
email: vwielandt@notariaraby.cl
- titulo: RECEPCIÓN CORDINACIÓN EMPRESAS EN UN DÍA
-
titulo: >
RECEPCION CORDINACION EMPRESAS EN UN
DIA
miembros:
- telefono: (56) (2) 2599 2453
-
telefono: (56) (2) 2599 2453
email: recepcion@notariaraby.cl

View File

@ -1,4 +1,4 @@
ip: localhost
token: >
6386affcb3431a356ef46974:c16ce52735ec95255d450d57945cd35992d1b21f
time: 2020-04-22 22:42
3d68bf63cd4e58933e39054e:c38af934404691cccaa5d5f65a2e799f62530b15
time: 2020-05-21 13:11

View File

@ -2,5 +2,7 @@
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Documentos;
$app->group('/documentos', function($app) {
$app->post('/delete', [Documentos::class, 'delete']);
$app->get('/{tipo}', Documentos::class);
$app->post('[/]', [Documentos::class, 'upload']);
});

View File

@ -0,0 +1,8 @@
<?php
use ProVM\NotariaRaby\Common\Controller\Web\Admin\Equipos;
$app->group('/equipos', function($app) {
$app->post('/add', [Equipos::class, 'add']);
$app->post('/remove', [Equipos::class, 'remove']);
$app->get('[/]', Equipos::class);
});

View File

@ -0,0 +1,147 @@
@extends('admin.layout.base')
@section('page_content')
<div class="ui container">
<h1 class="ui header">
{{str_replace('_', ' ', mb_strtoupper($titulo))}}
</h1>
<div class="ui grid">
<div class="row">
<div class="nine wide column">
<a href="{{$urls->admin}}">Volver</a>
<div class="ui top attached right aligned segment">
<button class="ui inverted dark-blue button form_link">
NUEVO
</button>
</div>
<table class="ui bottom attached celled table">
<thead>
<tr>
<th>Documento</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($archivos as $archivo)
<tr>
<td>
<a href="{{$urls->uploads}}/{{$archivo->getFilename()}}" target="_blank">
{{str_replace([$titulo, '_'], ['', ' '], $archivo->getBasename('.' . $archivo->getExtension()))}}
</a>
</td>
<td class="center aligned">
<i class="remove icon" data-file="{{$archivo->getBasename('.' . $archivo->getExtension())}}"></i>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="ui basic modal" id="doc_form">
<i class="close icon"></i>
<div class="inverted dark-blue header">
</div>
<div class="inverted dark-blue content">
<form class="ui form" method="post" action="#">
<input type="hidden" name="filename" />
<div class="field">
<input type="file" name="archivo" placeholder="Archivo" />
</div>
<div id="mod" class="field"></div>
<button class="ui button">Subir</button>
<div id="documento_message"></div>
</form>
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
function formulario(link, title, mod) {
$('#doc_form').find('.header').html(title)
$('#doc_form').find('form').find("[name='filename']").val(link)
if (mod == 'fecha') {
fecha()
}
$('#doc_form').modal('show')
$('#doc_form').find('form').submit(function(e) {
e.preventDefault()
var form_data = new FormData(this)
$.ajax({
url: '{{$urls->admin}}/documentos',
type: 'post',
data: form_data,
contentType: false,
cache: false,
processData: false,
success: function(data) {
if (data.estado == true) {
$('#doc_form').find('.header').html('')
$('#doc_form').find('form').find("[name='filename']").val('')
$('#doc_form').modal('hide')
$('#documento_message').html('')
$('#documento_message').hide()
location.reload()
} else {
$('#documento_message').html('Error al subir el archivo.')
$('#documento_message').show()
}
}
})
return false
})
}
function fecha() {
var fecha = $('<div></div>').attr('class', 'ui calendar').append(
$('<div></div>').attr('class', 'ui input left icon').append(
$('<i></i>').attr('class', 'calendar icon')
).append(
$('<input />').attr('type', 'text').attr('name', 'month').attr('placeholder', 'Mex / Año')
)
)
$('#mod').append(fecha)
$('#mod').find('.ui.calendar').calendar({
type: 'month',
text: {
months: [
'{!!implode("', '", $months->full)!!}'
],
monthsShort: [
'{!!implode("', '", $months->short)!!}'
]
}
})
}
$(document).ready(function() {
$('.remove.icon').css('cursor', 'pointer').click(function() {
var file = $(this).attr('data-file')
$.post('{{$urls->admin}}/documentos/delete', {archivo: file}, function(data) {
if (data.estado) {
location.reload()
return
}
alert('No se pudo borrar el archivo.')
})
})
$('#doc_form').modal({
onHidden: function() {
$('#mod').html('')
}
})
$('#documento_message').hide()
$('.form_link').click(function() {
var link = '{{$titulo}}'
var title = '{{mb_strtoupper($titulo)}}'
var mod = 'fecha'
if (link == 'valores') {
mod = ''
}
formulario(link, title, mod)
})
})
</script>
@endpush

View File

@ -3,7 +3,7 @@
@section('page_content')
<div class="ui container">
<h2>Cambiar Clave</h2>
<form class="ui form" method="post" action="{{$urls->base}}/admin/clave" id="clave_form">
<form class="ui form" method="post" action="{{$urls->admin}}/clave" id="clave_form">
<div class="field">
<label>Clave</label>
<input type="password" name="clave" />

View File

@ -4,11 +4,7 @@
{{$descripcion}}
</div>
<div class="column">
<a href="#" data-link="{{$link}}" data-title="{{$descripcion}}"
@if (isset($mod))
data-mod="{{$mod}}"
@endif
class="form_link">
<a href="{{$urls->admin}}/documentos/{{$link}}">
@include('admin.uicon')
</a>
</div>

View File

@ -2,7 +2,7 @@
Carga de documentos
</h4>
<div class="ui list">
@include('admin.documento', ['descripcion' => 'Índices', 'link' => 'indices', 'mod' => 'fecha'])
@include('admin.documento', ['descripcion' => 'Indices', 'link' => 'indices', 'mod' => 'fecha'])
</div>
<h4>
Transparencia
@ -22,86 +22,15 @@
/>
</div>
<div id="transparencia_message" class="ui message transition hidden"></div>
<div class="ui basic modal" id="doc_form">
<i class="close icon"></i>
<div class="inverted dark-blue header">
</div>
<div class="inverted dark-blue content">
<form class="ui form" method="post" action="#">
<input type="hidden" name="filename" />
<div class="field">
<input type="file" name="archivo" placeholder="Archivo" />
</div>
<div id="mod" class="field"></div>
<button class="ui button">Subir</button>
<div id="documento_message"></div>
</form>
</div>
</div>
@push('scripts')
<script type="text/javascript">
function formulario(link, title, mod) {
$('#doc_form').find('.header').html(title)
$('#doc_form').find('form').find("[name='filename']").val(link)
if (mod == 'fecha') {
fecha()
}
$('#doc_form').modal('show')
$('#doc_form').find('form').submit(function(e) {
e.preventDefault()
var form_data = new FormData(this)
$.ajax({
url: '{{$urls->base}}/admin/documentos',
type: 'post',
data: form_data,
contentType: false,
cache: false,
processData: false,
success: function(data) {
if (data.estado == true) {
$('#doc_form').find('.header').html('')
$('#doc_form').find('form').find("[name='filename']").val('')
$('#doc_form').modal('hide')
$('#documento_message').html('')
$('#documento_message').hide()
} else {
$('#documento_message').html('Error al subir el archivo.')
$('#documento_message').show()
}
}
})
return false
})
}
function fecha() {
var fecha = $('<div></div>').attr('class', 'ui calendar').append(
$('<div></div>').attr('class', 'ui input left icon').append(
$('<i></i>').attr('class', 'calendar icon')
).append(
$('<input />').attr('type', 'text').attr('name', 'month').attr('placeholder', 'Mex / Año')
)
)
$('#mod').append(fecha)
$('#mod').find('.ui.calendar').calendar({
type: 'month',
text: {
months: [
'{!!implode("', '", $months->full)!!}'
],
monthsShort: [
'{!!implode("', '", $months->short)!!}'
]
}
})
}
$(document).ready(function() {
$('#transparencia_message').hide()
$('#transparencia').checkbox()
$('#transparencia').click(function() {
var status = $(this).checkbox('is checked')
$.post('{{$urls->base}}/admin/transparencia', {'activo': status}, function(data) {
$.post('{{$urls->admin}}/transparencia', {'activo': status}, function(data) {
var msg = ['<i class="close icon"></i>']
if (data.estado == 'ok') {
if (data.informacion.activo == 'true') {
@ -131,19 +60,6 @@
})
}, 'json')
})
$('#doc_form').modal({
onHidden: function() {
$('#mod').html('')
}
})
$('#documento_message').hide()
$('.form_link').click(function() {
var link = $(this).attr('data-link')
var title = $(this).attr('data-title')
var mod = $(this).attr('data-mod')
formulario(link, title, mod)
})
})
</script>
@endpush

View File

@ -0,0 +1,92 @@
@extends('admin.layout.base')
@section('page_content')
<div id="equipos">
<div class="ui container">
<div class="ui header">
EQUIPOS NOTARIA
</div>
<div class="ui grid">
@foreach ($equipos as $i => $equipo)
<div class="row">
<div class="nine wide column">
<div class="ui top attached segment">
<div class="ui header">
{{$equipo->titulo}}
</div>
</div>
<table class="ui bottom attached celled table">
<tbody>
@foreach ($equipo->miembros as $j => $miembro)
<tr>
<td>
@if (isset($miembro->nombre))
{{$miembro->nombre}}
@endif
</td>
<td>
@if (isset($miembro->email))
{{$miembro->email}}
@endif
</td>
<td class="center aligned">
<i class="remove icon" data-equipo="{{$i}}" data-id="{{$j}}"></i>
</td>
</tr>
@endforeach
</tbody>
<tfooter>
<tr>
<td colspan="3">
<form class="ui form" data-equipo="{{$i}}">
<div class="inline fields">
<div class="inline field">
<input type="text" name="nombre" placeholder="Nombre" />
</div>
<div class="inline field">
<input type="text" name="email" placeholder="Email" />
</div>
<button class="ui inverted dark-blue button">CREAR</button>
</div>
</form>
</td>
</tr>
</tfooter>
</table>
</div>
</div>
@endforeach
</div>
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
$(document).ready(() => {
$('.remove.icon').css('cursor', 'pointer').click(function(e) {
var equipo = $(this).attr('data-equipo')
var id = $(this).attr('data-id')
$.post('{{$urls->admin}}/equipos/remove', {equipo: equipo, id: id}, (data) => {
if (data.estado) {
window.location.reload()
}
})
})
$('form').submit(function(e) {
var equipo = $(this).attr('data-equipo')
var nombre = $(this).find("input[name='nombre']").val()
var email = $(this).find("input[name='email']").val()
$.post('{{$urls->admin}}/equipos/add', {equipo: equipo, nombre: nombre, email: email}, (data) => {
if (data.estado) {
window.location.reload()
return
}
})
e.preventDefault()
return false
})
})
</script>
@endpush

View File

@ -51,7 +51,7 @@
var titulo = $(this).find("[name='titulo']").val()
var contenido = $(this).find("[name='contenido']").val()
$.post('{{$urls->base}}/admin/notificacion', {titulo: titulo, contenido: contenido}, function(data) {
$.post('{{$urls->admin}}/notificacion', {titulo: titulo, contenido: contenido}, function(data) {
var msg = ''
if (data.estado == 'ok') {
msg = 'Editado correctamente.'
@ -68,7 +68,7 @@
$('#activar').checkbox()
$('#activar').click(function() {
var status = $(this).checkbox('is checked')
$.post('{{$urls->base}}/admin/notificacion', {'activo': status}, function(data) {
$.post('{{$urls->admin}}/notificacion', {'activo': status}, function(data) {
msg = []
if (data.estado == 'ok') {
if (data.editado.activo) {

View File

@ -1,7 +1,8 @@
<nav class="ui inverted attached massive text stackable menu" id="page_menu">
<a class="left aligned item brand" href="{{$urls->admin}}">
NOTAR&Iacute;A PATRICIO RABY BENAVENTE
NOTARIA PATRICIO RABY BENAVENTE
</a>
<a class="item" href="{{$urls->admin}}/equipos">Editar Equipos</a>
<a class="item" href="{{$urls->admin}}/clave">Cambiar Clave</a>
<a class="item" href="{{$urls->admin}}/logout">Salir</a>
</nav>

View File

@ -1,8 +1,8 @@
@extends('admin.layout.base')
@extends('layout.base')
@section('page_content')
<div class="ui container">
<form class="ui form" method="post" action="{{$urls->base}}/admin/login">
<form class="ui form" method="post" action="{{$urls->admin}}/login">
<div class="ui center aligned grid">
<div class="left aligned five wide column">
<h3>Ingresar</h3>
@ -16,3 +16,11 @@
</form>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
$(document).ready(function() {
$("input[name='clave']").focus()
})
</script>
@endpush

View File

@ -4,7 +4,7 @@
<div class="ten wide column img"></div>
<div class="six wide column contenido">
<div class="titulo">
&Iacute;NDICES EN L&Iacute;NEA
INDICES EN LINEA
</div>
<br />
<form class="ui form" method="post" action="#" id="form_indices">

View File

@ -7,7 +7,7 @@
<div class="eleven wide column">
<a href="{{$urls->atencion->url}}">
<button class="ui inverted dark-blue button">
N&Uacute;MERO DE ATENCI&Oacute;N
NUMERO DE ATENCION
<br/> ONLINE
</button>
</a>
@ -19,7 +19,7 @@
<div class="eleven wide column">
<a href="{{$urls->fojas}}">
<button class="ui inverted dark-blue button">
VERIFICACI&Oacute;N DE DOCUMENTOS ELECTR&Oacute;NICOS
VERIFICACION DE DOCUMENTOS ELECTRONICOS
</button>
</a>
</div>

View File

@ -2,7 +2,7 @@
<div class="middle">
<a href="{{$urls->notaria_turno}}">
<button class="ui inverted dark-blue compact button">
NOTAR&Iacute;A DE TURNO
NOTARIA DE TURNO
</button>
</a>
</div>

View File

@ -3,7 +3,7 @@
<i class="big icon icon-ubicacion"></i>
<p>
<strong>
UBICACI&Oacute;N
UBICACION
</strong>
</p>
</a>

View File

@ -1,7 +1,7 @@
<head>
<meta charset="utf-8" />
<title>
Notar&iacute;a Patricio Raby
Notar&iacute;a Patricio Raby Benavente
@yield('page_title')
</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

View File

@ -1,10 +1,10 @@
<nav class="ui inverted attached massive text stackable menu" id="page_menu">
<a class="left aligned item brand" href="{{$urls->base}}">
NOTAR&Iacute;A PATRICIO RABY BENAVENTE
NOTARIA PATRICIO RABY BENAVENTE
</a>
<div class="right menu side">
<a class="item" href="{{$urls->base}}/notaria">
NOTAR&Iacute;A
NOTARIA
</a>
<a class="item" href="#servicios">
SERVICIOS