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,467 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Components\AdjustImage;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use const App\Http\Controllers\ATENCION_CLIENTES;
use App\Http\Requests\Administrador\ClientesDomiciliosRequest;
use App\Http\Requests\Administrador\ClientesRequest;
use App\Models\Cliente;
use App\Models\ClienteDatoFiscal;
use App\Models\ClienteDomicilio;
use App\Models\FacturaFormaPago;
use App\Models\FacturaMetodoPago;
use App\Models\FacturaTipoComprobante;
use App\Models\FacturaUsoCFDI;
use App\Models\Sucursal;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Log;
class ClientesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$user = Auth::user();
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','users.nombre');
$order = $request->input('order','asc');
$queryBuilder = Cliente::select('clientes.*', 'users.nombre as asesor_nombre', 'users.apellido_paterno as asesor_apellido_paterno', 'users.apellido_materno as asesor_apellido_materno', 'sucursales.nombre as sucursal_nombre')
->join('users', 'users.id', '=', 'clientes.asesor_id')
->join('sucursales', 'sucursales.id', '=', 'clientes.sucursal_id')
->where('clientes.sucursal_id', $user->sucursal_id)
->orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('clientes.denominacion','like','%' .$query.'%')
->orWhere('sucursales.nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$clientes = $queryBuilder->paginate($perPage);
}else{
$clientes = ['data'=>$queryBuilder->get()];
}
return response()->success($clientes);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ClientesRequest $request)
{
$data = $request->all();
DB::beginTransaction();
try {
$cliente = Cliente::create($data);
if($data['requiere_factura']){
$cliente->registroDatosFiscales()->create($data['datos_fiscales']);
}
DB::commit();
return response()->success($cliente);
} catch (\Exception $e) {
DB::rollBack();
Log::info($e->getMessage());
return response()->unprocessable('Error', ['Error al guardar el Cliente.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$cliente = Cliente::select('clientes.*', 'users.nombre as asesor_nombre', 'users.apellido_paterno as asesor_apellido_paterno', 'users.apellido_materno as asesor_apellido_materno', 'sucursales.nombre as sucursal_nombre')
->join('users', 'users.id', '=', 'clientes.asesor_id')
->join('sucursales', 'sucursales.id', '=', 'clientes.sucursal_id')
->where('clientes.id', $id)
->withTrashed()
->first();
$cliente->datos_fiscales = ClienteDatoFiscal::where('cliente_id', $id)->first();
return response()->success($cliente);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(ClientesRequest $request, $id)
{
$data = $request->all();
DB::beginTransaction();
try {
$cliente = Cliente::where('id',$id)
->withTrashed()
->firstOrFail();
$cliente->update($data);
if($data['requiere_factura']){
$cliente->registroDatosFiscales()->update($data['datos_fiscales']);
}else{
$cliente->registroDatosFiscales()->delete();
}
DB::commit();
return response()->success($cliente);
} catch (\Exception $e) {
DB::rollBack();
Log::info($e->getMessage());
return response()->unprocessable('Error', ['Error al actualizar el Cliente.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$cliente = Cliente::where('id',$id)
->onlyTrashed()
->first();
$cliente->restore();
}else{
$cliente = Cliente::findOrFail($id);
$cliente->delete();
}
return response()->success(['result' => 'ok']);
}
public function indexDomiciliosXCliente(Request $request, $id)
{
$orderBy = $request->input('sortBy','nombre_sucursal');
$order = $request->input('order','asc');
$queryBuilder = ClienteDomicilio::where('cliente_id', $id)
->orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('nombre_sucursal','like','%' .$query.'%')
->orWhere('calle','like','%' .$query.'%')
->orWhere('entre_calles','like','%' .$query.'%')
->orWhere('num_ext','like','%' .$query.'%')
->orWhere('colonia','like','%' .$query.'%')
->orWhere('ciudad','like','%' .$query.'%')
->orWhere('cp','like','%' .$query.'%')
->orWhere('telefono','like','%' .$query.'%')
->orWhere('celular_responsable','like','%' .$query.'%');
});
}
$cliente = Cliente::where('id', $id)->first();
if($perPage = $request->input('perPage',false)){
$data = collect($queryBuilder->paginate($perPage))->put('cliente_denominacion', $cliente->denominacion)->all();
}else{
$data = ['data'=>$queryBuilder->get(), 'cliente_denominacion' => $cliente->denominacion];
}
return response()->success($data);
}
public function showDomicilioXCliente($cliente_id, $id)
{
$domicilio = ClienteDomicilio::where('cliente_id', $cliente_id)
->where('id', $id)
->firstOrFail();
return response()->success($domicilio);
}
public function updateDomicilioXCliente(ClientesDomiciliosRequest $request, $cliente_id, $id)
{
$data = $request->all();
$nombre_croquis_pdf = null;
$croquis_pdf = substr($request->input('nombre_croquis', false), strpos($request->input('nombre_croquis', false), ',') +1);
if ($croquis_pdf) {
$nombre_croquis_pdf = 'croquis_cliente_' . $cliente_id . '_domicilio_' . $id . '.pdf';
Storage::disk('public')->put('pdf_croquis/' . $nombre_croquis_pdf, base64_decode($croquis_pdf));
}
$validator = Validator::make($data, [
'nombre_sucursal' => [
Rule::unique('clientes_domicilios')->where(function ($query) use($cliente_id, $id) {
$query->where('cliente_id', $cliente_id)
->where('id', '<>',$id);
})
],
'numero_sucursal' => [
Rule::unique('clientes_domicilios')->where(function ($query) use($cliente_id, $id) {
$query->where('cliente_id', $cliente_id)
->where('id', '<>',$id);
})
]
]);
if($validator->fails()){
return response()->unprocessable('Parametros inválidos',$validator->errors()->all());
}
$domicilio = ClienteDomicilio::where('cliente_id', $cliente_id)
->where('id', $id)
->firstOrFail();
$data['nombre_croquis'] = $nombre_croquis_pdf;
$domicilio->update($data);
return response()->success($domicilio);
}
public function storeDomicilioXCliente(ClientesDomiciliosRequest $request, $cliente_id)
{
$data = $request->all();
$nombre_croquis_pdf = null;
$validator = Validator::make($data, [
'nombre_sucursal' => [
Rule::unique('clientes_domicilios')->where(function ($query) use($cliente_id) {
$query->where('cliente_id', $cliente_id);
})
],
'numero_sucursal' => [
Rule::unique('clientes_domicilios')->where(function ($query) use($cliente_id) {
$query->where('cliente_id', $cliente_id);
})
]
]);
if($validator->fails()){
return response()->unprocessable('Parametros inválidos',$validator->errors()->all());
}
$cliente = Cliente::where('id', $cliente_id)->firstOrFail();
//Se agregan valores por default de lat y lng
$lat = $request->input('lat', null);
$lng = $request->input('lng', null);
$data['lat'] = ($lat)? $lat : '24.772795';
$data['lng'] = ($lng)? $lng : '-107.4432';
$domicilio = $cliente->registroDomicilios()->create($data);
$croquis_pdf = substr($request->input('nombre_croquis', false), strpos($request->input('nombre_croquis', false), ',') +1);
if ($croquis_pdf) {
$nombre_croquis_pdf = 'croquis_cliente_' . $cliente_id .'_domicilio_' .$domicilio->id .'.pdf';
Storage::disk('public')->put('pdf_croquis/' . $nombre_croquis_pdf, base64_decode($croquis_pdf));
}
$domicilio->update([
'nombre_croquis' => $nombre_croquis_pdf
]);
return response()->success($domicilio);
}
public function destroyDomicilioXCliente($cliente_id, $id){
ClienteDomicilio::where('id', $id)
->where('cliente_id', $cliente_id)
->delete();
return response()->success(['result' => 'ok']);
}
public function asesores(Request $request){
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = User::select('users.*', DB::raw("coalesce (roles.name, '') as role"), 'roles.id as role_id', 'tipos_empleados.nombre as tipo_empleado', 'tipos_empleados.id as tipo_empleado_id', 'sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->orderBy($orderBy,$order)
->leftJoin('role_users', 'role_users.user_id', '=', 'users.id')
->leftJoin('roles', 'roles.id', '=', 'role_users.role_id')
->join('sucursales', 'sucursales.id', '=', 'users.sucursal_id')
->join('tipos_empleados', 'tipos_empleados.id', '=', 'users.tipo_empleado_id')
->where('users.tipo_empleado_id', ATENCION_CLIENTES);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('users.email','like','%' .$query.'%')
->orWhere('users.nombre','like','%' .$query.'%')
->orWhere('users.apellido_paterno','like','%' .$query.'%')
->orWhere('users.apellido_materno','like','%' .$query.'%')
->orWhere('users.telefono','like','%' .$query.'%')
->orWhere('roles.name','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function formasPago(Request $request){
$orderBy = $request->input('sortBy','descripcion');
$order = $request->input('order','asc');
$queryBuilder = FacturaFormaPago::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('descripcion','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function metodosPago(Request $request){
$orderBy = $request->input('sortBy','descripcion');
$order = $request->input('order','asc');
$queryBuilder = FacturaMetodoPago::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('descripcion','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function tipoComprobante(Request $request){
$orderBy = $request->input('sortBy','descripcion');
$order = $request->input('order','asc');
$queryBuilder = FacturaTipoComprobante::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('descripcion','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function usoCFDI(Request $request){
$orderBy = $request->input('sortBy','descripcion');
$order = $request->input('order','asc');
$queryBuilder = FacturaUsoCFDI::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('descripcion','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function sucursales(Request $request){
$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($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function mostrarPDF($domicilio_id){
$domicilio = ClienteDomicilio::select('nombre_croquis')->where('id', $domicilio_id)->firstOrFail();
if($domicilio->nombre_croquis && Storage::disk('public')->exists("pdf_croquis/". $domicilio->nombre_croquis)) {
return response()->file(storage_path('app/public/pdf_croquis/' . $domicilio->nombre_croquis));
}else{
return response()->unprocessable('El domicilio del cliente no tiene asignado PDF. Favor de adjuntarlo.');
}
}
}

View File

@@ -0,0 +1,124 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\EstatusServiciosRequest;
use App\Models\CatEstatuServicio;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class EstatusServiciosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(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);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(EstatusServiciosRequest $request)
{
$data = $request->all();
try {
$estatus = CatEstatuServicio::create($data);
return response()->success($estatus);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar el Estatus de Servicio.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$estatus = CatEstatuServicio::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($estatus);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(EstatusServiciosRequest $request, $id)
{
$data = $request->all();
try {
$estatus = CatEstatuServicio::where('id',$id)
->withTrashed()
->firstOrFail();
$estatus->update($data);
return response()->success($estatus);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al actualizar el Estatus de Servicio.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$estatus = CatEstatuServicio::where('id',$id)
->onlyTrashed()
->first();
$estatus->restore();
}else{
$estatus = CatEstatuServicio::findOrFail($id);
$estatus->delete();
}
return response()->success(['result' => 'ok']);
}
}

View File

@@ -0,0 +1,123 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\FormasPagosRequest;
use App\Models\CatFormaPago;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class FormasPagosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = CatFormaPago::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)){
$forma_pago = $queryBuilder->paginate($perPage);
}else{
$forma_pago = ['data'=>$queryBuilder->get()];
}
return response()->success($forma_pago);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(FormasPagosRequest $request)
{
$data = $request->all();
try {
$forma_pago = CatFormaPago::create($data);
return response()->success($forma_pago);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar el Estatus de Servicio.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$forma_pago = CatFormaPago::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($forma_pago);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(FormasPagosRequest $request, $id)
{
$data = $request->all();
try {
$forma_pago = CatFormaPago::where('id',$id)
->withTrashed()
->firstOrFail();
$forma_pago->update($data);
return response()->success($forma_pago);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al actualizar el Estatus de Servicio.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$forma_pago = CatFormaPago::where('id',$id)
->onlyTrashed()
->first();
$forma_pago->restore();
}else{
$forma_pago = CatFormaPago::findOrFail($id);
$forma_pago->delete();
}
return response()->success(['result' => 'ok']);
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Models\CatOrigen;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class OrigenesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(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);
}
/**
* 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 int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,175 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\RolesRequest;
use App\Models\Rol;
use Cartalyst\Sentinel\Native\Facades\Sentinel;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Route;
use Log;
class RolesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$orderBy = $request->input('sortBy','name');
$order = $request->input('order','asc');
$queryBuilder = Rol::orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('name','like','%' .$query.'%')
->orWhere('slug','like','%' .$query.'%');
});
}
if($perPage = $request->input('perPage',false)){
$users = $queryBuilder->paginate($perPage);
}else{
$users = ['data'=>$queryBuilder->get()];
}
return response()->success($users);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(RolesRequest $request)
{
$data = $request->only([
'slug',
'name',
'movil',
'web'
]);
$existe = Rol::where('slug','=',$data['slug'])
->where('name','=',$data['name'])
->first();
if($existe){
return response()->unprocessable('Error', ['El rol ya se encuentra registrado']);
}
$rol = Rol::create($data);
$role = Sentinel::findRoleById($rol->id);
foreach ($request->input('permissions') as $key => $value){
$role->addPermission($key, ($value == "true")? true : false);
$role->save();
}
return response()->success($rol);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$role = Sentinel::findRoleById($id);
$routeCollection = Route::getRoutes();
foreach ($routeCollection as $value) {
$collection[] = ['name'=>$value->getName()];
}
$collection = collect($collection);
$sorted = $collection->sortBy('name');
$sorted->values()->all();
$permisos = [];
foreach ($sorted as $value) {
if($value['name']!=''){
$permisos[$value['name']] = false;
}
}
$role['permissions'] = collect($permisos)
->merge($role['permissions'])
->all();
//Log::info("roles show");
//Log::info($role);
return response()->success($role);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(RolesRequest $request, $id)
{
$rol = Rol::findOrFail($id);
$data = $request->only(['slug','name','permissions','movil','web']);
$role = Sentinel::findRoleById($id);
foreach ($data['permissions'] as $key => $value){
$role->updatePermission($key, ($value == "true")? true : false);
$role->addPermission($key, ($value == "true")? true : false);
$role->save();
}
$rol->slug = $data['slug'];
$rol->name = $data['name'];
$rol->movil = $data['movil'];
$rol->web = $data['web'];
$rol->save();
return response()->success($rol);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$rol = Rol::findOrFail($id);
$rol->delete();
return response()->success(['result'=>true]);
}
public function rutas(){
$routeCollection = Route::getRoutes();
foreach ($routeCollection as $value) {
$collection[] = ['name'=>$value->getName()];
}
$collection = collect($collection);
$sorted = $collection->values()->all();
$permisos = [];
foreach ($sorted as $value) {
if($value['name']!=''){
$permisos[$value['name']] = false;
}
}
return response()->success($permisos);
}
}

View File

@@ -0,0 +1,124 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\ServiciosRequest;
use App\Models\CatServicio;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class ServiciosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(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);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ServiciosRequest $request)
{
$data = $request->all();
try {
$servicios = CatServicio::create($data);
return response()->success($servicios);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar el Estatus de Servicio.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$servicios = CatServicio::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($servicios);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(ServiciosRequest $request, $id)
{
$data = $request->all();
try {
$servicios = CatServicio::where('id',$id)
->withTrashed()
->firstOrFail();
$servicios->update($data);
return response()->success($servicios);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al actualizar el Estatus de Servicio.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$servicios = CatServicio::where('id',$id)
->onlyTrashed()
->first();
$servicios->restore();
}else{
$servicios = CatServicio::findOrFail($id);
$servicios->delete();
}
return response()->success(['result' => 'ok']);
}
}

View File

@@ -0,0 +1,127 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\SucursalesRequest;
use App\Models\Sucursal;
use App\Models\VehiculoSucursal;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class SucursalesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(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);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(SucursalesRequest $request)
{
$data = $request->all();
try {
$sucursal = Sucursal::create($data);
return response()->success($sucursal);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar la sucursal.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$sucursal = Sucursal::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($sucursal);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(SucursalesRequest $request, $id)
{
$data = $request->all();
try {
$sucursal = Sucursal::where('id',$id)
->withTrashed()
->firstOrFail();
$sucursal->update($data);
return response()->success($sucursal);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al actualizar la sucursal.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$sucursal = Sucursal::where('id',$id)
->onlyTrashed()
->first();
$sucursal->restore();
}else{
$sucursal = Sucursal::findOrFail($id);
$sucursal->delete();
VehiculoSucursal::where('sucursal_id', $id)->delete();
}
return response()->success(['result' => 'ok']);
}
}

View File

@@ -0,0 +1,124 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\TiposServiciosRequest;
use App\Models\CatTipoServicio;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class TiposServiciosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(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);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(TiposServiciosRequest $request)
{
$data = $request->all();
try {
$tipos_servicios = CatTipoServicio::create($data);
return response()->success($tipos_servicios);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar el Estatus de Servicio.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$tipos_servicios = CatTipoServicio::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($tipos_servicios);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(TiposServiciosRequest $request, $id)
{
$data = $request->all();
try {
$tipos_servicios = CatTipoServicio::where('id',$id)
->withTrashed()
->firstOrFail();
$tipos_servicios->update($data);
return response()->success($tipos_servicios);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al actualizar el Estatus de Servicio.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$tipos_servicios = CatTipoServicio::where('id',$id)
->onlyTrashed()
->first();
$tipos_servicios->restore();
}else{
$tipos_servicios = CatTipoServicio::findOrFail($id);
$tipos_servicios->delete();
}
return response()->success(['result' => 'ok']);
}
}

View File

@@ -0,0 +1,111 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\TiposVehiculosRequest;
use App\Models\TipoVehiculo;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class TiposVehiculosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = TipoVehiculo::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)){
$tipo_vehiculo = $queryBuilder->paginate($perPage);
}else{
$tipo_vehiculo = ['data'=>$queryBuilder->get()];
}
return response()->success($tipo_vehiculo);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(TiposVehiculosRequest $request)
{
$data = $request->all();
try {
$tipo_vehiculo = TipoVehiculo::create($data);
return response()->success($tipo_vehiculo);
} catch (\Exception $e) {
Log::info($e->getMessage());
return response()->unprocessable('Error', ['Error al guardar el Tipo de Vehiculo.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$tipo_vehiculo = TipoVehiculo::where('id', $id)
->withTrashed()
->firstOrFail();
return response()->success($tipo_vehiculo);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(TiposVehiculosRequest $request, $id)
{
$data = $request->all();
try {
$tipo_vehiculo = TipoVehiculo::where('id',$id)
->withTrashed()
->firstOrFail();
$tipo_vehiculo->update($data);
return response()->success($tipo_vehiculo);
} catch (\Exception $e) {
return response()->unprocessable('Error', ['Error al guardar el Tipo de Vehiculo.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View File

@@ -0,0 +1,216 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Models\Rol;
use Illuminate\Support\Facades\Auth;
use const App\Http\Controllers\PASSWORD;
use App\Http\Requests\Administrador\UserRequest;
use App\Models\RolUser;
use App\Models\Sucursal;
use App\Models\TipoEmpleado;
use App\Models\User;
use Cartalyst\Sentinel\Native\Facades\Sentinel;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Log;
class UsersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$user = Auth::user();
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','users.nombre');
$order = $request->input('order','asc');
$queryBuilder = User::select('users.*', DB::raw("coalesce (roles.name, '') as role"), 'roles.id as role_id', 'tipos_empleados.nombre as tipo_empleado', 'tipos_empleados.id as tipo_empleado_id', 'sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->orderBy($orderBy,$order)
->leftJoin('role_users', 'role_users.user_id', '=', 'users.id')
->leftJoin('roles', 'roles.id', '=', 'role_users.role_id')
->join('sucursales', 'sucursales.id', '=', 'users.sucursal_id')
->join('tipos_empleados', 'tipos_empleados.id', '=', 'users.tipo_empleado_id')
->where('users.sucursal_id', $user->sucursal_id);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('users.email','like','%' .$query.'%')
->orWhere('users.nombre','like','%' .$query.'%')
->orWhere('users.apellido_paterno','like','%' .$query.'%')
->orWhere('users.apellido_materno','like','%' .$query.'%')
->orWhere('users.telefono','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$users = $queryBuilder->paginate($perPage);
}else{
$users = ['data'=>$queryBuilder->get()];
}
return response()->success($users);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(UserRequest $request)
{
$data = $request->all();
DB::beginTransaction();
try {
$tipo = TipoEmpleado::where('id', $data['tipo_empleado_id'])->first();
if($tipo->login){
$data['password'] = bcrypt($data['password']);
}else{
$data['password'] = bcrypt(PASSWORD);
}
$user = User::create($data);
$user_sentinel = Sentinel::findById($user->id);
$role = Sentinel::findRoleById($data['role_id']);
$role->users()->attach($user_sentinel);
DB::commit();
return response()->success($user);
} catch (\Exception $e) {
DB::rollBack();
return response()->unprocessable('Error', ['Error al guardar el usuario.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = User::select('users.*', 'roles.name as role', 'roles.id as role_id', 'tipos_empleados.nombre as tipo_empleado', 'tipos_empleados.id as tipo_empleado_id', 'sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->leftJoin('role_users', 'role_users.user_id', '=', 'users.id')
->leftJoin('roles', 'roles.id', '=', 'role_users.role_id')
->join('tipos_empleados', 'tipos_empleados.id', '=', 'users.tipo_empleado_id')
->join('sucursales', 'sucursales.id', '=', 'users.sucursal_id')
->where('users.id', $id)
->withTrashed()
->firstOrFail();
return response()->success($user);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(UserRequest $request, $id)
{
$data = $request->all();
DB::beginTransaction();
try {
if(trim($data['password']) != ''){
$data['password'] = bcrypt($data['password']);
}else{
$data = collect($data)->forget('password')->all();
}
$user = User::where('id',$id)
->withTrashed()
->firstOrFail();
$user->update($data);
RolUser::where('user_id', $id)
->update(['role_id' => $data['role_id']]);
DB::commit();
return response()->success($user);
} catch (\Exception $e) {
DB::rollBack();
return response()->unprocessable('Error', ['Error al actualizar el usuario.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$user = User::where('id',$id)
->onlyTrashed()
->first();
$user->restore();
}else{
$user = User::findOrFail($id);
$user->delete();
}
return response()->success(['result' => 'ok']);
}
public function tiposEmpleados(){
$tipos_empleados = TipoEmpleado::get();
return response()->success($tipos_empleados);
}
public function sucursales(Request $request){
$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($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
}else{
$data = ['data'=>$queryBuilder->get()];
}
return response()->success($data);
}
public function filtrosUsuarios(){
$sucursales = Sucursal::get();
$tipos_empleados = TipoEmpleado::get();
$roles = Rol::get();
return response()->success(compact('sucursales', 'tipos_empleados', 'roles'));
}
}

View File

@@ -0,0 +1,214 @@
<?php
namespace App\Http\Controllers\Administrador;
use App\Http\Requests\Administrador\VehiculosRequest;
use App\Models\Sucursal;
use App\Models\TipoVehiculo;
use App\Models\Vehiculo;
use App\Models\VehiculoSucursal;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Log;
class VehiculosController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$user = Auth::user();
$deleted = $request->input('deleted');
$orderBy = $request->input('sortBy','id');
$order = $request->input('order','asc');
$queryBuilder = Vehiculo::select('cat_vehiculos.*', 'cat_tipos_vehiculos.nombre as tipo_vehiculo')
->join('cat_tipos_vehiculos', 'cat_tipos_vehiculos.id', '=', 'cat_vehiculos.tipo_vehiculo_id')
->join('vehiculos_sucursales', 'vehiculos_sucursales.vehiculo_id', '=', 'cat_vehiculos.id')
->where('vehiculos_sucursales.sucursal_id', $user->sucursal_id)
->orderBy($orderBy,$order);
if($query = $request->get('query',false)){
$queryBuilder->where(function($q) use ($query){
$q->where('num_economico','like','%' .$query.'%')
->orWhere('cat_tipos_vehiculos.nombre','like','%' .$query.'%');
});
}
if($deleted) {
$queryBuilder->onlyTrashed();
}
if($perPage = $request->input('perPage',false)){
$data = $queryBuilder->paginate($perPage);
foreach ($data->items() as $vehiculo){
$vehiculo->sucursales = VehiculoSucursal::select('sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->where('vehiculo_id', $vehiculo->id)
->join('sucursales', 'sucursales.id', '=', 'vehiculos_sucursales.sucursal_id')
->get();
}
$vehiculo = $data;
}else{
$data = $queryBuilder->get();
foreach ($data as $vehiculo){
$vehiculo->sucursales = VehiculoSucursal::select('sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->where('vehiculo_id', $vehiculo->id)
->join('sucursales', 'sucursales.id', '=', 'vehiculos_sucursales.sucursal_id')
->get();
}
$vehiculo = ['data'=>$data];
}
return response()->success($vehiculo);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(VehiculosRequest $request)
{
$data = $request->all();
foreach ($data['sucursales'] as $s){
if(!Sucursal::where('id', $s)->first()){
return response()->unprocessable('Error', ['No se encuentra la sucursal ingresada.']);
}
}
DB::beginTransaction();
try {
$vehiculo = Vehiculo::create($data);
foreach ($data['sucursales'] as $s){
VehiculoSucursal::create(['vehiculo_id' => $vehiculo->id, 'sucursal_id' => $s]);
}
DB::commit();
return response()->success($vehiculo);
} catch (\Exception $e) {
DB::rollBack();
return response()->unprocessable('Error', ['Error al guardar el Estatus de Servicio.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$vehiculo = Vehiculo::select('cat_vehiculos.*', 'cat_tipos_vehiculos.nombre as tipo_vehiculo')
->where('cat_vehiculos.id', $id)
->join('cat_tipos_vehiculos', 'cat_tipos_vehiculos.id', '=', 'cat_vehiculos.tipo_vehiculo_id')
->withTrashed()
->firstOrFail();
$vehiculo->sucursales = VehiculoSucursal::select('sucursales.id as sucursal_id', 'sucursales.nombre as sucursal')
->where('vehiculo_id', $vehiculo->id)
->join('sucursales', 'sucursales.id', '=', 'vehiculos_sucursales.sucursal_id')
->get();
return response()->success($vehiculo);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(VehiculosRequest $request, $id)
{
$data = $request->all();
DB::beginTransaction();
try {
$vehiculo = Vehiculo::where('id',$id)
->withTrashed()
->firstOrFail();
$vehiculo->update($data);
VehiculoSucursal::where('vehiculo_id', $id)->delete();
foreach ($data['sucursales'] as $s){
VehiculoSucursal::create(['vehiculo_id' => $vehiculo->id, 'sucursal_id' => $s]);
}
DB::commit();
return response()->success($vehiculo);
} catch (\Exception $e) {
DB::rollBack();
return response()->unprocessable('Error', ['Error al actualizar el Estatus de Servicio.']);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id, Request $request)
{
$deleted = $request->input('deleted');
if($deleted){
$vehiculo = Vehiculo::where('id',$id)
->onlyTrashed()
->first();
$vehiculo->restore();
}else{
$vehiculo = Vehiculo::findOrFail($id);
$vehiculo->delete();
VehiculoSucursal::where('vehiculo_id', $id)->delete();
}
return response()->success(['result' => 'ok']);
}
public function sucursales(){
$sucursales = Sucursal::get();
return response()->success($sucursales);
}
public function tiposVehiculos(Request $request){
$orderBy = $request->input('sortBy','nombre');
$order = $request->input('order','asc');
$queryBuilder = TipoVehiculo::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);
}
}