182 lines
6.6 KiB
PHP
Raw Permalink Normal View History

2025-03-05 21:11:33 -06:00
<?php
namespace Koneko\VuexyContacts\Http\Controllers;
use App\Http\Controllers\Controller;
use Koneko\VuexyAdmin\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Koneko\VuexyAdmin\Queries\GenericQueryBuilder;
class ContactController extends Controller
{
public function index(Request $request)
{
if ($request->ajax()) {
$bootstrapTableIndexConfig = [
'table' => 'users',
'columns' => [
'users.id',
'users.code',
DB::raw("CONCAT_WS(' ', users.name, users.last_name) AS full_name"),
'users.email',
DB::raw("CONCAT_WS(' ', parent.name, parent.last_name) AS parent_name"),
'parent.email AS parent_email',
DB::raw("CONCAT_WS(' ', agent.name, agent.last_name) AS agent_name"),
'agent.email AS agent_email',
'users.company',
'users.birth_date',
'users.hire_date',
'users.curp',
'users.nss',
'users.job_title',
'users.rfc',
'users.nombre_fiscal',
'users.tipo_persona',
'users.c_regimen_fiscal',
'sat_regimen_fiscal.descripcion AS regimen_fiscal',
'users.domicilio_fiscal',
'users.c_uso_cfdi',
'sat_uso_cfdi.descripcion AS uso_cfdi',
'sat_estado.nombre_del_estado AS estado',
'sat_municipio.descripcion AS municipio',
'sat_localidad.descripcion AS localidad',
'users.profile_photo_path',
'users.is_partner',
'users.is_employee',
'users.is_prospect',
'users.is_customer',
'users.is_provider',
'users.is_user',
'users.status',
DB::raw("CONCAT_WS(' ', created.name, created.last_name) AS creator"),
'created.email AS creator_email',
'users.created_at',
'users.updated_at',
],
'joins' => [
[
'table' => 'users as parent',
'first' => 'users.parent_id',
'second' => 'parent.id',
'type' => 'leftJoin',
],
[
'table' => 'users as agent',
'first' => 'users.agent_id',
'second' => 'agent.id',
'type' => 'leftJoin',
],
[
'table' => 'users as created',
'first' => 'users.created_by',
'second' => 'created.id',
'type' => 'leftJoin',
],
[
'table' => 'sat_codigo_postal',
'first' => 'users.domicilio_fiscal',
'second' => 'sat_codigo_postal.c_codigo_postal',
'type' => 'leftJoin',
],
[
'table' => 'sat_estado',
'first' => 'sat_codigo_postal.c_estado',
'second' => 'sat_estado.c_estado',
'type' => 'leftJoin',
'and' => [
'sat_estado.c_pais = "MEX"',
],
],
[
'table' => 'sat_localidad',
'first' => 'sat_codigo_postal.c_localidad',
'second' => 'sat_localidad.c_localidad',
'type' => 'leftJoin',
'and' => [
'sat_codigo_postal.c_estado = sat_localidad.c_estado',
],
],
[
'table' => 'sat_municipio',
'first' => 'sat_codigo_postal.c_municipio',
'second' => 'sat_municipio.c_municipio',
'type' => 'leftJoin',
'and' => [
'sat_codigo_postal.c_estado = sat_municipio.c_estado',
],
],
[
'table' => 'sat_regimen_fiscal',
'first' => 'users.c_regimen_fiscal',
'second' => 'sat_regimen_fiscal.c_regimen_fiscal',
'type' => 'leftJoin',
],
[
'table' => 'sat_uso_cfdi',
'first' => 'users.c_uso_cfdi',
'second' => 'sat_uso_cfdi.c_uso_cfdi',
'type' => 'leftJoin',
],
],
'filters' => [
'search' => ['users.name', 'users.email', 'users.code', 'parent.name', 'created.name'],
],
'sort_column' => 'users.name',
'default_sort_order' => 'asc',
];
return (new GenericQueryBuilder($request, $bootstrapTableIndexConfig))->getJson();
}
$pageConfigs = ['contentLayout' => 'wide'];
$breadcrumbs = [
['route' => 'admin.home', 'name' => "Inicio"],
['name' => "Contactos", 'active' => true]
];
return view('vuexy-contacts::contacts.index', compact('breadcrumbs', 'pageConfigs'));
}
/**
* Show the crud for creating a new resource.
*/
public function create()
{
return view('vuexy-contacts::contacts.crud')
->with('mode', 'create')
->with('contact', null);
}
/**
* Display the specified resource.
*/
public function show(User $contact)
{
return view('vuexy-contacts::contacts.show', compact('contact'));
}
/**
* Show the crud for editing the specified resource.
*/
public function edit(User $contact)
{
//$contact = User::findOrFail($id);
return view('vuexy-contacts::contacts.crud', compact('contact'))->with('mode', 'edit');
}
/**
* Show the crud for editing the specified resource.
*/
public function delete(User $contact)
{
return view('vuexy-contacts::contact.crud', compact('contact'))->with('mode', 'delete');
}
}