first commit~

This commit is contained in:
root 2022-10-28 02:18:38 +00:00
commit ff71c86e66
2312 changed files with 297490 additions and 0 deletions

18
.editorconfig Normal file
View File

@ -0,0 +1,18 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false
[*.{yml,yaml}]
indent_size = 2
[docker-compose.yml]
indent_size = 4

37
.env.build Normal file
View File

@ -0,0 +1,37 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=false
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=sqlsrv
DATABASE_URL=
DB_HOST=
DB_PORT=1433
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE_ORI=
DB_DATABASE_CAL=
DB_DATABASE_PRO=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
APP_FORCE_HTTPS=
API_URL=
AZURE_STORAGE_NAME=
AZURE_STORAGE_KEY=
AZURE_STORAGE_CONTAINER=
AZURE_STORAGE_URL=
AZURE_STORAGE_CONNECTION_STRING=

51
.env.example Normal file
View File

@ -0,0 +1,51 @@
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MEMCACHED_HOST=127.0.0.1
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore

32
.gitignore vendored Normal file
View File

@ -0,0 +1,32 @@
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
.env
.env.backup
.phpunit.result.cache
docker-compose.override.yml
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
/.idea
/.vscode
storage/.DS_Store
storage/framework/.DS_Store
public/.DS_Store
public/uploads
resources/.DS_Store
resources/js/.DS_Store
.DS_Store
composer.lock
config/database0.php
public/.DS_Store
.DS_Store
composer.lock
.DS_Store
*.lock
public/dwnld/*
public/.DS_Store
public/.DS_Store

13
.styleci.yml Normal file
View File

@ -0,0 +1,13 @@
php:
preset: laravel
disabled:
- no_unused_imports
finder:
not-name:
- index.php
- server.php
js:
finder:
not-name:
- webpack.mix.js
css: true

62
README.md Normal file
View File

@ -0,0 +1,62 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400"></a></p>
<p align="center">
<a href="https://travis-ci.org/laravel/framework"><img src="https://travis-ci.org/laravel/framework.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>
## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1500 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.
## Laravel Sponsors
We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
### Premium Partners
- **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[Many](https://www.many.co.uk)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)**
- **[Curotec](https://www.curotec.com/services/technologies/laravel/)**
- **[OP.GG](https://op.gg)**
## Contributing
Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).
## Code of Conduct
In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).
## Security Vulnerabilities
If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.
## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).

41
app/Console/Kernel.php Normal file
View File

@ -0,0 +1,41 @@
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}

View File

@ -0,0 +1,41 @@
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Models\User;
use App\Models\Message;
class MessageSent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $sender_id;
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($sender_id, $msg)
{
$this->sender_id = $sender_id;
$this->message = $msg;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat-' . $this->sender_id);
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Events;
use App\Models\ChatMessage;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class NewChatMessage implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $chatMessage;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(ChatMessage $chatMessage)
{
$this->chatMessage = $chatMessage;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat.'.$this->chatMessage->chat_room_id);
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class NotificationEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $id;
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($id, $message)
{
//
$this->id = $id;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return ['notification-channel-' . $this->id];
}
public function broadcastAs()
{
return 'notification-event';
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace App\Events;
use App\Models\CatContrato;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class NuevaCargaAmortizacion
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public CatContrato $contrato;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(CatContrato $contrato)
{
$this->contrato = $contrato;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

View File

@ -0,0 +1,41 @@
<?php
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'current_password',
'password',
'password_confirmation',
];
/**
* Register the exception handling callbacks for the application.
*
* @return void
*/
public function register()
{
$this->reportable(function (Throwable $e) {
//
});
}
}

View File

@ -0,0 +1,81 @@
<?php
namespace App\Exports;
use App\Models\CatCliente;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class ExportCatCliente implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumns;
public $empresaId;
public $ids;
public function __construct($empresaId, $ids = null)
{
$this->selectColumns = [
"Cat_Cliente.Cod AS ID_Cliente",
"Cat_Cliente.Desc AS Cliente",
"Cat_Tipo_Persona.Desc AS Tipo_Persona",
"Cat_Cliente.Grupo_Riesgo_Comun",
"Cat_Entidad_Federativa.Desc AS Entidad_Federativa",
"Id_Codigo_Postal AS Codigo_Postal",
"Cat_Codigo_Scian.Desc AS Codigo_Scian",
"Cat_Sector_Economico.Desc AS Sector_Economico",
"Cat_Subsector_Economico.Desc AS Subsector_Economico",
"Cat_Rama_Economica.Desc AS Rama_Economica"
];
$this->empresaId = $empresaId;
$this->ids = $ids;
}
public function collection()
{
$query = CatCliente::select(...$this->selectColumns)
->leftJoin('Cat_Tipo_Persona', 'Cat_Cliente.Id_Tipo_Persona', '=', 'Cat_Tipo_Persona.Id')
->leftJoin('Cat_Codigo_Scian', 'Cat_Cliente.Id_Codigo_Scian', '=', 'cat_Codigo_Scian.Id')
->leftJoin('Cat_Entidad_Federativa', 'Cat_Cliente.Id_Entidad_Federativa', '=', 'Cat_Entidad_Federativa.Id')
->leftJoin('Cat_Sector_Economico', 'Cat_Cliente.Id_Sector_Economico', '=', 'Cat_Sector_Economico.Id')
->leftJoin('Cat_Subsector_Economico', 'Cat_Cliente.Id_Subsector_Economico', '=', 'Cat_Subsector_Economico.Id')
->leftJoin('Cat_Rama_Economica', 'Cat_Cliente.Id_Rama_Economica', '=', 'Cat_Rama_Economica.Id')
->where('ID_Empresa', $this->empresaId);
if (!is_null($this->ids)) {
$query->whereIn('Cat_Cliente.Cod', $this->ids);
}
return $query->get();
}
public function headings(): array
{
return [
"ID_Cliente",
"Cliente",
"Tipo_Persona",
"Grupo_Riesgo_Comun",
"Entidad_Federativa",
"Codigo_Postal",
"Codigo_Scian",
"Sector_Economico",
"Subsector_Economico",
"Rama_Economica"
];
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,175 @@
<?php
namespace App\Exports\Reportes;
use App\Models\CatCalifCredito;
use App\Models\CatCliente;
use App\Models\CatContrato;
use App\Models\CatEntidadFederativa;
use App\Models\CatEstatusContrato;
use App\Models\CatFideiEmpresa;
use App\Models\CatFuenteFondeo;
use App\Models\CatMoneda;
use App\Models\CatProductoFinanciero;
use App\Models\CatRamaEconomica;
use App\Models\CatSectorEconomico;
use App\Models\CatSubsectorEconomico;
use App\Models\CatTipoActivo;
use App\Models\CatTipoGarantia;
use App\Models\CatTipoPersona;
use App\Models\CatTipoTasa;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class ExportDetalleCartera implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumns;
public $empresaId;
public $TipoTotal;
public $Periodo;
public function __construct($empresaId, $TipoTotal, $TipoCartera, $Periodo ,$id_usuario)
{
$this->empresaId = $empresaId;
$this->TipoTotal = $TipoTotal;
$this->TipoCartera = $TipoCartera;
$this->Periodo = $Periodo;
$this->id_usuario = $id_usuario;
}
public function collection()
{
$contratos = collect(CatContrato::where("Id_Empresa",$this->empresaId)->where("Activo", 1)->get()->toArray());
$tipo_persona = collect(CatTipoPersona::where("Activo",1)->get()->toArray());
$clientes = collect(CatCliente::where("Id_Empresa",$this->empresaId)->where("Activo", 1)->get()->toArray());
$entidad_fede = collect(CatEntidadFederativa::where("Activo",1)->get()->toArray());
$sector_eco = collect(CatSectorEconomico::where("Activo",1)->get()->toArray());
$subsector_eco = collect(CatSubsectorEconomico::where("Activo",1)->get()->toArray());
$rama_eco = collect(CatRamaEconomica::where("Activo",1)->get()->toArray());
$producto = collect(CatProductoFinanciero::where("Activo",1)->get()->toArray());
$f_fondeo_g = CatFuenteFondeo::select("Id","Cod","Desc")->where("Activo",1);
$fuente_fondeo = collect(CatFideiEmpresa::select("Id","Cod","Desc")->where("Activo",1)
->where("Id_Empresa", $this->empresaId)
->union($f_fondeo_g)
->get()
->toArray());
$moneda = collect(CatMoneda::where("Activo",1)->get()->toArray());
$tipo_activo = collect(CatTipoActivo::where("Activo",1)->get()->toArray());
$calif_credito = collect(CatCalifCredito::where("Activo",1)->get()->toArray());
$estatus_contrato = collect(CatEstatusContrato::where("Activo",1)->get()->toArray());
$tipo_tasa = collect(CatTipoTasa::where("Activo",1)->get()->toArray());
$tipo_garantia = collect(CatTipoGarantia::where("Activo",1)->get()->toArray());
$Tabla = 'Tab_Cartera_vigente_'.$this->empresaId.'_'.$this->id_usuario.'_0_Emp';
$Tabla_macrofiltros = 'Tab_Macrofiltro_'.$this->empresaId.'_'.$this->id_usuario.'_0_Emp';
$datos = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON ; exec sp_reporte_cartera_detalle '{$Tabla}', '{$Tabla_macrofiltros}', {$this->TipoTotal}, {$this->TipoCartera}, '{$this->Periodo}', 1"));
$datos_2 = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON ; exec sp_reporte_carteras_vigente_detalles '{$Tabla}', {$this->TipoTotal}, {$this->TipoCartera}"));
$datos = collect($datos);
$datos = $datos->map(function ($item, $key) {
$array = json_decode(json_encode($item), true);
return $array;
});
$datos_2 = collect($datos_2);
$datos_2 = $datos_2->map(function ($item, $key) {
$array = json_decode(json_encode($item), true);
return $array;
});
$final = $datos->map(function ($item, $key)
use ($datos_2, $contratos, $tipo_persona, $clientes, $entidad_fede, $sector_eco, $subsector_eco, $rama_eco, $producto, $fuente_fondeo,$moneda, $tipo_activo, $calif_credito, $estatus_contrato, $tipo_tasa, $tipo_garantia) {
$array = $item;
$id_contrato = $item["Contrato ID"];
$filtered = $datos_2->where('id_contrato', $id_contrato)->first();
if (isset($filtered["id_contrato"])){
unset($filtered["id_contrato"]);
}
if (isset($filtered["id_empresa"])){
unset($filtered["id_empresa"]);
}
$datos_pagos = [];
foreach($filtered as $key => $row_data){
$valor = is_null($row_data) ? "0" : $row_data;
$datos_pagos[$key] = $valor;
}
$array["Contrato ID"] = $contratos->where('Id', $array["Contrato ID"])->first() ? $contratos->where('Id', $array["Contrato ID"])->first()["Cod"] : "";
$array["Cliente"] = $clientes->where('Id', $array["Cliente"])->first() ? $clientes->where('Id', $array["Cliente"])->first()["Desc"] : "";
$array["Persona Física / Moral"] = $tipo_persona->where('Id', $array["Persona Física / Moral"])->first() ? $tipo_persona->where('Id', $array["Persona Física / Moral"])->first()["Desc"] : "";
$array["Entidad Federativa"] = $entidad_fede->where('Id', $array["Entidad Federativa"])->first() ? $entidad_fede->where('Id', $array["Entidad Federativa"])->first()["Desc"] : "";
$array["Sector Económico"] = $sector_eco->where('Id', $array["Sector Económico"])->first() ? $sector_eco->where('Id', $array["Sector Económico"])->first()["Desc"] : "";
$array["Subsector Económico"] = $subsector_eco->where('Id', $array["Subsector Económico"])->first() ? $subsector_eco->where('Id', $array["Subsector Económico"])->first()["Desc"] : "";
$array["Rama Económica"] = $rama_eco->where('Id', $array["Rama Económica"])->first() ? $rama_eco->where('Id', $array["Rama Económica"])->first()["Desc"] : "";
$array["Nombre del Producto"] = $producto->where('Id', $array["Nombre del Producto"])->first() ? $producto->where('Id', $array["Nombre del Producto"])->first()["Desc"] : "";
$array["Fuente de Fondeo"] = $fuente_fondeo->where('Id', $array["Fuente de Fondeo"])->first() ? $fuente_fondeo->where('Id', $array["Fuente de Fondeo"])->first()["Desc"] : "";
$array["Moneda"] = $moneda->where('Id', $array["Moneda"])->first() ? $moneda->where('Id', $array["Moneda"])->first()["Cod"] : "";
$array["Tipo de Activo"] = $tipo_activo->where('Id', $array["Tipo de Activo"])->first() ? $tipo_activo->where('Id', $array["Tipo de Activo"])->first()["Desc"] : "";
$array["Tasa Fija / Variable"] = $tipo_tasa->where('Id', $array["Tasa Fija / Variable"])->first() ? $tipo_tasa->where('Id', $array["Tasa Fija / Variable"])->first()["Desc"] : "";
$array["Calificación de crédito"] = $calif_credito->where('Id', $array["Calificación de crédito"])->first() ? $calif_credito->where('Id', $array["Calificación de crédito"])->first()["Desc"] : "";
$array["Tipo de Garantia"] = $tipo_garantia->where('Id', $array["Tipo de Garantia"])->first() ? $tipo_garantia->where('Id', $array["Tipo de Garantia"])->first()["Desc"] : "";
$array["Estatus del Contrato"] = $estatus_contrato->where('Id', $array["Estatus del Contrato"])->first() ? $estatus_contrato->where('Id', $array["Estatus del Contrato"])->first()["Desc"] : "";
if (strval($array["Residual Documentado SI/ NO"]) == ""){
$array["Residual Documentado SI/ NO"] = "";
}
else if (intval($array["Residual Documentado SI/ NO"]) == 1){
$array["Residual Documentado SI/ NO"] = "SI";
}
else if (intval($array["Residual Documentado SI/ NO"]) == 0){
$array["Residual Documentado SI/ NO"] = "NO";
}
return array_merge($array,$datos_pagos);
});
return $final;
}
public function headings(): array
{
if ($this->collection()->first()){
return array_keys($this->collection()->first());
}
return [];
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,79 @@
<?php
namespace App\Exports;
use App\Models\TabAmortizacion;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class TabAmortizacionExport implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumns;
public $empresaId;
public function __construct($empresaId, $ids = null)
{
$this->selectColumns = [
DB::raw('Cat_Contrato.Cod AS ID_Contrato'),
DB::raw('Tab_Amortizacion.Num_Pago AS Num_Pago'),
DB::raw('Tab_Amortizacion.Fecha_Pago_Teorico AS Fecha_Pago_Teorico'),
DB::raw('Tab_Amortizacion.Pago_Interes_Teorico AS Pago_Interes_Teorico'),
DB::raw('Tab_Amortizacion.Pago_Capital_Teorico AS Pago_Capital_Teorico'),
DB::raw('Tab_Amortizacion.Pago_Total_Teorico AS Pago_Total_Teorico'),
DB::raw('Cat_Concepto_Pago.Cod AS Concepto_Pago'),
DB::raw('Tab_Amortizacion.Fecha_Reest_Sust AS Fecha_Reest_Sust'),
];
$this->empresaId = $empresaId;
$this->ids = $ids;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$query = TabAmortizacion::select($this->selectColumns)
->join(DB::raw("Cat_Contrato"), function ($join) {
$join->on("Cat_Contrato.Id", "=", "Tab_Amortizacion.Id_Contrato")->on("Cat_Contrato.Id_Empresa", "=", DB::raw($this->empresaId));
})
->leftJoin('Cat_Concepto_Pago', 'Tab_Amortizacion.Id_Concepto_Pago', 'Cat_Concepto_Pago.Id')
->where('Tab_Amortizacion.Id_empresa', $this->empresaId);
if (!is_null($this->ids)) {
$query->whereIn('Tab_Amortizacion.Id_Contrato', $this->ids);
}
return $query->get();
}
public function headings(): array
{
return [
'ID_Contrato',
'Num_Pago',
'Fecha_Pago_Teorico',
'Pago_Interes_Teorico',
'Pago_Capital_Teorico',
'Pago_Total_Teorico',
'Concepto_Pago',
'Fecha_Reest_Sust',
];
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,112 @@
<?php
namespace App\Exports;
use App\Models\CatClienteVar;
use App\Models\TabClienteVar;
use App\Utilities\CatalogosHelper;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class TabClienteVarExport implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumns;
public $empresaId;
public $ids;
public function __construct($empresaId, $ids = null)
{
$this->selectColumns = [
DB::raw("Cat_Cliente.Cod as ID_Cliente"),
DB::raw("Tab_Cliente_Var.Fecha as Fecha_Actualizacion"),
DB::raw("Cat_Cliente_Var.Cod as Variable"),
DB::raw("Tab_Cliente_Var.Valor as Valor"),
DB::raw("Cat_Cliente_Var.Validacion as Validacion")
];
$this->empresaId = $empresaId;
$this->ids = $ids;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$data_final = [];
$catalogos = CatalogosHelper::obtenerCatalogosCarga();
$query = TabClienteVar::select($this->selectColumns)
->join("Cat_Cliente", "Cat_Cliente.Id", "=", "Tab_Cliente_Var.Id_Cliente")
->join("Cat_Cliente_Var", "Cat_Cliente_Var.Id", "=", "Tab_Cliente_Var.Id_Variable")
->where('Cat_Cliente.Id_Empresa', $this->empresaId);
if (!is_null($this->ids) && is_array($this->ids)) {
$query->whereIn('Tab_Cliente_Var.Id_Cliente', $this->ids);
}
$data = $query->get()->toArray();
$collection = collect($data)->groupBy(function ($item, $key) {
return $item['ID_Cliente']."|".$item['Fecha_Actualizacion'];
});
foreach ($collection as $key => $col){
$data_key = explode("|",$key);
$row_complete["ID_Cliente"] = $data_key[0];
foreach($col as $data){
$cat_valor = null;
if (strpos($data["Validacion"],"Cat:") !== false){
$cat_rule = explode(":",$data["Validacion"]);
$cat_valor = $catalogos->get($cat_rule[1])->firstWhere('id', $data["Valor"]);
$cat_valor = $cat_valor["codigo"];
}
$row_complete[$data["Variable"]] = $cat_valor ? $cat_valor : $data["Valor"];
}
$row_complete["Fecha_Actualizacion"] = $data_key[1];
array_push($data_final,$row_complete);
}
return collect($data_final);
}
public function headings(): array
{
$cliente_var = CatClienteVar::all();
$columnas = ["ID_Cliente"];
foreach($cliente_var as $c){
array_push($columnas,$c->Cod);
}
array_push($columnas,"Fecha_Actualizacion");
return $columnas;
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,79 @@
<?php
namespace App\Exports;
use App\Models\TabCobranza;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class TabCobranzaExport implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumns;
public $empresaId;
public function __construct($empresaId, $ids = null)
{
$this->selectColumns = [
DB::raw('Cat_Contrato.Cod AS ID_Contrato'),
DB::raw('Tab_Cobranza.Fecha_Pago_Real AS Fecha_Pago_Real'),
DB::raw('Tab_Cobranza.Pago_Interes_Real AS Pago_Interes_Real'),
DB::raw('Tab_Cobranza.Pago_Capital_Real AS Pago_Capital_Real'),
DB::raw('Tab_Cobranza.Pago_Total_Real AS Pago_Total_Real'),
DB::raw('Cat_Concepto_Pago.Cod AS Concepto_Pago'),
DB::raw('Tab_Cobranza.Fecha_Reest_Sust AS Fecha_Reest_Sust'),
];
$this->empresaId = $empresaId;
$this->ids = $ids;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$query = TabCobranza::select($this->selectColumns)
->join(DB::raw("Cat_Contrato"), function ($join) {
$join->on("Cat_Contrato.Id", "=", "Tab_Cobranza.Id_Contrato")->on("Cat_Contrato.Id_Empresa", "=", DB::raw($this->empresaId));
})
->leftJoin('Cat_Concepto_Pago', 'Tab_Cobranza.Id_Concepto_Pago', 'Cat_Concepto_Pago.Id')
->where('Tab_Cobranza.Id_empresa', $this->empresaId);
if (!is_null($this->ids)) {
$query->whereIn('Tab_Amortizacion.Id_Contrato', $this->ids);
}
return $query->get();
}
public function headings(): array
{
return [
'ID_Contrato',
'Fecha_Pago_Real',
'Pago_Interes_Real',
'Pago_Capital_Real',
'Pago_Total_Real',
'Concepto_Pago',
'Fecha_Reest_Sust',
];
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,172 @@
<?php
namespace App\Exports;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class TabContratoExport implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public function __construct($empresaId, $ids = null)
{
$this->selectColumns = [
DB::raw("cc.Contrato AS Contrato"),
DB::raw("cc.Anexo AS Anexo"),
DB::raw("cc.Cod AS ID_Contrato"),
DB::raw("ccli.Cod AS ID_Cliente"),
DB::raw("cpf.Cod AS Producto_Financ"),
DB::raw("cc.Nombre_Producto AS Nombre_Producto"),
DB::raw("cc.Retenedor AS Retenedor"),
DB::raw("cm.Cod AS Moneda"),
DB::raw("cc.IVA AS IVA"),
DB::raw("cac.Fecha_Factura_Activo AS Fecha_Factura_Activo"),
DB::raw("cta.Cod AS Tipo_Activo"),
DB::raw("cac.Desc_Activo_1 AS Descripcion_1_Activo"),
DB::raw("cac.Desc_Activo_2 AS Descripcion_2_Activo"),
DB::raw("cac.Valor_Equipo_Antes_IVA AS Valor_Equipo_Antes_IVA"),
DB::raw("cc.Plazo AS Plazo"),
DB::raw("cc.Plazo_Mas_Residual AS Plazo_Mas_Residual"),
DB::raw("ctt.Cod AS Tipo_Tasa"),
DB::raw("cc.Tasa_Fija AS Tasa_Fija"),
DB::raw("cc.Spread AS Spread"),
DB::raw("ctr.Cod AS Tasa_Referencia"),
DB::raw("cc.TIR AS TIR"),
DB::raw("cc.Anticipo AS Anticipo"),
DB::raw("ctg.Cod AS Tipo_Garantia"),
DB::raw("cc.Monto_Financ_Saldo_Ini AS Monto_Financ_Saldo_Ini"),
DB::raw("cc.Sum_Rentas AS Sum_Rentas"),
DB::raw("cc.Sum_Rentas_Mas_Residual AS Sum_Rentas_Mas_Residual"),
DB::raw("cc.Sum_Pagos AS Sum_Pagos"),
DB::raw("cc.Sum_Intereses AS Sum_Intereses"),
DB::raw("cc.Residual_Sin_IVA AS Residual_Sin_IVA"),
DB::raw("cc.Residual_Con_IVA AS Residual_Con_IVA"),
DB::raw("cc.Tipo_Residual AS Tipo_Residual"),
DB::raw("CASE WHEN cc.Residual_Documentado = 1 THEN 'SI' ELSE 'NO' END AS Residual_Documentado"),
DB::raw("cec.Cod AS Estatus_Contrato"),
DB::raw("tec.Fecha_Estatus_Contrato AS Fecha_Estatus_Contrato"),
DB::raw("cc.Fecha_Reest_Sust AS Fecha_Reest_Sust"),
DB::raw("cc_sust.Cod AS Sustitucion_Contrato"),
DB::raw("tec.Nota_Estatus_Reest_Sust AS Nota_Estatus_Reest_Sust"),
DB::raw("tec.Comentarios AS Comentarios"),
DB::raw("cc.Fecha_Originacion AS Fecha_Originacion"),
DB::raw("cc.Fecha_Residual AS Fecha_Residual"),
DB::raw("cc.Fecha_Ult_Pago AS Fecha_Ult_Pago"),
];
$this->empresaId = $empresaId;
$this->ids = $ids;
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$activos = DB::connection("originacion")->table('Cat_Activo_Contrato')
->select([
DB::raw("DISTINCT Id_Contrato"),
DB::raw("Id_Tipo_Activo"),
DB::raw("Fecha_Factura_Activo"),
DB::raw("Desc_Activo_1"),
DB::raw("Desc_Activo_2"),
DB::raw("Valor_Equipo_Antes_IVA")
]);
$query = DB::connection("originacion")
->table("Tab_Estatus_Contrato AS tec")
->select($this->selectColumns)
->join(DB::raw("Cat_Contrato AS cc"), function ($join) {
$join->on("cc.Id", "=", "tec.Id_Contrato")->on("cc.Id_Empresa", "=", DB::raw($this->empresaId));
})
->join(DB::raw("Cat_Cliente AS ccli"), function ($join) {
$join->on("ccli.Id", "=", "cc.Id_Cliente")->on("ccli.Id_Empresa", "=", DB::raw($this->empresaId));
})
->join(DB::raw("Cat_Producto_Financ AS cpf"), "cpf.Id", "=", "cc.Id_Producto_Financ")
->join(DB::raw("Cat_Moneda AS cm"), "cm.Id", "=", "cc.Id_Moneda")
->join(DB::raw("Cat_Tipo_Tasa AS ctt"), "ctt.Id", "=", "cc.Id_Tipo_Tasa")
->join(DB::raw("Cat_Estatus_Contrato AS cec"), "cec.Id", "=", "tec.Id_Estatus_Contrato")
->leftJoin(DB::raw("Cat_Tipo_Garantia AS ctg"), "ctg.Id", "=", "cc.Id_Tipo_Garantia")
->leftJoin(DB::raw("Cat_Tasa_Referencia ctr"), "ctr.Id", "=", "cc.Id_Tasa_Referencia")
->leftJoin(DB::raw("Cat_Contrato AS cc_sust"), function ($join) {
$join->on("cc_sust.Id", "=", "tec.Id_Sustitucion_Contrato")->on("cc_sust.Id_Empresa", "=", DB::raw($this->empresaId));
})
->leftJoinSub($activos, 'cac', function ($join) {
$join->on("cac.Id_Contrato", "=", "tec.Id_Contrato");
})
->leftJoin(DB::raw("Cat_Tipo_Activo AS cta"), "cta.Id", "=", "cac.Id_Tipo_Activo");
if (!is_null($this->ids)) {
$query->whereIn('Cat_Contrato.Id', $this->ids);
}
return $query->get();
}
public function headings(): array
{
return [
'Contrato',
'Anexo',
'ID_Contrato',
'ID_Cliente',
'Producto_Financ',
'Nombre_Producto',
'Retenedor',
'Moneda',
'IVA',
'Fecha_Factura_Activo',
'Tipo_Activo',
'Descripcion_1_Activo',
'Descripcion_2_Activo',
'Valor_Equipo_Antes_IVA',
'Plazo',
'Plazo_Mas_Residual',
'Tipo_Tasa',
'Tasa_Fija',
'Spread',
'Tasa_Referencia',
'TIR',
'Anticipo',
'Tipo_Garantia',
'Monto_Financ_Saldo_Ini',
'Sum_Rentas',
'Sum_Rentas_Mas_Residual',
'Sum_Pagos',
'Sum_Intereses',
'Residual_Sin_IVA',
'Residual_Con_IVA',
'Tipo_Residual',
'Residual_Documentado',
'Estatus_Contrato',
'Fecha_Estatus_Contrato',
'Fecha_Reest_Sust',
'Sustitucion_Contrato',
'Nota_Estatus_Reest_Sust',
'Comentarios',
'Fecha_Originacion',
'Fecha_Residual',
'Fecha_Ult_Pago',
];
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,165 @@
<?php
namespace App\Exports;
use App\Models\CatActivoVar;
use App\Models\CatContratoVar;
use App\Models\CatFideiEmpresa;
use App\Models\CatFuenteFondeo;
use App\Models\TabActivoVar;
use App\Models\TabContratoVar;
use App\Utilities\CatalogosHelper;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class TabContratoVarExport implements FromCollection, WithHeadings, WithStyles, ShouldAutoSize
{
public $selectColumnsContratos;
public $selectColumnsActivos;
public $empresaId;
public $ids;
protected $headers = [];
public function __construct($empresaId, $ids = null)
{
$this->selectColumnsContratos = [
DB::raw("Cat_Contrato.Cod as ID_Contrato"),
DB::raw("Tab_Contrato_Var.Fecha as Fecha_Actualizacion"),
DB::raw("Cat_Contrato_Var.Cod as Variable"),
DB::raw("Tab_Contrato_Var.Valor as Valor"),
DB::raw("Cat_Contrato_Var.Validacion as Validacion"),
DB::raw("Cat_Contrato.Fecha_Reest_Sust as Fecha_Reest_Sust")
];
$this->selectColumnsActivos = [
DB::raw("Cat_Contrato.Cod as ID_Contrato"),
DB::raw("Tab_Activo_Var.Fecha as Fecha_Actualizacion"),
DB::raw("Cat_Activo_Var.Cod as Variable"),
DB::raw("Tab_Activo_Var.Valor as Valor"),
DB::raw("Cat_Activo_Var.Validacion as Validacion"),
DB::raw("Cat_Contrato.Fecha_Reest_Sust as Fecha_Reest_Sust")
];
$this->empresaId = $empresaId;
$this->ids = $ids;
# ASIGNAR LOS ENCABEZADOS
array_push($this->headers, "ID_Contrato");
$contrato_var = CatContratoVar::select("Cat_Contrato_Var.Cod as Cod");
$bd_columnas = CatActivoVar::select("Cat_Activo_Var.Cod as Cod")->union($contrato_var)->get()->sortBy("Cod");
foreach ($bd_columnas as $c) {
array_push($this->headers, $c->Cod);
}
array_push($this->headers, "Fecha_Actualizacion");
array_push($this->headers, "Fecha_Reest_Sust");
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$data_final = [];
$catalogos = CatalogosHelper::obtenerCatalogosCarga();
$contratos = TabContratoVar::select($this->selectColumnsContratos)
->leftJoin('Cat_Contrato', 'Cat_Contrato.Id', '=', 'Tab_Contrato_Var.Id_Contrato')
->leftJoin('Cat_Contrato_Var', 'Tab_Contrato_Var.Id_Variable', '=', 'Cat_Contrato_Var.Id')
->where('Id_Empresa', $this->empresaId);
$query = TabActivoVar::select($this->selectColumnsActivos)
->join('Cat_Contrato', 'Cat_Contrato.Id', '=', 'Tab_Activo_Var.Id_Contrato')
->join('Cat_Activo_Var', 'Tab_Activo_Var.Id_Variable', '=', 'Cat_Activo_Var.Id')
->where('Id_Empresa', $this->empresaId)
->union($contratos);
if (!is_null($this->ids)) {
$query->whereIn('Cat_Contrato.Id', $this->ids);
}
$data = $query->get()->toArray();
$collection = collect($data)->groupBy(function ($item, $key) {
return $item['ID_Contrato']."|".$item['Fecha_Actualizacion'];
});
foreach ($collection as $key => $col){
$data_key = explode("|",$key);
foreach($this->headers as $header){
$row_complete[$header] = "";
}
$row_complete["ID_Contrato"] = $data_key[0];
foreach($col as $data){
$cat_valor = null;
$valor_final = $data["Valor"];
if (strpos($data["Validacion"],"Cat:") !== false){
$cat_rule = explode(":",$data["Validacion"]);
$cat_valor = $catalogos->get($cat_rule[1])->firstWhere('id', $data["Valor"]);
$valor_final = $cat_valor["codigo"];
}
else if ($data["Variable"] == "Pol_Seguro"){
if ($data["Valor"] == 0 && $data["Valor"] == "0"){
$valor_final = "NO";
}
else if ($data["Valor"] == 1 && $data["Valor"] == "1"){
$valor_final = "SI";
}
}
else if ($data["Variable"] == "Fuente_Fondeo"){
$f_fondeo_g = CatFuenteFondeo::select("Cod")->where("Id", strval($data["Valor"]));
$f_fondeo_un = CatFideiEmpresa::select("Cod")->where("Id", strval($data["Valor"]))
->where("Id_Empresa", $this->empresaId)
->union($f_fondeo_g)
->first();
if ($f_fondeo_un) {
$valor_final = $f_fondeo_un->Cod;
}
}
$row_complete[$data["Variable"]] = $valor_final;
$row_complete["Fecha_Reest_Sust"] = $data["Fecha_Reest_Sust"];
}
$row_complete["Fecha_Actualizacion"] = $data_key[1];
array_push($data_final,$row_complete);
}
$collection = collect($data_final);
return $collection;
}
public function headings(): array
{
return $this->headers;
}
public function styles(Worksheet $sheet)
{
return [
1 =>
[
'font' => ['bold' => true],
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => 'FF000000'],
],
],
],
];
}
}

View File

@ -0,0 +1,326 @@
<?php
namespace App\Http\Controllers\API\Cliente;
use App\Http\Controllers\Controller;
use App\Models\CatCliente;
use App\Models\CategoriaDocumento;
use App\Models\DocumentosCliente;
use App\Models\TabComiteEmpresa;
use App\Models\CatTipoProductoFinanciero;
use App\Models\CatRatingExterno;
use App\Models\CatPerspectiva;
use App\Models\CatHorizonte;
use App\Models\CatTipoCalificacion;
use App\Models\CatCalificadora;
use App\Models\TabMiembrosEmpresa;
use App\Models\CatDenominacionSocial;
use App\Models\CatSexo;
use Illuminate\Http\Request;
use App\Http\Requests\StoreComiteRequest;
use App\Models\CatFuenteFondeo;
use App\Models\CatMoneda;
use App\Models\CatPeriodicidad;
use App\Models\CatProductoCaracteristica;
use App\Models\CatTipoFinanciamiento;
use App\Models\CatTipoGarantiaPerfil;
class ApiClienteController extends Controller
{
public function validar(Request $request)
{
if ($request->periodo) {
$periodo = date('Y-m-d', strtotime($request->periodo));
} else {
$periodo = date('Y-m-d');
}
//Obtenemos la categoria y subcategoria para generar la ruta en la que se guaradara el archivo
$subcategoria = CategoriaDocumento::where('id', $request->documento_id)->first();
$periodicidad = $subcategoria->tipo_carga;
//verificamos si el documento existe
$existe = DocumentosCliente::where('empresa_id', $request->empresa_id)
->where('categoria_id', $request->documento_id)
->where('periodicidad', $periodicidad)
->where('periodo', $periodo)
->where('identificador', $request->identificador)
->first();
if ($existe) {
$respuesta = ['valido' => false, 'mensaje' => 'El documento existe en la base de datos',];
} else {
$respuesta = ['valido' => true, 'mensaje' => 'El documento se puede almacenar'];
}
return response()->json($respuesta);
}
public function subcategoria($id)
{
$subcategorias = CategoriaDocumento::where('categoria_superior', $id)->get();
return response()->json($subcategorias);
}
/**
* Crea un nuevo comite para la forma del perfil del cliente.
*
* @param \Illuminate\Http\StoreComiteRequest $request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addComite(StoreComiteRequest $request)
{
$comite= new TabComiteEmpresa();
$comite->Nombre=$request->nombre;
$comite->empresa_id=$request->empresa_id;
$comite->save();
$comite->miembros=[];
$data=[
'success'=>true,
'comite'=>$comite,
'template'=>view('dashboard.cliente.perfil.comite',['tipo'=>'comite','comite'=>$comite,'CatSexo'=>CatSexo::all(),])->render()
];
return response()->json($data);
}
/**
* Crea un nuevo comite para la forma del perfil del cliente.
*
* @param \Illuminate\Http\Request $request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function deleteComite(Request $request)
{
TabComiteEmpresa::where('id',$request->idcomite)->delete();
TabMiembrosEmpresa::where('comite_id',$request->idcomite)->delete();
$data=[
'success'=>true,
];
return response()->json($data);
}
/**
* Crea un nuevo producto para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addProducto(Request $request)
{
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.productos_comerciales',['CatTipoProductoFinanciero' => CatTipoProductoFinanciero::all(),'CatProductoCaracteristica' => CatProductoCaracteristica::all(), 'idx'=>$request->idx])->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Raiting para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addRating(Request $request)
{
$catalogos=[
'CatRatingExterno' => CatRatingExterno::all(),
'CatPerspectiva' => CatPerspectiva::all(),
'CatHorizonte' => CatHorizonte::all(),
'CatTipoCalificacion' => CatTipoCalificacion::all(),
'CatCalificadora' => CatCalificadora::all(),
'idx'=>$request->idx
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.rating',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Miembro Direccion para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addMiembro(Request $request)
{
$catalogos=[
'tipo'=>$request->tipo,
'CatSexo'=>CatSexo::all(),
'idx'=>$request->idx
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.miembros',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Miembro Comite para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addMiembroComite(Request $request)
{
$catalogos=[
'tipo'=>'comite',
'idcomite'=>$request->idcomite,
'CatSexo'=>CatSexo::all(),
'idx'=>$request->idx
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.miembro_comite',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Miembro Comite para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addEstructuraAccionaria(Request $request)
{
$catalogos=[
'CatDenominacionSocial'=>CatDenominacionSocial::all(),
'idx'=>$request->idx,
'CatSexo'=>CatSexo::all(),
'parent'=>$request->parent
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.estructura_accionaria',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Miembro Comite para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addEstructuraAccionariaSub(Request $request)
{
$catalogos=[
'CatDenominacionSocial'=>CatDenominacionSocial::all(),
'idx'=>$request->idx
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.perfil.estructura_accionaria_sub',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo Miembro Comite para la forma del perfil del cliente.
* @param \Illuminate\Http\Request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function addPropuestaFondeo(Request $request)
{
$catalogos=[
'catPeriodicidad' => CatPeriodicidad::all(),
'catTipoFinanciamiento' => CatTipoFinanciamiento::all(),
'catTipoMoneda' => CatMoneda::all(),
'catPeriodicidad' => CatPeriodicidad::all(),
'catTipoGarantia' => CatTipoGarantiaPerfil::all(),
'idx'=>$request->idx
];
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.operacion.propuestaFondeo',$catalogos)->render()
];
return response()->json($data);
}
/**
* Crea un nuevo covenant para la forma alta covenant / KPI.
* @param \Illuminate\Http\Request
* @return \Illuminate\Http\Response
*/
public function addCovenant(Request $request)
{
$data=[
'success'=>true,
'template'=>view('dashboard.cliente.financieros.covenantTemplate',['catFunetesFondeo'=>CatFuenteFondeo::all(),
'operadores'=>['>', '>=','<','<=','='], 'indx'=>$request->idx,'nombre'=>$request->nombre])->render()
];
return response()->json($data);
}
/**
* Obtiene la lista de clientes
*/
public function obtenerClientes(Request $req)
{
$data = [
"result" => []
];
$query = CatCliente::where("Id_Empresa", $req->empresa_id);
$rows = [];
if ($req->term != "") {
$query->where(function ($q) use ($req) {
$q->where('Cod', 'like', '%' . $req->term . '%')
->orWhere('Desc', 'like', '%' . $req->term . '%');
});
}
foreach ($query->get() as $d) {
$rows[] = [
"id" => $d->Cod . "|" . $d->Desc,
"name" => $d->Cod . " - " . $d->Desc,
"text" => $d->Cod . " - " . $d->Desc,
];
}
$data = [
"total_count" => sizeof($rows),
"incomplete_results" => false,
"results" => $rows
];
return response()->json($data);
}
}

View File

@ -0,0 +1,125 @@
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Models\CatCuentasFinanciero;
use App\Models\CatCuentasFinancieroEmpresa;
use App\Models\CatPeriodicidad;
use App\Models\TabFinancierosEmpresa;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class CuentasApiController extends Controller
{
public function estadoFinanciero(Request $request)
{
$respuesta= CatCuentasFinanciero::where('nivel','=',1)->where('estado_financiero','=',$request->efinan)->get();
return response()->json($respuesta);
//return $request->entidad;
}
public function nivelCuenta(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$nivel=$request->nivel-1;
$codigo=$request->codigo;
$cod = explode("-", $codigo);
switch ($nivel) {
case 0:
$pr=$cod[0].'-';
$sg= '-'.$cod[2].'-'.$cod[3].'-'.$cod[4].'-'.$cod[5];
break;
case 1:
$pr=$cod[0].'-'.$cod[1].'-';
$sg= '-'.$cod[3].'-'.$cod[4].'-'.$cod[5];
break;
case 2:
$pr=$cod[0].'-'.$cod[1].'-'.$cod[2].'-';
$sg= '-'.$cod[4].'-'.$cod[5];
break;
case 3:
$pr=$cod[0].'-'.$cod[1].'-'.$cod[2].'-'.$cod[3].'-';
$sg= '-'.$cod[5];
break;
}
$consulta= $pr.'%%'.$sg;
$catCuentasFinancieroEmpresa = CatCuentasFinancieroEmpresa::select('codigo','nivel','tipo_entidad','estado_financiero','cuenta')
->where('empresa_id','=',$empresa_id )->where('codigo', 'like', $consulta);
//DB::connection('calidad')->table('cat_cuentas_financieros')
$catalogo = CatCuentasFinanciero:: select('codigo','nivel','tipo_entidad','estado_financiero','cuenta')
->union($catCuentasFinancieroEmpresa)->where('codigo', 'like', $consulta)->orderBy('codigo')->get();
/*
if($nivel>=2){
$respuesta= CatCuentasFinancieroEmpresa::where('codigo', 'like', $consulta)->orderBy('codigo', 'asc')->get();
} else {
$respuesta= CatCuentasFinanciero::where('codigo', 'like', $consulta)->orderBy('codigo', 'asc')->get();
}
*/
$catalogo->shift();
return response()->json($catalogo);
}
/**
* Obtienen periodicidad valida para el tipo de informacion financieras.
* @param \Illuminate\Http\StoreComiteRequest $request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function periodicidadValida(Request $request)
{
$periodicidad=[];
$empresa_id = Session::get("Id_Empresa");
$activos=TabFinancierosEmpresa::select('periodicidad')
->where('empresa_id','=',$empresa_id)
->where('tipoinfofinanciera_id','=',$request->tipo)
->distinct()->pluck('periodicidad');
///buscar trimestres validos
if(sizeof($activos)>0){
$periodicidad=CatPeriodicidad::whereIn('id',$activos)->get();
}
return response()->json($periodicidad);
}
/**
* Obtienen periodicidad valida para el tipo de informacion financieras.
* @param \Illuminate\Http\StoreComiteRequest $request
* String nombre del comite Int id Empresa
* @return \Illuminate\Http\Response
*/
public function periodosValidos(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$periodos=TabFinancierosEmpresa::select('FinalPeriodo')
->where('empresa_id','=',$empresa_id)
->where('tipoinfofinanciera_id','=',$request->tipo)
->where('Periodicidad','=',$request->periodicidad)
->distinct()->pluck('FinalPeriodo');
return response()->json($periodos);
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Models\CategoriaDocumento;
use App\Models\DocumentosCliente;
use Illuminate\Http\Request;
class DocumentosClienteController extends Controller
{
public function validar(Request $request)
{
if ($request->periodo) {
$periodo = date('Y-m-d', strtotime($request->periodo));
} else {
$periodo = date('Y-m-d');
}
//Obtenemos la categoria y subcategoria para generar la ruta en la que se guaradara el archivo
$subcategoria = CategoriaDocumento::where('id', $request->documento_id)->first();
$periodicidad = $subcategoria->tipo_carga;
//verificamos si el documento existe
$existe = DocumentosCliente::where('empresa_id', $request->empresa_id)
->where('categoria_id', $request->documento_id)
->where('periodicidad', $periodicidad)
->where('periodo', $periodo)
->where('identificador', $request->identificador)
->first();
if ($existe) {
$respuesta = ['valido' => false, 'mensaje' => 'El documento existe en la base de datos',];
} else {
$respuesta = ['valido' => true, 'mensaje' => 'El documento se puede almacenar'];
}
return response()->json($respuesta);
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Http\Controllers\API\Operacion;
use App\Http\Controllers\Controller;
use App\Models\Empresa;
use App\Models\Operacion;
use Illuminate\Http\Request;
class AsignarOperacionController extends Controller
{
public function asignar($id)
{
$empresasope = [];
$operaciones = Operacion::where('efinanciera_id', $id)->where('estatus', '!=', 'Cancelado')->get();
foreach ($operaciones as $operacion) {
$empresasope[] = $operacion->empresa_id;
}
$empresas = Empresa::whereNotIn('id', $empresasope)->where('estatus', 'Activado')->select('id', 'nombre')->get();
return response()->json($empresas);
}
public function empresa($id, $estatus)
{
$efinancieras = [];
$operaciones = Operacion::leftjoin('entidades_financieras', 'entidades_financieras.id', '=', 'operaciones.efinanciera_id')
->select('operaciones.efinanciera_id as id', 'entidades_financieras.nombre')
->where('operaciones.empresa_id', $id)
->where('operaciones.estatus', $estatus)->get();
foreach ($operaciones as $operacion) {
$efinancieras[] = $operacion;
}
return response()->json($efinancieras);
}
}

View File

@ -0,0 +1,337 @@
<?php
namespace App\Http\Controllers;
use App\Models\TabTipoCambio;
use App\Models\TabTasaReferencia;
use App\Services\ExcelService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Collection;
use Illuminate\Validation\Rule;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Illuminate\Support\Facades\File;
class AdminCatalogoController extends Controller
{
/**
* Muestra el listado de Catálogos que se pueden alimentar.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$tipoCambio = TabTipoCambio::select('created_at as fecha')->orderBy('created_at','desc')->first();
$tasaReferencia = TabTasaReferencia::select('created_at as fecha')->orderBy('created_at','desc')->first();
$data = [
'tipoCambio' => $tipoCambio,
'tasaReferencia' => $tasaReferencia,
];
return view('dashboard.catalogos.index', $data);
}
/**
* Formulario para agregear el documento con la información para Tipo de Cambio.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createTipoCambio(Request $request)
{
//
return view('dashboard.catalogos.uploadTipoCambio');
}
/**
* Formulario para agregear el documento con la información para Tasa de Referencia.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createTasaReferencia(Request $request)
{
//
return view('dashboard.catalogos.uploadTasaReferencia');
}
/**
* Funcion para guardar la informacion de Tipo de Cambio.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeTipoCambio(Request $request)
{
//Array donde se guardaran los errores
$errores = [];
//Variables del Layout General
$columnas = [
'id_Tipo_Moneda',
'Valor_Tipo_Cambio',
'Fecha_Tipo_Cambio'
];
//Numero de campos que debe de incluir el docuemento
$numCol = count($columnas);
//Obtenemos la ruta de el archivo
$path = $request->archivo->path();
//Creamos el lector de excel;
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
//configuramos el lector;
$reader->setReadEmptyCells(false);
$spreadsheet = $reader->load($path);
$dataWithHeaders = $spreadsheet->getSheet(0)->toArray(
NULL, // Valor para celdas vacias
TRUE, // Se deben calcular las celdas
);
//Obtenemos el header.
$header = $dataWithHeaders[0];
//Obtenemos la infomacion
$dataArray = array_splice($dataWithHeaders, 1, count($dataWithHeaders) - 1);
//Preeparamos la informción a ser ingresada
$data = array_map(static function ($row) use ($header) {
return array_combine($header, $row);
}, $dataArray);
$numRegistros = count($data);
//////////////////
/// VALIDACION ///
//////////////////
//Cantidad de Columnas
if (count($header) !== $numCol) {
return redirect()->back()->withErrors(['danger' => 'El archivo no pudo ser procesado el número de columnas no es correcto;']);
}
//Orden de las Columnas
if ($columnas !== $header) {
//error
$posCompareArrays = compare_arrays($columnas, $header);
$response = implode(', ', $posCompareArrays);
return redirect()->back()->withErrors(['danger' => "El archivo no pudo ser procesado el nombre o el orden de las columnas es incorrecto."]);
}
foreach ($data as $row) {
$validator = Validator::make($row, [
'id_Tipo_Moneda' => 'required|string',
'Valor_Tipo_Cambio' => 'required|string',
'Fecha_Tipo_Cambio' => 'required|date',
]);
if ($validator->fails()) {
$errores[$row['id_Tipo_Moneda']] = $validator->errors()->toArray();
}
}
if (count($errores)) {
$mensaje = '<strong>Se encontraron ' . count($errores) . ' Filas con errores </strong><br>No se guardo la información';
$respuesta['error'] = $mensaje;
} else{
foreach($data as $item){
TabTipoCambio::create($item);
}
$mensaje = 'Total de Registros: <strong>' . $numRegistros . ' </strong> Guardados';
$respuesta['success'] = $mensaje;
}
return redirect()->back()->with($respuesta);
}
/**
* Funcion para guardar la informacion de Tasa de Referencia de Cambio.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeTasaReferencia(Request $request)
{
//Array donde se guardaran los errores
$errores = [];
//Variables del Layout General
$columnas = [
'Tasa_Referencia',
'Valor_tasa_referencia',
'Fecha_Tasa'
];
//Numero de campos que debe de incluir el docuemento
$numCol = count($columnas);
//Obtenemos la ruta de el archivo
$path = $request->archivo->path();
//Creamos el lector de excel;
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
//configuramos el lector;
$reader->setReadEmptyCells(false);
$spreadsheet = $reader->load($path);
$dataWithHeaders = $spreadsheet->getSheet(0)->toArray(
NULL, // Valor para celdas vacias
TRUE, // Se deben calcular las celdas
);
//Obtenemos el header.
$header = $dataWithHeaders[0];
//Obtenemos la infomacion
$dataArray = array_splice($dataWithHeaders, 1, count($dataWithHeaders) - 1);
//Preeparamos la informción a ser ingresada
$data = array_map(static function ($row) use ($header) {
return array_combine($header, $row);
}, $dataArray);
$numRegistros = count($data);
//////////////////
/// VALIDACION ///
//////////////////
//Cantidad de Columnas
if (count($header) !== $numCol) {
return redirect()->back()->withErrors(['danger' => 'El archivo no pudo ser procesado el número de columnas no es correcto;']);
}
//Orden de las columnas
if ($columnas !== $header) {
//error
$posCompareArrays = compare_arrays($columnas, $header);
$response = implode(', ', $posCompareArrays);
return redirect()->back()->withErrors(['danger' => "El archivo no pudo ser procesado el nombre o el orden de las columnas es incorrecto."]);
}
//Validamos el formato de los datos
foreach ($data as $row) {
$validator = Validator::make($row, [
'Tasa_Referencia' => 'required|string',
'Valor_tasa_referencia' => 'required|string',
'Fecha_Tasa' => 'required|date',
]);
if ($validator->fails()) {
$errores[$row['Tasa_Referencia']] = $validator->errors()->toArray();
}
}
if (count($errores)) {
$mensaje = '<strong>Se encontraron ' . count($errores) . ' Filas con errores </strong><br>No se guardo la información';
$respuesta['error'] = $mensaje;
} else{
foreach($data as $item){
TabTasaReferencia::create($item);
}
$mensaje = 'Total de Registros: <strong>' . $numRegistros . ' </strong> Guardados';
$respuesta['success'] = $mensaje;
}
return redirect()->back()->with($respuesta);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\TabTasaReferencia $tasaReferencia
* @return \Illuminate\Http\Response
*/
public function downloadTasaReferencia()
{
//
$file = 'catalogos/TasaReferencia.xlsx';
$excelArrayFormat = [];
$header = ['Tasa_Referencia','Valor_tasa_referencia','Fecha_Tasa'];
$excelArrayFormat[] = $header;
$spreadsheet = new Spreadsheet();
//CONTENIDO
$data = TabTasaReferencia::all();
$excelArrayFormat[] = $header;
foreach ($data as $item) {
$excelArrayFormat[] = [$item->Tasa_Referencia,$item->Valor_tasa_referencia,$item->Fecha_Tasa];
}
$spreadsheet->getActiveSheet()
->fromArray(
$excelArrayFormat, // The data to set
NULL, // Array values with this value will not be set
'A1' // Top left coordinate of the worksheet range where
);
$content = (new ExcelService())::generateExcelStream($spreadsheet);
Storage::disk('local')->put('public/' . $file, $content);
return Storage::download('public/' .$file);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\TabTipoCambio $tipoCambio
* @return \Illuminate\Http\Response
*/
public function downloadTipoCambio()
{
//
$file = 'catalogos/TipoCambio.xlsx';
$excelArrayFormat = [];
$header = ['id_Tipo_Moneda','Valor_Tipo_Cambio','Fecha_Tipo_Cambio'];
$excelArrayFormat[] = $header;
$spreadsheet = new Spreadsheet();
//CONTENIDO
$data = TabTipoCambio::all();
$excelArrayFormat[] = $header;
foreach ($data as $item) {
$excelArrayFormat[] = [$item->id_Tipo_Moneda,$item->Valor_Tipo_Cambio,$item->Fecha_Tipo_Cambio];
}
$spreadsheet->getActiveSheet()
->fromArray(
$excelArrayFormat, // The data to set
NULL, // Array values with this value will not be set
'A1' // Top left coordinate of the worksheet range where
);
$content = (new ExcelService())::generateExcelStream($spreadsheet);
Storage::disk('local')->put('public/' . $file, $content);
return Storage::download('public/' .$file);
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use App\Models\ExampleTable;
use Illuminate\Http\Request;
class AnalisisAVSAController extends Controller
{
public function index()
{
return view('dashboard.cliente.financieros.analisis_actual_anterior');
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace App\Http\Controllers;
use App\Models\ExampleTable;
use Illuminate\Http\Request;
class AnalisisAVSPFController extends Controller
{
public function index()
{
return view('dashboard.cliente.financieros.analisis_actual_forecast');
}
//
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use App\Models\ExampleTable;
use Illuminate\Http\Request;
class AnalisisCController extends Controller
{
public function index()
{
return view('dashboard.cliente.financieros.analisis_comparativo');
}
}

View File

@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AnalisisVPController extends Controller
{
public function index()
{
return view('dashboard.cliente.financieros.analisis_varios_periodos');
}
}

View File

@ -0,0 +1,126 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Notifications\TwoFactorCode;
use App\Http\Requests\Auth\LoginRequest;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class AuthenticatedSessionController extends Controller
{
/**
* Display the login view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.login');
}
/**
* Handle an incoming authentication request.
*
* @param \App\Http\Requests\Auth\LoginRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(LoginRequest $request)
{
$request->authenticate();
$request->session()->regenerate();
$user = User::find(auth()->id());
# ASIGNAR LA VARIABLE DE SESION PARA LA EMPRESA
if (intval($user->perfil_id) == 2){
Session::put('Id_Empresa', $user->obtenerPrimerEmpresa());
}
if ($user->last_session_id) {
if (now()->gt($user->session_timeout)) {
$updatedUser = User::where('id', auth()->id())->update([
'last_session_id' => Session::getId(),
'session_timeout' => now()->addMinutes(30)
]);
return redirect()->intended(RouteServiceProvider::HOME);
}
User::where('id', auth()->id())->update([
'last_session_id' => '',
'session_timeout' => ''
]);
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return view('denied');
}
$updatedUser = User::where('id', auth()->id())->update([
'last_session_id' => Session::getId(),
'session_timeout' => now()->addMinutes(30)
]);
//$this->authenticated($user);
return redirect()->intended(RouteServiceProvider::HOME);
}
/**
* Destroy an authenticated session.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request)
{
User::where('id', auth()->id())->update([
'last_session_id' => '',
'session_timeout' => ''
]);
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
/**
* Two Factor Auth
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
protected function authenticated($user)
{
$user->generateTwoFactorCode();
//dd($user);
$user->notify(new TwoFactorCode());
}
/**
* Almacena la variable de sesion
*/
public function seleccionarEmpresa(Request $request){
$user = User::find(auth()->id());
$valor = $request->valor;
if ($user->tieneAccesoEmpresa($valor)){
Session::put("Id_Empresa", $valor);
}
return redirect()->back();
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\ValidationException;
class ConfirmablePasswordController extends Controller
{
/**
* Show the confirm password view.
*
* @return \Illuminate\View\View
*/
public function show()
{
return view('auth.confirm-password');
}
/**
* Confirm the user's password.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function store(Request $request)
{
if (! Auth::guard('web')->validate([
'email' => $request->user()->email,
'password' => $request->password,
])) {
throw ValidationException::withMessages([
'password' => __('auth.password'),
]);
}
$request->session()->put('auth.password_confirmed_at', time());
return redirect()->intended('/');
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
class EmailVerificationNotificationController extends Controller
{
/**
* Send a new email verification notification.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
if ($request->user()->hasVerifiedEmail()) {
return redirect()->intended(RouteServiceProvider::HOME);
}
$request->user()->sendEmailVerificationNotification();
return back()->with('status', 'verification-link-sent');
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
class EmailVerificationPromptController extends Controller
{
/**
* Display the email verification prompt.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function __invoke(Request $request)
{
return $request->user()->hasVerifiedEmail()
? redirect()->intended(RouteServiceProvider::HOME)
: view('auth.verify-email');
}
}

View File

@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
use Illuminate\Validation\Rules;
class NewPasswordController extends Controller
{
/**
* Display the password reset view.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\View\View
*/
public function create(Request $request)
{
return view('auth.reset-password', ['request' => $request]);
}
/**
* Handle an incoming new password request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'token' => 'required',
'email' => 'required|email',
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
// Here we will attempt to reset the user's password. If it is successful we
// will update the password on an actual user model and persist it to the
// database. Otherwise we will parse the error and return the response.
$status = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user) use ($request) {
$user->forceFill([
'password' => Hash::make($request->password),
'remember_token' => Str::random(60),
])->save();
event(new PasswordReset($user));
}
);
// If the password was successfully reset, we will redirect the user back to
// the application's home authenticated view. If there is an error we can
// redirect them back to where they came from with their error message.
return $status == Password::PASSWORD_RESET
? redirect()->route('login')->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
class PasswordResetLinkController extends Controller
{
/**
* Display the password reset link request view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.forgot-password');
}
/**
* Handle an incoming password reset link request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'email' => 'required|email',
]);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$status = Password::sendResetLink(
$request->only('email')
);
return $status == Password::RESET_LINK_SENT
? back()->with('status', __($status))
: back()->withInput($request->only('email'))
->withErrors(['email' => __($status)]);
}
}

View File

@ -0,0 +1,54 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
class RegisteredUserController extends Controller
{
/**
* Display the registration view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.register');
}
/**
* Handle an incoming registration request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
event(new Registered($user));
Auth::login($user);
return redirect(RouteServiceProvider::HOME);
}
}

View File

@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use App\Notifications\TwoFactorCode;
class TwoFactorController extends Controller
{
public function index()
{
return view('auth.twoFactor');
}
public function store(Request $request)
{
$request->validate([
'two_factor_code' => 'integer|required',
]);
$user = auth()->user();
if($request->input('two_factor_code') == $user->two_factor_code)
{
$user->resetTwoFactorCode();
return redirect()->intended(RouteServiceProvider::HOME);
}
return redirect()->back()
->withErrors(['two_factor_code' =>
'El código que ingresaste es invalido.']);
}
public function resend()
{
$user = auth()->user();
$user->generateTwoFactorCode();
$user->notify(new TwoFactorCode());
return redirect()->back()->withMessage('Se envio un nuevo código.');
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
class VerifyEmailController extends Controller
{
/**
* Mark the authenticated user's email address as verified.
*
* @param \Illuminate\Foundation\Auth\EmailVerificationRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function __invoke(EmailVerificationRequest $request)
{
if ($request->user()->hasVerifiedEmail()) {
return redirect()->intended(RouteServiceProvider::HOME.'?verified=1');
}
if ($request->user()->markEmailAsVerified()) {
event(new Verified($request->user()));
}
return redirect()->intended(RouteServiceProvider::HOME.'?verified=1');
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\Capacidad;
use Illuminate\Http\Request;
class CapacidadController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Capacidad $capacidad
* @return \Illuminate\Http\Response
*/
public function show(Capacidad $capacidad)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Capacidad $capacidad
* @return \Illuminate\Http\Response
*/
public function edit(Capacidad $capacidad)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Capacidad $capacidad
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Capacidad $capacidad)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Capacidad $capacidad
* @return \Illuminate\Http\Response
*/
public function destroy(Capacidad $capacidad)
{
//
}
}

View File

@ -0,0 +1,144 @@
<?php
namespace App\Http\Controllers;
use App\Models\CategoriaDocumento;
use App\Models\CategoryPermission;
use App\Models\User;
use Exception;
use Illuminate\Http\Request;
class CategoriaDocumentoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$documentosCategorias = [];
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
foreach ($categorias as $categoria) {
$documentosCategorias[$categoria->id] = $categoria;
$subcategorias = CategoriaDocumento::where('categoria_superior', $categoria->id)->get();
$documentosCategorias[$categoria->id]['subcategorias'] = $subcategorias;
}
return view('dashboard.documentos.categoriaList', ['categorias' => $documentosCategorias]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
return view('dashboard.documentos.categoriaAddForm', ['categorias' => $categorias]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
try {
$categoriaDocumento = CategoriaDocumento::create([
'nombre' => $request->nombre,
'categoria_superior' => $request->categoria_superior,
'tipo_carga' => $request->tipo_carga,
'reporteria' => $request->reporteria,
]);
if (empty($categoriaDocumento)) {
throw new Exception('Error al crear la categoria del documento');
}
if ($request->categoria_superior == 0) {
// $categoriasDocumentos = CategoriaDocumento::create('categoria_superior', 0)->get();
$users = User::with('roles')->get();
$usersEmpresas = $users->filter(function ($user, $key) {
return $user->hasRole('empresa');
});
// dd($usersEmpresas);
foreach ($usersEmpresas as $usersEmpresa) {
CategoryPermission::create(['category_id' => $categoriaDocumento->id, 'user_id' => $usersEmpresa->id]);
}
}
return redirect()->route('documento.index');
} catch (\Throwable $th) {
//throw $th;
return redirect()->route('documento.index')->withErrors(['errors' => $th->getMessage()]);
}
}
/**
* Display the specified resource.
*
* @param \App\Models\CategoriaDocumento $categoriaDocumento
* @return \Illuminate\Http\Response
*/
public function show(CategoriaDocumento $categoriaDocumento)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\CategoriaDocumento $categoriaDocumento
* @return \Illuminate\Http\Response
*/
public function edit(CategoriaDocumento $categoriaDocumento)
{
//
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
return view('dashboard.documentos.categoriaEditForm', ['categorias' => $categorias, 'categoriaDocumento' => $categoriaDocumento]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\CategoriaDocumento $categoriaDocumento
* @return \Illuminate\Http\Response
*/
public function update(Request $request, CategoriaDocumento $categoriaDocumento)
{
//
$categoriaDocumento->nombre = $request->nombre;
$categoriaDocumento->categoria_superior = $request->categoria_superior;
$categoriaDocumento->tipo_carga = $request->tipo_carga;
$categoriaDocumento->reporteria = $request->reporteria;
$categoriaDocumento->save();
return redirect()->route('documento.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\CategoriaDocumento $categoriaDocumento
* @return \Illuminate\Http\Response
*/
public function delete(CategoriaDocumento $categoriaDocumento)
{
//
CategoriaDocumento::where('categoria_superior', $categoriaDocumento->id)->delete();
$categoriaDocumento->delete();
return redirect()->route('documento.index');
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers;
use App\Models\CategoryPermission;
use App\Models\User;
use Illuminate\Http\Request;
class CategoryDocumentPermissionController extends Controller
{
public function permissions(User $user, Request $request)
{
$categoryPermissions = $request->permissions_category;
$userCategoryPermissions = CategoryPermission::where('user_id',$user->id);
if ($userCategoryPermissions){
$userCategoryPermissions->delete();
}
foreach ($categoryPermissions as $categoryPermission) {
$categoryPermissionsCreated = CategoryPermission::create([
'category_id' => $categoryPermission,
'user_id' => $user->id
]);
}
return back()->with('success', 'Anadido correctamente!');
}
}

View File

@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers;
use App\Events\MessageSent;
use App\Events\NewChatMessage;
use App\Models\ChatMessage;
use App\Models\ChatRoom;
use Illuminate\Http\Request;
class ChatController extends Controller
{
public function index($id)
{
return view('dashboard.chat', ['userId' => $id]);
}
public function rooms(Request $request)
{
return ChatRoom::all();
}
public function messages(Request $request, $roomId)
{
return ChatMessage::where('chat_room_id', $roomId)->with('user')->orderBy('created_at', 'DESC')->paginate(10);
}
public function newMessage(Request $request, $roomId)
{
$chatMessage = ChatMessage::create([
'user_id' => auth()->id(),
'chat_room_id' => $roomId,
'message' => $request->message,
]);
broadcast(new NewChatMessage($chatMessage))->toOthers();
return response()->json($chatMessage);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return view('dashboard.chat', ['adresseeId' => $id]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function sendMessage(Request $request)
{
broadcast(new MessageSent($user, $message))->toOthers();
}
}

View File

@ -0,0 +1,223 @@
<?php
namespace App\Http\Controllers;
use App\Models\CatCriterio;
use App\Models\ChecklistEfinanciera;
use App\Models\CategoriaDocumento;
use App\Models\CatPeriodicidad;
use App\Models\CatRatingExterno;
use App\Models\CatUnidadMedida;
use App\Models\CatVigencia;
use App\Models\Empresa;
use App\Models\EntidadFinanciera;
use App\Models\EfinancierasUsuario;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ChecklistEfinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$efinancieras=EntidadFinanciera::all();
foreach ($efinancieras as $i => $efinanciera) {
$checklists=ChecklistEfinanciera::where('efinanciera_id', $efinanciera->id)->first();
$efinancieras[$i]->cheklist = $checklists;
//dd($efinancieras[$i]->cheklist);
}
return view('dashboard.documentos.checklistList',['efinancieras'=>$efinancieras]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(EntidadFinanciera $efinanciera)
{
//
$documentosCategorias=[];
$categorias=CategoriaDocumento::where('categoria_superior',0)->get();
foreach($categorias as $categoria){
$documentosCategorias[$categoria->id]=$categoria;
$subcategorias=CategoriaDocumento::where('categoria_superior',$categoria->id)->get();
$documentosCategorias[$categoria->id]['subcategorias']=$subcategorias;
}
return view('dashboard.documentos.checklistAddForm',['categorias'=>$documentosCategorias,'efinanciera'=>$efinanciera]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
foreach($request->activar as $documento){
// dd($documento);
// dd($request->tipo_carga[$documento]);
$docchecklist=new ChecklistEfinanciera();
$docchecklist->efinanciera_id = $request->efinanciera;
$docchecklist->categoria_id = $documento;
$docchecklist->tipo_carga = $request->tipo_carga[$documento];
$docchecklist->periodicidad = $request->periodicidad[$documento];
$docchecklist->tiempo_valides = $request->tiempo_valides[$documento];
$docchecklist->numero_periodos = $request->numero_periodos[$documento];
$docchecklist->mostrar = $request->mostrar[$documento];
$docchecklist->save();
}
return redirect()->route('checklist.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\ChecklistEfinanciera $checklistEfinanciera
* @return \Illuminate\Http\Response
*/
public function show()
{
//
$id = Auth::user()->id;
$cats=[];
$checklist=[];
$documentosCategorias=[];
$efinanciera=EfinancierasUsuario::where('usuario_id',$id)->first();
$checkitems=ChecklistEfinanciera::leftjoin('categoria_documentos','categoria_documentos.id','=','checklist_efinancieras.categoria_id')
->select('checklist_efinancieras.*','categoria_documentos.categoria_superior as parent')
->where('checklist_efinancieras.efinanciera_id',$efinanciera->efinanciera_id)->get();
foreach($checkitems as $item){
$cats[]=$item->parent;
$checklist[$item->categoria_id]=$item;
}
$categorias=CategoriaDocumento::whereIn('id',$cats)->orderby('id','asc')->get();
foreach($categorias as $categoria){
$subcategorias=CategoriaDocumento::where('categoria_superior',$categoria->id)->get();
$documentosCategorias[$categoria->id]=$categoria;
$documentosCategorias[$categoria->id]['subcategorias']=$subcategorias;
}
// dd($documentosCategorias);
$catCriterio = CatCriterio::all();
$catRatingExterno = CatRatingExterno::all();
$catUnidadMedida = CatUnidadMedida::all();
$catPeriodicidad = CatPeriodicidad::all();
$catVigencia = CatVigencia::all();
$data=[
'categorias' => $documentosCategorias,
'checklist' => $checklist,
'catCriterio' => $catCriterio,
'catRatingExterno' => $catRatingExterno,
'catUnidadMedida' => $catUnidadMedida,
'catPeriodicidad' => $catPeriodicidad,
'catVigencia' => $catVigencia
];
return view('dashboard.efinanciera.checklist.documentosList',$data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\ChecklistEfinanciera $checklistEfinanciera
* @return \Illuminate\Http\Response
*/
public function edit(EntidadFinanciera $efinanciera)
{
//
$documentosCategorias=[];
$categorias=CategoriaDocumento::where('categoria_superior',0)->get();
foreach($categorias as $categoria){
$documentosCategorias[$categoria->id]=$categoria;
$subcategorias=CategoriaDocumento::where('categoria_superior',$categoria->id)->get();
$documentosCategorias[$categoria->id]['subcategorias']=$subcategorias;
}
$documentos=ChecklistEfinanciera::where('efinanciera_id',$efinanciera->id)->get();
$documentosChecklist=[];
foreach($documentos as $documento){
$documentosChecklist[$documento->categoria_id]=$documento;
}
$data=[
'categorias'=>$documentosCategorias,
'checklist'=>$documentosChecklist,
'efinanciera'=>$efinanciera,
];
return view('dashboard.documentos.checklistEditForm',$data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\ChecklistEfinanciera $checklistEfinanciera
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
ChecklistEfinanciera::where('efinanciera_id',$request->efinanciera)->whereNotIn('categoria_id',$request->activar)->delete();
foreach($request->activar as $documento){
ChecklistEfinanciera::updateOrCreate(
['efinanciera_id' => $request->efinanciera, 'categoria_id' => $documento],
['tipo_carga' =>$request->tipo_carga[$documento],'periodicidad' =>$request->periodicidad[$documento],'tiempo_valides'=>$request->tiempo_valides[$documento],'numero_periodos'=> $request->numero_periodos[$documento],'mostrar' => $request->mostrar[$documento]]
);
}
return redirect()->route('checklist.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\EntidadFinanciera $efinanciera
* @return \Illuminate\Http\Response
*/
public function delete(EntidadFinanciera $efinanciera)
{
//
ChecklistEfinanciera::where('efinanciera_id',$efinanciera->id)->delete();
return redirect()->route('checklist.index');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View File

@ -0,0 +1,566 @@
<?php
namespace App\Http\Controllers;
use App\Events\NotificationEvent;
use App\Models\DocumentosCliente;
use App\Models\GruposUsuario;
use App\Models\CategoriaDocumento;
use App\Models\CategoryPermission;
use App\Models\Empresa;
use App\Models\EmpresasUsuario;
use App\Models\ChecklistEfinanciera;
use App\Models\ChecklistOperacion;
use App\Models\Operacion;
use App\Models\DocumentosOperacion;
use App\Models\EfinancierasUsuario;
use App\Models\User;
use App\Notifications\DocumentationNotification;
use Illuminate\Http\Request;
use Illuminate\Notifications\Notification;
// use Illuminate\Notifications\Notification;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use ZipArchive;
use Spatie\Permission\Models\Permission;
class DocumentosClienteController extends Controller
{
/**
* Display a listing of the resource.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
//
$documentosCliente = [];
$documentosCategorias = [];
$empresa_id = Session::get("Id_Empresa");
$empresa = Empresa::find($empresa_id);
$dCliente = DocumentosCliente::where('empresa_id', $empresa->id)->get();
foreach ($dCliente as $doc) {
$documentosCliente[$doc->categoria_id] = $doc;
}
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
$categoryPermissions = CategoryPermission::where('user_id', auth()->id())->get();
foreach ($categoryPermissions as $categoryPermission) {
$category = CategoriaDocumento::where('id', $categoryPermission->category_id)->first();
if($category){
$documentosCategorias[$categoryPermission->category_id] = $category;
$subcategorias = CategoriaDocumento::where('categoria_superior', $categoryPermission->category_id)->get();
$documentosCategorias[$categoryPermission->category_id]['subcategorias'] = $subcategorias;
}
}
// return var_dump($documentosCategorias);
// foreach ($documentosCategorias as $documentosCategoria) {
// echo "<pre>";
// return var_dump($documentosCategoria);
// }
if (empty($empresa)) {
return view('dashboard.warning.missing_empresa');
}
$documentosClientes = DocumentosCliente::where('empresa_id', $empresa->id)->get();
$data = [
'categorias' => $documentosCategorias,
'documentos' => $documentosCliente,
'empresa' => $empresa,
'documentosClientes' => $documentosClientes
];
return view('dashboard.cliente.documentos.documentosList', $data);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function interno()
{
//
$empresa_id = Session::get("Id_Empresa");
$dCliente = DocumentosCliente::all();
$documentosCliente = [];
foreach ($dCliente as $doc) {
$documentosCliente[$doc->categoria_id] = $doc;
}
$documentosCategorias = [];
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
foreach ($categorias as $categoria) {
$documentosCategorias[$categoria->id] = $categoria;
$subcategorias = CategoriaDocumento::where('categoria_superior', $categoria->id)->get();
$documentosCategorias[$categoria->id]['subcategorias'] = $subcategorias;
}
return view('dashboard.cliente.documentos.documentosListInterno', ['categorias' => $documentosCategorias, 'documentos' => $documentosCliente, 'documentosClientes' => DocumentosCliente::where('empresa_id', $empresa_id)->get()]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
if (!$empresa_id) {
return view('dashboard.warning.missing_empresa');
}
$data = ['categorias' => $categorias, 'params' => $request->query()];
return view('dashboard.cliente.documentos.documentoUploadForm',$data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
//verificamos si el documento existe
$periodo = date('Y-m-d', strtotime($request->periodo));
//Obtenemos la catregoria y subcategoria para generar la ruta en la que se guaradara el archivo
$subcategoria = CategoriaDocumento::where('id', $request->documento_id)->first();
$categoria = CategoriaDocumento::where('id', $subcategoria->categoria_superior)->first();
// limpiamos el nombre para que no contenga espacios o caracteres especiales
$cat_slug = $this->slug($categoria->nombre);
$sub_slug = $this->slug($subcategoria->nombre);
//generamos el path (ruta) del archivo que guardaremos
$path = "documentos/" . $empresa_id . "/" . $cat_slug . "/" . $sub_slug;
$periodicidad = $subcategoria->tipo_carga;
//en caso de tener periodo lo agregamos al nombre del archivo junto con la fecha
if ($periodicidad == 'Periódica') {
$complemento = date('Y-m-d', strtotime($request->periodo));
if ($request->identificador) {
$complemento .= "_" . $this->slug($request->identificador);
}
} else {
$complemento = $this->slug($request->identificador);
}
$identificador = $this->slug($request->identificador);
//Damos formato al nombre del archivo
$date = date('Y-m-d_h_i');
$filename = $sub_slug . "_" . $identificador . '_' .$complemento.'_'.$date;
//Obtenemos la extención
//$request->archivo
// dd($request->archivo);
$ext = $request->archivo->extension();
//Guardamos el archivo y obtenemos el url
$url = $request->file('archivo')->storeAs($path, $filename . "." . $ext);
if (!$url) {
return redirect()->back()->with('error', 'El archivo no se pudo cargar');
}
//Guaradamos la informacion del archivo en la base de datos
//if($request->periodicidad){ =$request->periodicidad; } else { $periodicidad='Evento único'; }
if ($request->periodo) {
$periodo = date('Y-m-d', strtotime($request->periodo));
} else {
$periodo = date('Y-m-d');
}
$documento = DocumentosCliente::updateOrCreate(
['empresa_id' => $empresa_id, 'categoria_id' => $request->documento_id, 'periodicidad' => $periodicidad, 'periodo' => $periodo, 'identificador' => $request->identificador],
['url' => $url, 'estatus' => 'activo']
);
///AGRGAR A OPERACIONES CORRIENTES
//buscamos si la empresa tiene operaciones activas
$operaciones = Operacion::where('empresa_id', $empresa_id)->where('estatus', '!=', 'Cancelado')->get();
foreach ($operaciones as $operacion) {
//Si la operacion esta activa usamos el check list de la operacion
if ($operacion->estatus == 'Activo') {
$Checklist = ChecklistOperacion::where('operacion_id', $operacion->id)
->where('categoria_id', $request->documento_id)->first();
} elseif ($operacion->estatus == 'Prospecto') {
//Si la operacion es de prospecto usamos el checlist de la Entidad Financiera
$Checklist = ChecklistEfinanciera::where('efinanciera_id', $operacion->efinanciera_id)
->where('categoria_id', $request->documento_id)->where('mostrar', 'Prospecto')->first();
}
if ($Checklist) {
//Posponemos la carga a mas que se cumplan con las reglas
$agregar = false;
if ($Checklist->tipo_carga == 'Evento único' && $Checklist->categoria_id == $request->documento_id) {
// si el tipo de carga es Evento unico se agrega el documento al ser requerido
$agregar = true;
} else {
///si el tipo de craga es periodico y el numero de periodos es mayor a 0 seguimos cargando documentos
if ($Checklist->numero_periodos > 0) {
//Verificamos si esl tiempo de valides es mayor a 0
if ($Checklist->tiempo_valides > 0) {
//Si es mayor que 0 la fecha de valides se calcula apartir de los meses
$multiplo=$this-> periodoMultiplo($Checklist->periodicidad);
//dd($multiplo);
$valides = date("Y-m-d", strtotime("-" . ($multiplo*$Checklist->tiempo_valides) . " months"));
} else {
//Si es 0 la fecha de valides se calcula apartir de los periodos
//para lo cual llamamos la funcion validesPeriods
$valides = $this->validesPeriods($Checklist->periodicidad, $Checklist->numero_periodos);
}
$mes = $request->periodo;
$mesesPeriodo = $this->mesesPeriodo($Checklist->periodicidad);
$mes = date("m", strtotime($request->periodo));
if ($Checklist->categoria_id == $request->documento_id && in_array($mes, $mesesPeriodo) && $request->periodo >= $valides) {
//si el documento ses de carga Periodica y cumple con las reglas se agrega el documento al ser requerido
$agregar = true;
}
}
}
//si se pasaron las validacion se agrega el documento a la operacion
if ($agregar) {
$docOperacion = DocumentosOperacion::updateOrCreate(
['documento_id' => $request->documento_id, 'documento_cli_id' => $documento->id, 'operacion_id' => $operacion->id],
['estatus' => 'cargado', 'validacion' => 'pendiente', 'fecha_carga' => $documento->created_at]
);
$eFinancieraId = $operacion->efinanciera_id;
$nombreEmpresa = auth()->user()->nombre;
$usuarioEntidadfinanciera = EfinancierasUsuario::where('efinanciera_id', $eFinancieraId)->first();
// dd($usuarioEntidadfinanciera);
if (empty($usuarioEntidadfinanciera)) {
# code...
return back()->withErrors(['error' => "Esta entidad financiera no tiene un usuario asignado"]);
}
Notification::send(User::find($usuarioEntidadfinanciera->usuario_id), new DocumentationNotification($usuarioEntidadfinanciera->usuario_id, "La empresa: {$nombreEmpresa} subio el documento {$subcategoria->nombre}"));
// dd($eFinancieraId);
$efinacieras = EfinancierasUsuario::where('efinanciera_id', $eFinancieraId)->get();
foreach ($efinacieras as $efinaciera) {
# code...
event(new NotificationEvent($efinaciera->usuario_id, "La empresa: {$nombreEmpresa} subio el documento {$subcategoria->nombre}"));
}
}
}
}
return redirect()->back()->with('success', 'El archivo se guardo correctamente');
}
/**
* Display the specified resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function download($empresa, $id)
{
//
$category = CategoriaDocumento::find($id);
$file_name = $this->slug($category->nombre);
$zipFileName = $file_name . '.zip';
$documentos = DocumentosCliente::where('empresa_id', $empresa)->where('categoria_id', $id)->get();
$zip = new ZipArchive;
$public_dir = storage_path('app');
//dd($public_dir);
if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
// Add File in ZipArchive
foreach ($documentos as $doc) {
// code...
$nombre = explode('/', $doc->url);
//dd($nombre[4]);
$nam = $nombre[4];
$zip->addFile($public_dir . '/' . $doc->url, $nam);
}
// Close ZipArchive
$zip->close();
}
// $headers = array('Content-Type' => 'application/octet-stream',);
$filetopath = $public_dir . '/' . $zipFileName;
// Create Download Response
return response()->download($filetopath, $zipFileName)->deleteFileAfterSend();
}
/**
* Display the specified resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function descargar($id)
{
//
$documento = DocumentosCliente::where('id', $id)->get();
$file_name = $this->slug(basename($documento[0]->nombre));
$zipFileName = $file_name . '.zip';
$zip = new ZipArchive;
$public_dir = storage_path('app');
//dd($public_dir);
if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
// Add File in ZipArchive
foreach ($documento as $doc) {
// code...
$nombre =basename($doc->url);
//dd($nombre[4]);
$nam = $nombre[4];
$zip->addFile($public_dir . '/' . $doc->url, $nam);
}
// Close ZipArchive
$zip->close();
}
// $headers = array('Content-Type' => 'application/octet-stream',);
$filetopath = $public_dir . '/' . $zipFileName;
// Create Download Response
return response()->download($filetopath, $zipFileName)->deleteFileAfterSend();
}
/**
* Display the specified resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function eliminarDoc($id)
{
//
$documento = DocumentosCliente::where('id', $id)->delete();
return redirect()->back();
}
/**
* Display the specified resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function downloadEf($operacion, $id)
{
//
$category = CategoriaDocumento::find($id);
$file_name = $this->slug($category->nombre);
$zipFileName = $file_name . '.zip';
$documentos = DocumentosOperacion::leftjoin('documentos_clientes', 'documentos_clientes.id', '=', 'documentos_operacions.documento_cli_id')
->select('documentos_operacions.*', 'documentos_clientes.url')
->where('documentos_operacions.operacion_id', $operacion)->where('documentos_operacions.documento_id', $id)->get();
$zip = new ZipArchive;
$public_dir = storage_path('app');
//dd($public_dir);
if ($zip->open($public_dir . '/' . $zipFileName, ZipArchive::CREATE) === TRUE) {
// Add File in ZipArchive
foreach ($documentos as $doc) {
// code...
$nombre = explode('/', $doc->url);
//dd($nombre[4]);
$nam = $nombre[4];
$zip->addFile($public_dir . '/' . $doc->url, $nam);
}
// Close ZipArchive
$zip->close();
}
// $headers = array('Content-Type' => 'application/octet-stream',);
$filetopath = $public_dir . '/' . $zipFileName;
// Create Download Response
return response()->download($filetopath, $zipFileName)->deleteFileAfterSend();
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\DocumentosCliente $documentosCliente
* @return \Illuminate\Http\Response
*/
public function comentar(Request $request)
{
$operacion = Operacion::find($request->operacion);
$docope = DocumentosOperacion::where('documento_id', $request->documento)->where('operacion_id', $request->operacion)->get();
foreach ($docope as $doc) {
$doc->comentario_cliente = $request->comentarios;
$doc->save();
}
return redirect()->back()->with(['empresa' => $operacion->empresa_id, 'efinanciera' => $operacion->efinanciera_id]);
}
/**
* Remove the specified resource from storage.
*
* @param String $string
* @return String $string
*/
public function slug($string)
{
//Procesesamos el texto para eliminar caracteres extraños
$translate = [
"á" => "a", "é" => "e", "í" => "i", "ó" => "o", "ú" => "ú", "ñ" => "n",
"Á" => "A", "É" => "E", "Í" => "I", "Ó" => "O", "Ú" => "U", "Ñ" => "N", " " => "-"
];
$str = preg_replace('/[^A-Za-z0-9\-]/', '', strtr($string, $translate));
return preg_replace('/-+/', '-', $str);
}
/**
* Remove the specified resource from storage.
*
* @param String $string
* @return Array $array
*/
public function mesesPeriodo($periodo)
{
switch ($periodo) {
case 'Mensual':
return ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
break;
case 'Bimestral':
return ['02', '04', '06', '08', '10', '12'];
break;
case 'Trimestral':
return ['03', '06', '09', '12'];
break;
case 'Cuatrimestral':
return ['04', '08', '12'];
break;
case 'Semestral':
return ['06', '12'];
break;
case 'Anual':
return ['12'];
break;
}
}
/**
* Remove the specified resource from storage.
*
* @param String $string
* @return Int $int
*/
public function periodoMultiplo($periodo)
{
switch ($periodo) {
case 'Mensual':
return 1;
break;
case 'Bimestral':
return 2;
break;
case 'Trimestral':
return 3;
break;
case 'Cuatrimestral':
return 4;
break;
case 'Semestral':
return 6;
break;
case 'Anual':
return 12;
break;
}
}
/**
* Remove the specified resource from storage.
*
* @param Integer $search
* @param Array $arr
* @return Integer $closest
*/
public function validesPeriods($periodicidad, $periodos)
{
$mesesPeriodo = $this->mesesPeriodo($periodicidad);
$closest = null;
$mesnum = date('n');
$mes = 12;
$inter = 12 / count($mesesPeriodo);
$mesesTotal = $periodos * $inter;
if ($inter == 12) {
$inter = 0;
}
$years = floor($mesesTotal / 12);
foreach ($mesesPeriodo as $item) {
if (intval($item) < $mesnum) {
if ($closest === null || abs($closest - $mesnum) > abs($mesnum - intval($item))) {
$mes = intval($item);
}
}
}
$year = date('Y');
if($mesnum<=$inter){
$year=$year-1;
}
if ($years > 0) {
$year = $year - $years;
$mesesTotal = ($mesesTotal - ($years * 12));
}
$mesesTotal = $mesesTotal - $inter;
$fechaIni = $year . '-' . str_pad($mes, 2, "0", STR_PAD_LEFT) . '-25';
$fecha = date('Y-m-d', strtotime($fechaIni . " -" . $mesesTotal . " month"));
return $fecha;
}
public function validar()
{
}
}

View File

@ -0,0 +1,34 @@
<?php
namespace App\Http\Controllers;
use App\Models\DocumentosOperacion;
use App\Models\Operacion;
use Illuminate\Http\Request;
class DocumentosOperacionController extends Controller
{
/**
* Display a listing of the resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function estatus(Request $request)
{
//
////dd($request->accion);
$operacion = Operacion::find($request->operacion);
$docope = DocumentosOperacion::where('documento_id', $request->documento)->where('operacion_id', $request->operacion)->get();
foreach ($docope as $doc) {
$doc->validacion = $request->accion;
$doc->fecha_validacion = now();//date('y-m-d');
$doc->comentario_fondeadora = $request->comentarios;
$doc->save();
}
return redirect()->route('efinanciera.operacion.post.resumen', ['empresa' => $operacion->empresa_id,'vista'=>2]);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\EfinancierasUsuario;
use Illuminate\Http\Request;
class EfinancierasUsuarioController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\EfinancierasUsuario $efinancierasUsuario
* @return \Illuminate\Http\Response
*/
public function show(EfinancierasUsuario $efinancierasUsuario)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\EfinancierasUsuario $efinancierasUsuario
* @return \Illuminate\Http\Response
*/
public function edit(EfinancierasUsuario $efinancierasUsuario)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\EfinancierasUsuario $efinancierasUsuario
* @return \Illuminate\Http\Response
*/
public function update(Request $request, EfinancierasUsuario $efinancierasUsuario)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\EfinancierasUsuario $efinancierasUsuario
* @return \Illuminate\Http\Response
*/
public function destroy(EfinancierasUsuario $efinancierasUsuario)
{
//
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace App\Http\Controllers;
use App\Models\EmpresaEmpleado;
use App\Models\EmpresasUsuario;
use App\Models\EntidadFinanciera;
use App\Models\Permission;
use App\Models\RolePermission;
use App\Models\User;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Permission as ModelsPermission;
use Spatie\Permission\Models\Role;
class EmpleadoController extends Controller
{
public function index()
{
$role = Role::where(['name' => 'empresa'])->first();
$rolePermissions = RolePermission::where(['role_id' => $role->id])->get();
$empresaUsuario = EmpresasUsuario::where('usuario_id', auth()->id())->first();
// $empleados = EmpresasUsuario::where('empresa_id', $empresaUsuario->empresa_id)->where('usuario_id', '!=', auth()->id())->get();
$empleados = User::where('parent', auth()->id())->get();
// $empleados = EmpresasEmpleado::where('empresa_id', auth()->id())->first()->empleados;
return view('dashboard.empleado.create', ['permissions' => $rolePermissions, 'empleados' => $empleados]);
}
public function empleadosEF()
{
$role = Role::where(['name' => 'entidad financiera'])->first();
$rolePermissions = RolePermission::where(['role_id' => $role->id])->get();
// $empresaUsuario = EntidadFinanciera::where('usuario_id', auth()->id())->first();
// $empleados = EmpresasUsuario::where('empresa_id', $empresaUsuario->empresa_id)->where('usuario_id', '!=', auth()->id())->get();
$empleados = User::where('parent', auth()->id())->get();
// $empleados = EmpresasEmpleado::where('empresa_id', auth()->id())->first()->empleados;
return view('dashboard.empleado.create', ['permissions' => $rolePermissions, 'empleados' => $empleados]);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class EmpleadoPermisosController extends Controller
{
public function edit(Request $request)
{
try {
$data = $request->all();
$user = User::find($data['empleado']);
unset($data['empleado']);
$permissionToUser = $user->syncPermissions(array_keys($data));
return response()->json(['status' => 'success', 'response' => $permissionToUser]);
} catch (\Throwable $th) {
//throw $th;
return response()->json(['status' => 'error', 'response' => $th->getMessage()]);
}
}
}

View File

@ -0,0 +1,261 @@
<?php
namespace App\Http\Controllers;
use App\Models\Empresa;
use App\Models\Grupo;
use App\Models\ClienteDato;
use App\Models\RepresentanteLegal;
use Illuminate\Http\Request;
use App\Models\CatDenominacionSocial;
class EmpresaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//grupos
$empresa = Empresa::leftjoin('grupos', 'empresas.grupo_id', '=', 'grupos.id')->select('empresas.*', 'grupos.nombre as grupo')->get();
return view('dashboard.empresa.empresaList', ['empresas' => $empresa]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
$grupos = Grupo::all();
return view('dashboard.empresa.empresaAddForm', ['grupos' => $grupos, 'CatDenominacionSocial'=>CatDenominacionSocial::all()]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$validatedData = $request->validate([
'nombre' => 'required|min:1|max:256',
'rsocial' => 'required|min:1|max:256',
'dsocial' => 'required|min:1|max:256',
'rfc' => 'required|min:1|max:256',
'calle' => 'required|min:1|max:256',
'colonia' => 'required|min:1|max:256',
'estado' => 'required|min:1|max:256',
'municipio' => 'required|min:1|max:256',
'cp' => 'required|numeric',
"escritura_publica" => 'required|min:1|max:256',
"notario_publico" => 'required|min:1|max:256',
"folio_mercatil" => 'required|min:1|max:256',
"fecha_escritura" => 'required|date',
"objeto_social" => 'required|min:1|max:256',
"licenciado_notaria" => 'required|min:1|max:256',
"estado_notaria" => 'required|min:1|max:256',
"municipio_notaria" => 'required|min:1|max:256',
"repnombre" => 'required',
'repnumeroacta' => 'required',
"contacto" => 'required|min:1|max:256',
"email_contacto" => 'required|email',
"tel_contacto" => 'required|numeric',
"numero_contrato" => 'required|min:1|max:256',
"fecha_contrato" => 'required|date',
"estatus" => 'required|min:1|max:256',
]);
$empresa = new Empresa();
$empresa->nombre = $request->nombre;
$empresa->rsocial = $request->rsocial;
if ($request->grupo_id) {
$empresa->grupo_id = $request->grupo_id;
}
$empresa->dsocial = $request->dsocial;
$empresa->estatus = $request->estatus;
$empresa->save();
$request->session()->flash('message', 'Empresa creada con exito');
foreach ($request->repnombre as $index => $repre) {
// code...
$empresarep = new RepresentanteLegal();
$empresarep->empresa_id = $empresa->id;
$empresarep->nombre = $repre;
$empresarep->numeroacta = $request->repnumeroacta[$index];
$empresarep->save();
}
$empresainfo = new ClienteDato();
$empresainfo->empresa_id = $empresa->id;
$empresainfo->rfc = $request->rfc;
//domicilio
$empresainfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$empresainfo->calle = $request->calle;
$empresainfo->numint = $request->numint;
$empresainfo->colonia = $request->colonia;
$empresainfo->estado = $request->estado;
$empresainfo->municipio = $request->municipio;
$empresainfo->cp = $request->cp;
////
$empresainfo->escritura_publica = $request->escritura_publica;
$empresainfo->fecha_escritura = $request->fecha_escritura;
$empresainfo->notario_publico = $request->notario_publico;
$empresainfo->estado_notaria = $request->estado_notaria;
$empresainfo->municipio_notaria = $request->municipio_notaria;
$empresainfo->licenciado_notaria = $request->licenciado_notaria;
$empresainfo->folio_mercatil = $request->folio_mercatil;
$empresainfo->objeto_social = $request->objeto_social;
$empresainfo->contacto = $request->contacto;
$empresainfo->tel_contacto = $request->tel_contacto;
$empresainfo->email_contacto = $request->email_contacto;
$empresainfo->fecha_contrato = $request->fecha_contrato;
$empresainfo->numero_contrato = $request->numero_contrato;
$empresainfo->save();
return redirect()->route('empresa.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function show(Empresa $empresa)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function edit(Empresa $empresa)
{
//
$data = [
'representantes' => RepresentanteLegal::where('empresa_id', $empresa->id)->get(),
'CatDenominacionSocial'=>CatDenominacionSocial::all(),
'empresa' => $empresa,
'grupos' => Grupo::all(),
'empresainfo' => ClienteDato::where('empresa_id', $empresa->id)->first()
];
return view('dashboard.empresa.empresaEditForm', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Empresa $empresa)
{
//
$validatedData = $request->validate([
'nombre' => 'required|min:1|max:256',
'rsocial' => 'required|min:1|max:256',
'dsocial' => 'required|min:1|max:256',
'rfc' => 'required|min:1|max:256',
'calle' => 'required|min:1|max:256',
'colonia' => 'required|min:1|max:256',
'estado' => 'required|min:1|max:256',
'municipio' => 'required|min:1|max:256',
'cp' => 'required|numeric',
"escritura_publica" => 'required|min:1|max:256',
"notario_publico" => 'required|min:1|max:256',
"folio_mercatil" => 'required|min:1|max:256',
"fecha_escritura" => 'required|date',
"objeto_social" => 'required|min:1|max:256',
"licenciado_notaria" => 'required|min:1|max:256',
"estado_notaria" => 'required|min:1|max:256',
"municipio_notaria" => 'required|min:1|max:256',
"repnombre" => 'required',
'repnumeroacta' => 'required',
"contacto" => 'required|min:1|max:256',
"email_contacto" => 'required|email',
"tel_contacto" => 'required|numeric',
"numero_contrato" => 'required|min:1|max:256',
"fecha_contrato" => 'required|date',
"estatus" => 'required|min:1|max:256',
]);
$empresa->nombre = $request->nombre;
$empresa->rsocial = $request->rsocial;
$empresa->dsocial = $request->dsocial;
$empresa->estatus = $request->estatus;
$empresa->grupo_id = $request->grupo_id;
$empresa->save();
RepresentanteLegal::where('empresa_id', $empresa->id)->delete();
foreach ($request->repnombre as $index => $repre) {
// code...
$empresarep = new RepresentanteLegal();
$empresarep->empresa_id = $empresa->id;
$empresarep->nombre = $repre;
$empresarep->numeroacta = $request->repnumeroacta[$index];
$empresarep->save();
}
$empresainfo = ClienteDato::where('empresa_id', $empresa->id)->first();
$empresainfo->empresa_id = $empresa->id;
$empresainfo->rfc = $request->rfc;
//domicilio
$empresainfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$empresainfo->calle = $request->calle;
$empresainfo->numint = $request->numint;
$empresainfo->colonia = $request->colonia;
$empresainfo->estado = $request->estado;
$empresainfo->municipio = $request->municipio;
$empresainfo->cp = $request->cp;
////
$empresainfo->escritura_publica = $request->escritura_publica;
$empresainfo->fecha_escritura = $request->fecha_escritura;
$empresainfo->notario_publico = $request->notario_publico;
$empresainfo->estado_notaria = $request->estado_notaria;
$empresainfo->municipio_notaria = $request->municipio_notaria;
$empresainfo->licenciado_notaria = $request->licenciado_notaria;
$empresainfo->folio_mercatil = $request->folio_mercatil;
$empresainfo->objeto_social = $request->objeto_social;
$empresainfo->contacto = $request->contacto;
$empresainfo->tel_contacto = $request->tel_contacto;
$empresainfo->email_contacto = $request->email_contacto;
$empresainfo->fecha_contrato = $request->fecha_contrato;
$empresainfo->numero_contrato = $request->numero_contrato;
$empresainfo->save();
$request->session()->flash('message', 'Empresa editada con exito');
return redirect()->route('empresa.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function delete(Empresa $empresa)
{
//
$empresainfo = ClienteDato::where('empresa_id', $empresa->id)->delete();
$empresa->delete();
return redirect()->route('empresa.index');
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\EmpresasUsuario;
use Illuminate\Http\Request;
class EmpresasUsuarioController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\EmpresasUsuario $empresasUsuario
* @return \Illuminate\Http\Response
*/
public function show(EmpresasUsuario $empresasUsuario)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\EmpresasUsuario $empresasUsuario
* @return \Illuminate\Http\Response
*/
public function edit(EmpresasUsuario $empresasUsuario)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\EmpresasUsuario $empresasUsuario
* @return \Illuminate\Http\Response
*/
public function update(Request $request, EmpresasUsuario $empresasUsuario)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\EmpresasUsuario $empresasUsuario
* @return \Illuminate\Http\Response
*/
public function destroy(EmpresasUsuario $empresasUsuario)
{
//
}
}

View File

@ -0,0 +1,156 @@
<?php
namespace App\Http\Controllers;
use App\Models\EntidadFinanciera;
use App\Models\FinancieraDato;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class EntidadFinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$data = ['efinancieras' => EntidadFinanciera::all()];
return view('dashboard.efinancieras.efinancieraList', $data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
$fuentes = DB::table('cat_FuentesFondeo')->get();
return view('dashboard.efinancieras.efinancieraAddForm', ['fuentes' => $fuentes]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$validatedData = $request->validate([
'nombre' => 'required|min:1|max:256',
'rsocial' => 'required|min:1|max:256',
]);
$ef = new EntidadFinanciera();
$ef->nombre = $request->nombre;
$ef->rsocial = $request->rsocial;
$ef->estatus = 'activo';
$ef->save();
$efinfo = new FinancieraDato();
$efinfo->efinaciera_id = $ef->id;
$efinfo->rfc = $request->rfc;
//domicilio
$efinfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$efinfo->calle = $request->calle;
$efinfo->numint = $request->numint;
$efinfo->colonia = $request->colonia;
$efinfo->estado = $request->estado;
$efinfo->municipio = $request->municipio;
$efinfo->cp = $request->cp;
////
$efinfo->contacto = $request->contacto;
$efinfo->tel_contacto = $request->tel_contacto;
$efinfo->email_contacto = $request->email_contacto;
$efinfo->fecha_contrato = $request->fecha_contrato;
$efinfo->numero_contrato = $request->numero_contrato;
$efinfo->save();
if ($request->ffondeo) {
DB::table('cat_FuentesFondeo')->where('id', $request->ffondeo)->update(['efinanciera_id' => $ef->id]);
}
$request->session()->flash('message', 'Entidad creada con exito');
return redirect()->route('efinanciera.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\EntidadFinanciera $entidadFinanciera
* @return \Illuminate\Http\Response
*/
public function show(EntidadFinanciera $efinanciera)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\EntidadFinanciera $entidadFinanciera
* @return \Illuminate\Http\Response
*/
public function edit(EntidadFinanciera $efinanciera)
{
//
$fuentes = DB::table('cat_FuentesFondeo')->get();
return view('dashboard.efinancieras.efinancieraEditForm', ['fuentes' => $fuentes, 'efinanciera' => $efinanciera, 'efinfo' => FinancieraDato::where('efinaciera_id', $efinanciera->id)->first()]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\EntidadFinanciera $entidadFinanciera
* @return \Illuminate\Http\Response
*/
public function update(Request $request, EntidadFinanciera $efinanciera)
{
//
$efinanciera->nombre = $request->nombre;
$efinanciera->rsocial = $request->rsocial;
$efinanciera->estatus = 'activo';
$efinanciera->save();
$efinfo = FinancieraDato::where('efinaciera_id', $efinanciera->id)->first();
$efinfo->rfc = $request->rfc;
$efinfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$efinfo->calle = $request->calle;
$efinfo->numint = $request->numint;
$efinfo->colonia = $request->colonia;
$efinfo->estado = $request->estado;
$efinfo->municipio = $request->municipio;
$efinfo->cp = $request->cp;
$efinfo->contacto = $request->contacto;
$efinfo->tel_contacto = $request->tel_contacto;
$efinfo->email_contacto = $request->email_contacto;
$efinfo->fecha_contrato = $request->fecha_contrato;
$efinfo->numero_contrato = $request->numero_contrato;
$efinfo->save();
if ($request->ffondeo) {
DB::table('cat_FuentesFondeo')->where('id', $request->ffondeo)->update(['efinanciera_id' => $efinanciera->id]);
}
$request->session()->flash('message', 'Entidad editada con exito');
return redirect()->route('efinanciera.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\EntidadFinanciera $entidadFinanciera
* @return \Illuminate\Http\Response
*/
public function delete(EntidadFinanciera $efinanciera)
{
//
$efinfo = FinancieraDato::where('efinaciera_id', $efinanciera->id)->delete();
$efinanciera->delete();
return redirect()->route('efinanciera.index');
}
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers;
use App\Imports\ExcelImport;
use App\Models\CodigoScian;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
class ExcelController extends Controller
{
public function load(Request $request)
{
//Convertimos el csv a un $arrayName = array('' => , );
$path = $request->archivo->path();
// $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
// $reader->setReadDataOnly(true);
$reader->setReadEmptyCells(false);
$spreadsheet = $reader->load($path);
$dataWithHeaders = $spreadsheet->getSheet(0)->toArray(
NULL, // Value that should be returned for empty cells
TRUE, // Should formulas be calculated (the equivalent of getCalculatedValue() for each cell)
);
$header = $dataWithHeaders[0];
$dataArray = array_splice($dataWithHeaders, 1, count($dataWithHeaders) - 1);
$data = array_map(static function ($row) use ($header) {
return array_combine($header, $row);
}, $dataArray);
foreach ($data as $item ) {
CodigoScian::create( ['code' => $item['Codigo_Scian']] );
}
return dd($data);
// return back()->with('error', 'Please Check your file, Something is wrong there.');
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers;
use App\Models\ExampleTable;
use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
class ExcelProcessController extends Controller
{
public function process(Request $request)
{
# code...
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$uploadedFile = $request->file('file');
$spreadsheet = $reader->load($uploadedFile);
$d = $spreadsheet->getSheet(0)->toArray();
echo count($d);
ExampleTable::create(['content' => json_encode($d)]);
}
}

View File

@ -0,0 +1,203 @@
<?php
namespace App\Http\Controllers;
use App\Models\Grupo;
use App\Models\ClienteDato;
use App\Models\RepresentanteLegal;
use Illuminate\Http\Request;
class GrupoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
return view('dashboard.grupo.grupoList', ['grupos' => Grupo::all()]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return view('dashboard.grupo.grupoAddForm');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$validatedData = $request->validate([
'nombre' => 'required|min:1|max:256',
'rsocial' => 'required|min:1|max:256',
]);
$grupo = new Grupo();
$grupo->nombre = $request->nombre;
$grupo->rsocial = $request->rsocial;
$grupo->estatus = 'activo';
$grupo->save();
foreach ($request->repnombre as $index => $repre) {
// code...
$gruporep = new RepresentanteLegal();
$gruporep->grupo_id = $grupo->id;
$gruporep->nombre = $repre;
$gruporep->numeroacta = $request->repnumeroacta[$index];
$gruporep->save();
}
$grupoinfo = new ClienteDato();
$grupoinfo->grupo_id = $grupo->id;
$grupoinfo->rfc = $request->rfc;
//domicilio
$grupoinfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$grupoinfo->calle = $request->calle;
$grupoinfo->numint = $request->numint;
$grupoinfo->colonia = $request->colonia;
$grupoinfo->estado = $request->estado;
$grupoinfo->municipio = $request->municipio;
$grupoinfo->cp = $request->cp;
////
$grupoinfo->escritura_publica = $request->escritura_publica;
$grupoinfo->fecha_escritura = $request->fecha_escritura;
$grupoinfo->notario_publico = $request->notario_publico;
$grupoinfo->estado_notaria = $request->estado_notaria;
$grupoinfo->municipio_notaria = $request->municipio_notaria;
$grupoinfo->licenciado_notaria = $request->licenciado_notaria;
$grupoinfo->folio_mercatil = $request->folio_mercatil;
$grupoinfo->objeto_social = $request->objeto_social;
$grupoinfo->contacto = $request->contacto;
$grupoinfo->tel_contacto = $request->tel_contacto;
$grupoinfo->email_contacto = $request->email_contacto;
$grupoinfo->fecha_contrato = $request->fecha_contrato;
$grupoinfo->numero_contrato = $request->numero_contrato;
$grupoinfo->save();
$request->session()->flash('message', 'Grupo creado con exito');
return redirect()->route('grupo.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\Grupo $grupo
* @return \Illuminate\Http\Response
*/
public function show(Grupo $grupo)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Grupo $grupo
* @return \Illuminate\Http\Response
*/
public function edit(Grupo $grupo)
{
//
$data = [
'representantes' => RepresentanteLegal::where('grupo_id', $grupo->id)->get(),
'grupo' => $grupo,
'grupoinfo' => ClienteDato::where('grupo_id', $grupo->id)->first()
];
return view('dashboard.grupo.grupoEditForm', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Grupo $grupo
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Grupo $grupo)
{
//
$validatedData = $request->validate([
'nombre' => 'required|min:1|max:256',
'rsocial' => 'required|min:1|max:256',
]);
$grupo->nombre = $request->nombre;
$grupo->rsocial = $request->rsocial;
$grupo->save();
RepresentanteLegal::where('empresa_id', $grupo->id)->delete();
foreach ($request->repnombre as $index => $repre) {
// code...
RepresentanteLegal::where('grupo_id', $grupo->id)->delete();
$gruporep = new RepresentanteLegal();
$gruporep->grupo_id = $grupo->id;
$gruporep->nombre = $repre;
$gruporep->numeroacta = $request->repnumeroacta[$index];
$gruporep->save();
}
$grupoinfo = ClienteDato::where('grupo_id', $grupo->id)->first();
$grupoinfo->grupo_id = $grupo->id;
$grupoinfo->rfc = $request->rfc;
//domicilio
$grupoinfo->domicilio = $request->calle . ' ' . $request->numint . ',' . $request->colonia . ',' . $request->municipio . ',' . $request->estado . ',' . $request->cp;
$grupoinfo->calle = $request->calle;
$grupoinfo->numint = $request->numint;
$grupoinfo->colonia = $request->colonia;
$grupoinfo->estado = $request->estado;
$grupoinfo->municipio = $request->municipio;
$grupoinfo->cp = $request->cp;
////
$grupoinfo->escritura_publica = $request->escritura_publica;
$grupoinfo->fecha_escritura = $request->fecha_escritura;
$grupoinfo->notario_publico = $request->notario_publico;
$grupoinfo->estado_notaria = $request->estado_notaria;
$grupoinfo->municipio_notaria = $request->municipio_notaria;
$grupoinfo->licenciado_notaria = $request->licenciado_notaria;
$grupoinfo->folio_mercatil = $request->folio_mercatil;
$grupoinfo->objeto_social = $request->objeto_social;
$grupoinfo->contacto = $request->contacto;
$grupoinfo->tel_contacto = $request->tel_contacto;
$grupoinfo->email_contacto = $request->email_contacto;
$grupoinfo->fecha_contrato = $request->fecha_contrato;
$grupoinfo->numero_contrato = $request->numero_contrato;
$grupoinfo->save();
$request->session()->flash('message', 'Grupo editado con exito');
return redirect()->route('grupo.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Grupo $grupo
* @return \Illuminate\Http\Response
*/
public function delete(Grupo $grupo)
{
//
$grupoinfo = ClienteDato::where('grupo_id', $grupo->id)->delete();
$grupo->delete();
return redirect()->route('grupo.index');
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\GruposUsuario;
use Illuminate\Http\Request;
class GruposUsuarioController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\GruposUsuario $gruposUsuario
* @return \Illuminate\Http\Response
*/
public function show(GruposUsuario $gruposUsuario)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\GruposUsuario $gruposUsuario
* @return \Illuminate\Http\Response
*/
public function edit(GruposUsuario $gruposUsuario)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\GruposUsuario $gruposUsuario
* @return \Illuminate\Http\Response
*/
public function update(Request $request, GruposUsuario $gruposUsuario)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\GruposUsuario $gruposUsuario
* @return \Illuminate\Http\Response
*/
public function destroy(GruposUsuario $gruposUsuario)
{
//
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\HistorialBorrado;
use Illuminate\Http\Request;
class HistorialBorradoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\HistorialBorrado $historialBorrado
* @return \Illuminate\Http\Response
*/
public function show(HistorialBorrado $historialBorrado)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\HistorialBorrado $historialBorrado
* @return \Illuminate\Http\Response
*/
public function edit(HistorialBorrado $historialBorrado)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\HistorialBorrado $historialBorrado
* @return \Illuminate\Http\Response
*/
public function update(Request $request, HistorialBorrado $historialBorrado)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\HistorialBorrado $historialBorrado
* @return \Illuminate\Http\Response
*/
public function destroy(HistorialBorrado $historialBorrado)
{
//
}
}

View File

@ -0,0 +1,528 @@
<?php
namespace App\Http\Controllers;
use App\Exports\Reportes\ExportDetalleCartera;
use App\Models\Capacidad;
use App\Models\CatEntidadFederativa;
use App\Models\CatCalifCredito;
use App\Models\CatProductoFinanciero;
use App\Models\CatTipoActivo;
use App\Models\CatFuenteFondeo;
use App\Models\CatSectorEconomico;
use App\Models\CatTipoCartera;
use App\Models\CatTipoVista;
use App\Models\CatTipoPeriodo;
use App\Models\CatTipoTotal;
use App\Models\FiltrosCarteraUsuario;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use Maatwebsite\Excel\Facades\Excel;
class ModuloCarteraController extends Controller
{
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$fitros = $this->getFiltros();
$params = [];
//dd($fitros);
if (count($fitros['FiltrosActivos'])) {
//WIDGET COBRANZA
$Periodo = $fitros['FiltrosActivos'][0]->Periodo;
$Tabla = $fitros['FiltrosActivos'][0]->Tabla;
$cobranzaTotal = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON; exec sp_cobranza_total '" . $Tabla . "_Cob', '" . $Periodo . "' "));
$cobranzaAnual = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON; exec sp_cobranza_anual '" . $Tabla . "_Cob', '" . $Periodo . "' "));
$params['cobranzaTotal'] = $cobranzaTotal;
$params['cobranzaAnual'] = $cobranzaAnual;
}
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.dashboard', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
* @param \Illuminate\Http\Request
*/
public function cartera_flujos(Request $request)
{
//
$empresa_id = Session::get("Id_Empresa");
$user = Auth::user();
$fitros = $this->getFiltros();
$Tabla='Tab_Cartera_vigente_'.$empresa_id.'_'.$user->id.'_0_Emp';
$Periodo = $fitros['FiltrosActivos'][0]->Periodo;
//$Tabla = $fitros['FiltrosActivos'][0]->Tabla;
$TipoTotal = 1;
$TipoCartera = 1;
if (isset($request->TipoTotal)) {
$TipoTotal = $request->TipoTotal;
}
if (isset($request->TipoCartera)) {
$TipoCartera = $request->TipoCartera;
}
//sp_cartera_vigente_sistema 'Tab_Cartera_vigente_9_3_0_Emp', '2020-12-31', 1, 1, 1;
$datos = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON; exec sp_cartera_vigente_sistema '" . $Tabla . "', " . $empresa_id . ", " . $TipoTotal . ",". $TipoCartera.", '" . $Periodo . "'"));
$params = [
"TipoTotal" => $TipoTotal,
"TipoCartera" => $TipoCartera,
"CatTipoTotal" => CatTipoTotal::where("Activo", true)->orderBy("Orden")->get(),
"CatTipoCartera" => CatTipoCartera::all(),
"Datos"=> $datos
];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.cartera_flujos', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function buckets_par()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.buckets_par', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
* @param \Illuminate\Http\Request
*/
public function cobranza(Request $request)
{
//
$fitros = $this->getFiltros();
$empresa_id = Session::get("Id_Empresa");
$user = Auth::user();
$Periodo = $fitros['FiltrosActivos'][0]->Periodo;
$Tabla = $fitros['FiltrosActivos'][0]->Tabla;
$TipoVista = 1;
$TipoPeriodo = 1;
if (isset($request->TipoVista)) {
$TipoVista = $request->TipoVista;
}
if (isset($request->TipoPeriodo)) {
$TipoPeriodo = $request->TipoPeriodo;
}
$cobranza_real = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON; exec sp_cobranza_real '" . $Tabla . "_Cob', " . $TipoVista . ", " . $TipoPeriodo . ", '" . $Periodo . "'"));
$cobranza_teorica = DB::connection('originacion')->select(DB::raw("SET NOCOUNT ON; exec sp_cobranza_teorica '" . $Tabla . "', " . $TipoVista . ", " . $TipoPeriodo . ", '" . $Periodo . "', " . $empresa_id . ", " . $user->id. " , 'P'"));
$params = [
'TipoVista' => $TipoVista,
'TipoPeriodo' => $TipoPeriodo,
'cobranza_real' => $cobranza_real,
'cobranza_teorica' => $cobranza_teorica,
'CatTipoPeriodo' => CatTipoPeriodo::all(),
'CatTipoVista' => CatTipoVista::all()
];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.cobranza', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_libre()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.cartera_libre', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_elegible()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.cartera_elegible', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_flujos_ff()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.cartera_flujos_ff', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function sector_economico()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.sector_economico', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function entidad_federativa()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.entidad_federativa', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function top_clientes()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.top_clientes', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function vintage($vin)
{
//
$fitros = $this->getFiltros();
$params = ['vin' => $vin];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.vintage', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function criterios_eligibilidad(Request $request)
{
//
//dd($request->filtrosactv);
$filtrosactv = false;
if ($request->filtrosactv) {
$filtrosactv = true;
}
$fitros = $this->getFiltros();
$params = ['filtrosactv' => $filtrosactv];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.criterios_eligibilidad', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function suplemento()
{
//
$fitros = $this->getFiltros();
$params = [];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.suplemento', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function modelador(Request $request)
{
//
$fitros = $this->getFiltros();
$params = ['presets' => $request->criterio_8];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.modelador', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function vintageDetalle(Request $request)
{
//
$fitros = $this->getFiltros();
$params = ['filtro' => $request->filtro];
$data = array_merge($fitros, $params);
return view('dashboard.cliente.reportes.vintage_detalle', $data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function getFiltros()
{
//
$empresa_id = Session::get("Id_Empresa");
$user = Auth::user();
$data = [
'Capacidad' => Capacidad::all(),
'CatEntidadFederativa' => CatEntidadFederativa::all(),
'CatCalifCredito' => CatCalifCredito::all(),
'CatProductoFinanciero' => CatProductoFinanciero::all(),
'CatTipoActivo' => CatTipoActivo::all(),
'CatFuenteFondeo' => CatFuenteFondeo::all(),
'CatSectorEconomico' => CatSectorEconomico::all(),
'FiltrosActivos' => FiltrosCarteraUsuario::where('empresa_id', $empresa_id)->where('usuario_id', $user->id)->get()
];
return $data;
}
/**
* Dashboard.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function aplicarFiltrosCOD(Request $request)
{
//
$user = Auth::user();
$empresa_id = Session::get("Id_Empresa");
$Filtro = FiltrosCarteraUsuario::updateOrCreate(
['empresa_id' => $empresa_id, 'usuario_id' => $user->id],
[
'Periodo' => $request->Periodo,
'Tabla' => 'tab_macro_filtro_0_' . $user->id . '_0_EMP',
'EntidadFederativa' => $request->EntidadFederativa,
'CalificacionCredito' => $request->CalificacionCredito,
'MontoFinanciadoMax' => $request->MontoFinanciadoMax,
'MontoFinanciadoMin' => $request->MontoFinanciadoMin,
'PlazoOriginacionMax' => $request->PlazoOriginacionMax,
'PlazoOriginacionMin' => $request->PlazoOriginacionMin,
'Producto' => $request->Producto,
'ActividadEconomica' => $request->ActividadEconomica,
'FuentedeFondeo' => $request->FuentedeFondeo,
'TipoActivo' => $request->TipoActivo,
]
);
// implode(" ",$arr);
if (is_array($request->EntidadFederativa)) {
$entidadFederativa = implode("'',''", $request->EntidadFederativa);
} else {
$entidadFederativa = "";
}
if (is_array($request->CalificacionCredito)) {
$calificacionCredito = implode("'',''", $request->CalificacionCredito);
} else {
$calificacionCredito = "";
}
if (is_array($request->Producto)) {
$Producto = implode("'',''", $request->Producto);
} else {
$Producto = "";
}
if (is_array($request->ActividadEconomica)) {
$actividadEconomica = implode("'',''", $request->ActividadEconomica);
} else {
$actividadEconomica = "";
}
if (is_array($request->TipoActivo)) {
$tipoActivo = implode("'',''", $request->TipoActivo);
} else {
$tipoActivo = "";
}
if (is_array($request->FuentedeFondeo)) {
$fuentedeFondeo = implode("'',''", $request->FuentedeFondeo);
} else {
$fuentedeFondeo = "";
}
//hacer validaciones de contenido
$salida = DB::connection('originacion')->update(DB::raw("exec sp_macro_filtros '" . $request->Periodo . "', 0, " . $user->id . ", 0, '''" . $entidadFederativa . "''', '''" . $calificacionCredito . "'''," . $request->MontoFinanciadoMin . "," . $request->MontoFinanciadoMax . ",'''" . $tipoActivo . "''','''" . $Producto . "''','''" . $actividadEconomica . "''', '''" . $fuentedeFondeo . "''', " . $request->PlazoOriginacionMin . ", " . $request->PlazoOriginacionMax . ""));
return redirect()->back()->with('success', 'El fitro se aplico Correctamente, resultados encontrados ' . $salida);
}
/**
* Dashboard.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function aplicarFiltros(Request $request)
{
//
$user = Auth::user();
$empresa_id = Session::get("Id_Empresa");
$flitros = FiltrosCarteraUsuario::updateOrCreate(
['empresa_id' => $empresa_id, 'usuario_id' => $user->id],
[
'Periodo' => $request->Periodo,
'Tabla' => 'tab_macrofiltro_' . $empresa_id . '_' . $user->id . '_0_EMP',
'EntidadFederativa' => $request->EntidadFederativa,
'CalificacionCredito' => $request->CalificacionCredito,
'MontoFinanciadoMax' => $request->MontoFinanciadoMax,
'MontoFinanciadoMin' => $request->MontoFinanciadoMin,
'PlazoOriginacionMax' => $request->PlazoOriginacionMax,
'PlazoOriginacionMin' => $request->PlazoOriginacionMin,
'Producto' => $request->Producto,
'ActividadEconomica' => $request->ActividadEconomica,
'FuentedeFondeo' => $request->FuentedeFondeo,
'TipoActivo' => $request->TipoActivo,
]
);
// implode(" ",$arr);
if (is_array($request->EntidadFederativa)) {
$entidadFederativa = implode(",", $request->EntidadFederativa);
} else {
$entidadFederativa = "";
}
if (is_array($request->CalificacionCredito)) {
$calificacionCredito = implode(",", $request->CalificacionCredito);
} else {
$calificacionCredito = "";
}
if (is_array($request->Producto)) {
$Producto = implode(",", $request->Producto);
} else {
$Producto = "";
}
if (is_array($request->ActividadEconomica)) {
$actividadEconomica = implode(",", $request->ActividadEconomica);
} else {
$actividadEconomica = "";
}
if (is_array($request->TipoActivo)) {
$tipoActivo = implode(",", $request->TipoActivo);
} else {
$tipoActivo = "";
}
if (is_array($request->FuentedeFondeo)) {
$fuentedeFondeo = implode(",", $request->FuentedeFondeo);
} else {
$fuentedeFondeo = "";
}
DB::connection('originacion')->statement(DB::raw("SET NOCOUNT ON; exec Sp_Macrofiltro '" . $request->Periodo . "', " . $empresa_id . ", " . $user->id . ", 0, '" . $entidadFederativa . "', '" . $calificacionCredito . "','" . $request->MontoFinanciadoMin . "','" . $request->MontoFinanciadoMax . "','" . $tipoActivo . "','" . $Producto . "','" . $actividadEconomica . "', '" . $fuentedeFondeo . "', '" . $request->PlazoOriginacionMin . "', '" . $request->PlazoOriginacionMax . "'"));
$salida = count(DB::connection('originacion')->table("$flitros->Tabla")->select('Id')->get()->toArray());
return redirect()->back()->with('success', 'El fitro se aplico Correctamente, resultados encontrados ' . $salida);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
* @param \Illuminate\Http\Request
*/
public function cartera_flujos_descargar(Request $request)
{
//
$empresa_id = Session::get("Id_Empresa");
$user = Auth::user();
$fitros = $this->getFiltros();
$Periodo = $fitros['FiltrosActivos'][0]->Periodo;
$TipoTotal = 1;
$TipoCartera = 1;
if (isset($request->TipoTotal)) {
$TipoTotal = $request->TipoTotal;
}
if (isset($request->TipoCartera)) {
$TipoCartera = $request->TipoCartera;
}
$cat_tipo_cartera = CatTipoCartera::where("Id",$TipoCartera )->first();
$cat_tipo_total = CatTipoTotal::where("Id",$TipoTotal )->first();
$date_created = date('Y-m-d');
$fileName = "Reporte_{$cat_tipo_cartera->Desc}_{$cat_tipo_total->Desc}_{$date_created}.xlsx";
return Excel::download(new ExportDetalleCartera($empresa_id, $TipoTotal, $TipoCartera,$Periodo,$user->id), $fileName);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,614 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\CatCriterio;
use App\Models\CatDenominacionSocial;
use App\Models\CatPeriodicidad;
use App\Models\CatFacultadesApoderado;
use App\Models\CatActividadEconomica;
use App\Models\CatTipoProductoFinanciero;
use App\Models\CatRatingExterno;
use App\Models\CatPerspectiva;
use App\Models\CatHorizonte;
use App\Models\CatTipoCalificacion;
use App\Models\CatCalificadora;
use App\Models\CatAuditorActual;
use App\Models\CatMoneda;
use App\Models\CatProductoCaracteristica;
use App\Models\CatTipoInformaionFinanciera;
use App\Models\EmpresasUsuario;
use App\Models\Empresa;
use App\Models\Grupo;
use App\Models\TabMiembrosEmpresa;
use App\Models\TabPerfilCualitativoEmpresa;
use App\Models\TabProductoComercialEmpresa;
use App\Models\TabRatingExternoEmpresa;
use App\Models\TabComiteEmpresa;
use App\Models\TabEstructuraAccionaria;
use App\Models\CatSexo;
use App\Models\CatTipoFinanciamiento;
use App\Models\CatTipoGarantiaPerfil;
use App\Models\TabCompatibilidadFondeo;
use App\Models\TabPerfilFinancieroEmpresa;
use App\Models\TabPropuestaFondeoEmpresa;
use App\Models\TabPropuestaFondeoIndicativa;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
// use Illuminate\Notifications\Notification;
class ModuloPerfilController extends Controller
{
/**
* Display a listing of the resource.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$empresa = Empresa::leftjoin('cat_denominacion_socials', 'empresas.dsocial', '=', 'cat_denominacion_socials.id')
->leftjoin('cliente_datos', 'empresas.id', '=', 'cliente_datos.empresa_id')
->select('empresas.*', 'cat_denominacion_socials.nombre as denominacion', 'cliente_datos.*')
->where('empresas.id', $empresa_id)->first();
$grupo = Grupo::where('id',$empresa->grupo_id)->first();
$perfilCualitativoEmpresa = TabPerfilCualitativoEmpresa::where('empresa_id',$empresa_id)->first();
$perfilFinanciero = TabPerfilFinancieroEmpresa::where('empresa_id',$empresa_id)->first();
$productoComercialEmpresa = TabProductoComercialEmpresa::where('empresa_id',$empresa_id)->get();
$ratingExternoEmpresa = TabRatingExternoEmpresa::where('empresa_id',$empresa_id)->get();
$miembrosEmpresa = TabMiembrosEmpresa::where('empresa_id',$empresa_id)->where('tipo_miembro','=','direccion')->get();
$miembrosConsejo = TabMiembrosEmpresa::where('empresa_id',$empresa_id)->where('tipo_miembro','=','consejo')->get();
$comiteEmpresa = TabComiteEmpresa::where('empresa_id',$empresa_id)->get();
$estructuraAccionaria = TabEstructuraAccionaria::where('empresa_id',$empresa_id)->where('tipo','=','accionaria')->get();
$estructuraAccionariaSub = TabEstructuraAccionaria::where('empresa_id',$empresa_id)->where('tipo','=','subcidiaria')->get();
foreach($comiteEmpresa as $idx=>$comite){
$miembros = TabMiembrosEmpresa::where('empresa_id',$empresa_id)->where('comite_id','=',$comite->id)->get();
$comiteEmpresa[$idx]['miembros']=$miembros;
}
$data=[
'CatSexo'=>CatSexo::all(),
'CatDenominacionSocial'=> CatDenominacionSocial::all(),
'CatFacultadesApoderado' => CatFacultadesApoderado::all(),
'CatActividadEconomica' => CatActividadEconomica::all(),
'CatRatingExterno' => CatRatingExterno::all(),
'CatPerspectiva' => CatPerspectiva::all(),
'CatHorizonte' => CatHorizonte::all(),
'CatTipoCalificacion' => CatTipoCalificacion::all(),
'CatCalificadora' => CatCalificadora::all(),
'CatTipoProductoFinanciero' => CatTipoProductoFinanciero::all(),
'CatCriterio' => CatCriterio::all(),
'CatAuditorActual' => CatAuditorActual::all(),
'CatProductoCaracteristica' => CatProductoCaracteristica::all(),
'CatTipoInformaionFinanciera' => CatTipoInformaionFinanciera::all(),
'perfilCualitativoEmpresa' => $perfilCualitativoEmpresa,
'productoComercialEmpresa' => $productoComercialEmpresa,
'ratingExternoEmpresa' => $ratingExternoEmpresa,
'miembrosEmpresa' => $miembrosEmpresa,
'miembrosConsejo' => $miembrosConsejo,
'comiteEmpresa' => $comiteEmpresa,
'estructuraAccionaria'=>$estructuraAccionaria,
'estructuraAccionariaSub'=>$estructuraAccionariaSub,
'perfilFinanciero' =>$perfilFinanciero,
'Empresa' => $empresa,
'Grupo' => $grupo,
];
return view('dashboard.cliente.perfil.perfil',$data);
}
/**
* Guarda la información del perfil Cualitativo de la empresa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createPerfilCualitativo(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$data=[
'Contacto_Principal'=>$request->Contacto_Principal,
'Telefono_1'=>$request->Telefono_1,
'Telefono_2'=>$request->Telefono_2,
'Telefono_3'=>$request->Telefono_3,
'Correo_electronico'=>$request->Correo_electronico,
'Pagina_Web'=>$request->Pagina_Web,
'Red_Social_1'=>$request->Red_Social_1,
'Red_Social_2'=>$request->Red_Social_2,
'Inicio_Opercaciones'=>$request->Inicio_Opercaciones,
'Rep_Nombre'=>$request->Rep_Nombre,
'Rep_RFC'=>$request->Rep_RFC,
'Rep_Acta'=>$request->Rep_Acta,
'Rep_Facultades'=>$request->Rep_Facultades,
'Rep_Ide'=>$request->Rep_Ide,
'Rep_Ide_imagen'=>$request->Rep_Ide_imagen,
'Actividad_Economica'=>$request->Actividad_Economica,
'Desc_Actividad'=>$request->Desc_Actividad,
'Competidor_1'=>$request->Competidor_1,
'Competidor_2'=>$request->Competidor_2,
'Competidor_3'=>$request->Competidor_3,
'Competidor_4'=>$request->Competidor_4,
'Competidor_5'=>$request->Competidor_5,
'Proveedor_1'=>$request->Proveedor_1,
'Proveedor_1_Porcent'=>$request->Proveedor_1_Porcent,
'Proveedor_2'=>$request->Proveedor_2,
'Proveedor_2_Porcent'=>$request->Proveedor_2_Porcent,
'Proveedor_3'=>$request->Proveedor_3,
'Proveedor_3_Porcent'=>$request->Proveedor_3_Porcent,
'Proveedor_4'=>$request->Proveedor_4,
'Proveedor_4_Porcent'=>$request->Proveedor_4_Porcent,
'Proveedor_5'=>$request->Proveedor_5,
'Proveedor_5_Porcent'=>$request->Proveedor_5_Porcent,
'Eventos_Descripcion_1'=>$request->Eventos_Descripcion_1,
'Eventos_Fecha_1'=>$request->Eventos_Fecha_1,
'Eventos_Descripcion_2'=>$request->Eventos_Descripcion_2,
'Eventos_Fecha_2'=>$request->Eventos_Fecha_2,
'Eventos_Descripcion_3'=>$request->Eventos_Descripcion_3,
'Eventos_Fecha_3'=>$request->Eventos_Fecha_3,
'Eventos_Descripcion_4'=>$request->Eventos_Descripcion_4,
'Eventos_Fecha_4'=>$request->Eventos_Fecha_4,
'Eventos_Descripcion_5'=>$request->Eventos_Descripcion_5,
'Eventos_Fecha_5'=>$request->Eventos_Fecha_5,
'Empleados_Hombres'=>$request->Empleados_Hombres,
'Empleados_Mujeres'=>$request->Empleados_Mujeres,
'Empleados_Admin'=>$request->Empleados_Admin,
'Empleados_Operativos'=>$request->Empleados_Operativos,
'Empleados_Ventas'=>$request->Empleados_Ventas,
];
$perfilCualitativo = TabPerfilCualitativoEmpresa::updateOrCreate(['empresa_id' => $empresa_id],$data);
$path = "perfil/".$empresa_id;
if(isset($request->Rep_Ide_imagen)){
$ext = $request->Rep_Ide_imagen->extension();
$url = $request->file('Rep_Ide_imagen')->storeAs($path, "rep_ide." . $ext);
$perfilCualitativo->Rep_Ide_imagen=$url;
}
//ELIMINAMOS
if(isset($request->Producto_id)){
TabProductoComercialEmpresa::where('empresa_id', $empresa_id)->whereNotIn('id',$request->Producto_id)->delete();
} else {
TabProductoComercialEmpresa::where('empresa_id', $empresa_id)->delete();
}
if(isset($request->Producto_nombre)){
foreach($request->Producto_nombre as $idx=>$value){
$productoData= [
'empresa_id'=>$empresa_id,
'Producto_nombre'=>$value,
'Producto_tipo' => $request->Producto_tipo[$idx],
'Producto_Caract_1' => $request->Producto_Caract_1[$idx],
'Producto_Caract_2' =>$request->Producto_Caract_2[$idx],
'Producto_Caract_3' => $request->Producto_Caract_3[$idx]
];
//GUARDAMOS O ACTUALIZAMOS
TabProductoComercialEmpresa::updateOrCreate(['id' => $request->Producto_id[$idx]],$productoData);
}
}
//ELIMINAMOS
if(isset($request->Rating_id)){
TabRatingExternoEmpresa::where('empresa_id', $empresa_id)->whereNotIn('id',$request->Rating_id)->delete();
} else {
TabRatingExternoEmpresa::where('empresa_id', $empresa_id)->delete();
}
if(isset($request->Rating)){
foreach($request->Rating as $idx=>$value){
$ratingData= [
'empresa_id'=>$empresa_id,
'Rating'=>$value,
'Perspectiva' => $request->Perspectiva[$idx],
'Horizonte' => $request->Horizonte[$idx],
'Tipo_Calificacion' =>$request->Tipo_Calificacion[$idx],
'Calificadora' => $request->Calificadora[$idx]
];
//GUARDAMOS O ACTUALIZAMOS
TabRatingExternoEmpresa::updateOrCreate(['id' => $request->Rating_id[$idx]],$ratingData);
}
}
//ELIMINAMOS
if(isset($request->Miembro_id['direccion'])){
TabMiembrosEmpresa::where('empresa_id', $empresa_id)->where('tipo_miembro','=','direccion')->whereNotIn('id',$request->Miembro_id)->delete();
} else {
TabMiembrosEmpresa::where('empresa_id', $empresa_id)->where('tipo_miembro','=','direccion')->delete();
}
if(isset($request->Cargo['direccion'])){
foreach($request->Cargo['direccion'] as $idx=>$value){
$direccionData= [
'empresa_id'=>$empresa_id,
'tipo_miembro'=>'direccion',
'Cargo'=>$value,
'Nombre' => isset($request->Nombre['direccion'][$idx])?$request->Nombre['direccion'][$idx]:'N/D',
'RFC' => isset($request->RFC['direccion'][$idx])?$request->RFC['direccion'][$idx]:'N/D',
'Sexo' =>isset($request->Sexo['direccion'][$idx])?$request->Sexo['direccion'][$idx]:'N/D',
];
//GUARDAMOS O ACTUALIZAMOS
$miembro=TabMiembrosEmpresa::updateOrCreate(['id' => $request->Miembro_id['direccion'][$idx]],$direccionData);
if(isset($request->file('CV_imagen')['direccion'][$idx])){
$file=$request->file('CV_imagen')['direccion'][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/direccion", "cv_img_".$miembro->id.".". $ext);
$miembro->CV_imagen=$url;
}
if(isset($request->file('IDE_imagen')['direccion'][$idx])){
$file=$request->file('IDE_imagen')['direccion'][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/direccion", "ide_img_".$miembro->id.".". $ext);
$miembro->IDE_imagen=$url;
}
$miembro->save();
}
}
if(isset($request->Cargo['comite'])){
foreach($request->Cargo['comite'] as $idcomite=>$comite){
//$comites[$idcomite]=$comite;
if(isset($request->Miembro_id['comite'])){
TabMiembrosEmpresa::where('comite_id', $idcomite)->where('tipo_miembro','=','comite')->whereNotIn('id',$request->Miembro_id['comite'][$idcomite])->delete();
} else {
TabMiembrosEmpresa::where('comite_id', $idcomite)->delete();
}
foreach($comite as $idx=>$value){
$miembroData= [
'empresa_id'=>$empresa_id,
'comite_id'=>$idcomite,
'tipo_miembro'=>'comite',
'Cargo'=>$request->Cargo['comite'][$idcomite][$idx],
'Nombre' => isset($request->Nombre['comite'][$idcomite][$idx])?$request->Nombre['comite'][$idcomite][$idx]:'N/D',
'RFC' => isset($request->RFC['comite'][$idcomite][$idx])?$request->RFC['comite'][$idcomite][$idx]:'N/D',
'Sexo' =>isset($request->Sexo['comite'][$idcomite][$idx])?$request->Sexo['comite'][$idcomite][$idx]:'N/D',
];
//GUARDAMOS O ACTUALIZAMOS
$miembro=TabMiembrosEmpresa::updateOrCreate(['id' => $request->Miembro_id['comite'][$idcomite][$idx]],$miembroData);
if(isset($request->file('CV_imagen')['comite'][$idcomite][$idx])){
$file=$request->file('CV_imagen')['comite'][$idcomite][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/"."comite/".$idcomite, "cv_img_".$miembro->id.".". $ext);
$miembro->CV_imagen=$url;
}
if(isset($request->file('IDE_imagen')['comite'][$idcomite][$idx])){
$file=$request->file('IDE_imagen')['comite'][$idcomite][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/"."comite/".$idcomite, "ide_img_".$miembro->id.".". $ext);
$miembro->IDE_imagen=$url;
}
$miembro->save();
}
}
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Guarda la información del perfil Corporativo de la empresa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createPerfilCorporativo(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$path = "perfil/".$empresa_id;
//CONSEJO//
//ELIMINAMOS
if(isset($request->Miembro_id['consejo'])){
TabMiembrosEmpresa::where('empresa_id', $empresa_id)->where('tipo_miembro','=','consejo')->whereNotIn('id',$request->Miembro_id['consejo'])->delete();
} else {
TabMiembrosEmpresa::where('empresa_id', $empresa_id)->where('tipo_miembro','=','consejo')->delete();
}
if(isset($request->Cargo['consejo'])){
foreach($request->Cargo['consejo'] as $idx=>$value){
$direccionData= [
'empresa_id'=>$empresa_id,
'tipo_miembro'=>'consejo',
'Cargo'=>$value,
'Nombre' => isset($request->Nombre['consejo'][$idx])?$request->Nombre['consejo'][$idx]:'N/D',
'RFC' => isset($request->RFC['consejo'][$idx])?$request->RFC['consejo'][$idx]:'N/D',
'Sexo' =>isset($request->Sexo['consejo'][$idx])?$request->Sexo['consejo'][$idx]:'N/D',
];
$miembro=TabMiembrosEmpresa::updateOrCreate(['id' => $request->Miembro_id['consejo'][$idx]],$direccionData);;
if(isset($request->file('CV_imagen')['consejo'][$idx])){
$file=$request->file('CV_imagen')['consejo'][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/consejo", "cv_img_".$miembro->id.".". $ext);
$miembro->CV_imagen=$url;
}
if(isset($request->file('IDE_imagen')['consejo'][$idx])){
$file=$request->file('IDE_imagen')['consejo'][$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/consejo", "ide_img_".$miembro->id.".". $ext);
$miembro->IDE_imagen=$url;
}
$miembro->save();
}
}
//ACCIONARIA//
//ELIMINAMOS
if(isset($request->ID_Acc)){
TabEstructuraAccionaria::where('empresa_id', $empresa_id)->where('tipo','=','accionaria')->whereNotIn('id',$request->ID_Acc)->delete();
} else {
TabEstructuraAccionaria::where('empresa_id', $empresa_id)->where('tipo','=','accionaria')->delete();
}
if(isset($request->Nombre_Acc)){
foreach($request->Nombre_Acc as $idx=>$value){
$accionariaData= [
'empresa_id'=>$empresa_id,
'tipo'=>'accionaria',
'Participacion'=>$request->Participacion_Acc[$idx],
'Nombre'=>$request->Nombre_Acc[$idx],
'RFC'=>$request->RFC_Acc[$idx],
'Sexo'=>$request->Sexo_Acc[$idx],
'DSocial'=>$request->DSocial_Acc[$idx],
'parent'=>$request->Parent_Acc[$idx]
];
$accionaria=TabEstructuraAccionaria::updateOrCreate(['id' => $request->ID_Acc[$idx]], $accionariaData);
if(isset($request->file('RFC_Img_Acc')[$idx])){
$file=$request->file('RFC_Img_Acc')[$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/accionaria", "rfc_img_acc".$accionaria->id.".". $ext);
$accionaria->CedulaRFC=$url;
}
$accionaria->save();
}
}
if(isset($request->ID_Acc_Sub)){
TabEstructuraAccionaria::where('empresa_id', $empresa_id)->where('tipo','=','subcidiaria')->whereNotIn('id',$request->ID_Acc)->delete();
} else {
TabEstructuraAccionaria::where('empresa_id', $empresa_id)->where('tipo','=','subcidiaria')->delete();
}
if(isset($request->Nombre_Acc_Sub)){
foreach($request->Nombre_Acc_Sub as $idx=>$value){
$accionariaData= [
'empresa_id'=>$empresa_id,
'tipo'=>'subcidiaria',
'Participacion'=>$request->Participacion_Acc_Sub[$idx],
'Nombre'=>$request->Nombre_Acc_Sub[$idx],
'RFC'=>$request->RFC_Acc_Sub[$idx],
'DSocial'=>$request->DSocial_Acc_Sub[$idx],
'parent'=>0
];
$accionaria=TabEstructuraAccionaria::updateOrCreate(['id' => $request->ID_Acc_Sub[$idx]], $accionariaData);
if(isset($request->file('RFC_Img_Acc_Sub')[$idx])){
$file=$request->file('RFC_Img_Acc_Sub')[$idx];
$ext = $file->extension();
$url = $file->storeAs($path."/subcidiaria", "rfc_img_acc".$accionaria->id.".". $ext);
$accionaria->CedulaRFC=$url;
}
$accionaria->save();
}
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Guarda la información del perfil Financiero de la empresa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createPerfilFinanciero(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
$financieroData= [
'TipoInformacion'=>$request->TipoInformacion,
'AuditorActual'=>$request->AuditorActual,
'Otro'=>$request->Otro,
'TiempoConAuditor'=>$request->TiempoConAuditor,
'NombreSocioAuditor'=>$request->NombreSocioAuditor,
'TiempoAuditandoEstadosFinancieros'=>$request->TiempoAuditandoEstadosFinancieros,
];
TabPerfilFinancieroEmpresa::updateOrCreate(['empresa_id'=>$empresa_id], $financieroData);
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Guarda la información del perfil Financiero de la empresa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createPerfilPropuesta(Request $request)
{
$empresa_id = Session::get("Id_Empresa");
TabPropuestaFondeoEmpresa::where('empresa_id', $empresa_id)->update(['Activo' => 0]);
if(isset($request->Activo)){
foreach($request->Activo as $idx=>$value){
$propuestaData= [
'ImporteSolicitado'=>$request->ImporteSolicitado[$idx],
'PlazoFondeo'=>$request->PlazoFondeo[$idx],
'Tasa'=>$request->Tasa[$idx],
'TasaFija'=>$request->TasaFija[$idx],
'Comision'=>$request->Comision[$idx],
'TipoFinanciamiento'=>$request->TipoFinanciamiento[$idx],
'Moneda'=>$request->Moneda[$idx],
'PeriodicidadPago'=>$request->PeriodicidadPago[$idx],
'PeriodosGracia'=>$request->PeriodosGracia[$idx],
'DestinoFinanciamiento'=>$request->DestinoFinanciamiento[$idx],
'TipoGarantia'=>$request->TipoGarantia[$idx],
'AvalObilgadoSolidario'=>$request->AvalObilgadoSolidario[$idx],
'ValorGarantia'=>$request->ValorGarantia[$idx],
'UbicacionGarantia'=>$request->UbicacionGarantia[$idx],
'Propuesta'=>$request->Propuesta[$idx],
'Activo'=>$request->Activo[$idx]
];
TabPropuestaFondeoEmpresa::updateOrCreate(['Propuesta'=>$request->Propuesta[$idx],'empresa_id'=>$empresa_id], $propuestaData);
}
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Display a listing of the resource.
* @param \App\Models\TabCompatibilidadFondeo $compatibilidad
* @return \Illuminate\Http\Response
*/
public function detalleEmpresa(TabCompatibilidadFondeo $compatibilidad)
{
if($compatibilidad->Estatus=='Pendiente'){
$propuesta=TabPropuestaFondeoEmpresa::where('id','=',$compatibilidad->propuesta_id)->first();
}else{
$propuesta=TabPropuestaFondeoIndicativa::where('compatibilidad_id','=',$compatibilidad->id)->first();
}
$data=[
'Compatibilidad'=>$compatibilidad,
'Propuesta'=>$propuesta,
'CatDenominacionSocial'=>CatDenominacionSocial::all(),
'catPeriodicidad'=> CatPeriodicidad::all(),
'catTipoFinanciamiento' => CatTipoFinanciamiento::all(),
'catTipoMoneda' => CatMoneda::all(),
'catTipoGarantia' => CatTipoGarantiaPerfil::all(),
];
return view('dashboard.efinanciera.operacion.detalleEmpresa',$data);
}
/**
* Display a listing of the resource.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function detalleEmpresaActiva(Request $request)
{
$data=[
'CatCriterio'=> CatCriterio::all(),
'CatDenominacionSocial'=>CatDenominacionSocial::all(),
'CatPeriodicidad'=> CatPeriodicidad::all()
];
return view('dashboard.efinanciera.operacion.detalleEmpresaActiva',$data);
}
/**
* Guardar propuesta Indicativa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function guardarPropuestaIndicativa(Request $request)
{
//dd($request);
$propuestaData= [
'ImporteSolicitado'=>$request->ImporteSolicitado,
'PlazoFondeo'=>$request->PlazoFondeo,
'Tasa'=>$request->Tasa,
'TasaFija'=>$request->TasaFija,
'Comision'=>$request->Comision,
'TipoFinanciamiento'=>$request->TipoFinanciamiento,
'Moneda'=>$request->Moneda,
'PeriodicidadPago'=>$request->PeriodicidadPago,
'PeriodosGracia'=>$request->PeriodosGracia,
'DestinoFinanciamiento'=>$request->DestinoFinanciamiento,
'TipoGarantia'=>$request->TipoGarantia,
'AvalObilgadoSolidario'=>$request->AvalObilgadoSolidario,
'ValorGarantia'=>$request->ValorGarantia,
'UbicacionGarantia'=>$request->UbicacionGarantia,
'Propuesta'=>$request->Propuesta,
];
TabPropuestaFondeoIndicativa::updateOrCreate(['compatibilidad_id'=>$request->compatibilidad_id], $propuestaData);
TabCompatibilidadFondeo::where('id','=',$request->compatibilidad_id)->update(['Estatus'=>'Aceptada']);
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Declinar propuesta.
* @param \App\Models\TabCompatibilidadFondeo $compatibilidad
* @return \Illuminate\Http\Response
*/
public function declinarPropuesta(TabCompatibilidadFondeo $compatibilidad)
{
$compatibilidad->update(['Estatus'=>'Declinada']);
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Comentar propuesta de compatibilidad.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function comentarioPropuesta(Request $request)
{
// Compatibilidad_id
// Comentarios
// Tipo
$comentarios=[];
$compatibilidad=TabCompatibilidadFondeo::where('id','=',$request->compatibilidad_id)->first();
if($request->Tipo=='Empresa'){
$comentarios=$compatibilidad->ComentEmpresa;
$comentarios[]=['comentario'=>$request->comentarios,'fecha' =>date('Y-m-d H:i')];
$compatibilidad->ComentEmpresa=$comentarios;
$compatibilidad->save();
}
if($request->Tipo=='Financirea'){
$comentarios=$compatibilidad->ComentFinanciera;
$comentarios[]=['comentario'=>$request->comentarios,'fecha' =>date('Y-m-d H:i')];
$compatibilidad->ComentFinanciera=$comentarios;
$compatibilidad->save();
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Mostrar propuesta Indicativa.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function mostrarPropuestaIndicativa(Request $request)
{
$propuesta=TabPropuestaFondeoIndicativa::where('compatibilidad_id','=',$request->compatibilidad)->first();
$data=[
'Propuesta'=>$propuesta,
'CatPeriodicidad'=> CatPeriodicidad::all(),
'catTipoFinanciamiento' => CatTipoFinanciamiento::all(),
'catTipoMoneda' => CatMoneda::all(),
'catTipoGarantia' => CatTipoGarantiaPerfil::all(),
];
return view('dashboard.cliente.operacion.propuestaFondeoIndicativa',$data);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use App\Models\Notification;
use Exception;
use Illuminate\Http\Request;
class NotificationController extends Controller
{
//
public function read(Request $request)
{
try {
$id = $request->id;
$notification = Notification::where('id', $id)->update(['read_at' => now()]);
if (empty($notification)) {
throw new Exception('No se pudo actualizar a read');
}
return response()->json(['status' => 'success', 'response' => $notification]);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'response' => $th->getMessage()]);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,626 @@
<?php
namespace App\Http\Controllers;
use App\Models\CatActividadEconomica;
use App\Models\Operacion;
use App\Models\EntidadFinanciera;
use App\Models\DocumentosCliente;
use App\Models\GruposUsuario;
use App\Models\CategoriaDocumento;
use App\Models\DocumentosOperacion;
use App\Models\Empresa;
use App\Models\EmpresasUsuario;
use App\Models\EtapaTransaccion;
use App\Models\TransaccionOperacion;
use App\Models\EfinancierasUsuario;
use App\Models\ChecklistEfinanciera;
use App\Models\PonderacionEfinanciera;
use App\Models\TabCompatibilidadFondeo;
use App\Models\TabPropuestaFondeoEmpresa;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
class OperacionFinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function propuestas()
{
$user = Auth::user();
$efinanciera = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$compatibles=TabCompatibilidadFondeo::leftjoin('empresas', 'tab_compatibilidad_fondeos.empresa_id', '=', 'empresas.id')
->leftjoin('tab_perfil_cualitativo_empresas', 'tab_compatibilidad_fondeos.empresa_id', '=', 'tab_perfil_cualitativo_empresas.empresa_id')
->leftjoin('tab_propuesta_fondeo_empresas', 'tab_compatibilidad_fondeos.propuesta_id', '=', 'tab_propuesta_fondeo_empresas.id')
->select('tab_compatibilidad_fondeos.*', 'empresas.nombre as empresa','tab_propuesta_fondeo_empresas.Propuesta','tab_perfil_cualitativo_empresas.Actividad_Economica')
->where('tab_compatibilidad_fondeos.efinanciera_id','=',$efinanciera->id)->get();
$CatActividadEconomica=CatActividadEconomica::all()->keyBy('id');
$operaciones = Operacion::leftjoin('empresas', 'operaciones.empresa_id', '=', 'empresas.id')
->leftjoin('entidades_financieras', 'operaciones.efinanciera_id', '=', 'entidades_financieras.id')
->select('operaciones.*', 'entidades_financieras.nombre as efinanciera', 'empresas.nombre as empresa')
->where('operaciones.efinanciera_id', $efinanciera->efinanciera_id)
->get();
$class = ['Pendiente' => 'badge-warning', 'Aceptada' => 'badge-success', 'Declinada' => 'badge-danger'];
$badges = ['Prospecto' => 'badge-warning', 'Activo' => 'badge-success', 'Cancelado' => 'badge-danger'];
$data= ['operaciones' => $operaciones,
'badges' => $badges,
'compatibles'=> $compatibles,
'CatActividadEconomica'=>$CatActividadEconomica,
'class'=>$class
];
return view('dashboard.efinanciera.operacion.operacionesList',$data);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$user = Auth::user();
$efinanciera = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$operaciones = Operacion::leftjoin('empresas', 'operaciones.empresa_id', '=', 'empresas.id')
->leftjoin('entidades_financieras', 'operaciones.efinanciera_id', '=', 'entidades_financieras.id')
->select('operaciones.*', 'entidades_financieras.nombre as efinanciera', 'empresas.nombre as empresa')
->where('operaciones.efinanciera_id', $efinanciera->efinanciera_id)
->get();
$badges = ['Prospecto' => 'badge-warning', 'Activo' => 'badge-success', 'Cancelado' => 'badge-danger'];
return view('dashboard.efinanciera.operacion.operacionesActivasList', ['operaciones' => $operaciones, 'badges' => $badges]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
$efinancieras = EntidadFinanciera::all();
return view('dashboard.operacion.operacionSetForm', ['efinancieras' => $efinancieras]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$operacion = new Operacion();
$operacion->empresa_id = $request->empresa_id;
$operacion->efinanciera_id = $request->efinanciera_id;
$operacion->estatus = 'Prospecto';
$operacion->save();
return redirect()->route('operacion.index');
}
/**
* Display the specified resource.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function resumen(Request $request)
{
//
$user = Auth::user();
$efinan = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$idef = $efinan->efinanciera_id;
$efinanciera = EntidadFinanciera::find($idef);
$operas = [];
$empresa = "";
$docoperacion = [];
$usuEmpresa = [];
$checklist = [];
$operacion = false;
$ponderaciones = [];
$trans = [];
$AvanceAcumulado = 0;
if ($request->empresa) {
$empid = $request->empresa;
$operacion = Operacion::where('empresa_id', $empid)->where('efinanciera_id', $idef)->first();
if ($operacion->estatus == 'Prospecto') {
/*
$checklista = DB::table('categoria_documentos as a')->rightjoin('checklist_efinancieras AS b', 'b.categoria_id', '=', 'a.id')
->join('categoria_documentos as parentcat', 'a.categoria_superior', '=', 'parentcat.id')
->leftJoin(DB::raw('(select a.*, b.cargados from
(select documento_id, estatus, validacion, comentario_fondeadora, comentario_cliente, fecha_validacion, fecha_carga, operacion_id, row_number() over(order by documento_id) as num
from documentos_operacions) a
inner join (select documento_id, count(documento_id) cargados from documentos_operacions group by documento_id) b
on a.documento_id = b.documento_id where num = 1
) as c'), function ($join) use ($operacion) {
$join->on('a.id', '=', 'c.documento_id');
$join->where('c.operacion_id', '=', $operacion->id);
})
->select(
'b.*',
'a.nombre as subcategoria',
'parentcat.nombre as categoria',
'c.estatus',
'c.validacion',
'c.comentario_cliente',
'c.comentario_fondeadora',
'c.fecha_validacion',
'c.fecha_carga',
DB::raw('coalesce(c.cargados,0) as cargados')
)
->where('b.efinanciera_id', $idef)->where('b.mostrar', 'Prospecto')
->orderBy('a.categoria_superior', 'asc')->get();
*/
$checklista = DB::table('categoria_documentos as a')
->rightjoin('checklist_efinancieras AS b', 'b.categoria_id', '=', 'a.id')
->join('categoria_documentos as parentcat', 'a.categoria_superior', '=', 'parentcat.id')
->select('b.*','a.nombre as subcategoria','parentcat.nombre as categoria')
->where('b.efinanciera_id', $idef)->where('b.mostrar', 'Prospecto')
->orderBy('a.categoria_superior', 'asc')->get();
} else {
/* $checklista = DB::table('categoria_documentos as a')->rightjoin('checklist_operacions AS b', 'b.categoria_id', '=', 'a.id')
->join('categoria_documentos as parentcat', 'a.categoria_superior', '=', 'parentcat.id')
->leftJoin(DB::raw('(select a.*, b.cargados from
(select documento_id, estatus, validacion, comentario_fondeadora, comentario_cliente, fecha_validacion, fecha_carga, operacion_id, row_number() over(order by documento_id) as num
from documentos_operacions) a
inner join (select documento_id, count(documento_id) cargados from documentos_operacions group by documento_id) b
on a.documento_id = b.documento_id where num = 1
) as c'), function ($join) use ($operacion) {
$join->on('a.id', '=', 'c.documento_id');
$join->where('c.operacion_id', '=', $operacion->id);
})
->select(
'b.*',
'a.nombre as subcategoria',
'parentcat.nombre as categoria',
'c.estatus',
'c.validacion',
'c.comentario_cliente',
'c.comentario_fondeadora',
'c.fecha_validacion',
'c.fecha_carga',
DB::raw('coalesce(c.cargados,0) as cargados')
)
->where('b.operacion_id', $operacion->id)->where('b.estatus', 'activo')
->orderBy('a.categoria_superior', 'asc')->get();*/
$checklista = DB::table('categoria_documentos as a')
->rightjoin('checklist_operacions AS b', 'b.categoria_id', '=', 'a.id')
->join('categoria_documentos as parentcat', 'a.categoria_superior', '=', 'parentcat.id')
->select('b.*','a.nombre as subcategoria','parentcat.nombre as categoria')
->where('b.operacion_id', $operacion->id)
->where('b.estatus', 'activo')->get();
}
//dd($checklista);
foreach($checklista as $element){
$docOpe=DocumentosOperacion::where('operacion_id', '=', $operacion->id)->where('documento_id','=', $element->categoria_id)->get();
//dd($docOpe);
if(count($docOpe)>0){
$element->validacion=$docOpe[0]->validacion;
$element->comentario_cliente=$docOpe[0]->comentario_cliente;
$element->comentario_fondeadora=$docOpe[0]->comentario_fondeadora;
$element->fecha_validacion=$docOpe[0]->fecha_validacion;
$element->fecha_carga=$docOpe[0]->fecha_carga;
$element->estatus=$docOpe[0]->estatus;
$element->cargados=count($docOpe);
} else {
$element->validacion='';
$element->comentario_cliente='';
$element->comentario_fondeadora='';
$element->fecha_validacion='';
$element->fecha_carga='';
$element->estatus='';
$element->cargados=count($docOpe);
}
}
$checklist = $checklista;
$ponderaciones = PonderacionEfinanciera::leftJoin('ponderacion_empresas', function ($join) use ($empid) {
$join->on('ponderacion_empresas.ponderacion_id', '=', 'ponderacion_efinancieras.id');
$join->where('ponderacion_empresas.empresa_id', '=', $empid);
})->select('ponderacion_efinancieras.*', 'ponderacion_empresas.dias as diasemp')
->where('ponderacion_efinancieras.efinanciera_id', $idef)->get();
$transaciones = TransaccionOperacion::where('operacion_id', $operacion->id)->where('estatus', 'Activo')->get();
//Variables calculo porcentaje
$numEtapas = 0;
$porcentajeEtapas = 0;
$numDocs = count($checklist);
$validados = $checklist->where('validacion', 'validado')->count();
if ($numDocs > 0) {
$inicial = round(($validados * 100) / $numDocs);
} else {
$inicial = 0;
}
foreach ($transaciones as $transaccion) {
$trans[$transaccion->id] = $transaccion;
$etapas = [];
$etapastrans = EtapaTransaccion::leftJoin('ponderacion_efinancieras', 'ponderacion_efinancieras.id', '=', 'etapa_transaccions.ponderacion_id')
->select('etapa_transaccions.*', 'ponderacion_efinancieras.porcentaje as procentaje_etapa')->where('etapa_transaccions.transaccion_id', $transaccion->id)->get();
$etapaCount = 1;
$etapaanterior = "";
foreach ($etapastrans as $etapa) {
$numEtapas = $numEtapas + 1;
if ($etapaCount > 0 && $etapa->estatus == 'Iniciado') {
$etapa->porcentaje = $inicial;
if ($inicial == 100) {
$etapa->estatus = 'Terminado';
}
$etapa->save();
}
/*
if($etapaanterior=='Terminado' && $etapa->estatus!='Terminado'){
$etapa->estatus='Iniciado';
$etapa->save();
}
*/
$etapaanterior = $etapa->estatus;
$etapas[$etapa->ponderacion_id] = $etapa;
//$porcentajeEtapas=$etapa->porcentaje+$porcentajeEtapas;
$avanceEtapa = round(($etapa->porcentaje * $etapa->procentaje_etapa) / 100);
$etapaCount = 0;
$AvanceAcumulado = $AvanceAcumulado + $avanceEtapa;
}
$trans[$transaccion->id]['estapas'] = $etapas;
}
//$AvanceAcumulado=$porcentajeEtapas/$numEtapas;
$empresa = Empresa::find($request->empresa);
}
$operaciones = Operacion::where('efinanciera_id', $idef)->get();
foreach ($operaciones as $ope) {
$operas[] = $ope->empresa_id;
}
$usuEmpresa = Empresa::whereIn('id', $operas)->get();
$data = [
'empresas' => $usuEmpresa,
'empresa' => $empresa,
'efinanciera' => $efinanciera,
'operacion' => $operacion,
'ponderaciones' => $ponderaciones,
'checklist' => $checklist,
'transacciones' => $trans,
'avance' => $AvanceAcumulado
];
return view('dashboard.efinanciera.operacion.resumenOperacion', $data);
}
/**
* Display the specified resource.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function estatus(Request $request)
{
//
//SET VARIABLES
$user = Auth::user();
$efinan = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$idef = $efinan->efinanciera_id;
$efinanciera = EntidadFinanciera::find($idef);
$empresa_id = $request->empresa;
$usuEmpresa = [];
$empresa = false;
$usuOperaciones = [];
$docuEmresa = [];
$docPromedio = [];
//OBTENEMOS LAS OPERACIONES
$operacion = Operacion::where('efinanciera_id', $idef)->get();
foreach ($operacion as $ope) {
$operas[] = $ope->empresa_id;
}
$usuEmpresa = Empresa::whereIn('id', $operas)->get();
if ($empresa_id) {
$operaciones = Operacion::where('efinanciera_id', $empresa_id)->get();
//dd($operaciones);
$usuOperaciones = [];
//documentos Empresa
$docuemp = DocumentosCliente::where('empresa_id', $empresa_id)->get();
foreach ($docuemp as $doc) {
$docuEmresa[$doc->categoria_id] = $doc;
}
foreach ($operaciones as $operacion) {
$efinanciera = EntidadFinanciera::find($operacion->efinanciera_id);
$opeChecklist = [];
$checklists = CategoriaDocumento::rightjoin('checklist_efinancieras', 'checklist_efinancieras.categoria_id', '=', 'categoria_documentos.id')
->join('categoria_documentos as parentcat', 'categoria_documentos.categoria_superior', '=', 'parentcat.id')
->leftJoin('documentos_operacions', function ($join) use ($operacion) {
$join->on('categoria_documentos.id', '=', 'documentos_operacions.documento_id');
$join->where('documentos_operacions.operacion_id', '=', $operacion->id);
})
->select(
'checklist_efinancieras.*',
'categoria_documentos.nombre as subcategoria',
'parentcat.nombre as categoria',
'documentos_operacions.estatus',
'documentos_operacions.validacion',
'documentos_operacions.comentario_cliente',
'documentos_operacions.comentario_fondeadora',
'documentos_operacions.fecha_validacion',
'documentos_operacions.fecha_carga'
)
->where('checklist_efinancieras.efinanciera_id', $efinanciera->id)->get();
foreach ($checklists as $documento) {
$opeChecklist[$documento->categoria_id] = $documento;
}
$usuOperaciones[] = ['financiera' => $efinanciera, 'cheklist' => $opeChecklist];
}
$empresa = Empresa::find($request->empresa);
}
$categorias = CategoriaDocumento::where('categoria_superior', 0)->get();
foreach ($categorias as $categoria) {
$documentosCategorias[$categoria->id] = $categoria;
$subcategorias = CategoriaDocumento::where('categoria_superior', $categoria->id)->get();
$documentosCategorias[$categoria->id]['subcategorias'] = $subcategorias;
}
$data = [
'empresas' => $usuEmpresa,
'empresa' => $empresa,
'documentos' => $docuEmresa,
'categorias' => $categorias,
'operaciones' => $usuOperaciones,
];
return view('dashboard.efinanciera.operacion.estatusOperacion', $data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Operacion $operacion
* @return \Illuminate\Http\Response
*/
public function edit(Operacion $operacion)
{
//
$ope = Operacion::leftjoin('empresas', 'operaciones.empresa_id', '=', 'empresas.id')
->leftjoin('entidades_financieras', 'operaciones.efinanciera_id', '=', 'entidades_financieras.id')
->select('operaciones.*', 'entidades_financieras.nombre as efinanciera', 'empresas.nombre as empresa')
->where('operaciones.id', $operacion->id)
->first();
return view('dashboard.operacion.operacionEditForm', ['operacion' => $ope]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function rechazar(Request $request)
{
//
$operacion = Operacion::find($request->operacion);
$operacion->estatus = 'Cancelado';
$operacion->comentario_fondeadora = $request->comentarios;
$operacion->save();
return redirect()->route('efinanciera.operacion.index');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function comentar(Request $request)
{
//
$operacion = Operacion::find($request->operacion);
$operacion->comentario_fondeadora = $request->comentario;
$operacion->save();
//return redirect()->back()->with(['empresa',$operacion->empresa_id]);
return redirect()->action([OperacionFinancieraController::class, 'resumen'], ['empresa' => $operacion->empresa_id, 'efinanciera' => $operacion->efinanciera_id]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function cancelarTransaccion(Request $request)
{
//
$trenasaccion = TransaccionOperacion::find($request->transaccion);
$trenasaccion->Estatus = 'Cancelado';
$trenasaccion->save();
//return redirect()->back();
$operacion = Operacion::find($request->operacion);
return redirect()->action([OperacionFinancieraController::class, 'resumen'], ['empresa' => $operacion->empresa_id, 'efinanciera' => $operacion->efinanciera_id]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function actualizarTransaccion(Request $request)
{
//
$operacion = Operacion::find($request->operacion);
$transactions = $request->transaccion;
foreach ($transactions as $id => $trans) {
$act = 0;
foreach ($trans as $pond => $etapa) {
if ($act == 100 && $etapa == 100) {
EtapaTransaccion::where('transaccion_id', $id)->where('ponderacion_id', $pond)->update(['porcentaje' => $etapa, 'estatus' => 'Terminado', 'fin' => date('Y-m-d')]);
} else {
$etapatran = EtapaTransaccion::where('transaccion_id', $id)->where('ponderacion_id', $pond)->first();
if ($etapatran->estatus !== 'Iniciado' && $etapatran->estatus !== 'Terminado' && $etapa > 0) {
$etapatran->inicio = date('Y-m-d');
$etapatran->estatus = 'Iniciado';
}
$etapatran->porcentaje = $etapa;
$etapatran->save();
EtapaTransaccion::where('transaccion_id', $id)->where('ponderacion_id', $pond)->update(['porcentaje' => $etapa]);
}
$act = $etapa;
}
}
//return redirect()->route('efinanciera.operacion.post.resumen');
return redirect()->action([OperacionFinancieraController::class, 'resumen'], ['empresa' => $operacion->empresa_id, 'efinanciera' => $operacion->efinanciera_id]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
//
$operacion = Operacion::find($request->operacion);
$operacion->estatus = $request->estatus;
$operacion->save();
return redirect()->route('operacion.index');
}
/**
* Guardar una propuesta Indicativa .
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function createPropuestaIndicativa(Request $request)
{
if(isset($request->Activo)){
foreach($request->Activo as $idx=>$value){
$propuestaData= [
'ImporteSolicitado'=>$request->ImporteSolicitado,
'PlazoFondeo'=>$request->PlazoFondeo,
'Tasa'=>$request->Tasa,
'TasaFija'=>$request->TasaFija,
'Comision'=>$request->Comision,
'TipoFinanciamiento'=>$request->TipoFinanciamiento,
'Moneda'=>$request->Moneda,
'PeriodicidadPago'=>$request->PeriodicidadPago,
'PeriodosGracia'=>$request->PeriodosGracia,
'DestinoFinanciamiento'=>$request->DestinoFinanciamiento,
'TipoGarantia'=>$request->TipoGarantia,
'AvalObilgadoSolidario'=>$request->AvalObilgadoSolidario,
'ValorGarantia'=>$request->ValorGarantia,
'UbicacionGarantia'=>$request->UbicacionGarantia,
'Activa'=>$request->Activo
];
TabPropuestaFondeoEmpresa::updateOrCreate(['Propuesta'=>$request->Propuesta,'compatibilidad_id'=>$request->compatibilidad_id], $propuestaData);
}
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\PerfilCapacidad;
use Illuminate\Http\Request;
class PerfilCapacidadController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\PerfilCapacidad $perfilCapacidad
* @return \Illuminate\Http\Response
*/
public function show(PerfilCapacidad $perfilCapacidad)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\PerfilCapacidad $perfilCapacidad
* @return \Illuminate\Http\Response
*/
public function edit(PerfilCapacidad $perfilCapacidad)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\PerfilCapacidad $perfilCapacidad
* @return \Illuminate\Http\Response
*/
public function update(Request $request, PerfilCapacidad $perfilCapacidad)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\PerfilCapacidad $perfilCapacidad
* @return \Illuminate\Http\Response
*/
public function destroy(PerfilCapacidad $perfilCapacidad)
{
//
}
}

View File

@ -0,0 +1,127 @@
<?php
namespace App\Http\Controllers;
use App\Models\Perfil;
use Illuminate\Http\Request;
class PerfilController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('dashboard.perfil.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return view('dashboard.perfil.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$validatedData = $request->validate([
'perfil_nombre' => 'required|min:1|max:256',
]);
$perfil = New Perfil();
$perfil->perfil_nombre = $request->perfil_nombre;
$perfil->parent = $request->parent;
$perfil->save();
$request->session()->flash('message', 'Perfil Creado con exito');
return redirect()->route('perfil.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function show(Perfil $perfil)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function edit(Perfil $perfil)
{
//
return view('perfil.edit',['perfil'=>$perfil]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Perfil $perfil)
{
$perfil->perfil_nombre = $request->perfil_nombre;
$perfil->parent = $request->parent;
$perfil->save();
return redirect()->route('perfil.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function delete(Perfil $perfil)
{
$perfil->delete();
request()->session()->flash('message', 'Perfil se elimino con exito');
return redirect()->route('perfil.index');
}
//Alta funciones para validación perfil Entidad Financiera VS PERFIL EMPRESA
/**
* Obtiene el perfil de la entidad financiera y corre las validaciones contra la información de la empresa.
*
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function loopPerfil()
{
}
}

View File

@ -0,0 +1,264 @@
<?php
namespace App\Http\Controllers;
use App\Models\CatCriterio;
use App\Models\CatPeriodicidad;
use App\Models\CatRatingExterno;
use App\Models\CatCriteriosPefil;
use App\Models\CatMoneda;
use App\Models\CatSexo;
use App\Models\CatTipoFinanciamiento;
use App\Models\CatTipoGarantiaPerfil;
use App\Models\CatDenominacionSocial;
use App\Models\CatFacultadesApoderado;
use App\Models\CatActividadEconomica;
use App\Models\CatTipoProductoFinanciero;
use App\Models\CatPerspectiva;
use App\Models\CatHorizonte;
use App\Models\CatTipoCalificacion;
use App\Models\CatCalificadora;
use App\Models\CatAuditorActual;
use App\Models\CatProductoCaracteristica;
use App\Models\CatTipoInformaionFinanciera;
use App\Models\EfinancierasUsuario;
use App\Models\Empresa;
use App\Models\Grupo;
use App\Models\EntidadFinanciera;
use App\Models\TabAccesosPerfilFinanciera;
use App\Models\TabCriteriosPefilFinanciera;
use App\Models\TabPerfilFinancieroEmpresa;
use App\Models\TabPropuestaFondeoEmpresa;
use App\Models\TabMiembrosEmpresa;
use App\Models\TabPerfilCualitativoEmpresa;
use App\Models\TabProductoComercialEmpresa;
use App\Models\TabRatingExternoEmpresa;
use App\Models\TabComiteEmpresa;
use App\Models\TabEstructuraAccionaria;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
// use Illuminate\Notifications\Notification;
class PerfilFinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function indexCriterios()
{
//
$efinancieras=EntidadFinanciera::all();
foreach ($efinancieras as $i => $efinanciera) {
$criterios=TabCriteriosPefilFinanciera::where('efinanciera_id', $efinanciera->id)->first();
$efinancieras[$i]->criterio = $criterios;
//dd($efinancieras[$i]->cheklist);
}
return view('dashboard.perfil_financiera.perfilList',['efinancieras'=>$efinancieras]);
}
/**
* Muestra el formulario para selecionar criterios.
* @param \App\Models\EntidadFinanciera $efinanciera
* @return \Illuminate\Http\Response
*/
public function showCriterios(EntidadFinanciera $efinanciera)
{
$criterios=CatCriteriosPefil::all();
CatRatingExterno::all();
$criteriosFinanciera=TabCriteriosPefilFinanciera::where('efinanciera_id', $efinanciera->id)->get()->keyBy('criterio_id');
//dd($criteriosFinanciera);
$Catalogos=[];
foreach($criterios as $criterio){
if($criterio->TipoValor!=='Numerico' && $criterio->TipoValor!=='Boolean'){
$model="App\Models\\".$criterio->CatalogoValor;
$Catalogos[$criterio->CatalogoValor]=$model::all();
}
}
$data=[
'criterios'=>$criterios,
'CatPeriodicidad'=>CatPeriodicidad::all(),
'CatCriterio'=>CatCriterio::all(),
'criteriosFinanciera'=>$criteriosFinanciera,
'efinanciera'=>$efinanciera,
'Catalogos'=>$Catalogos
];
return view('dashboard.perfil_financiera.perfilFinancieraForm',$data);
}
/**
* Guarda la información del perfil De Criterios de la Entidad Financiera.
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeCriterios(Request $request)
{
//dd($request);
foreach($request->activar as $indx=> $value){
$data=[
'Indispensable'=>isset($request->Indispensable[$indx])?$request->Indispensable[$indx]:'',
'Ponderacion'=>isset($request->Ponderacion[$indx])?$request->Ponderacion[$indx]:0,
'Criterio'=>$request->Criterio[$indx],
'Periodicidad'=>isset($request->Periodicidad[$indx])?$request->Periodicidad[$indx]:'',
'NumeroPeriodos'=>isset($request->NumeroPeriodos[$indx])?$request->NumeroPeriodos[$indx]:'',
];
if(isset($request->Valor[$indx])){
$data['Valor']=$request->Valor[$indx];
}
if(isset($request->ValorMultiple[$indx])){
$data['ValorMultiple']=$request->ValorMultiple[$indx];
}
TabCriteriosPefilFinanciera::updateOrCreate(['efinanciera_id'=>$request->efinanciera,'criterio_id'=>$value,],$data);
}
return redirect()->back()->with(['success' => 'Se guardo la informacion.']);
}
/**
* Presenta el detalle del match de la Empresa
*
* @param \Illuminate\Http\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function showEmpresaDetalle(Empresa $empresa){
$user = Auth::user();
$efinanciera = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$criterios=TabCriteriosPefilFinanciera::leftJoin('cat_criterios_pefils as catcri','tab_criterios_pefil_financieras.criterio_id', '=', 'catcri.id')->where('tab_criterios_pefil_financieras.efinanciera_id', $efinanciera->id)->get();
//dd($criterios);
$Catalogos=[];
foreach($criterios as $criterio){
if($criterio->TipoValor!=='Numerico' && $criterio->TipoValor!=='Boolean'){
$model="App\Models\\".$criterio->CatalogoValor;
$Catalogos[$criterio->CatalogoValor]=$model::all();
}
}
$data=[
'criterios'=>$criterios,
'Catalogos'=>$Catalogos,
'catTipoFinanciamiento' => CatTipoFinanciamiento::all(),
'catTipoMoneda' => CatMoneda::all(),
'catPeriodicidad' => CatPeriodicidad::all(),
'catTipoGarantia' => CatTipoGarantiaPerfil::all(),
'CatPeriodicidad'=>CatPeriodicidad::all(),
'Propuestas'=>TabPropuestaFondeoEmpresa::where('empresa_id',$empresa->id)->get(),
'efinanciera'=>$efinanciera,
'empresa'=>$empresa
];
return view('dashboard.efinanciera.perfil.detalleEmpresa',$data);
}
/**
* Presenta el detalle del match de la Empresa
*
* @param \Illuminate\Http\Empresa $empresa
* @return \Illuminate\Http\Response
*/
public function showEmpresaPerfil(Empresa $empresa){
$user = Auth::user();
$efinanciera = EfinancierasUsuario::where('usuario_id', $user->id)->first();
$datosEmpresa = Empresa::leftjoin('cat_denominacion_socials', 'empresas.dsocial', '=', 'cat_denominacion_socials.id')
->leftjoin('cliente_datos', 'empresas.id', '=', 'cliente_datos.empresa_id')
->select('empresas.*', 'cat_denominacion_socials.nombre as denominacion', 'cliente_datos.*')
->where('empresas.id',$empresa->id)->first();
$grupo = Grupo::where('id',$empresa->grupo_id)->first();
$permisosPerfil=TabAccesosPerfilFinanciera::where('efinanciera_id',$efinanciera)->get();
$perfilCualitativoEmpresa = TabPerfilCualitativoEmpresa::where('empresa_id',$empresa->id)->first();
$perfilFinanciero = TabPerfilFinancieroEmpresa::where('empresa_id',$empresa->id)->first();
$productoComercialEmpresa = TabProductoComercialEmpresa::where('empresa_id',$empresa->id)->get();
$ratingExternoEmpresa = TabRatingExternoEmpresa::where('empresa_id',$empresa->id)->get();
$miembrosEmpresa = TabMiembrosEmpresa::where('empresa_id',$empresa->id)->where('tipo_miembro','=','direccion')->get();
$miembrosConsejo = TabMiembrosEmpresa::where('empresa_id',$empresa->id)->where('tipo_miembro','=','consejo')->get();
$comiteEmpresa = TabComiteEmpresa::where('empresa_id',$empresa->id)->get();
$estructuraAccionaria = TabEstructuraAccionaria::where('empresa_id',$empresa->id)->where('tipo','=','accionaria')->get();
$estructuraAccionariaSub = TabEstructuraAccionaria::where('empresa_id',$empresa->id)->where('tipo','=','subcidiaria')->get();
foreach($comiteEmpresa as $idx=>$comite){
$miembros = TabMiembrosEmpresa::where('empresa_id',$empresa->id)->where('comite_id','=',$comite->id)->get();
$comiteEmpresa[$idx]['miembros']=$miembros;
}
$data=[
'CatSexo'=>CatSexo::all()->keyBy('id'),
'CatDenominacionSocial'=> CatDenominacionSocial::all()->keyBy('id'),
'CatFacultadesApoderado' => CatFacultadesApoderado::all()->keyBy('id'),
'CatActividadEconomica' => CatActividadEconomica::all()->keyBy('id'),
'CatRatingExterno' => CatRatingExterno::all()->keyBy('id'),
'CatPerspectiva' => CatPerspectiva::all()->keyBy('id'),
'CatHorizonte' => CatHorizonte::all()->keyBy('id'),
'CatTipoCalificacion' => CatTipoCalificacion::all()->keyBy('id'),
'CatCalificadora' => CatCalificadora::all()->keyBy('id'),
'CatTipoProductoFinanciero' => CatTipoProductoFinanciero::all()->keyBy('id'),
'CatCriterio' => CatCriterio::all()->keyBy('id'),
'CatAuditorActual' => CatAuditorActual::all()->keyBy('id'),
'CatProductoCaracteristica' => CatProductoCaracteristica::all()->keyBy('id'),
'CatTipoInformaionFinanciera' => CatTipoInformaionFinanciera::all()->keyBy('id'),
'permisosPerfil' => $permisosPerfil,
'perfilCualitativoEmpresa' => $perfilCualitativoEmpresa,
'productoComercialEmpresa' => $productoComercialEmpresa,
'ratingExternoEmpresa' => $ratingExternoEmpresa,
'miembrosEmpresa' => $miembrosEmpresa,
'miembrosConsejo' => $miembrosConsejo,
'comiteEmpresa' => $comiteEmpresa,
'estructuraAccionaria'=>$estructuraAccionaria,
'estructuraAccionariaSub'=>$estructuraAccionariaSub,
'perfilFinanciero' =>$perfilFinanciero,
'Empresa' => $datosEmpresa,
'Grupo' => $grupo,
];
return view('dashboard.efinanciera.perfil.perfilEmpresa',$data);
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers;
use App\Http\Resources\PermisosEmpresaResource;
use App\Models\User;
use Illuminate\Http\Request;
class NoPermissionsException extends \Exception
{
}
class PermisosEmpresaController extends Controller
{
public function index($id)
{
try {
$userPermissions = User::find($id)->getAllPermissions();
if (empty($userPermissions)) {
throw new NoPermissionsException('No hay permisos relacionados con ese usuario');
}
return response()->json(['status' => 'success', 'response' => $userPermissions]);
} catch (\Throwable $th) {
return response()->json(['status' => 'error', 'response' => $th->getMessage()]);
} catch (NoPermissionsException $th) {
return response()->json(['status' => 'error', 'response' => $th->getMessage()]);
}
}
public function create(Request $request)
{
try {
$data = $request->all();
$user = User::find($data['empresa']);
unset($data['empresa']);
$permissionToUser = $user->syncPermissions(array_keys($data));
return response()->json(['status' => 'success', 'response' => $permissionToUser]);
} catch (\Throwable $th) {
//throw $th;
return response()->json(['status' => 'success', 'response' => $th->getMessage()]);
}
}
}

View File

@ -0,0 +1,152 @@
<?php
namespace App\Http\Controllers;
use App\Models\PonderacionEfinanciera;
use App\Models\EntidadFinanciera;
use Illuminate\Http\Request;
class PonderacionEfinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$pondActivas = [];
$ponderaciones = PonderacionEfinanciera::all()->groupBy('efinanciera_id');
foreach ($ponderaciones as $pond) {
//dd($pond);
$pondActivas[$pond[0]->efinanciera_id] = $pond[0];
}
$efinancieras = EntidadFinanciera::all();
return view('dashboard.ponderacion.ponderacionList', ['efinancieras' => $efinancieras, 'ponderaciones' => $pondActivas]);
}
/**
* Show the form for creating a new resource.
* @param \App\Models\EntidadFinanciera $efinanciera
* @return \Illuminate\Http\Response
*/
public function create(EntidadFinanciera $efinanciera)
{
//porcentaje acumulado para la tabla de ponderacion de la empresa
$porcentaje = 0;
$ponderaciones = PonderacionEfinanciera::where('efinanciera_id', $efinanciera->id)->get();
foreach ($ponderaciones as $pond) {
$porcentaje = $porcentaje + $pond->porcentaje;
}
$disponible = 100 - $porcentaje;
return view('dashboard.ponderacion.ponderacionAddForm', ['efinanciera' => $efinanciera, 'disponible' => $disponible]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$ponderacion = new PonderacionEfinanciera();
$ponderacion->efinanciera_id = $request->efinanciera_id;
$ponderacion->actividad = $request->actividad;
$ponderacion->porcentaje = $request->porcentaje;
$ponderacion->dias = $request->dias;
$ponderacion->save();
return redirect()->route('ponderacion.show', ['efinanciera' => $request->efinanciera_id]);
}
/**
* Display the specified resource.
*
* @param \App\Models\EntidadFinanciera $efinanciera
* @return \Illuminate\Http\Response
*/
public function show(EntidadFinanciera $efinanciera)
{
//
$porcentaje = 0;
$ponderaciones = PonderacionEfinanciera::where('efinanciera_id', $efinanciera->id)->get();
foreach ($ponderaciones as $pond) {
$porcentaje = $porcentaje + $pond->porcentaje;
}
$disponible = 100 - $porcentaje;
return view('dashboard.ponderacion.ponderacionShow', ['efinanciera' => $efinanciera, 'ponderaciones' => $ponderaciones, 'disponible' => $disponible]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\PonderacionEfinanciera $ponderacionEfinanciera
* @return \Illuminate\Http\Response
*/
public function edit(PonderacionEfinanciera $ponderacion)
{
//
$porcentaje = 0;
$ponderaciones = PonderacionEfinanciera::where('id', $ponderacion->id)->get();
foreach ($ponderaciones as $pond) {
$porcentaje = $porcentaje + $pond->porcentaje;
}
$disponible = (100 - $porcentaje) + $ponderacion->porcentaje;
return view('dashboard.ponderacion.ponderacionEditForm', ['ponderacion' => $ponderacion, 'disponible' => $disponible]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\PonderacionEfinanciera $ponderacionEfinanciera
* @return \Illuminate\Http\Response
*/
public function update(Request $request, PonderacionEfinanciera $ponderacion)
{
//
$ponderacion->efinanciera_id = $request->efinanciera_id;
$ponderacion->actividad = $request->actividad;
$ponderacion->porcentaje = $request->porcentaje;
$ponderacion->dias = $request->dias;
$ponderacion->save();
return redirect()->route('ponderacion.show', ['efinanciera' => $request->efinanciera_id]);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\PonderacionEfinanciera $ponderacionEfinanciera
* @return \Illuminate\Http\Response
*/
public function delete(PonderacionEfinanciera $ponderacion)
{
//
$idef = $ponderacion->efinanciera_id;
$ponderacion->delete();
return redirect()->route('ponderacion.show', ['efinanciera' => $idef]);
}
}

View File

@ -0,0 +1,121 @@
<?php
namespace App\Http\Controllers;
use App\Models\ProductoEntidadFinanciera;
use App\Models\EntidadFinanciera;
use Illuminate\Http\Request;
class ProductoEntidadFinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$prodActios = [];
$productos = ProductoEntidadFinanciera::all()->groupBy('efinanciera_id');
foreach ($productos as $prod) {
//dd($pond);
$prodActios[$prod[0]->efinanciera_id] = $prod[0];
}
$efinancieras = EntidadFinanciera::all();
return view('dashboard.producto.productoList', ['efinancieras' => $efinancieras, 'productos' => $prodActios]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(EntidadFinanciera $efinanciera)
{
return view('dashboard.producto.productoAddForm', ['efinanciera' => $efinanciera]);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$productos = new ProductoEntidadFinanciera();
$productos->efinanciera_id = $request->efinanciera_id;
$productos->producto = $request->producto;
$productos->save();
return redirect()->route('producto.show', ['efinanciera' => $request->efinanciera_id]);
}
/**
* Display the specified resource.
*
* @param \App\Models\EntidadFinanciera $efinanciera
* @return \Illuminate\Http\Response
*/
public function show(EntidadFinanciera $efinanciera)
{
//
$productos = ProductoEntidadFinanciera::where('efinanciera_id', $efinanciera->id)->get();
return view('dashboard.producto.productoShow', ['efinanciera' => $efinanciera, 'productos' => $productos]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\ProductoEntidadFinanciera $productoEntidadFinanciera
* @return \Illuminate\Http\Response
*/
public function edit(ProductoEntidadFinanciera $producto)
{
//
$producto = ProductoEntidadFinanciera::where('id', $producto->id)->first();
return view('dashboard.producto.productoEditForm', ['producto' => $producto]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\ProductoEntidadFinanciera $productoEntidadFinanciera
* @return \Illuminate\Http\Response
*/
public function update(Request $request, ProductoEntidadFinanciera $producto)
{
//
$producto->efinanciera_id = $request->efinanciera_id;
$producto->producto = $request->producto;
$ponderacion->save();
return redirect()->route('producto.show', ['efinanciera' => $request->efinanciera_id]);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\ProductoEntidadFinanciera $productoEntidadFinanciera
* @return \Illuminate\Http\Response
*/
public function delete(ProductoEntidadFinanciera $producto)
{
//
$idef = $producto->efinanciera_id;
$producto->delete();
return redirect()->route('producto.show', ['efinanciera' => $idef]);
}
}

View File

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use App\Models\Prueba;
use Illuminate\Http\Request;
class PruebaController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\Prueba $prueba
* @return \Illuminate\Http\Response
*/
public function show(Prueba $prueba)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Prueba $prueba
* @return \Illuminate\Http\Response
*/
public function edit(Prueba $prueba)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Prueba $prueba
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Prueba $prueba)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Prueba $prueba
* @return \Illuminate\Http\Response
*/
public function destroy(Prueba $prueba)
{
//
}
}

View File

@ -0,0 +1,187 @@
<?php
namespace App\Http\Controllers;
//use App\Models\Capacidad;
use Illuminate\Http\Request;
class ReportesController extends Controller
{
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
return view('dashboard.cliente.reportes.dashboard');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_flujos()
{
//
return view('dashboard.cliente.reportes.cartera_flujos');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function buckets_par()
{
//
return view('dashboard.cliente.reportes.buckets_par');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cobranza()
{
//
return view('dashboard.cliente.reportes.cobranza');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_libre()
{
//
return view('dashboard.cliente.reportes.cartera_libre');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_elegible()
{
//
return view('dashboard.cliente.reportes.cartera_elegible');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function cartera_flujos_ff()
{
//
return view('dashboard.cliente.reportes.cartera_flujos_ff');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function sector_economico()
{
//
return view('dashboard.cliente.reportes.sector_economico');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function entidad_federativa()
{
//
return view('dashboard.cliente.reportes.entidad_federativa');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function top_clientes()
{
//
return view('dashboard.cliente.reportes.top_clientes');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function vintage($vin)
{
//
return view('dashboard.cliente.reportes.vintage',['vin'=>$vin]);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function criterios_eligibilidad(Request $request)
{
//
//dd($request->filtrosactv);
$filtrosactv=false;
if($request->filtrosactv){
$filtrosactv=true;
}
return view('dashboard.cliente.reportes.criterios_eligibilidad',['filtrosactv'=>$filtrosactv]);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function suplemento()
{
//
return view('dashboard.cliente.reportes.suplemento');
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function modelador(Request $request)
{
//
$data=['presets'=>$request->criterio_8];
return view('dashboard.cliente.reportes.modelador',$data);
}
/**
* Dashboard.
*
* @return \Illuminate\Http\Response
*/
public function vintageDetalle(Request $request)
{
//
$data=['filtro'=>$request->filtro];
return view('dashboard.cliente.reportes.vintage_detalle',$data);
}
}

View File

@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function crud()
{
return view('test');
}
public function test()
{
$row['Tipo_de_Tasa'][] = 'Tasa variable';
$row['Producto_financiero'][] = 'Crédito';
$validator = Validator::make($row, []);
$validator->sometimes('Tasa_Fija', 'required', function ($row) {
return ($row['Tipo_de_Tasa'] == 'Tasa fija' && $row['Producto_financiero'] == 'Crédito');
});
$validator->sometimes('Spread', 'required', function ($row) {
return ($row['Tipo_de_Tasa'] == 'Tasa variable' && $row['Producto_financiero'] == 'Crédito');
});
$validator->sometimes('Tasa_de_referencia', 'required', function ($row) {
return ($row['Tipo_de_Tasa'] == 'Tasa variable' && $row['Producto_financiero'] == 'Crédito');
});
if ($validator->fails()) {
//Si la verificacion falla guardamos sus errores
return $validator->errors()->toArray();
// $errores[$row['Contrato_ID']] = $validator->errors()->toArray();
}
}
public function charts()
{
return view('charts');
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace App\Http\Controllers;
use App\Models\TabTipoCambio;
use App\Services\ExcelService;
use App\Services\TipoCambioService;
use Illuminate\Http\Request;
class TipoCambioController extends Controller
{
public function store(Request $request)
{
$layout = [
'id_Tipo_Moneda',
'Valor_Tipo_Cambio',
'Fecha_tipo_Cambio'
];
$filePath = $request->archivo->path();
$numCol = count($layout);
$header = (new ExcelService())->getHeaders($filePath);
if (count($header) !== $numCol) {
return redirect()->back()->withErrors(['danger' => 'El archivo no pudo ser procesado el número de columnas no es correcto;']);
}
if ($layout !== $header) {
return redirect()->back()->withErrors(['danger' => "El archivo no pudo ser procesado el nombre o el orden de las columnas es incorrecto."]);
}
$formatedArray = (new ExcelService())->formatExcel($filePath);
foreach ($formatedArray as $item) {
TabTipoCambio::insert($item);
}
return redirect()->back()->with(['success' => 'Archivo cargado correctamente']);
}
}

View File

@ -0,0 +1,549 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CreateUserRequest;
use App\Models\User;
use App\Models\Perfil;
use App\Models\Grupo;
use App\Models\EntidadFinanciera;
use App\Models\Empresa;
use App\Models\Capacidad;
use App\Models\CategoriaDocumento;
use App\Models\CategoryPermission;
use App\Models\UsuarioCapacidad;
use App\Models\GruposUsuario;
use App\Models\EmpresasUsuario;
use App\Models\EfinancierasUsuario;
use App\Models\EmployeePerUser;
use App\Models\GroupPermission;
use App\Models\GroupPermissionCatalog;
use App\Models\RolePermission;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
use Illuminate\Validation\Rules;
use Illuminate\Support\Facades\Auth;
use Hash;
use Spatie\Permission\Models\Role;
use Image;
class CreateUserException extends \Exception
{
}
class MaxEmployeesException extends \Exception
{
}
class DeleteUserException extends \Exception
{
}
class UserClienteController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$id = Auth::user()->id;
$usuarios = User::leftJoin("perfiles", "perfiles.id", "=", "users.perfil_id")
->select("users.*", "perfiles.perfil_nombre")
->where("users.id", "!=", auth()->id())
->where("users.parent", $id)
// ->orWhere("users.id", $id)
->get();
//dd($data);
return view("dashboard.cliente.usuarios.usersList", ["users" => $usuarios]);
}
/**
* Display the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
$gusuario = GruposUsuario::leftjoin("grupos", "grupos.id", "=", "grupos_usuarios.grupo_id")->where("grupos_usuarios.usuario_id", $user->id)->first();
if ($gusuario) {
$usuGrupo = $gusuario;
$eusuario = Empresa::where("grupo_id", $usuGrupo->id)->get();
if ($eusuario) {
$usuEmpresa = $eusuario;
}
} else {
$usuGrupo = false;
$eusuario = EmpresasUsuario::where("usuario_id", $user->id)->get();
if ($eusuario) {
$usuEmpresa = $eusuario;
}
}
$data = [
"user" => $user,
"perfil" => Perfil::where("id", $user->perfil_id)->first(),
"usuGrupo" => $usuGrupo,
"usuEmpresa" => $usuEmpresa,
"usuFinanciera" => $usuFinanciera
];
return view("dashboard.admin.userShow", $data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function edit(User $user)
{
$empresas = [];
$empusu = [];
$permisos = [];
$capacidades = [];
$permissions = [];
// $user = false;
$authuser = Auth::user();
if ($authuser->parent) {
$idadmin = $authuser->parent;
} else {
$idadmin = $authuser->id;
}
$users = User::where("parent", $idadmin)->orwhere("id", $idadmin)->get();
if ($user->id) {
//obtenemos usuario administrador
$user = User::find($user->id);
if ($user->parent) {
$idadmin = $user->parent;
} else {
$idadmin = $user->id;
}
//Empresas Cliente
$gusuario = GruposUsuario::leftjoin("grupos", "grupos.id", "=", "grupos_usuarios.grupo_id")->where("grupos_usuarios.usuario_id", $idadmin)->first();
if ($gusuario) {
$eusuario = Empresa::where("grupo_id", $gusuario->id)->get();
if ($eusuario) {
$empresas = $eusuario;
}
} else {
$eusuario = EmpresasUsuario::where("usuario_id", $idadmin)->get();
foreach ($eusuario as $emp) {
$eusuario = Empresa::find($emp->empresa_id);
$empresas[] = $eusuario;
}
}
//empresas del usuario
$empusuario = EmpresasUsuario::where("usuario_id", $user->id)->get();
foreach ($empusuario as $emp) {
$empusu[$emp->empresa_id] = $emp;
}
//capacidades para el cliente
$capacidades = Capacidad::where("perfil_id", 2)->get();
//capacidades del usuario
$capuser = UsuarioCapacidad::where("usuario_id", $user->id)->get();
foreach ($capuser as $cap) {
$permisos[$cap->capacidad_id] = $cap;
}
}
if ($user) {
$permissions = GroupPermission::where('user_id', $user->id)->get();
}
$categoriaDocumentos = CategoriaDocumento::where('categoria_superior', 0)->get();
$categoryPermissions = CategoryPermission::where('user_id', $user->id)->get();
// dd($categoryPermissions);
$groupPermissions = GroupPermission::where('user_id', $user->id)->get();
$data = [
"capacidades" => $capacidades,
"permisos" => $permisos,
"empresas" => $empresas,
"empusu" => $empusu,
"users" => $users,
"user" => $user,
"permissions" => $permissions,
"categoriaDocumentos" => $categoriaDocumentos,
'categoryPermissions' => $categoryPermissions,
'groupPermissions' => $groupPermissions
];
return view("dashboard.cliente.usuarios.userEditForm", $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
//
$user->name = $request->name;
if ($request->password) {
$user->password = Hash::make($request->password);
}
$user->save();
if (isset($request->image)) {
$image = $request->file('image');
$imageName = time() . '.' . $image->extension();
// $request->image->move(public_path('uploads/profile_pic'), $imageName);
$img = Image::make($image->path());
$img->resize(200, 200, function ($constraint) {
$constraint->aspectRatio();
})->save('uploads/profile_pic' . '/' . $imageName);
User::where('id', $user->id)->update(['image' => '/uploads/profile_pic' . '/' . $imageName]);
}
//obtenemos las capacidades para el perfil
//event(new Registered($user));
return redirect()->route("cliente.usuario.index");
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function permisos(Request $request)
{
$empresas = [];
$empusu = [];
$permisos = [];
$capacidades = [];
$permissions = [];
$user = false;
$authuser = Auth::user();
if ($authuser->parent) {
$idadmin = $authuser->parent;
} else {
$idadmin = $authuser->id;
}
$users = User::where("parent", $idadmin)->orwhere("id", $idadmin)->get();
if ($request->usu) {
//obtenemos usuario administrador
$user = User::find($request->usu);
if ($user->parent) {
$idadmin = $user->parent;
} else {
$idadmin = $user->id;
}
//Empresas Cliente
$gusuario = GruposUsuario::leftjoin("grupos", "grupos.id", "=", "grupos_usuarios.grupo_id")->where("grupos_usuarios.usuario_id", $idadmin)->first();
if ($gusuario) {
$eusuario = Empresa::where("grupo_id", $gusuario->id)->get();
if ($eusuario) {
$empresas = $eusuario;
}
} else {
$eusuario = EmpresasUsuario::where("usuario_id", $idadmin)->get();
foreach ($eusuario as $emp) {
$eusuario = Empresa::find($emp->empresa_id);
$empresas[] = $eusuario;
}
}
//empresas del usuario
$empusuario = EmpresasUsuario::where("usuario_id", $user->id)->get();
foreach ($empusuario as $emp) {
$empusu[$emp->empresa_id] = $emp;
}
//capacidades para el cliente
$capacidades = Capacidad::where("perfil_id", 2)->get();
//capacidades del usuario
$capuser = UsuarioCapacidad::where("usuario_id", $user->id)->get();
foreach ($capuser as $cap) {
$permisos[$cap->capacidad_id] = $cap;
}
}
if ($user) {
$permissions = GroupPermission::where('user_id', $user->id)->get();
}
$data = [
"capacidades" => $capacidades,
"permisos" => $permisos,
"empresas" => $empresas,
"empusu" => $empusu,
"users" => $users,
"user" => $user,
"permissions" => $permissions
];
return view("dashboard.cliente.usuarios.userEditPermisos", $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function editPermisos(Request $request, User $user)
{
//$user
$permissionsArray = [];
$parentCategories = [];
$permissions = $request->capacidad;
GroupPermission::where('user_id', $user->id)->delete();
\DB::transaction(function () use ($user, $permissions, $parentCategories) {
UsuarioCapacidad::where('usuario_id', $user->id)->delete();
foreach ($permissions as $permission_id => $permissionArray) {
$capacidad = Capacidad::find($permission_id);
if (!in_array($capacidad->menu_parent, $parentCategories)) {
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->menu_parent
]);
$parentCategories[] = $capacidad->menu_parent;
}
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->id
]);
// $menuLinksPermisos = Capacidad::where("perfil_id", 2)->get();
GroupPermission::create([
'user_id' => $user->id,
'menu_id' => $permission_id,
'permissions' => json_encode(['permission' => array_keys($permissionArray)])
]);
foreach ($permissionArray as $permissionName => $value2) {
$permissions = json_decode(Capacidad::find($permission_id)->permiso_nombre);
if ($permissionName === 'ver' && property_exists($permissions, 'ver')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->ver)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
if ($permissionName === 'editar' && property_exists($permissions, 'editar')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->editar)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
}
}
$mergedPermissionsArray = array_merge(...$permissionsArray);
$user->syncPermissions($mergedPermissionsArray);
});
// dd($request->all());
// $capuser = $request->capacidad;
// $capacidades = Capacidad::where("perfil_id", 2)->get();
// foreach ($capacidades as $capacidad) {
// if (isset($capuser[$capacidad->id])) {
// $exist = UsuarioCapacidad::where("usuario_id", $user->id)->where("capacidad_id", $capacidad->id)->first();
// if (!$exist) {
// $capacidadUsuario = new UsuarioCapacidad();
// $capacidadUsuario->usuario_id = $user->id;
// $capacidadUsuario->capacidad_id = $capacidad->id;
// $capacidadUsuario->save();
// }
// } else {
// UsuarioCapacidad::where("usuario_id", $user->id)->where("capacidad_id", $capacidad->id)->delete();
// }
// }
return redirect()->route("cliente.usuario.index");
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function editEmpresas(Request $request, User $user)
{
//
$empssuser = $request->empresa;
$empresas = Empresa::all();
foreach ($empresas as $empresa) {
if (isset($empssuser[$empresa->id])) {
$exist = EmpresasUsuario::where("usuario_id", $user->id)->where("empresa_id", $empresa->id)->first();
if (!$exist) {
$empresaUsuario = new EmpresasUsuario();
$empresaUsuario->usuario_id = $user->id;
$empresaUsuario->empresa_id = $empresa->id;
$empresaUsuario->save();
}
} else {
EmpresasUsuario::where("usuario_id", $user->id)->where("empresa_id", $empresa->id)->delete();
}
}
//obtenemos las capacidades para el perfil
//event(new Registered($user));
return redirect()->route("cliente.usuario.index");
}
public function create()
{
$blockForm = false;
$role = Role::where(['name' => 'empresa'])->first();
$rolePermissions = RolePermission::where(['role_id' => $role->id])->get();
$MAX_EMPLOYEES_PER_USER = EmployeePerUser::where('user_id', auth()->id())->first()->number_employees;
$numberEmployeesOfUser = User::where('parent', auth()->id())->count();
if ($numberEmployeesOfUser >= $MAX_EMPLOYEES_PER_USER) {
$blockForm = true;
}
// CategoryPermission::where('user_id', auth()->id());
$categoriaDocumentos = CategoriaDocumento::where('categoria_superior', 0)->get();
$capacidades = Capacidad::where("perfil_id", 2)->get();
return view("dashboard.cliente.usuarios.create-user", ["permissions" => $rolePermissions, 'blockForm' => $blockForm, 'categoriaDocumentos' => $categoriaDocumentos, 'capacidades' => $capacidades]);
}
public function store(CreateUserRequest $request)
{
try {
$MAX_EMPLOYEES_PER_USER = EmployeePerUser::where('user_id', auth()->id())->first()->number_employees ?? 3;
$numberEmployeesOfUser = User::where('parent', auth()->id())->count();
if ($numberEmployeesOfUser >= $MAX_EMPLOYEES_PER_USER) {
throw new MaxEmployeesException("Alcancaste el numero maximo de empleados por usuarios");
}
$validatedData = $request->validated();
$user = User::create([
"name" => $validatedData["name"],
"email" => $validatedData["email"],
"password" => \Hash::make($validatedData["password"]),
"estatus" => "activo",
"perfil_id" => 2,
"parent" => auth()->id()
]);
if (empty($user)) {
throw new CreateUserException("Error al crear el usuario");
}
// //asignar la empresa de administrador de empresa a usuario hije
$empresaUsuario = EmpresasUsuario::where('usuario_id',auth()->id())->first();
EmpresasUsuario::create([
'usuario_id' => $user->id,
'empresa_id'=> $empresaUsuario->empresa_id,
]);
// $permissionToUser = $user->syncPermissions($validatedData["permissions"]);
foreach ($validatedData['permissions_category'] as $permission) {
CategoryPermission::create(['category_id' => $permission, 'user_id' => $user->id]);
}
$parentCategories = [];
$permissions = $request->capacidad;
GroupPermission::where('user_id', $user->id)->delete();
\DB::transaction(function () use ($user, $permissions, $parentCategories) {
UsuarioCapacidad::where('usuario_id', $user->id)->delete();
foreach ($permissions as $permission_id => $permissionArray) {
$capacidad = Capacidad::find($permission_id);
if (!in_array($capacidad->menu_parent, $parentCategories)) {
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->menu_parent
]);
$parentCategories[] = $capacidad->menu_parent;
}
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->id
]);
// $menuLinksPermisos = Capacidad::where("perfil_id", 2)->get();
GroupPermission::create([
'user_id' => $user->id,
'menu_id' => $permission_id,
'permissions' => json_encode(['permission' => array_keys($permissionArray)])
]);
foreach ($permissionArray as $permissionName => $value2) {
$permissions = json_decode(Capacidad::find($permission_id)->permiso_nombre);
if ($permissionName === 'ver' && property_exists($permissions, 'ver')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->ver)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
if ($permissionName === 'editar' && property_exists($permissions, 'editar')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->editar)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
}
}
$mergedPermissionsArray = array_merge(...$permissionsArray);
$user->syncPermissions($mergedPermissionsArray);
});
return back()->with('success', 'Se creo el usuario correctamente!');
} catch (\Throwable $th) {
return back()->withErrors(['error' => $th->getMessage()]);
} catch (CreateUserException $e) {
return back()->withErrors('error', $e->getMessage());
} catch (MaxEmployeesException $e) {
return back()->withErrors('error', $e->getMessage());
}
}
public function delete(Request $request)
{
try {
$deletedUser = User::find($request->usu)->delete();
if (!$deletedUser) {
throw new DeleteUserException('Hubo un error al borrar el usuario');
}
return back()->with('success', "El usuario se a borrado exitosamente");
} catch (\Throwable $th) {
return back()->withErrors("Error general");
} catch (DeleteUserException $e) {
return back()->withErrors($e->getMessage());
}
}
}

View File

@ -0,0 +1,439 @@
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\Perfil;
use App\Models\Grupo;
use App\Models\EntidadFinanciera;
use App\Models\Empresa;
use App\Models\Capacidad;
use App\Models\CategoriaDocumento;
use App\Models\CategoryPermission;
use App\Models\UsuarioCapacidad;
use App\Models\GruposUsuario;
use App\Models\EmpresasUsuario;
use App\Models\EfinancierasUsuario;
use App\Models\EmployeePerUser;
use App\Models\PermissionCatalog;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
use Illuminate\Validation\Rules\Password;
use Hash;
use Image;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$users = User::leftjoin('perfiles', 'users.perfil_id', '=', 'perfiles.id')->select('users.*', 'perfiles.perfil_nombre')->get();
foreach($users as $element){
$usuEmpresa=[];
$usuGrupo='';
if($element->perfil_id==2){
$gusuario = GruposUsuario::joinWithGrupos()->where('grupos_usuarios.usuario_id', $element->id)->first();
if ($gusuario) {
$usuGrupo = $gusuario->nombre;
$eusuario = Empresa::where('grupo_id', $gusuario->id)->where('estatus', 'Activado')->get();
if ($eusuario) {
$usuEmpresa = $eusuario;
}
} else {
$usuGrupo = '';
$eusuario = EmpresasUsuario::where('usuario_id', $element->id)->first();
if ($eusuario) {
$usuEmpresa = Empresa::where('id', $eusuario->empresa_id)->where('estatus', 'Activado')->get();
}
}
$element->grupo=$usuGrupo;
$element->empresas=$usuEmpresa;
} else if($element->perfil_id==3){
$eusuario = EfinancierasUsuario::where('usuario_id', $element->id)->first();
if ($eusuario) {
$usuEmpresa = EntidadFinanciera::where('id', $eusuario->efinanciera_id)->where('estatus', 'activo')->get();
}
$element->grupo=$usuGrupo;
$element->empresas=$usuEmpresa;
} else {
$element->grupo='FilingXP';
$element->empresas=[];
}
//dd($docOpe);
}
$data = ['users' => $users];
//dd($data);
return view('dashboard.admin.usersList', $data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
$grupos=Grupo::join('empresas','grupos.id', '=', 'empresas.grupo_id')
->select('grupos.id','grupos.nombre','empresas.grupo_id')
->where('grupos.estatus','=','activo')->groupBy('grupos.id','grupos.nombre','empresas.grupo_id')->get();
$data = [
'perfiles' => Perfil::all(),
'grupos' => $grupos,
'usuarios' => User::where('parent', 0)->get(),
'empresas' => Empresa::all(),
'efinancieras' => EntidadFinanciera::all()
];
return view('dashboard.admin.userAddForm', $data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => ['required', 'confirmed', Password::min(8)->letters()->mixedCase()->numbers()],
'image' => 'nullable|image|mimes:jpeg,png,jpg|max:8048',
]);
if (isset($request->image) || !empty($request->image)) {
$image = $request->file('image');
$imageName = time() . '.' . $request->image->extension();
// $request->image->move(public_path('uploads/profile_pic'), $imageName);
$img = Image::make($image->path());
$img->resize(50, 50, function ($constraint) {
$constraint->aspectRatio();
})->save('uploads/profile_pic' . '/' . $imageName);
}
$user = new User();
$user->name = $request->name;
$user->email = $request->email;
$user->password = Hash::make($request->password);
$user->estatus = $request->estatus;
$user->perfil_id = $request->perfil_id;
$user->parent = 0;
$user->image = $request->image ? "/uploads/profile_pic/{$imageName}" : NULL;
$user->save();
$user->id;
//Verificamos si el usuario es cliente y si tiene asignada una empresa o grupo
if ($request->perfil_id == 2) {
if ($request->grupo) {
$grupoUsuario = new GruposUsuario();
$grupoUsuario->usuario_id = $user->id;
$grupoUsuario->grupo_id = $request->grupo;
$grupoUsuario->save();
}
if ($request->empresa) {
$empresaUsuario = new EmpresasUsuario();
$empresaUsuario->usuario_id = $user->id;
$empresaUsuario->empresa_id = $request->empresa;
$empresaUsuario->save();
}
$user->id;
$permissionCatalog = PermissionCatalog::where('category', 'permisos rutas de empresas')->get();
foreach ($permissionCatalog as $permission) {
$user->givePermissionTo($permission->name);
}
$user->assignRole('empresa');
$categories = CategoriaDocumento::where('categoria_superior', 0)->get();
foreach ($categories as $permission) {
CategoryPermission::create(['category_id' => $permission->id, 'user_id' => $user->id]);
}
EmployeePerUser::create(['user_id' => $user->id, 'number_employees' => $request->number_users]);
/* $permissionCatalog = PermissionCatalog::where('category', 'permisos rutas de empresas')->get();
foreach ($permissionCatalog as $permission) {
$user->givePermissionTo($permission->name);
}*/
}
//Verificamos si el usuario es efinaciera y si tiene asignada una efinaciera
if ($request->perfil_id == 3) {
if ($request->efinanciera) {
//$user->assignRole('entidad financiaera');
$efinancieraUsuario = new EfinancierasUsuario();
$efinancieraUsuario->usuario_id = $user->id;
$efinancieraUsuario->efinanciera_id = $request->efinanciera;
$efinancieraUsuario->save();
}
$permissionCatalog = PermissionCatalog::where('category', 'permisos rutas de entidad financiera')->get();
EmployeePerUser::create(['user_id' => $user->id, 'number_employees' => $request->number_users]);
foreach ($permissionCatalog as $permission) {
$user->givePermissionTo($permission->name);
}
$user->assignRole('entidad financiera');
}
//obtenemos las capacidades para el perfil
//verificamos el tipo de perfil
$perfil = Perfil::find($user->perfil_id);
$idperfil = $perfil->id;
if ($perfil->parent) {
$parent = Perfil::where('nombre', $perfil->parent)->first();
$idperfil = $parent->id;
}
$capacidades = Capacidad::where('perfil_id', $idperfil)->get();
//Asignamos las capacidades a el usuario
foreach ($capacidades as $capacidad) {
if ($capacidad->admin == 1 && isset($parent)) {
//No la añadimos
} else {
$capacidadUsuario = new UsuarioCapacidad();
$capacidadUsuario->usuario_id = $user->id;
$capacidadUsuario->capacidad_id = $capacidad->id;
$capacidadUsuario->save();
}
}
//event(new Registered($user));
return redirect()->route('usuario.index');
}
/**
* Display the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
$usuFinanciera = false;
$usuGrupo = false;
$usuEmpresa = false;
if ($user->perfil_id == 2) {
$gusuario = GruposUsuario::joinWithGrupos()->where('grupos_usuarios.usuario_id', $user->id)->first();
if ($gusuario) {
$usuGrupo = $gusuario;
$eusuario = Empresa::where('grupo_id', $usuGrupo->id)->get();
if ($eusuario) {
$usuEmpresa = $eusuario;
}
} else {
$usuGrupo = false;
$eusuario = EmpresasUsuario::where('usuario_id', $user->id)->get();
if ($eusuario) {
$usuEmpresa = $eusuario;
}
}
}
if ($user->perfil_id == 3) {
$efusuario = EfinancierasUsuario::leftjoin('entidades_financieras', 'entidades_financieras.id', '=', 'efinancieras_usuarios.efinanciera_id')->where('efinancieras_usuarios.usuario_id', $user->id)->first();
if ($efusuario) {
$usuFinanciera = $efusuario;
}
}
$data = [
'user' => $user,
'perfil' => Perfil::where('id', $user->perfil_id)->first(),
'usuGrupo' => $usuGrupo,
'usuEmpresa' => $usuEmpresa,
'usuFinanciera' => $usuFinanciera
];
return view('dashboard.admin.userShow', $data);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function edit(User $user)
{
//
$gusuario = GruposUsuario::where('usuario_id', $user->id)->first();
if ($gusuario) {
$usuGrupo = $gusuario->grupo_id;
} else {
$usuGrupo = false;
}
$eusuario = EmpresasUsuario::where('usuario_id', $user->id)->first();
if ($eusuario) {
$usuEmpresa = $eusuario->empresa_id;
} else {
$usuEmpresa = false;
}
$efusuario = EfinancierasUsuario::where('usuario_id', $user->id)->first();
if ($efusuario) {
$usuFinanciera = $efusuario->efinanciera_id;
} else {
$usuFinanciera = false;
}
$numUsuarios = EmployeePerUser::where('user_id', $user->id)->first();
if (!$numUsuarios) {
$numUsu = 0;
} else {
$numUsu = $numUsuarios->number_employees;
}
$capacidades = Capacidad::where("perfil_id", 2)->get();
$data = [
'user' => $user,
'profile_pic' => User::find($user->id)->image,
'perfiles' => Perfil::all(),
'grupos' => Grupo::all(),
'empresas' => Empresa::all(),
'efinancieras' => EntidadFinanciera::all(),
'usuGrupo' => $usuGrupo,
'usuEmpresa' => $usuEmpresa,
'usuFinanciera' => $usuFinanciera,
'numUsuarios' => $numUsu,
'capacidades' => $capacidades
];
return view('dashboard.admin.userEditForm', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
//
$user->name = $request->name;
$user->email = $request->email;
if ($request->password) {
$user->password = Hash::make($request->password);
}
$user->estatus = $request->estatus;
$user->save();
$user->id;
if (isset($request->image)) {
$image = $request->file('image');
$imageName = time() . '.' . $image->extension();
// $request->image->move(public_path('uploads/profile_pic'), $imageName);
$img = Image::make($image->path());
$img->resize(200, 200, function ($constraint) {
$constraint->aspectRatio();
})->save('uploads/profile_pic' . '/' . $imageName);
User::where('id', $user->id)->update(['image' => '/uploads/profile_pic' . '/' . $imageName]);
}
if ($request->perfil_id == 2) {
//Verificamos si el usuario es cliente y si tiene asignada una empresa o grupo
$grupoActual = GruposUsuario::where('usuario_id', $user->id)->delete();
if ($request->grupo) {
$grupoUsuario = new GruposUsuario();
$grupoUsuario->usuario_id = $user->id;
$grupoUsuario->grupo_id = $request->grupo;
$grupoUsuario->save();
}
$empresaActual = EmpresasUsuario::where('usuario_id', $user->id)->delete();
if ($request->empresa) {
$empresaUsuario = new EmpresasUsuario();
$empresaUsuario->usuario_id = $user->id;
$empresaUsuario->empresa_id = $request->empresa;
$empresaUsuario->save();
}
EmployeePerUser::where('user_id', $user->id)->update(['number_employees' => $request->number_users]);
}
//Verificamos si el usuario es efinaciera y si tiene asignada una efinaciera
if ($request->perfil_id == 3) {
if ($request->efinanciera) {
$efinancieraActual = EfinancierasUsuario::where('usuario_id', $user->id)->first();
if ($efinancieraActual->id !== $request->efinanciera) {
$efinancieraActual->delete();
$efinancieraUsuario = new EfinancierasUsuario();
$efinancieraUsuario->usuario_id = $user->id;
$efinancieraUsuario->efinanciera_id = $request->efinanciera;
$efinancieraUsuario->save();
}
}
}
//obtenemos las capacidades para el perfil
//event(new Registered($user));
return redirect()->route('usuario.index');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Perfil $perfil
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
UsuarioCapacidad::where('usuario_id', $id)->delete();
EmpresasUsuario::where('usuario_id', $id)->delete();
GruposUsuario::where('usuario_id', $id)->delete();
EfinancierasUsuario::where('usuario_id', $id)->delete();;
User::where('id', $id)->delete();
// $request->session()->flash('message', 'Perfil se elimino con exito');
return redirect()->route('usuario.index');
}
}

View File

@ -0,0 +1,357 @@
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CreateUserRequest;
use App\Models\User;
use App\Models\Perfil;
use App\Models\Grupo;
use App\Models\EntidadFinanciera;
use App\Models\Empresa;
use App\Models\Capacidad;
use App\Models\CategoriaDocumento;
use App\Models\CategoryPermission;
use App\Models\UsuarioCapacidad;
use App\Models\GruposUsuario;
use App\Models\EmpresasUsuario;
use App\Models\EfinancierasUsuario;
use App\Models\EmployeePerUser;
use App\Models\GroupPermission;
use App\Models\GroupPermissionCatalog;
use App\Models\RolePermission;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
use Illuminate\Validation\Rules;
use Illuminate\Support\Facades\Auth;
use Hash;
use Spatie\Permission\Models\Role;
use Exception;
// class CreateUserException extends Exception
// {
// }
// class MaxEmployeesException extends Exception
// {
// }
// class DeleteUserException extends Exception
// {
// }
class UserEfinancieraController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
// $id = Auth::user()->id;
// $usuarios = User::leftJoin('perfiles', 'perfiles.id', '=', 'users.perfil_id')
// ->select('users.*', 'perfiles.perfil_nombre')
// ->where('users.parent', $id)
// // ->orWhere('users.id', $id)
// ->get();
//dd($data);
return view('dashboard.efinanciera.usuarios.usersList');
}
/**
* Display the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
}
public function store(CreateUserRequest $request)
{
try {
$MAX_EMPLOYEES_PER_USER = EmployeePerUser::where('user_id', auth()->id())->first()->number_employees ?? 3;
$numberEmployeesOfUser = User::where('parent', auth()->id())->count();
if ($numberEmployeesOfUser >= $MAX_EMPLOYEES_PER_USER) {
throw new MaxEmployeesException("Alcancaste el numero maximo de empleados por usuarios");
}
$validatedData = $request->validated();
$user = User::create([
"name" => $validatedData["name"],
"email" => $validatedData["email"],
"password" => \Hash::make($validatedData["password"]),
"estatus" => "activo",
"perfil_id" => 3,
"parent" => auth()->id()
]);
if (empty($user)) {
throw new CreateUserException("Error al crear el usuario");
}
// $permissionToUser = $user->syncPermissions($validatedData["permissions"]);
foreach ($validatedData['permissions_category'] as $permission) {
CategoryPermission::create(['category_id' => $permission, 'user_id' => $user->id]);
}
// $permissions = Capacidad::EntidadFinancieraDefaultLinks()->get();
// $assingPermissions = [];
// foreach ($permissions as $permission) {
// UsuarioCapacidad::create([
// 'usuario_id' => $user->id,
// 'capacidad_id' => $permission->id
// ]);
// }
$parentCategories = [];
$permissions = $request->capacidad;
GroupPermission::where('user_id', $user->id)->delete();
\DB::transaction(function () use ($user, $permissions, $parentCategories) {
UsuarioCapacidad::where('usuario_id', $user->id)->delete();
foreach ($permissions as $permission_id => $permissionArray) {
$capacidad = Capacidad::find($permission_id);
if (!in_array($capacidad->menu_parent, $parentCategories)) {
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->menu_parent
]);
$parentCategories[] = $capacidad->menu_parent;
}
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->id
]);
// $menuLinksPermisos = Capacidad::where("perfil_id", 2)->get();
GroupPermission::create([
'user_id' => $user->id,
'menu_id' => $permission_id,
'permissions' => json_encode(['permission' => array_keys($permissionArray)])
]);
foreach ($permissionArray as $permissionName => $value2) {
$permissions = json_decode(Capacidad::find($permission_id)->permiso_nombre);
if ($permissionName === 'ver' && property_exists($permissions, 'ver')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->ver)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
if ($permissionName === 'editar' && property_exists($permissions, 'editar')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->editar)->first()->permissions;
// $user->syncPermissions(json_decode($jsonPermissions));
$permissionsArray[] = json_decode($jsonPermissions);
}
}
}
$mergedPermissionsArray = array_merge(...$permissionsArray);
$user->syncPermissions($mergedPermissionsArray);
});
$entidadFinancieraUsuario = EfinancierasUsuario::where('usuario_id', $user->parent)->first();
EfinancierasUsuario::create(['usuario_id' => $user->id, 'efinanciera_id' => $entidadFinancieraUsuario->efinanciera_id]);
return back()->with('success', 'Se creo el usuario correctamente!');
} catch (\Throwable $th) {
return back()->withErrors(['error' => $th->getMessage()]);
} catch (CreateUserException $e) {
return back()->withErrors('error', $e->getMessage());
} catch (MaxEmployeesException $e) {
return back()->withErrors('error', $e->getMessage());
}
}
public function create()
{
$blockForm = false;
$role = Role::where(['name' => 'entidad financiera'])->first();
$rolePermissions = RolePermission::where(['role_id' => $role->id])->get();
// dd( $rolePermissions);
if (isset(EmployeePerUser::where('user_id', auth()->id())->first()->number_employees)) {
$MAX_EMPLOYEES_PER_USER = EmployeePerUser::where('user_id', auth()->id())->first()->number_employees;
} else {
$MAX_EMPLOYEES_PER_USER = 5;
}
$numberEmployeesOfUser = User::where('parent', auth()->id())->count();
if ($numberEmployeesOfUser >= $MAX_EMPLOYEES_PER_USER) {
$blockForm = true;
}
// CategoryPermission::where('user_id', auth()->id());
$categoriaDocumentos = CategoriaDocumento::where('categoria_superior', 0)->get();
$capacidades = Capacidad::where("perfil_id", 3)->get();
return view("dashboard.efinanciera.usuarios.create-user", ['capacidades' => $capacidades, "permissions" => $rolePermissions, 'blockForm' => $blockForm, 'categoriaDocumentos' => $categoriaDocumentos]);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function edit(User $user)
{
$categoriaDocumentos = CategoriaDocumento::where('categoria_superior', 0)->get();
$categoryPermissions = CategoryPermission::where('user_id', $user->id)->get();
// dd($categoryPermissions);
$groupPermissions = GroupPermission::where('user_id', $user->id)->get();
$capacidades = Capacidad::where("perfil_id", 3)->get();
$data = [
"user" => $user,
"categoriaDocumentos" => $categoriaDocumentos,
'categoryPermissions' => $categoryPermissions,
'groupPermissions' => $groupPermissions,
"capacidades" => $capacidades,
];
return view('dashboard.efinanciera.usuarios.userEditForm', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
//
$user->name = $request->name;
if ($request->password) {
$user->password = Hash::make($request->password);
}
$user->save();
//obtenemos las capacidades para el perfil
//event(new Registered($user));
return redirect()->route('efinanciera.usuario.index');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function permisos(Request $request)
{
$permisos = [];
$capacidades = [];
$user = false;
$authuser = Auth::user();
if ($authuser->parent) {
$idadmin = $authuser->parent;
} else {
$idadmin = $authuser->id;
}
$users = User::where('parent', $idadmin)->orwhere('id', $idadmin)->get();
if ($request->usu) {
//obtenemos usuario administrador
$user = User::find($request->usu);
if ($user->parent) {
$idadmin = $user->parent;
} else {
$idadmin = $user->id;
}
//capacidades para el usuario Efinanciera
$capacidades = Capacidad::where('perfil_id', 3)->get();
//dd($capacidades);
//capacidades del usuario
$capuser = UsuarioCapacidad::where('usuario_id', $user->id)->get();
foreach ($capuser as $cap) {
$permisos[$cap->capacidad_id] = $cap;
}
}
$data = [
'capacidades' => $capacidades,
'permisos' => $permisos,
'users' => $users,
'user' => $user
];
return view('dashboard.efinanciera.usuarios.userEditPermisos', $data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $perfil
* @return \Illuminate\Http\Response
*/
public function editPermisos(Request $request, User $user)
{
$permissionsArray = [];
$parentCategories = [];
$permissions = $request->capacidad;
GroupPermission::where('user_id', $user->id)->delete();
\DB::transaction(function () use ($user, $permissions, $parentCategories) {
UsuarioCapacidad::where('usuario_id', $user->id)->delete();
foreach ($permissions as $permission_id => $permissionArray) {
$capacidad = Capacidad::find($permission_id);
if (!in_array($capacidad->menu_parent, $parentCategories)) {
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->menu_parent
]);
$parentCategories[] = $capacidad->menu_parent;
}
UsuarioCapacidad::create([
'usuario_id' => $user->id,
'capacidad_id' => $capacidad->id
]);
// $menuLinksPermisos = Capacidad::where("perfil_id", 2)->get();
GroupPermission::create([
'user_id' => $user->id,
'menu_id' => $permission_id,
'permissions' => json_encode(['permission' => array_keys($permissionArray)])
]);
foreach ($permissionArray as $permissionName => $value2) {
$permissions = json_decode(Capacidad::find($permission_id)->permiso_nombre);
if ($permissionName === 'ver' && property_exists($permissions, 'ver')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->ver)->first()->permissions;
$permissionsArray[] = json_decode($jsonPermissions);
}
if ($permissionName === 'editar' && property_exists($permissions, 'editar')) {
$jsonPermissions = GroupPermissionCatalog::where('name', $permissions->editar)->first()->permissions;
$permissionsArray[] = json_decode($jsonPermissions);
}
}
}
$mergedPermissionsArray = array_merge(...$permissionsArray);
$user->syncPermissions($mergedPermissionsArray);
});
return back()->with(['success' => "Se aplicarion los permisos"]);
}
}

74
app/Http/Kernel.php Normal file
View File

@ -0,0 +1,74 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
//'twofactor' => \App\Http\Middleware\TwoFactor::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'get.menu' => \App\Http\Middleware\GetMenu::class,
'rol' => \App\Http\Middleware\Rol::class,
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
'refresh_db_session' => \App\Http\Middleware\TimeoutSessionMiddleware::class,
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
];
}

View File

@ -0,0 +1,39 @@
<?php
namespace App\Http\Livewire;
use App\Models\ExampleTable;
use Livewire\Component;
class AnalisisVC extends Component
{
public $info;
public $info2;
public $from_date;
public $to_date;
public $periodicity;
public $count = 0;
public function mount($id)
{
$this->periodicity = '';
switch ($id) {
case '1':
# code...
$this->info = is_array(ExampleTable::find(7)->content) ? ExampleTable::find(7)->content : json_encode(ExampleTable::find(7)->content);
break;
case '2':
$this->info = is_array(ExampleTable::find(8)->content) ? ExampleTable::find(8)->content : json_encode(ExampleTable::find(8)->content);
break;
case '3':
$this->info = is_array(ExampleTable::find(9)->content) ? ExampleTable::find(9)->content : json_encode(ExampleTable::find(9)->content);
break;
default:
$this->info = is_array(ExampleTable::find(1)->content) ? ExampleTable::find(1)->content : json_encode(ExampleTable::find(1)->content);
break;
}
}
public function render()
{
return view('livewire.analisis-v-c');
}
}

View File

@ -0,0 +1,64 @@
<?php
namespace App\Http\Livewire;
use App\Models\ExampleTable;
use Livewire\Component;
class AnalisisVP extends Component
{
public $info;
public $info2;
public $from_date;
public $to_date;
public $periodicity;
public $count = 0;
public $title;
public $page;
public function increment()
{
$this->count++;
}
public function mount($id)
{
$this->periodicity = '';
$this->page = $id;
switch ($id) {
case '1':
# code...
$this->info = is_array(ExampleTable::find(1)->content) ? ExampleTable::find(1)->content : json_encode(ExampleTable::find(1)->content);
$this->info2 = is_array(ExampleTable::find(2)->content) ? ExampleTable::find(2)->content : json_encode(ExampleTable::find(2)->content);
$this->title = "Estado de Situación Financiera";
break;
case '2':
$this->info = is_array(ExampleTable::find(3)->content) ? ExampleTable::find(3)->content : json_encode(ExampleTable::find(3)->content);
$this->info2 = is_array(ExampleTable::find(4)->content) ? ExampleTable::find(4)->content : json_encode(ExampleTable::find(4)->content);
$this->title = "Estado de Resultado Integral";
break;
case '3':
$this->info = is_array(ExampleTable::find(5)->content) ? ExampleTable::find(5)->content : json_encode(ExampleTable::find(5)->content);
$this->info2 = is_array(ExampleTable::find(6)->content) ? ExampleTable::find(6)->content : json_encode(ExampleTable::find(6)->content);;
$this->title = "Flujo de Efectivo";
break;
default:
$this->info = is_array(ExampleTable::find(1)->content) ? ExampleTable::find(1)->content : json_encode(ExampleTable::find(1)->content);
$this->info2 = is_array(ExampleTable::find(2)->content) ? ExampleTable::find(2)->content : json_encode(ExampleTable::find(2)->content);
break;
}
}
public function render()
{
if ($this->page == 1 ) {
return view('livewire.analisis-v-p', ['info' => $this->info, 'info2' => $this->info2]);
} else if ($this->page == 2){
return view('livewire.analisis-v-p2', ['info' => $this->info, 'info2' => $this->info2]);
} else if($this->page == 3){
return view('livewire.analisis-v-p3', ['info' => $this->info, 'info2' => $this->info2]);
}
// return view('livewire.analisis-v-p', ['info' => $this->info, 'info2' => $this->info2]);
}
}

View File

@ -0,0 +1,150 @@
<?php
namespace App\Http\Livewire;
use App\Models\ChecklistEfinanciera;
use App\Models\ProductoEntidadFinanciera;
use App\Models\PonderacionEfinanciera;
use App\Models\DocumentosCliente;
use App\Models\DocumentosOperacion;
use App\Models\Empresa;
use App\Models\EntidadFinanciera;
use App\Models\Operacion;
use Livewire\Component;
class AssignEf extends Component
{
public $companies = null;
public $empresaId;
public $efinancieraId;
public $selectedEF = null;
public $comaniess = null;
public $blockSaveButton = false;
public function change($id)
{
$empresasope = [];
$operaciones = Operacion::where('efinanciera_id', $id)->where('estatus', '!=', 'Cancelado')->get();
foreach ($operaciones as $operacion) {
$empresasope[] = $operacion->empresa_id;
}
$empresas = Empresa::whereNotIn('id', $empresasope)->where('estatus', 'Activado')->select('id', 'nombre')->get();
$this->companies = $empresas;
$ponderaciones = PonderacionEfinanciera::where('efinanciera_id', $id)->first();
if (!$ponderaciones) {
$this->blockSaveButton = true;
}
}
public function updatedEfinancieraId($efinancieraId)
{
$empresasope = [];
$operaciones = Operacion::where('efinanciera_id', $efinancieraId)->where('estatus', '!=', 'Cancelado')->get();
foreach ($operaciones as $operacion) {
$empresasope[] = $operacion->empresa_id;
}
$empresas = Empresa::whereNotIn('id', $empresasope)->where('estatus', 'Activado')->select('id', 'nombre')->get();
$this->companies = $empresas;
}
public function goals($id)
{
$this->empresa_id = $id;
}
/*
public function submit()
{
$validatedData = $this->validate([
'empresaId' => 'required',
'efinancieraId' => 'required',
'companies' => 'required',
]);
$operacion = Operacion::create([
'empresa_id' => $validatedData['empresaId'],
'efinanciera_id' => $validatedData['efinancieraId'],
'estatus' => 'Prospecto'
]);
$checklist = ChecklistEfinanciera::where('efinanciera_id', $validatedData['efinancieraId'])->where('mostrar', 'Prospecto')->get();
foreach ($checklist as $documento) {
if ($documento->tipo_carga == 'Evento único') {
// si el tipo de carga es Evento unico se agrega el documento al ser requerido
$docCliente = DocumentosCliente::where('estatus', 'activo')
->where('categoria_id', $documento->categoria_id)->where('empresa_id', $validatedData['companies'])
->get();
} else {
// si el tipo de carga es Periodico se realizan los filtros yse agregan los documentos requeridos
// si el tipo de carga es Periodico se realizan los filtros y se agregan los documentos requeridos
if ($documento->tiempo_valides > 0) {
//Si es mayor que 0 la fecha de valides se calcula apartir de los meses
$valides = date("Y-m-d", strtotime("-" . $documento->tiempo_valides . " months"));
} else {
//Si es 0 la fecha de valides se calcula apartir de los periodos
//para lo cual llamamos la funcion validesPeriods
$valides = $this->validesPeriods($documento->periodicidad, $documento->numero_periodos);
//dd($valides);
}
///2020-09-25
$mesesPeriodo = mesesPeriodo($documento->periodicidad); //$this->mesesPeriodo($documento->periodicidad);
//dd(implode(",",$mesesPeriodo));
$docCliente = DocumentosCliente::where('estatus', 'activo')
->where('categoria_id', $documento->categoria_id)
->whereRaw('MONTH(periodo) IN (' . implode(",", $mesesPeriodo) . ')')
->where('periodo', '>=', $valides)
->where('empresa_id', $validatedData['empresaId'])
->orderBy('periodo')
->get();
}
if (count($docCliente)) {
foreach ($docCliente as $document) {
DocumentosOperacion::create([
'documento_id' => $documento->categoria_id,
'documento_cli_id' => $document->id,
'operacion_id' => $operacion->id,
'estatus' => 'cargado',
'validacion' => 'pendiente',
'fecha_carga' => $document->created_at
]);
}
}
}
return redirect()->route('operacion.index')->with(['success' => 'Se genero la operación entre la empresa y la entidad financiera con exito']);
}
*/
public function render()
{
$efinancieras = EntidadFinanciera::all();
foreach ($efinancieras as $key => $ef) {
$chklst = ChecklistEfinanciera::select('efinanciera_id')->where('efinanciera_id', '=', $ef->id)->first();
$pond = PonderacionEfinanciera::select('efinanciera_id')->where('efinanciera_id', '=', $ef->id)->first();
$prod = ProductoEntidadFinanciera::select('efinanciera_id')->where('efinanciera_id', '=', $ef->id)->first();
if (!$chklst || !$pond || !$prod) {
$efinancieras->forget($key);
}
}
return view('livewire.assign-ef', ['efinancieras' => $efinancieras]);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class ChatForm extends Component
{
public $messages;
public $userId;
public function mount()
{
$this->messages = url()->current();
}
public function send()
{
}
public function render()
{
return view('livewire.chat-form', [
'userId' => $this->userId
]);
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Counter extends Component
{
public function render()
{
return view('livewire.counter');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Create extends Component
{
public function render()
{
return view('livewire.create');
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace App\Http\Livewire;
use App\Models\Perfil;
use Livewire\Component;
class Createprofile extends Component
{
public $perfil_nombre;
public $parent;
public function submit()
{
$validatedData = $this->validate([
'perfil_nombre' => 'required',
'parent' => 'required',
]);
Perfil::create($validatedData);
return back()->with([ 'success' => 'Se creo el nuevo perfil'] );
}
public function render()
{
return view('livewire.createprofile');
}
}

View File

@ -0,0 +1,110 @@
<?php
namespace App\Http\Livewire;
use App\Exports\ExportCatCliente;
use App\Models\CatCliente;
use App\Utilities\ArchivoCargaXlsx;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Livewire\Component;
use Maatwebsite\Excel\Facades\Excel;
use Livewire\WithFileUploads;
class LiveEditarClientes extends Component
{
use WithFileUploads;
public $clienteInput = "";
public $clientes;
public $empresa_id = "";
public $excelFile;
public $fileName;
public $isUploaded = false;
//public $clientesQuery = [];
public function mount(Request $request)
{
$this->empresa_id = Session::get("Id_Empresa");
$this->clientes = collect();
}
public function render()
{
//;
return view('livewire.live-editar-clientes');
}
public function descargarLayout()
{
$id_clientes = [];
foreach ($this->clientes as $cliente) {
$id_clientes[] = $cliente["ID_Cliente"];
}
if (sizeof($id_clientes) == 0) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "Elige por lo menos un cliente"]);
} else {
$datetime = new DateTime();
$fileName = "Layout" . '_' . $datetime->format("YmdHis") . '.xlsx';
return Excel::download(new ExportCatCliente($this->empresa_id, $id_clientes), $fileName);
}
}
public function addCliente()
{
$cliente_info = explode("|", $this->clienteInput);
if (sizeof($cliente_info) == 2) {
if (is_null($this->clientes->firstWhere('ID_Cliente', $cliente_info[0]))) {
$cliente = [
"ID_Cliente" => $cliente_info[0],
"Cliente" => $cliente_info[1],
];
$this->clientes->push($cliente);
}
}
$this->reset('clienteInput');
$this->dispatchBrowserEvent("renderSelect");
}
public function delCliente($ID)
{
$this->clientes = $this->clientes->filter(function ($item) use ($ID) {
return $item["ID_Cliente"] != $ID;
});
$this->reset('clienteInput');
$this->dispatchBrowserEvent("renderSelect");
}
public function updatedExcelFile()
{
$this->isUploaded = false;
$this->fileName = $this->excelFile->getRealPath();
$datos = ArchivoCargaXlsx::obtenerDatosID($this->fileName, "ID_Cliente");
if (sizeof($datos["errores"]) > 0) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "El archivo de excel no es correcto"]);
}
if (sizeof($datos["datos"]) > 500) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "El archivo contiene más de 500 regitros"]);
} else {
$query = CatCliente::select("Cod AS ID_Cliente","Desc AS Cliente")
->where('Id_Empresa', $this->empresa_id)
->whereIn('Cod', $datos["datos"]);
$this->clientes = collect($query->get()->toArray());
$this->isUploaded = true;
$this->reset('excelFile');
}
$this->dispatchBrowserEvent("renderSelect");
}
}

View File

@ -0,0 +1,110 @@
<?php
namespace App\Http\Livewire;
use App\Exports\TabClienteVarExport;
use App\Models\CatCliente;
use App\Utilities\ArchivoCargaXlsx;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Livewire\Component;
use Maatwebsite\Excel\Facades\Excel;
use Livewire\WithFileUploads;
class LiveEditarClientesVar extends Component
{
use WithFileUploads;
public $clienteInput = "";
public $clientes;
public $empresa_id = "";
public $excelFile;
public $fileName;
public $isUploaded = false;
//public $clientesQuery = [];
public function mount(Request $request)
{
$this->empresa_id = Session::get("Id_Empresa");
$this->clientes = collect();
}
public function render()
{
//;
return view('livewire.live-editar-clientes');
}
public function descargarLayout()
{
$id_clientes = [];
foreach ($this->clientes as $cliente) {
$id_clientes[] = $cliente["ID_Cliente"];
}
if (sizeof($id_clientes) == 0) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "Elige por lo menos un cliente"]);
} else {
$datetime = new DateTime();
$fileName = "Layout" . '_' . $datetime->format("YmdHis") . '.xlsx';
return Excel::download(new TabClienteVarExport($this->empresa_id, $id_clientes), $fileName);
}
}
public function addCliente()
{
$cliente_info = explode("|", $this->clienteInput);
if (sizeof($cliente_info) == 2) {
if (is_null($this->clientes->firstWhere('ID_Cliente', $cliente_info[0]))) {
$cliente = [
"ID_Cliente" => $cliente_info[0],
"Cliente" => $cliente_info[1],
];
$this->clientes->push($cliente);
}
}
$this->reset('clienteInput');
$this->dispatchBrowserEvent("renderSelect");
}
public function delCliente($ID)
{
$this->clientes = $this->clientes->filter(function ($item) use ($ID) {
return $item["ID_Cliente"] != $ID;
});
$this->reset('clienteInput');
$this->dispatchBrowserEvent("renderSelect");
}
public function updatedExcelFile()
{
$this->isUploaded = false;
$this->fileName = $this->excelFile->getRealPath();
$datos = ArchivoCargaXlsx::obtenerDatosID($this->fileName, "ID_Cliente");
if (sizeof($datos["errores"]) > 0) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "El archivo de excel no es correcto"]);
}
if (sizeof($datos["datos"]) > 500) {
$this->dispatchBrowserEvent("showAlertError", ["message" => "El archivo contiene más de 500 regitros"]);
} else {
$query = CatCliente::select("Cod AS ID_Cliente","Desc AS Cliente")
->where('Id_Empresa', $this->empresa_id)
->whereIn('Cod', $datos["datos"]);
$this->clientes = collect($query->get()->toArray());
$this->isUploaded = true;
$this->reset('excelFile');
}
$this->dispatchBrowserEvent("renderSelect");
}
}

View File

@ -0,0 +1,93 @@
<?php
namespace App\Http\Livewire;
use App\Models\CatMoneda;
use App\Models\CatPeriodicidad;
use App\Models\CatTipoFinanciamiento;
use App\Models\CatTipoGarantia;
use App\Models\CatTipoGarantia2;
use App\Models\Empresa;
use App\Models\EmpresasUsuario;
use App\Models\GruposUsuario;
use App\Models\Operacion;
use App\Models\User;
use Livewire\Component;
use Illuminate\Http\Request;
class OperacionList extends Component
{
public $propuestas = [];
public $tab;
public $catPeriodicidad;
public $catTipoFinanciamiento;
public $catTipoMoneda;
public function changeTab()
{
if ($this->tab == 'gestion') {
$this->tab = 'propuesta';
} else if ($this->tab == 'propuesta') {
$this->tab = 'gestion';
}
}
public function mount(Request $request)
{
$this->tab = 'gestion';
$this->catPeriodicidad = CatPeriodicidad::all();
$this->catTipoFinanciamiento = CatTipoFinanciamiento::all();
$this->catTipoMoneda = CatMoneda::all();
$this->catPeriodicidad = CatPeriodicidad::all();
$this->catTipoGarantia = CatTipoGarantia2::all();
// $this->operaciones = $operaciones;
// $this->badges = $badges;
// dd($operaciones);
// $this->data = ['operaciones' => $operaciones, 'badges' => $badges];
}
public function addNewPropuestaPago()
{
$this->propuestas[] = 'item';
}
public function render()
{
$user = \Auth::user();
$usuEmpresa = [];
$gusuario = GruposUsuario::joinWithGrupos()->where('grupos_usuarios.usuario_id', $user->id)->first();
if ($gusuario) {
$usuGrupo = $gusuario;
$eusuario = Empresa::where('grupo_id', $usuGrupo->id)->where('estatus', 'Activado')->get();
foreach ($eusuario as $emp) {
$usuEmpresa[] = $emp->id;
}
} else {
$usuGrupo = false;
$emps = EmpresasUsuario::where('usuario_id', $user->id)->first();
if ($emps) {
$eusuario = Empresa::where('id', $emps->empresa_id)->where('estatus', 'Activado')->get();
foreach ($eusuario as $emp) {
$usuEmpresa[] = $emp->id;
}
}
}
if (empty($usuEmpresa)) {
return view('dashboard.warning.missing_empresa');
}
//
$operaciones = Operacion::leftjoin('empresas', 'operaciones.empresa_id', '=', 'empresas.id')
->leftjoin('entidades_financieras', 'operaciones.efinanciera_id', '=', 'entidades_financieras.id')
->select('operaciones.*', 'entidades_financieras.nombre as efinanciera', 'empresas.nombre as empresa')
->whereIn('operaciones.empresa_id', $usuEmpresa)
->get();
// dd($operaciones);
$badges = ['Prospecto' => 'badge-warning', 'Activo' => 'badge-success', 'Cancelado' => 'badge-danger'];
$data = ['operaciones' => $operaciones, 'badges' => $badges];
return view('livewire.operacion-list',[
'operaciones' => $operaciones,
'badges' => $badges
]);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Livewire;
use App\Models\Perfil;
use Livewire\Component;
class Profilestable extends Component
{
public $profiles;
public function delete($id)
{
$deletedProfile = Perfil::find($id)->delete();
if (!$deletedProfile) {
return back()->with(['errors' => 'Hubo un error al borrar el registro']);
}
return back()->with(['success' => "Registro eliminado exitosamente"]);
}
public function render()
{
$this->profiles = Perfil::all();
return view('livewire.profilestable');
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class ShowPosts extends Component
{
public function render()
{
return view('livewire.show-posts');
}
}

View File

@ -0,0 +1,20 @@
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class TestComponent extends Component
{
public $count = 0;
public function increment()
{
$this->count++;
}
public function render()
{
return view('livewire.test-component');
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Http\Livewire;
use App\Models\User;
use Livewire\Component;
class Usertable extends Component
{
public $search = '';
public function render()
{
$usuarios = User::leftJoin('perfiles', 'perfiles.id', '=', 'users.perfil_id')
->select('users.*', 'perfiles.perfil_nombre')
->where('users.parent', auth()->id())
// ->orWhere('users.id', $id)
->get();
// $usersearch = User::where('id', $this->id)->get();
return view('livewire.usertable', [
'users' => $usuarios,
// 'search' => $usersearch
]);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}

View File

@ -0,0 +1,77 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;
use App\Models\UsuarioCapacidad;
class GetMenu
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::check()) {
$id = Auth::user()->id;
$menuNav = [];
$menuTitulo = UsuarioCapacidad::where('usuario_id', $id)
->leftJoin('capacidades', 'capacidades.id', '=', 'usuario_capacidades.capacidad_id')
->whereNotNull('capacidades.menu_parent')->where('capacidades.menu_parent', 0)->orderBy('capacidades.order')->get();
foreach ($menuTitulo as $menu) {
// code...
$menuNav[$menu->capacidad_id] = $menu;
$subMenu = UsuarioCapacidad::where('usuario_id', $id)
->leftJoin('capacidades', 'capacidades.id', '=', 'usuario_capacidades.capacidad_id')
->whereNotNull('capacidades.menu_parent')->where('capacidades.menu_parent', $menu->capacidad_id)->orderBy('capacidades.order')->get();
$subMenuNav = [];
foreach ($subMenu as $smenu) {
$subSubMenu = UsuarioCapacidad::where('usuario_id', $id)
->leftJoin('capacidades', 'capacidades.id', '=', 'usuario_capacidades.capacidad_id')
->whereNotNull('capacidades.menu_parent')->where('capacidades.menu_parent', $smenu->capacidad_id)->orderBy('capacidades.order')->get();
$subMenuNav[$smenu->capacidad_id] = $smenu;
if ($subSubMenu) {
$subMenuNav[$smenu->capacidad_id]['sbsubmenu'] = $subSubMenu;
}
}
// dd($subMenuNav);
// dd($subMenu);
$menuNav[$menu->capacidad_id]['submenu'] = $subMenuNav;
}
//dd($menuNav);
/*
$menuCapacidades = UsuarioCapacidad::where('usuario_id', $id)
->leftJoin('capacidades', 'capacidades.id', '=', 'usuario_capacidades.capacidad_id')
->whereNotNull('capacidades.menu_parent')->get();*/
//dd($menuCapacidades);
//session(['prime_user_role' => $role]);
view()->share('appMenus', $menuNav);
return $next($request);
}
return $next($request);
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array
*/
protected $except = [
//
];
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null ...$guards
* @return mixed
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Auth;
use App\Models\Perfil;
class Rol
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (Auth::check()){
$perfil_id = Auth::user()->perfil_id;
$perfil = Perfil::where('id', $perfil_id)->first();
$perfilrol=$perfil->perfil_nombre;
//verificamos si es un usuario de 2 nivel
if($perfil->parent){ $perfilrol=$perfil->parent; }
if($role==$perfilrol ){
return $next($request);
} else {
return abort( 401 );
}
}
return $next($request);
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace App\Http\Middleware;
use App\Models\User;
use Closure;
use Illuminate\Http\Request;
class TimeoutSessionMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
// Actualizar timeout de session
User::where('id', auth()->id())->update(['session_timeout' => now()->addMinutes(30)]);
return $next($request);
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}

Some files were not shown because too many files have changed in this diff Show More