Carga inicial

This commit is contained in:
IvanAS94
2025-12-26 17:21:11 -08:00
parent 45d9afc951
commit 51880798ca
359 changed files with 42159 additions and 1 deletions

View File

@@ -0,0 +1,261 @@
<?php
namespace App\Http\Controllers\Reportes;
use const App\Http\Controllers\ASESOR_OPERACIONES;
use const App\Http\Controllers\AUXILIAR_TECNICO_1;
use const App\Http\Controllers\AUXILIAR_TECNICO_2;
use App\Http\Requests\Reportes\FiltroAsesoresRequest;
use App\Models\CatEstatuServicio;
use App\Models\CatOrigen;
use App\Models\CatServicio;
use App\Models\CatTipoServicio;
use App\Models\ServicioDet;
use App\Models\ServicioEncuestaDomestico;
use App\Models\ServicioEncuestaEmpresarial;
use App\Models\Sucursal;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Log;
class FiltrosController extends Controller
{
public function sucursales(Request $request){
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = Sucursal::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$sucursal = $queryBuilder->paginate($perPage);
}else{
$sucursal = ['data'=>$queryBuilder->get()];
}
return response()->success($sucursal);
}
public function servicios(Request $request)
{
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = CatServicio::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$servicios = $queryBuilder->paginate($perPage);
}else{
$servicios = ['data'=>$queryBuilder->get()];
}
return response()->success($servicios);
}
public function tiposServicio(Request $request)
{
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = CatTipoServicio::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$tipos_servicios = $queryBuilder->paginate($perPage);
}else{
$tipos_servicios = ['data'=>$queryBuilder->get()];
}
return response()->success($tipos_servicios);
}
public function estatusServicio(Request $request)
{
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = CatEstatuServicio::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$estatus = $queryBuilder->paginate($perPage);
}else{
$estatus = ['data'=>$queryBuilder->get()];
}
return response()->success($estatus);
}
public function origenes(Request $request)
{
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = CatOrigen::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function asesores(FiltroAsesoresRequest $request) {
$sucursal = $request->input('sucursal');
$orderBy = $request->input('sortBy','tipo_empleado_id');
$order = $request->input('order','asc');
$month = $request->input('mes');
$year = $request->input('year');
$queryBuilder = User::select('id', 'nombre', 'apellido_paterno', 'apellido_materno', 'tipo_empleado_id')
->where('sucursal_id', $sucursal)
->whereIn('tipo_empleado_id', [ASESOR_OPERACIONES, AUXILIAR_TECNICO_1, AUXILIAR_TECNICO_2])
->orderBy($orderBy, $order)
->orderBy('nombre','asc');
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre','like','%' .$query.'%')
->orWhere('apellido_paterno','like','%' .$query.'%')
->orWhere('apellido_materno','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
foreach ($data->items() as $u){
if($u->tipo_empleado_id == ASESOR_OPERACIONES){
$u->tipo_empleado = 'Asesor de Operaciones';
$servi = ServicioDet::select('id')
->where('servicios_det.operador_id', $u->id)
->whereMonth('fecha_solicitud', $month)
->whereYear('fecha_solicitud', $year)
->where('requiere_encuesta', 1)->pluck('id');
$encuesta_d = ServicioEncuestaDomestico::select('servicio_det_id')->whereIn('servicio_det_id',$servi)->groupBy('servicio_det_id')->get();
$encuesta_e = ServicioEncuestaEmpresarial::select('servicio_det_id')->whereIn('servicio_det_id',$servi)->groupBy('servicio_det_id')->get();
$total = count($encuesta_d) + count($encuesta_e);
$u->servicios_cantidad = $total.' Encuestas '.' de '.count($servi).' Servicios';
/*$u->servicios_cantidad = ServicioDet::where('servicios_det.operador_id', $u->id)
->whereMonth('fecha_solicitud', $month)
->whereYear('fecha_solicitud', $year)
->where('requiere_encuesta', 1)->count();*/
}
if($u->tipo_empleado_id == AUXILIAR_TECNICO_1 || $u->tipo_empleado_id == AUXILIAR_TECNICO_2){
$u->tipo_empleado = 'Auxiliar de Operaciones';
$servi = ServicioDet::select('id')
->whereMonth('fecha_solicitud', $month)
->whereYear('fecha_solicitud', $year)
->where(function($q) use ($u){
$q->where('servicios_det.auxiliar_1', $u->id)
->orWhere('servicios_det.auxiliar_2', $u->id);
})->pluck('id');
$encuesta_d = ServicioEncuestaDomestico::select('servicio_det_id')->whereIn('servicio_det_id',$servi)->groupBy('servicio_det_id')->get();
$encuesta_e = ServicioEncuestaEmpresarial::select('servicio_det_id')->whereIn('servicio_det_id',$servi)->groupBy('servicio_det_id')->get();
$total = count($encuesta_d) + count($encuesta_e);
$u->servicios_cantidad = $total.' Encuestas '. ' de '. count($servi).' Servicios';
}
}
$users = $data;
} else{
$data = $queryBuilder->get();
foreach ($data as $u){
if($u->tipo_empleado_id == ASESOR_OPERACIONES){
$u->tipo_empleado = 'Asesor de Operaciones';
$u->servicios_cantidad = ServicioDet::where('operador_id', $u->id)
->where('requiere_encuesta', 1)
->whereMonth('fecha_solicitud', $month)
->whereYear('fecha_solicitud', $year)
->count();
}
if($u->tipo_empleado_id == AUXILIAR_TECNICO_1 || $u->tipo_empleado_id == AUXILIAR_TECNICO_2){
$u->tipo_empleado = 'Auxiliar de Operaciones';
$u->servicios_cantidad = ServicioDet::whereMonth('fecha_solicitud', $month)
->whereYear('fecha_solicitud', $year)
->where(function($q) use ($u){
$q->where('servicios_det.auxiliar_1', $u->id)
->orWhere('servicios_det.auxiliar_2', $u->id);
})
->count();
}
}
$users = ['data'=>collect($data)->where('servicios_cantidad','<>',0)->values()];
}
return response()->success($users);
}
}