Está en la página 1de 6

Transacciones e Impresión con Laravel

1. Se tiene la base de datos estudi23_base con el siguiente modelo

2. El script que implementa el modelo anterior se muestra a continuación:

drop database if exists estudi23_base ;


create database estudi23_base ;
use estudi23_base ;

create table tiposecretarios(


idtiposecretario int auto_increment,
tiposecretario varchar(25),
primary key(idtiposecretario));

create table secretarios(


idsecretario int auto_increment,
secretario varchar(60),
idtiposecretario int,
primary key(idsecretario),
foreign key(idtiposecretario) references tiposecretarios(idtiposecretario));

create table juzgados(


idjuzgado int auto_increment,
juzgado varchar(60),
primary key(idjuzgado));

create table materias(


idmateria int auto_increment,
materia varchar(60),
primary key(idmateria));

create table demandantes(


iddemandante int auto_increment,
dni char(8),
Transacciones e Impresión con Laravel

nombres varchar(60),
domicilio varchar(80),
telefono varchar(10),
correo varchar(60),
primary key(iddemandante));

create table demandados(


iddemandado int auto_increment,
ruc char(11),
razonsocial varchar(60),
direccion varchar(80),
telefono varchar(10),
correo varchar(60),
primary key(iddemandado));

create table expedientes(


idexpediente int auto_increment,
numero varchar(10),
fecha date,
idsecretario int,
idjuzgado int,
iddemandante int,
iddemandado int,
idmateria int,
estado int,
sumilla text,
primary key(idexpediente),
foreign key(idsecretario) references secretarios(idsecretario),
foreign key(idjuzgado) references juzgados(idjuzgado),
foreign key(iddemandante) references demandantes(iddemandante),
foreign key(iddemandado) references demandados(iddemandado),
foreign key(idmateria) references materias(idmateria));

create table estados(


idestado int auto_increment,
estado varchar(40),
primary key(idestado));

create table expedientestados(


idexpediente int,
idestado int,
observacion text,
fecha date, hora time,
primary key(idexpediente,idestado),
foreign key(idexpediente) references expedientes(idexpediente),
foreign key(idestado) references estados(idestado));
Transacciones e Impresión con Laravel

insert demandantes values(null,'18122605','CELESTINO GARCIA


GONZALES','PANAMERICANA NORTE KM
570','949865222','cgarcia@gmail.com');
insert demandados values(null,'10181226051','ELITE SEGURITY
SAC','PANAMERICANA NORTE KM 570 -
TRUJILLO','949856231','cgarcia@gmail.com');
insert tiposecretarios values(null,'DE CALIFICACION');
insert tiposecretarios values(null,'DE TRAMITE');
insert tiposecretarios values(null,'DE EJECUCION');
insert tiposecretarios values(null,'DE CAUTELAR');
insert secretarios values(null,'SHEYLA VASQUEZ',1);
insert secretarios values(null,'MARIELLA MORALES',2);
insert juzgados values(null,'PRIMER JUZGADO');
insert juzgados values(null,'SEGUNDO JUZGADO');
insert juzgados values(null,'TERCER JUZGADO');
insert juzgados values(null,'CUARTO JUZGADO');
insert estados values(null,'SE PRESENTO DEMANDA');
insert estados values(null,'EN CALIFICACION');
insert estados values(null,'EN CONCILIACION');
insert materias values(null,'BENEFICIOS');
insert materias values(null,'DESPIDO');
insert materias values(null,'REINTEGRO');
insert materias values(null,'DESNATURALIZACION');
insert expedientes values(null,'514-2019',now(),1,1,1,1,1,1,'POR REVISAR');

3. En el proyecto base tomado como ejemplo implementar en PhpMyAdmin el


usuario estudi23_root con la clave monitor@123 otorgándole todos los
privilegios sobre la base de datos estudi23_base

4. Implementar la Transacción en el método Store del controlado


ExpedienteController

public function store(Request $request)


{
//
Expediente::create($request->all());
return redirect()->route('expediente.index');

}
Transacciones e Impresión con Laravel

Por el siguiente código

DB::beginTransaction();
try {
Expediente::create($request->all());
/*$expe=new Expediente();
$expe->numero=$request->numero;
$expe->fecha=$request->fecha;
$expe->idsecretario=$request->idsecretario;
$expe->idjuzgado=$request->idjuzgado;
$expe->iddemandante=$request->iddemandante;
$expe->iddemandado=$request->iddemandado;
$expe->idmateria=$request->idmateria;
$expe->estado=$request->estado;
$expe->sumilla=$request->sumilla;
$expe->save();*/
DB::commit();
} catch (\Exception $e) {
DB::rollback();
throw $e;
} catch (\Throwable $e) {
DB::rollback();
throw $e;
}
return redirect()->route('expediente.index');

5. Para imprimir la lista de Expedientes ejecutar dentro del directorio del proyecto
a nivel de comandos lo siguiente.

composer require barryvdh/laravel-dompdf

6. Luego añadir en el archivo app.php las siguientes líneas.

app.php
'providers' => [
Barryvdh\DomPDF\ServiceProvider::class,
Illuminate\Auth\AuthServiceProvider::class,

'aliases' => [
'PDF' => Barryvdh\DomPDF\Facade::class,
'App' => Illuminate\Support\Facades\App::class,
Transacciones e Impresión con Laravel

7. Seguidamente el controlador que tendrá el método Imprimexpedientes

>php artisan make:controller PrnController

PrnController.php
use DB;

class PrnController extends Controller
{
//
public function Imprimexpedientes()
{
$expedientes=DB::table('expedientes as ex')->join('secretarios as
se','ex.idsecretario','=','se.idsecretario')->join('juzgados as
ju','ex.idjuzgado','=','ju.idjuzgado')->join('demandantes as
de','ex.iddemandante','=','de.iddemandante')->join('demandados as
da','ex.iddemandado','=','da.iddemandado')-
>select('ex.idexpediente','ex.numero','ex.fecha','de.nombres','da.razonsocial')-
>get();
$pdf = \PDF::loadView('expedientes.rpexpedientes',compact('expedientes'));
return $pdf->download('rpexpedientes.pdf');
}}

8. Luego crear la vista en la carpeta expedientes que mostrara el reporte de los


expedientes

rpexpedientes.blade.php
<h3>Lista de Expedientes</h3>
<table>
<tr>
<td>EXPEDIENTE</td>
<td>FECHA</td>
<td>DEMANDANTE</td>
<td>DEMANDADO</td>
</tr>
@foreach($expedientes as $expediente)
<tr>
<td>{{$expediente->numero}}</td>
<td>{{$expediente->fecha}}</td>
<td>{{$expediente->nombres}}</td>
<td>{{$expediente->razonsocial}}</td>
</tr>
@endforeach
</table>
Transacciones e Impresión con Laravel

9. Luego la ruta que invocará el método

Route::get('imprime','PrnController@Imprimexpedientes');

10. Finalmente, la invocación a la ruta en un Boton dentro del Index de


expedientes

<a href="/imprime" class="btn btn-primary">Imprimir</a>

11. Ejecutar el sitio

En ventana de comandos
> php artisan serve

En navegador
http://127.0.0.1:8000

También podría gustarte