evidencias acceso admin y mejora se ruta asignar plan

master
Christian Dacid Sullca Puma 2022-10-25 01:35:22 -05:00
parent 3207ce7c56
commit bb6de495db
7 changed files with 452 additions and 72 deletions

1
.gitignore vendored
View File

@ -1,7 +1,6 @@
/node_modules /node_modules
/public/hot /public/hot
/public/storage /public/storage
/storage/*.key
/vendor /vendor
.env .env
.env.backup .env.backup

View File

@ -1,6 +1,7 @@
<?php <?php
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Evidencias; use App\Models\Evidencias;
use App\Models\plan; use App\Models\plan;
@ -14,17 +15,18 @@ use Illuminate\Http\Request;
class EvidenciasController extends Controller class EvidenciasController extends Controller
{ {
public function create(Request $request){ public function create(Request $request)
{
$request->validate([ $request->validate([
"id_plan"=> "required|integer", "id_plan" => "required|integer",
"codigo"=>"required", "codigo" => "required",
"denominacion"=>"required", "denominacion" => "required",
"adjunto"=>"required", "adjunto" => "required",
]); ]);
$id_user = auth()->user()->id; $id_user = auth()->user();
if(plan::where(["id"=>$request->id_plan])->exists()){ if ($id_user->isCreadorPlan($request->id_plan) or $id_user->isAdmin()) {
$plan = plan::find($request->id_plan); $plan = plan::find($request->id_plan);
if($plan->id_user == $id_user){ if ($plan->id_user == $id_user) {
$evidencia = new Evidencias(); $evidencia = new Evidencias();
$evidencia->id_plan = $request->id_plan; $evidencia->id_plan = $request->id_plan;
$evidencia->codigo = $plan->codigo; $evidencia->codigo = $plan->codigo;
@ -39,24 +41,23 @@ class EvidenciasController extends Controller
"message" => "Evidencia creada exitosamente", "message" => "Evidencia creada exitosamente",
"evidencia" => $evidencia "evidencia" => $evidencia
]); ]);
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No tienes permisos para crear esta Evidencia", "message" => "No tienes permisos para crear esta Evidencia",
],404); ], 404);
} }
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No se encontro el plan", "message" => "No se encontro el plan",
],404); ], 404);
} }
} }
public function show($id){ public function show($id)
if(Evidencias::where("id",$id)->exists()){ {
if (Evidencias::where("id", $id)->exists()) {
$evidencia = Evidencias::find($id); $evidencia = Evidencias::find($id);
//Para retornar nombre de user //Para retornar nombre de user
/*$user = User::find($evidencia->id_user); /*$user = User::find($evidencia->id_user);
@ -66,32 +67,31 @@ class EvidenciasController extends Controller
"msg" => "!Evidencia", "msg" => "!Evidencia",
"data" => $evidencia, "data" => $evidencia,
]); ]);
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"msg" => "!No se encontro el evidencia", "msg" => "!No se encontro el evidencia",
],404); ], 404);
} }
} }
public function update(Request $request){ public function update(Request $request)
{
$request->validate([ $request->validate([
"id"=> "required|integer", "id" => "required|integer",
"codigo"=> "required", "codigo" => "required",
"denominacion"=> "required", "denominacion" => "required",
"adjunto"=> "required" "adjunto" => "required"
]); ]);
$id_user = auth()->user()->id; $id_user = auth()->user();
if(Evidencias::where(["id"=>$request->id])->exists()){ if (Evidencias::where(["id" => $request->id])->exists()) {
$evidencia = Evidencias::find($request->id); $evidencia = Evidencias::find($request->id);
$plan = plan::find($evidencia->id_plan); $plan = plan::find($evidencia->id_plan);
if($plan->id_user == $id_user){ if ($plan->id_user == $id_user->id or $id_user->isAdmin()) {
$evidencia->codigo = $request->codigo; $evidencia->codigo = $request->codigo;
$evidencia->denominacion = $request->denominacion; $evidencia->denominacion = $request->denominacion;
$path = $request->adjunto->store('evidencias'); $path = $request->adjunto->store('evidencias');
@ -102,62 +102,58 @@ class EvidenciasController extends Controller
"status" => 1, "status" => 1,
"message" => "Evidencia actualizada exitosamente", "message" => "Evidencia actualizada exitosamente",
]); ]);
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No tienes permisos para actualizar esta evidencia", "message" => "No tienes permisos para actualizar esta evidencia",
],404); ], 404);
} }
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No se encontro la evidencia", "message" => "No se encontro la evidencia",
],404); ], 404);
} }
} }
public function delete($id) public function delete($id)
{ {
$id_user = auth()->user()->id; $id_user = auth()->user();
if(Evidencias::where(["id"=>$id])->exists()){ if (Evidencias::where(["id" => $id])->exists()) {
$evidencia = Evidencias::find($id); $evidencia = Evidencias::find($id);
$plan = plan::find($evidencia->id_plan); $plan = plan::find($evidencia->id_plan);
if($plan->id_user == $id_user){ if ($plan->id_user == $id_user->id or $id_user->isAdmin()) {
$evidencia->delete(); $evidencia->delete();
return response([ return response([
"status" => 1, "status" => 1,
"message" => "Evidencia eliminada exitosamente", "message" => "Evidencia eliminada exitosamente",
]); ]);
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No tienes permisos para eliminar esta evidencia", "message" => "No tienes permisos para eliminar esta evidencia",
],404); ], 404);
} }
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"message" => "No se encontro la evidencia", "message" => "No se encontro la evidencia",
],404); ], 404);
} }
} }
public function download($id){ public function download($id)
if(Evidencias::where("id",$id)->exists()){ {
if (Evidencias::where("id", $id)->exists()) {
$evidencia = Evidencias::find($id); $evidencia = Evidencias::find($id);
$path = storage_path('app/'.$evidencia->adjunto); $path = storage_path('app/' . $evidencia->adjunto);
//$evidencia->adjunto = download($path); //$evidencia->adjunto = download($path);
return response()->download($path); return response()->download($path);
} } else {
else{
return response([ return response([
"status" => 0, "status" => 0,
"msg" => "!No se encontro la evidencia", "msg" => "!No se encontro la evidencia",
],404); ], 404);
} }
} }
} }

View File

@ -15,6 +15,8 @@ use App\Models\Observaciones;
use App\Models\ProblemasOportunidades; use App\Models\ProblemasOportunidades;
use App\Models\Recursos; use App\Models\Recursos;
use App\Models\Responsables; use App\Models\Responsables;
use Barryvdh\DomPDF\Facade\Pdf;
//plan::where(["id_user" => $id_user, "id" => $id])->exists() //plan::where(["id_user" => $id_user, "id" => $id])->exists()
class PlanController extends Controller class PlanController extends Controller
@ -339,6 +341,8 @@ class PlanController extends Controller
$plan->id_user = $request->id_user; $plan->id_user = $request->id_user;
$plan->id_estandar = $request->id_estandar; $plan->id_estandar = $request->id_estandar;
$plan->codigo = $request->codigo; $plan->codigo = $request->codigo;
$plan->avance = 0;
$plan->estado = "Programado";
$plan->save(); $plan->save();
return response([ return response([
"status" => 1, "status" => 1,
@ -480,4 +484,28 @@ class PlanController extends Controller
], 404); ], 404);
} }
} }
public function pdfPlan($id)
{
/* $id_user = auth()->user()->id;
if (plan::where("id", $id)->exists()) {
$plan = plan::find($id);
$plan->fuentes = Fuentes::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->problemas_oportunidades = ProblemasOportunidades::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->causas_raices = CausasRaices::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->acciones_mejoras = AccionesMejoras::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->recursos = Recursos::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->metas = Metas::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->observaciones = Observaciones::where("id_plan", $id)->get(['id', 'descripcion as value']);
$plan->responsables = Responsables::where("id_plan", $id)->get(['id', 'nombre as value']);
$plan->evidencias = Evidencias::where("id_plan", $id)->get();
$pdf = PDF::loadView('planPDF', compact('plan'));
return $pdf->download('plan.pdf');
} else {
return response([
"status" => 0,
"message" => "!No se encontro el plan de mejora",
], 404);
} */
}
} }

View File

@ -6,7 +6,9 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.0.2", "php": "^8.0.2",
"barryvdh/laravel-dompdf": "^2.0",
"doctrine/dbal": "^3.4", "doctrine/dbal": "^3.4",
"dompdf/dompdf": "^2.0",
"fruitcake/laravel-cors": "^3.0", "fruitcake/laravel-cors": "^3.0",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^9.11", "laravel/framework": "^9.11",

353
composer.lock generated
View File

@ -4,8 +4,85 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "514a36678675ae1c024481b92acaa8ad", "content-hash": "ad4d8b936acfaca906125948a1f538a5",
"packages": [ "packages": [
{
"name": "barryvdh/laravel-dompdf",
"version": "v2.0.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
"reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/1d47648c6cef37f715ecb8bcc5f5a656ad372e27",
"reference": "1d47648c6cef37f715ecb8bcc5f5a656ad372e27",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^2",
"illuminate/support": "^6|^7|^8|^9",
"php": "^7.2 || ^8.0"
},
"require-dev": {
"nunomaduro/larastan": "^1|^2",
"orchestra/testbench": "^4|^5|^6|^7",
"phpro/grumphp": "^1",
"squizlabs/php_codesniffer": "^3.5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
},
"laravel": {
"providers": [
"Barryvdh\\DomPDF\\ServiceProvider"
],
"aliases": {
"Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf",
"PDF": "Barryvdh\\DomPDF\\Facade\\Pdf"
}
}
},
"autoload": {
"psr-4": {
"Barryvdh\\DomPDF\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "A DOMPDF Wrapper for Laravel",
"keywords": [
"dompdf",
"laravel",
"pdf"
],
"support": {
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v2.0.0"
},
"funding": [
{
"url": "https://fruitcake.nl",
"type": "custom"
},
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2022-07-06T11:12:10+00:00"
},
{ {
"name": "brick/math", "name": "brick/math",
"version": "0.10.2", "version": "0.10.2",
@ -643,6 +720,68 @@
], ],
"time": "2022-02-28T11:07:21+00:00" "time": "2022-02-28T11:07:21+00:00"
}, },
{
"name": "dompdf/dompdf",
"version": "v2.0.1",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
"reference": "c5310df0e22c758c85ea5288175fc6cd777bc085"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085",
"reference": "c5310df0e22c758c85ea5288175fc6cd777bc085",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
"masterminds/html5": "^2.0",
"phenx/php-font-lib": ">=0.5.4 <1.0.0",
"phenx/php-svg-lib": ">=0.3.3 <1.0.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"ext-json": "*",
"ext-zip": "*",
"mockery/mockery": "^1.3",
"phpunit/phpunit": "^7.5 || ^8 || ^9",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-gd": "Needed to process images",
"ext-gmagick": "Improves image processing performance",
"ext-imagick": "Improves image processing performance",
"ext-zlib": "Needed for pdf stream compression"
},
"type": "library",
"autoload": {
"psr-4": {
"Dompdf\\": "src/"
},
"classmap": [
"lib/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "The Dompdf Community",
"homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
}
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
"source": "https://github.com/dompdf/dompdf/tree/v2.0.1"
},
"time": "2022-09-22T13:43:41+00:00"
},
{ {
"name": "dragonmantank/cron-expression", "name": "dragonmantank/cron-expression",
"version": "v3.3.2", "version": "v3.3.2",
@ -2174,6 +2313,75 @@
}, },
"time": "2022-04-15T14:02:14+00:00" "time": "2022-04-15T14:02:14+00:00"
}, },
{
"name": "masterminds/html5",
"version": "2.7.6",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
"reference": "897eb517a343a2281f11bc5556d6548db7d93947"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Masterminds/html5-php/zipball/897eb517a343a2281f11bc5556d6548db7d93947",
"reference": "897eb517a343a2281f11bc5556d6548db7d93947",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-dom": "*",
"ext-libxml": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.7-dev"
}
},
"autoload": {
"psr-4": {
"Masterminds\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matt Butcher",
"email": "technosophos@gmail.com"
},
{
"name": "Matt Farina",
"email": "matt@mattfarina.com"
},
{
"name": "Asmir Mustafic",
"email": "goetas@gmail.com"
}
],
"description": "An HTML5 parser and serializer.",
"homepage": "http://masterminds.github.io/html5-php",
"keywords": [
"HTML5",
"dom",
"html",
"parser",
"querypath",
"serializer",
"xml"
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
"source": "https://github.com/Masterminds/html5-php/tree/2.7.6"
},
"time": "2022-08-18T16:18:26+00:00"
},
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "2.8.0", "version": "2.8.0",
@ -2667,6 +2875,96 @@
], ],
"time": "2022-10-17T15:20:29+00:00" "time": "2022-10-17T15:20:29+00:00"
}, },
{
"name": "phenx/php-font-lib",
"version": "0.5.4",
"source": {
"type": "git",
"url": "https://github.com/dompdf/php-font-lib.git",
"reference": "dd448ad1ce34c63d09baccd05415e361300c35b4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4",
"reference": "dd448ad1ce34c63d09baccd05415e361300c35b4",
"shasum": ""
},
"require": {
"ext-mbstring": "*"
},
"require-dev": {
"symfony/phpunit-bridge": "^3 || ^4 || ^5"
},
"type": "library",
"autoload": {
"psr-4": {
"FontLib\\": "src/FontLib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse, export and make subsets of different types of font files.",
"homepage": "https://github.com/PhenX/php-font-lib",
"support": {
"issues": "https://github.com/dompdf/php-font-lib/issues",
"source": "https://github.com/dompdf/php-font-lib/tree/0.5.4"
},
"time": "2021-12-17T19:44:54+00:00"
},
{
"name": "phenx/php-svg-lib",
"version": "0.5.0",
"source": {
"type": "git",
"url": "https://github.com/dompdf/php-svg-lib.git",
"reference": "76876c6cf3080bcb6f249d7d59705108166a6685"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685",
"reference": "76876c6cf3080bcb6f249d7d59705108166a6685",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^7.1 || ^8.0",
"sabberworm/php-css-parser": "^8.4"
},
"require-dev": {
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Svg\\": "src/Svg"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse and export to PDF SVG files.",
"homepage": "https://github.com/PhenX/php-svg-lib",
"support": {
"issues": "https://github.com/dompdf/php-svg-lib/issues",
"source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0"
},
"time": "2022-09-06T12:16:56+00:00"
},
{ {
"name": "phpoption/phpoption", "name": "phpoption/phpoption",
"version": "1.9.0", "version": "1.9.0",
@ -3448,6 +3746,59 @@
], ],
"time": "2022-09-16T03:22:46+00:00" "time": "2022-09-16T03:22:46+00:00"
}, },
{
"name": "sabberworm/php-css-parser",
"version": "8.4.0",
"source": {
"type": "git",
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
"reference": "e41d2140031d533348b2192a83f02d8dd8a71d30"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30",
"reference": "e41d2140031d533348b2192a83f02d8dd8a71d30",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"php": ">=5.6.20"
},
"require-dev": {
"codacy/coverage": "^1.4",
"phpunit/phpunit": "^4.8.36"
},
"suggest": {
"ext-mbstring": "for parsing UTF-8 CSS"
},
"type": "library",
"autoload": {
"psr-4": {
"Sabberworm\\CSS\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Raphael Schweikert"
}
],
"description": "Parser for CSS Files written in PHP",
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
"keywords": [
"css",
"parser",
"stylesheet"
],
"support": {
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0"
},
"time": "2021-12-11T13:40:54+00:00"
},
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v6.1.6", "version": "v6.1.6",

View File

@ -11,12 +11,16 @@ return new class extends Migration
* *
* @return void * @return void
*/ */
//hacer null todo menos codigo, user, estandar
public function up() public function up()
{ {
Schema::create('plans', function (Blueprint $table) { Schema::create('plans', function (Blueprint $table) {
$table->id(); $table->id();
$table->string('codigo', 11); $table->string('codigo', 11);
$table->string('nombre',255)->nullable(); $table->string('nombre', 255)->nullable();
$table->string('oportunidad_plan')->nullable(); $table->string('oportunidad_plan')->nullable();
$table->string('semestre_ejecucion', 8)->nullable(); $table->string('semestre_ejecucion', 8)->nullable();
$table->integer('avance')->nullable(); $table->integer('avance')->nullable();

View File