File: /var/www/vhost/disk-apps/comfama.sports-crowd.com/app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
use App\Rol;
use App\Tag;
use App\City;
use App\Seat;
use App\User;
use DateTime;
use App\Order;
use App\Ticket;
use App\Address;
use App\Core\Customer\CustomerTableService;
use App\UserTag;
use App\Discount;
use App\Sucursal;
use App\Parameter;
use Carbon\Carbon;
use App\MatchEvent;
use App\TicketMain;
use App\PreSubscriber;
use App\CourierCompany;
use App\DataPolicy;
use App\DataPolicyClient;
use App\UserInformation;
use App\TicketUserBlock;
use App\DiscountOrderUser;
use App\DocumentType;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\AddressController;
use App\Http\Controllers\TicketsController;
use App\Http\Controllers\Exports\FansExport;
use App\Http\Controllers\Exports\ReportClients;
use App\Http\Controllers\MassiveFansController;
use App\Http\Controllers\Api\TicketApiController;
use App\Http\Controllers\Imports\SubscribersImport;
use App\Http\Controllers\Imports\UserSegmentationImport;
use App\Http\Controllers\Imports\UserSegmentationTemplate;
use App\Http\Controllers\Exports\ClientsExport;
use App\Models\Central\Term;
use App\Term as AppTerm;
use App\TermClient;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Facades\Excel;
use Yajra\DataTables\Facades\DataTables;
use function GuzzleHttp\json_encode;
class UserController extends Controller
{
private $__PAYMENT_ATTEMPTS = 6;
private $__ADMINROLES = [];
private $util;
public function __construct()
{
$this->util = new UtilController();
$this->__ADMINROLES = [$this->__SUPERADMIN_ROL];
}
public function indexClient()
{
$multiselectItems = Tag::select('id', 'name')->where('active', true)->get();
return view('users.clients', compact('multiselectItems'));
}
public function indexDelivery()
{
$deliveryMan = User::orderBy('first_name', 'ASC')->where("rol_id", 3)->get();
$sucursals = Sucursal::where('active', 1)->get();
return view('users.deliveryMan')
->with('deliveryMan', $deliveryMan)
->with('sucursals', $sucursals);
}
public function indexAdmin()
{
return view('users.admins');
}
public function indexSubscriber()
{
return view('users.preSubscribers');
}
public function tableFilterSubscriber()
{
$obj = PreSubscriber::with('seat');
return Datatables::of($obj)
->addColumn('actions', function ($obj) {
return '<i class="fa fa-trash iconMini" onClick="clickDeletePreSubscriber(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>';
})
->rawColumns(['actions'])
->make(true);
}
public function indexAddClient()
{
$cities = City::where('active', 1)->orderBy('name', 'ASC')->get();
$multiselectItems = Tag::select('id', 'name')->where('active', true)->get();
return view('users.addClients', compact(
'cities',
'multiselectItems'
));
}
public function indexAddDelivery()
{
$sucursals = Sucursal::where('active', 1)->orderBy('name', 'ASC')->get();
$courier = CourierCompany::all();
return view('users.addDeliveryMan', compact(
'sucursals',
'courier'
));
}
public function indexAddAdmin()
{
$sucursals = Sucursal::where('active', 1)->orderBy('name', 'ASC')->get();
$rols = Rol::select('id', 'name')->whereIn('id', ($this->__ADMINROLES))->orderBy('name', 'ASC')->get();
$tags = Tag::select('id', 'name')->where('active', true)->get();
return view('users.addAdmin', compact(
'sucursals',
'rols',
'tags'
));
}
public function indexEditClient($id)
{
$client = User::find($id);
$directions = Address::where('user_id', $id)->get();
$cities = City::where('active', 1)->orderBy('name', 'ASC')->get();
$multiselectItems = Tag::select('id', 'name')->where('active', true)->get();
$userTags = UserTag::select('tag_id')->where('user_id', $id)->get();
return view('users.editClients', compact(
'client',
'directions',
'multiselectItems',
'userTags',
'cities'
));
}
public function indexEditDeliveryMan($id)
{
$deliveryM = User::find($id);
$info = UserInformation::where('user_id', $id)->first();
$sucursals = Sucursal::where('active', 1)->orderBy('name', 'ASC')->get();
$courier = CourierCompany::all();
return view('users.editDeliveryMan')->with('deliveryM', $deliveryM)->with('info', $info)->with('sucursals', $sucursals)->with('courier', $courier);
}
public function indexEditAdmin($id)
{
$admin = User::find($id);
$info = UserInformation::where('user_id', $admin->id)->first();
$sucursals = Sucursal::where('active', 1)->orderBy('name', 'ASC')->get();
$rols = Rol::select('id', 'name')->whereIn('id', ($this->__ADMINROLES))->orderBy('name', 'ASC')->get();
$tags = Tag::select('id', 'name')->where('active', true)->get();
$assignedTags = UserTag::where('user_id', $id)->pluck('tag_id')->toArray();
return view('users.editAdmin', compact(
'admin',
'info',
'sucursals',
'rols',
'tags',
'assignedTags'
));
}
public function createUserResponsibleAcademy(Request $request)
{
return $this->createClient($request, true);
}
// TODO: check if is_ticket is a semantic variable
public function createClient(Request $request, $is_ticket = false, $validateByDocument = true)
{
$parameters = Parameter::select('id', 'db_city', 'db_name')->first();
$data = array(
'rol' => $this->__CLIENT_ROL,
'accountInfo' => [
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"] != null ? $request["password"] : base64_encode(random_bytes(4)),
'document' => $request["document"],
]
);
$userDocument = null;
if ($request["document"]) {
$userDocument = User::where("document", $request["document"])->first();
}
// Valido si existe un usuario con el mismo documento
if ($validateByDocument && $validateByDocument != 'false') {
if ($userDocument) {
$this->createSegmentation($userDocument, $request["tags"]);
$this->updateCreateAddress($is_ticket, $request, $userDocument->id);
return array(
'r' => true,
'm' => trans('messages.controller_client_tag2'),
'd' => $userDocument,
'oldUser' => true
);
}
}
$userEmail = User::where("email", "=", $request["email"])->first();
// Valido si existe un usuario con el mismo email.
if ($userEmail) {
$this->createSegmentation($userEmail, $request["tags"]);
$this->updateCreateAddress($is_ticket, $request, $userEmail->id);
return array(
'r' => true,
'm' => trans('messages.controller_client_tag3'),
'd' => $userEmail,
'oldUser' => true
);
}
$remoteUser = $this->signupFromAdminSale($data);
if ($remoteUser->status != "success") {
return array('r' => false, 'm' => 'Creado', 'd' => $remoteUser);
}
$logObj = $remoteUser;
$user = User::where("email", "=", $request["email"])->first();
$this->createSegmentation($user, $request["tags"]);
if ($request['document_type']) {
$documentType = DocumentType::where('name', 'like', '%' . $request['document_type'] . '%')->first();
if ($documentType) {
$user->document_type_id = $documentType->id;
$user->update();
}
}
if (Auth::user()) {
$this->registerLog(Auth::user()->id, 'Creó cliente', json_encode($logObj), "Create", $this->getModule($request));
}
$this->updateCreateAddress($is_ticket, $request, $remoteUser->user->id);
return [
'r' => true,
'd' => $remoteUser->user,
'm' => trans('messages.controller_client_tag1'),
'status' => 'success'
];
}
public function signupFromAdminSale(array $request)
{
$userCopy = User::where("document", $request["accountInfo"]["document"])
->whereNotNull('document')
->first();
// TODO: remove duplicated query to users table
if (isset($userCopy->id)) {
$user = new User();
$userN = $user->where('document', $request["accountInfo"]["document"])->first();
if (isset($userN->id)) {
return (object) ['status' => 'document_already_exists'];
} else {
$userTerms = TermClient::where("user_id", $userCopy->id)->first();
return $this->createDataPolicy($userCopy, $userTerms);
}
}
return $this->createUser($request, $request["rol"]);
}
public function createUser($request, $rol)
{
$user = new User();
$user->first_name = $request["accountInfo"]["name"];
$user->last_name = $request["accountInfo"]["lastName"];
$user->phone = $request["accountInfo"]["cellPhone"];
$user->email = $request["accountInfo"]["email"];
$user->password = Hash::make($request["accountInfo"]["password"]);
if (isset($request["accountInfo"]["document"])) {
$user->document = $request["accountInfo"]["document"];
}
$user->rol_id = $rol;
$isSubscriber = null;
if (isset($isSubscriber))
$user->is_subscriber = $isSubscriber;
$user->save();
$termId = AppTerm::where('active', 1)->first()->id;
if ($user->id) {
$termConditionController = new TermConditionController();
$bodyTerm = $termConditionController->getTermsActive();
if ($bodyTerm && isset($bodyTerm->term)) {
$termId = $bodyTerm->term->id;
}
$userTerms = new TermClient();
$userTerms->accepted = 1;
$userTerms->term_id = $termId;
$userTerms->user_id = $user->id;
$userTerms->save();
$userInformation = new UserInformation();
$userInformation->is_initial = 1;
$userInformation->is_tutorial_viewed = 1;
$userInformation->is_habeas_data_viewed = 1;
$userInformation->user_id = $user->id;
if (in_array($rol, [$this->__MESSENGER_ROL]) && isset($request["accountInfo"])) {
$userInformation->plate = $request["accountInfo"]["plate"];
$userInformation->courier_company_id = $request["accountInfo"]["courier_company_id"];
$userInformation->sucursal_id = $request["accountInfo"]["sucursal_id"];
}
$userInformation->save();
}
return $this->createDataPolicy($user, $userTerms);
}
public function createDataPolicy($userCopy, $userTermsCopy)
{
$user = $userCopy;
$policyId = DataPolicy::where('active', 1)->first()->id;
$dataPolicyController = new DataPolicyController();
$bodyPolicy = $dataPolicyController->getActivePolicy();
if ($bodyPolicy && isset($bodyPolicy->activePolicy)) {
$policyId = $bodyPolicy->activePolicy->id;
}
$dataPolicy = new DataPolicyClient();
$dataPolicy->accepted = $userTermsCopy->accepted;
$dataPolicy->data_policy_id = $policyId;
$dataPolicy->user_id = $user->id;
$dataPolicy->created_at = $userTermsCopy->created_at;
$dataPolicy->updated_at = $userTermsCopy->updated_at;
$dataPolicy->save();
return (object) ['r' => true, 'status' => 'success', 'user' => $user, 'm' => trans('messages.controller_client_tag1')];
}
private function updateCreateAddress($createUpdate, $request, $userId)
{
if (!$createUpdate) {
Address::updateOrCreate(['user_id' => $userId, 'direction' => $request["direction"]], [
'direction' => $request['direction'],
'district' => $request["district"],
'user_id' => $userId,
'active' => true,
'indications' => $request["indications"],
'lat' => $request["lat"],
'long' => $request["long"],
'city_id' => $request["city_id"]
]);
}
}
public function createSegmentation($user, $tagsIdArray)
{
if ($user && $tagsIdArray != null) {
foreach ($tagsIdArray as $tagId) {
UserTag::updateOrCreate(
['tag_id' => $tagId, 'user_id' => $user->id],
['tag_id' => $tagId, 'user_id' => $user->id]
);
}
}
}
public function createDeliveryMan(Request $request)
{
$parameters = Parameter::select('id', 'db_city', 'db_name')->first();
$data = array(
'rol' => $this->__MESSENGER_ROL,
'accountInfo' => array(
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"],
'document' => $request["document"],
'courier_company_id' => $request["courier_company_id"],
'sucursal_id' => $request["sucursal_id"],
'plate' => $request["plate"],
),
);
$r = User::where("document", $request["document"])->first();
$email = User::where("email", "=", $request["email"])->withTrashed()->first();
// Valido si existe un usaurio con el mismo documento
if ($r) {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag2'));
}
// Valido si existe un usuario con el mismo email.
if ($email) {
if ($email->email == $request["email"]) {
if ($email->deleted_at != null) {
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag7'), 'id' => $email->id);
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag3'));
}
}
}
$remoteUser = $this->signupFromAdminSale($data);
$logObj = $remoteUser;
$this->registerLog(Auth::user()->id, 'Creó mensajero', json_encode($logObj), "Create", $this->getModule($request));
if ($remoteUser->status != "success") {
return array('r' => false);
}
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag1'), 'd' => $remoteUser->user->id);
}
public function createAdmin(Request $request)
{
$parameters = Parameter::select('id', 'db_city', 'db_name')->first();
$data = array(
'rol' => $request["rol_id"], // Rol para cliente
'accountInfo' => array(
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"],
'document' => $request["document"],
'courier_company_id' => null,
'sucursal_id' => $request["sucursal_id"],
'plate' => null,
),
);
$r = User::where("document", $request["document"])->first();
$email = User::where("email", "=", $request["email"])->first();
// Valido si existe un usaurio con el mismo documento
if ($r) {
return array('r' => false, 'm' => trans('messages.controller_admin_tag2'));
}
// Valido si existe un usuario con el mismo email.
if ($email) {
if ($email->email == $request["email"]) {
return array('r' => false, 'm' => trans('messages.controller_admin_tag3'));
}
}
$remoteUser = $this->signupFromAdminSale($data);
if ($remoteUser->status != "success") {
return array('r' => false);
}
$tags = $request["tags"];
if ($tags != null) {
foreach ($tags as $tagId) {
UserTag::updateOrCreate(
['tag_id' => $tagId, 'user_id' => $remoteUser->user->id],
['tag_id' => $tagId, 'user_id' => $remoteUser->user->id]
);
}
}
$logObj = $remoteUser;
$this->registerLog(Auth::user()->id, 'Creó admin', json_encode($logObj), "Create", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_admin_tag1'));
}
public function updateClient(Request $request)
{
$user = User::find($request["id"]);
$user->first_name = $request["first_name"];
$user->last_name = $request["last_name"];
$user->phone = $request["phone"];
$user->email = $request["email"];
if (isset($request["password"]) && !empty($request["password"])) {
$user->password = Hash::make($request["password"]);
}
$user->document = $request["document"];
$user->rol_id = 4;
$user->is_subscriber = $request["is_subscriber"];
$idAddress = $request["direction_used"];
// add direction
if ($request["direction"] != null) {
$address = new AddressController;
$idAddress = $address->create("", $request["direction"], $request["district"], $request["indications"], $request["lat"], $request["long"], $request["city_id"], $user->id);
}
$directions = Address::where('user_id', $user->id)->get();
foreach ($directions as $direction) {
if ($direction->id == $idAddress) {
$direction->last_used = 1;
} else {
$direction->last_used = 0;
}
$direction->update();
}
UserTag::where('user_id', $user->id)->delete();
if ($request["tags"] != null) {
foreach ($request["tags"] as $tagId) {
UserTag::updateOrCreate(
['tag_id' => $tagId, 'user_id' => $user->id],
['tag_id' => $tagId, 'user_id' => $user->id]
);
}
}
$this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($user), "update", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
}
public function updateDeliveryMan(Request $request)
{
$user = User::find($request["id"]);
$user->first_name = $request["first_name"];
$user->document = $request["document"];
$user->last_name = $request["last_name"];
$user->phone = $request["phone"];
$user->email = $request["email"];
if (!empty($request["password"])) {
$user->password = Hash::make($request["password"]);
}
$user->update();
$this->updateInfoDelivery($request["plate"], $request["id"], $request["courier_company_id"], $request["sucursal_id"]);
$this->registerLog(Auth::user()->id, 'Se modifico la información del mensajero', json_encode($user), "update", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
}
public function updateAdmin(Request $request)
{
$user = User::find($request["id"]);
$user->first_name = $request["first_name"];
$user->document = $request["document"];
$user->last_name = $request["last_name"];
$user->phone = $request["phone"];
$user->email = $request["email"];
$user->rol_id = $request["rol_id"];
if (!empty($request["password"])) {
$user->password = Hash::make($request["password"]);
}
$user->update();
$info = UserInformation::where('user_id', $request["id"])->first();
$info->sucursal_id = $request["sucursal_id"];
$info->update();
UserTag::where('user_id', $user->id)->delete();
$tags = $request["tags"];
if ($tags != null) {
foreach ($tags as $tagId) {
UserTag::updateOrCreate(
['tag_id' => $tagId, 'user_id' => $user->id],
['tag_id' => $tagId, 'user_id' => $user->id]
);
}
}
$this->registerLog(Auth::user()->id, 'Se modifico la información del administrador', json_encode($user), "update", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_admin_tag4'));
}
public function updateInfoDelivery($plate, $id, $courier, $sucursal)
{
$info = UserInformation::where('user_id', $id)->first();
$info->plate = $plate;
$info->courier_company_id = $courier;
$info->sucursal_id = $sucursal;
$info->update();
return true;
}
public function getClient(Request $request)
{
$id = $request["id"];
$client = User::find($id);
return $client->toArray();
}
public function getDeliveryMan(Request $request)
{
$id = $request["id"];
$u = User::find($id);
$i = UserInformation::where('user_id', $u->id)->first();
$i->courier_company_id = $i->company->name;
if ($i->photo != null) {
$img = config('filesystems.disks.s3.url') . "/deliveryman/" . $i->photo;
} else {
$img = 'img/user.png';
}
return array('r' => true, 'u' => $u->toArray(), 'i' => $i->toArray(), 'img' => $img);
}
public function getAdmin(Request $request)
{
$id = $request["id"];
$u = User::find($id);
$i = UserInformation::where('user_id', $u->id)->first();
$i->sucursal_id = $i->sucursal->name;
return array('r' => true, 'u' => $u->toArray(), 'i' => $i->toArray());
}
public function activateClient(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$user = User::find($id);
$logObj = $user;
$user->active = $state;
$user->update();
// Log
$this->registerLog(Auth::user()->id, 'Actualizó campo active de cliente', json_encode($logObj), "Update", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
}
public function activateDeliveryMan(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$user = User::find($id);
$logObj = $user;
$user->active = $state;
$user->update();
// Log
$this->registerLog(
Auth::user()->id,
'Actualizó campo active de mensajero',
json_encode($logObj),
"Update",
6
);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
}
public function onlineDeliveryMan(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$user = User::find($id);
$logObj = $user;
$user->online = $state;
$user->update();
// Log
$this->registerLog(
Auth::user()->id,
'Actualizó campo online de mensajero',
json_encode($logObj),
"Update",
6
);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
}
public function activateAdmin(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$user = User::find($id);
$logObj = $user;
$user->active = $state;
$user->update();
// Log
$this->registerLog(
Auth::user()->id,
'Actualizó campo active de administrador',
json_encode($logObj),
"Update",
6
);
return array('r' => true, 'm' => trans('messages.controller_admin_tag4'));
}
public function multipleSession(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$user = User::find($id);
$logObj = $user;
$user->multiple_session = $state;
$user->update();
// Log
$this->registerLog(
Auth::user()->id,
'Actualizó campo sesion multiple de mensajero',
json_encode($logObj),
"Update",
6
);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag5'));
}
public function deleteDeliveryMan(Request $request)
{
$userId = $request['id'];
$logObj = User::find($userId);
$this->deleteUser($userId);
// Log
$this->registerLog(Auth::user()->id, 'Elimino mensajero', json_encode($logObj), "Delete", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag6'));
}
public function deleteAdmin(Request $request)
{
$userId = $request['id'];
$logObj = User::find($userId);
$this->deleteUser($userId);
// Log
$this->registerLog(Auth::user()->id, 'Elimino administrador', json_encode($logObj), "Delete", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_admin_tag6'));
}
public function tableFilterClient(Request $request, CustomerTableService $customerTableService)
{
$count = $customerTableService->getTableCount($request);
$obj = $customerTableService->getTableQuery($request);
$dataTable = DataTables::of($obj)->setTotalRecords($count);
$this->tableFilterClientCustomColumns($dataTable);
$response = $dataTable->make(true);
$data = $response->getData();
$data = json_decode(json_encode($data), true);
$queries = DB::getQueryLog();
$newQueries = [];
foreach ($queries as $query) {
if (!is_string($query['query'])) {
$query['query'] = $query['query']->getValue();
}
if (str_contains($query['query'], 'select') && str_contains($query['query'], 'group by')) {
$newQueries[] = $query;
}
}
$data['queries'] = $newQueries;
return $data;
}
public function tableFilterDeliveryMan()
{
$obj = $obj = DB::table('users')
->select('users.id', 'users.first_name', 'users.last_name', 'users.document', 'users.phone', 'users.active', 'users.multiple_session', 'users.online', 'users.created_at')
->where('users.rol_id', 3)->whereNull('users.deleted_at');
return Datatables::of($obj)
->addColumn('actions', function ($obj) {
return '<i class="fa fa-eye iconMini" onClick="clickInfoDeliveryMan(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" title="Información"></i>
<i class="fa fa-pencil iconMini" onClick="clickEditDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
<i class="fa fa-trash iconMini" onClick="clickDeleteDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>';
})
->editColumn('active', function ($obj) {
if ($obj->active == 0) {
return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" /> <span></span>Si </label></div> </label> </div>';
} else {
return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('online', function ($obj) {
if ($obj->active == 0) {
return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkOnlineDelivery(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkonline' . $obj->id . '" name="Checkonline" /> <span></span>Si </label></div> </label> </div>';
} else {
return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkOnlineDelivery(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkonline' . $obj->id . '" name="Checkonline" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('multiple_session', function ($obj) {
if ($obj->multiple_session == 0) {
return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkMSDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" id="CheckMS' . $obj->id . '" /> <span></span>Si </label></div> </label> </div>';
} else {
return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkMSDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" id="CheckMS' . $obj->id . '" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('created_at', function ($obj) {
return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
})
->rawColumns(['active', 'actions', 'multiple_session', 'online'])
->make(true);
}
public function tableFilterAdmins()
{
DB::statement("SET sql_mode = ''");
$obj = $obj = DB::table('users')
->select('users.id', 'users.first_name', 'users.last_name', 'users.email', 'users.active', 'rols.name as rol', DB::raw('GROUP_CONCAT(DISTINCT(tags.name)) AS segmentation'), 'users.created_at')
->join('rols', 'rols.id', '=', 'users.rol_id')
->leftjoin('user_tags', 'users.id', '=', 'user_tags.user_id')
->leftjoin('tags', 'tags.id', '=', 'user_tags.tag_id')
->whereIn('rols.id', ($this->__ADMINROLES))
->whereNull('users.deleted_at')
->groupBy('users.id');
DB::statement("SET sql_mode = 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'");
return Datatables::of($obj)
->addColumn('actions', function ($obj) {
return '<i class="fa fa-eye iconMini" onClick="clickInfoAdmins(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" title="Información"></i>
<i class="fa fa-pencil iconMini" onClick="clickEditAdmins(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
<i class="fa fa-trash iconMini" onClick="clickDeleteAdmins(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>';
})
->editColumn('active', function ($obj) {
if ($obj->active == 0) {
return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkAdmins(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" /> <span></span>Si </label></div> </label> </div>';
} else {
return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label> No <input type="checkbox" onChange="chkAdmins(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->editColumn('created_at', function ($obj) {
return \Carbon\Carbon::parse($obj->created_at)->format('Y-m-d h:i:s A');
})
->rawColumns(['active', 'actions'])
->make(true);
}
public function getDirections($user_id)
{
$address = Address::where('user_id', $user_id)->get();
return $address->toArray();
}
public function autocomplete(Request $request)
{
$term = $request->input('term');
$results = array();
$queries = DB::table('users')
->where('document', 'LIKE', '%' . $term . '%')
->where('rol_id', 4)
->take(5)->get();
$parameters = Parameter::first();
$current = new DateTime();
$discounts = Discount::where('when_start', '<=', $current)->where('when_finish', '>=', $current)->where('active', 1)->get(); // se traen los descuentos que aun esten vigentes
foreach ($queries as $query) {
$client = User::find($query->id);
//cliente referido
$userInfo = UserInformation::where('user_id', $client->id)->select('referred_code', 'referred_finish_date')->first();
$clientRefer = UserInformation::where('referred_user_code', $userInfo->referred_code)->first();
$lastOrders = Order::where("client_id", $client->id)->with('orderProducts')->take(3)->get();
if ($clientRefer) { // si alguien tiene el codigo del cliente se verifica que este tenga pedidos
$orders = Order::where("client_id", $clientRefer->user_id)->first();
if ($orders) { // si tiene pedidos se envia el id del referido para que luego de aplicar el desccuento se borre lo que este en el campo referred_user_code
$idRefered = $clientRefer->user_id;
} else {
$idRefered = null;
}
} else {
$idRefered = null;
}
$results[] = [
'id' => $query->id,
'value' => $query->document,
'phone' => $query->phone,
'directions' => $client->addresses,
'document' => $query->document,
'first_name' => $query->first_name,
'last_name' => $query->last_name,
'email' => $query->email,
'created_at' => $query->created_at,
'referred_user_code' => $userInfo->referred_user_code,
'referred_finish_date' => $userInfo->referred_finish_date,
'is_register_discount_active' => $parameters->is_register_discount_active,
'register_discount_delivery' => $parameters->register_discount_delivery,
'days_register_discount_delivery' => $parameters->days_register_discount_delivery,
'clientRefer' => $idRefered,
'discounts' => json_encode($discounts),
'lastOrders' => $lastOrders,
];
}
return json_encode($results);
}
public function getAllDeliveryMan()
{
$deliveryMan = User::where('online', 1)->where('active', 1)->where('rol_id', 3)->get();
return array('r' => true, 'm' => $deliveryMan);
}
public function recoverAccount(Request $request)
{
$user = User::where('id', $request['id'])->withTrashed()->first();
$user->restore();
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag8'), 'id' => $request["id"]);
}
public function getClientDocument($document)
{
if (isset($document)) {
$client = User::where('document', $document)->first();
$direction = '';
$district = '';
$indications = '';
$idDir = '';
$lat = '';
$long = '';
if ($client) {
if (count($client->addresses) > 0) {
$arrayDir = $client->addresses;
foreach ($arrayDir as $key => $dir) {
if ($dir->last_used == 1) {
$direction = $dir->direction;
$district = $dir->district;
$indications = $dir->indications;
$idDir = $dir->id;
$lat = $dir->lat;
$long = $dir->long;
}
}
}
return array(
'r' => true, 'client' => $client->toArray(), 'direction' => $direction,
'district' => $district, 'indications' => $indications, 'idDir' => $idDir, 'lat' => $lat, 'long' => $long, 'addresses' => $arrayDir->toArray()
);
} else {
return array('respuesta' => false);
}
} else {
return array('respuesta' => false);
}
}
public function getAlbumOfYearUser($_id)
{
$client = User::where('id', $_id)->first();
$yearAlbumNow = Carbon::now();
$yearAlbum = $yearAlbumNow->format('d-m-Y');
$arrYearAlbum['fecha_actual'] = $yearAlbum;
$arrClient = array($client);
$resultado = array_merge($arrClient, $arrYearAlbum);
return response()->json($resultado);
}
public function autocompleteMail(Request $request)
{
$term = $request->input('term');
$results = array();
$queries = DB::table('users')
->where([['email', 'LIKE', '%' . $term . '%'], ['rol_id', 4]])
->whereNull('deleted_at')
->take(5)->get();
$parameters = Parameter::first();
$current = new DateTime();
$discounts = Discount::where('when_start', '<=', $current)->where('when_finish', '>=', $current)->where('active', 1)->get(); // se traen los descuentos que aun esten vigentes
foreach ($queries as $query) {
$client = User::find($query->id);
//cliente referido
$userInfo = UserInformation::where('user_id', $client->id)->select('referred_code', 'referred_finish_date')->first();
$clientRefer = UserInformation::where('referred_user_code', $userInfo->referred_code)->first();
if ($clientRefer) { // si alguien tiene el codigo del cliente se verifica que este tenga pedidos
$orders = Order::where("client_id", $clientRefer->user_id)->first();
if ($orders) { // si tiene pedidos se envia el id del referido para que luego de aplicar el desccuento se borre lo que este en el campo referred_user_code
$idRefered = $clientRefer->user_id;
} else {
$idRefered = null;
}
} else {
$idRefered = null;
}
$results[] = [
'id' => $query->id,
'value' => $query->email,
'phone' => $query->phone,
'pns_id' => $query->pns_id,
'directions' => $client->addresses,
'document' => $query->document,
'first_name' => $query->first_name,
'last_name' => $query->last_name,
'created_at' => $query->created_at,
'referred_user_code' => $userInfo->referred_user_code,
'referred_finish_date' => $userInfo->referred_finish_date,
'is_register_discount_active' => $parameters->is_register_discount_active,
'register_discount_delivery' => $parameters->register_discount_delivery,
'days_register_discount_delivery' => $parameters->days_register_discount_delivery,
'clientRefer' => $idRefered,
'discounts' => json_encode($discounts),
];
}
return json_encode($results);
}
public function saveImage(Request $request)
{
$id = $request->id;
$num_ram = rand(1, 999);
$extension = $request->file('photo')->getClientOriginalExtension();
$filenametostore = $num_ram . time() . '.' . $extension;
Storage::disk('s3')->put(config('s3.deliveryman') . $filenametostore, fopen($request->file('photo'), 'r+'), 'public');
$u = User::find($id);
$userInfo = UserInformation::where('user_id', $u->id)->first();
$userInfo->photo = $filenametostore;
$logObject = $userInfo;
$userInfo->update();
$this->registerLog(Auth::user()->id, 'Guardó imagen mensajero', json_encode($logObject), "Create", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag1'));
}
public function updateImage(Request $request)
{
$id = $request->id;
$u = User::find($id);
$userInfo = UserInformation::where('user_id', $u->id)->first();
$image = $userInfo->photo;
Storage::disk('s3')->delete(config('s3.deliveryman') . $image);
$num_ram = rand(1, 999);
$extension = $request->file('photo')->getClientOriginalExtension();
$filenametostore = $num_ram . time() . '.' . $extension;
Storage::disk('s3')->put(config('s3.deliveryman') . $filenametostore, fopen($request->file('photo'), 'r+'), 'public');
$logObject = $userInfo;
$userInfo->photo = $filenametostore;
$userInfo->update();
$this->registerLog(Auth::user()->id, 'Actualizó imagen mensajero', json_encode($logObject), "Update", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag9'), 'file' => config('filesystems.disks.s3.url') . '/deliveryman/' . $filenametostore);
}
public function fixPassword($init, $end)
{
$users = User::where('id', '>=', $init)->where('id', '<=', $end)->get();
foreach ($users as $key => $user) {
$user->password = Hash::make($user->password);
$user->update();
}
return response()->json(200);
}
public function reportClientNever()
{
return Excel::download((new ReportClients)->withoutOrders(), trans('messages.controller_deliveryMan_tag10') . '.xlsx');
}
public function reportClientFifteen()
{
return Excel::download((new ReportClients)->withOrdersLastFifteenDays(), trans('messages.controller_deliveryMan_tag11') . '.xlsx');
}
public function reportClientAll()
{
return Excel::download(new ReportClients, trans('messages.controller_deliveryMan_tag12') . '.xlsx');
}
public function coupone($id, $code)
{
$discount = Discount::where('code_coupon', $code)->first();
if ($discount) {
if ($discount->is_multiple_redeem) {
return array('r' => true, 'd' => $discount->toArray());
} else {
$discountOrder = DiscountOrderUser::where('discount_id', $discount->id)->get();
if (count($discountOrder) >= $discount->max_winners) {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag15'));
}
$discountOrder = DiscountOrderUser::where('discount_id', $discount->id)->where('user_id', $id)->first();
if ($discountOrder) {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag14'));
} else {
return array('r' => true, 'd' => $discount->toArray());
}
}
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag13'));
}
}
public function searchUser($document, $email = "", $first_name = "", $last_name = "", $phone = "", $force = false)
{
try {
$user = null;
if ($document && $document != "" && !$force) {
$user = User::select('id', 'first_name', 'last_name', 'document', 'phone', 'email')->where([['document', $document], ['active', true]])->orderBy('last_session', 'desc')->first();
}
if (!$user && $email && $email != "") {
$user = User::select('id', 'first_name', 'last_name', 'document', 'phone', 'email')->where([['email', $email], ['active', true]])->orderBy('last_session', 'desc')->first();
if ($user) {
if ($first_name)
$user->first_name = $first_name;
if ($last_name)
$user->last_name = $last_name;
if ($document)
$user->document = $document;
if ($phone)
$user->phone = $phone;
$user->update();
}
}
return $user;
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_creating'), "data" => $th->getMessage()));
}
}
public function importSubscribers(Request $request)
{
try {
$file = new SubscribersImport;
$file->request = $request;
Excel::import($file, $request->archivo);
return array('r' => true, 'd' => $file->answer, 'm' => trans('messages.screen_products_tag45') . ' ' . $file->edit['creados'] . ' creados.');
} catch (\Exception $e) {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_products_tag46') . $request->name_file . " " . $e->getMessage());
}
}
public function generateSubscribersCredit()
{
try {
$ifBlockedChairs = false;
$is_subscriber = true;
$userNotRegister = [];
$isBlockedChair = [];
$listAbonos = PreSubscriber::where([['payment', 0], ['is_credit', true]])->with('seat')->get();
if (count($listAbonos) == 0) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_12'), "data" => null));
}
$match_event = DB::table('match_events')
->select('match_events.id', 'match_events.name', 'match_events.season_id')
->join('seasons', 'seasons.id', '=', 'match_events.season_id')
->where([['seasons.is_suscription', true], ['seasons.active', true]])
->where([['match_events.event_start', '>', Carbon::now()], ['match_events.active', true]])
->first();
$ticketApiController = new TicketApiController();
$tickets = new TicketsController();
//for para validar si hay sillas bloqueadas en el mismo evento
foreach ($listAbonos as $seatsOccupied) {
$seat = Seat::where('id', $seatsOccupied->seat_id)->with('letter')->first();
if ($seat) {
if (isset($match_event)) {
$matchEventId = $match_event->id;
$validateLockedChair = $this->validateSubscriberInfo($seat->id, $matchEventId);
if ($validateLockedChair) {
$ifBlockedChairs = true;
$isBlockedChair[] = $seat->letter->name . $seat->code;
}
} else {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_20'), "data" => null));
}
}
}
foreach ($listAbonos as $item) {
$tickets_array = [];
$user_abono = User::where([['document', $item->document], ['email', $item->email], ['active', true]])->orderBy('last_session', 'desc')->first();
if (!$user_abono) {
$is_subscriber = false;
$userNotRegister[] = 'documento: ' . $item->document . ', correo: ' . $item->email;
} else {
$seat = Seat::where('id', $item->seat_id)->with('letter')->first();
if ($ifBlockedChairs) {
DB::rollback();
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_17'), "dataseat" => $isBlockedChair));
}
$data_ticket = array(
'seat' => $seat,
'match_event_id' => $match_event->id,
'ticket_type_id' => 2,
'match_event_price' => $item->price,
'zone_name' => $item->seat->zone_id,
'price' => $item->price,
'dataTicket' => array(
'checkedCtrl' => true
),
);
array_push($tickets_array, $data_ticket);
$request = new Request([
'tickets' => $tickets_array,
'type_process' => "block",
'amount' => $item->price,
'ticket_type_id' => 2,
'season_id' => $match_event->season_id,
]);
$data = $ticketApiController->createBlocks($request, $user_abono->id);
$response = json_decode($data->getContent());
if (!$response->r) {
return $data;
break;
}
$ticketsPending = TicketMain::where('id', $response->data)
->with(['ticket_user_blocks' => function ($q) {
$q->where('ticket_user_blocks.is_social_distancing', false);
}])
->where('payment_attempts', '<', $this->__PAYMENT_ATTEMPTS)
->first();
if (!$ifBlockedChairs) {
if (!$ticketsPending->ticket_user_blocks->isEmpty()) {
if (!$tickets->generateTickets($ticketsPending->ticket_user_blocks, $response->data)) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_14', ['seat' => $seat->letter->name . $seat->code]), "data" => null));
}
$ticketsPending->payment_state = "CONFIRMED";
$ticketsPending->payment_comment = "Abono tipo credito";
$ticketsPending->update();
}
}
}
}
if ($is_subscriber == false) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_19'), "data" => $userNotRegister));
}
return response(array("r" => true, "type" => "success", "m" => __('messages.create_ticket'), "data" => null));
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_global'), "data" => $th->getMessage()));
}
}
public function generateSubscribersRandom()
{
try {
$userNotRegister = [];
$countProcess = 0;
$listAbonos = PreSubscriber::where([['payment', 0], ['is_credit', true]])->with('seat')->get();
if (count($listAbonos) == 0) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_validation_12'), "data" => null));
}
$match_event = MatchEvent::where('event_start', '>', Carbon::now())->orderBy('created_at', 'desc')->first();
$tickets = new TicketsController();
foreach ($listAbonos as $item) {
$user_abono = User::where([['document', $item->document], ['active', true]])->orderBy('active', 'desc')->first();
if (!$user_abono) {
$userNotRegister[] = $item->document;
} else {
$old_main = Ticket::where([['user_id', $user_abono->id], ['match_event_id', 24]])->first();
if (!$old_main) {
$userNotRegister[] = $item->document . "-noticket";
} else {
$seat_id = 0;
$masive = new MassiveFansController();
$seats = $masive->getSeatsAvailableFromLocationAndEvent($item->seat->zone_id, 1, $match_event->id);
if (!$seats || count($seats) == 0) {
$seat_id = $item->seat_id;
} else {
$seat_id = $seats[0]->id;
}
$t = $tickets->createTicket($seat_id, $match_event->id, $user_abono->id, 2, $old_main->ticket_main_id, $item->price, true);
if (!$t instanceof \Illuminate\Database\Eloquent\Model) {
if (array_key_exists('r', $t)) {
if ($t['r'] == false) {
DB::rollback();
return array('r' => false, 'd' => $t['data'], 'm' => $t['m']);
}
}
}
$countProcess++;
$item->delete();
}
}
}
return response(array("r" => true, "type" => "error", "title" => "Oops...", "m" => __('messages.create_ticket') . " Numero total: " . $countProcess, "data" => $userNotRegister));
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_global'), "data" => $th->getMessage()));
}
}
public function deleteSubscribers()
{
try {
PreSubscriber::truncate();
return response(array("r" => true, "type" => "error", "title" => "Oops...", "m" => __('messages.deleted_successfully'), "data" => null));
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_global'), "data" => $th->getMessage()));
}
}
public function reportFansAll()
{
return Excel::download(new FansExport, trans('messages.subcategories_controller_tag13') . '.xlsx');
}
public function deleteClient(Request $request)
{
$userId = $request->userId;
$logObj = User::find($userId);
$this->deleteUser($userId);
// Log
$this->registerLog(Auth::user()->id, 'Elimino cliente', json_encode($logObj), "Delete", $this->getModule($request));
return array('r' => true, 'm' => trans('messages.controller_other_users_tag1'));
}
public function getById($id)
{
return User::find($id);
}
public function validateExport(Request $request, CustomerTableService $customerTableService)
{
$report = new ClientsExport();
$query = $customerTableService->getTableQuery($request);
$report->setQuery($query);
if ($report->query()->first()) {
$name = 'Clientes_' . date("Ymd_His") . '.xlsx';
Excel::store($report, $name, 'public');
return response()->json(['success' => true, 'message' => 'Validación OK', 'data' => $name]);
}
return response()->json(['success' => false, 'message' => 'No existen datos a exportar']);
}
public function export($name)
{
return $this->util->export($name);
}
public function templateImportSegmentation()
{
return Excel::download(new UserSegmentationTemplate, trans('messages.controller_client_tag5') . '.xlsx');
}
public function importSegmentation(Request $request)
{
try {
$file = new UserSegmentationImport;
$file->request = $request;
Excel::import($file, $request->archivo);
return array('r' => true, 'd' => $file->answer, 'm' => trans('messages.screen_products_tag45') . ' ' . $file->edit['creados'] . ' creados.');
} catch (\Exception $e) {
return array('r' => false, 'd' => null, 'm' => trans('messages.screen_products_tag46') . $request->name_file . " " . $e->getMessage());
}
}
function validateSubscriberInfo($seat, $match_event)
{
$lockedChair = TicketUserBlock::where([['seat_id', $seat], ['match_event_id', $match_event]])->first();
if ($lockedChair) {
return true;
} else {
return false;
}
}
public function deletePreSubscriber(Request $request)
{
$preSubscriber = PreSubscriber::find($request->id);
$logObj = $preSubscriber;
$preSubscriber->delete();
$this->registerLog(Auth::user()->id, 'Elimino PreSubscriber', json_encode($logObj), "Delete", $this->getModule($request));
$data = array('r' => true, 'm' => trans('messages.subscribers.controller_delete_tag1'));
return response()->json($data, 200);
}
public function correctUserRecords($email = null)
{
if (in_array(Auth::user()->rol->id, [$this->__SUPERADMIN_ROL])) {
if ($email)
$users = User::select('id', 'created_at')->where('email', $email)->withTrashed()->get();
else
$users = User::select('id', 'created_at')->withTrashed()->get();
if (!count($users))
return 'No existen usuarios a corregir';
$userInformations = UserInformation::get();
if ($email) {
UserInformation::where('user_id', $users[0]->id)->delete();
} else {
UserInformation::truncate();
}
foreach ($users as $user) {
$id = $user->id;
$info = $userInformations->filter(function ($data) use ($id) {
return $data->user_id == $id;
})->first();
if (!$info) {
$info = new UserInformation();
$info->user_id = $id;
$info->is_initial = 1;
$info->is_tutorial_viewed = 1;
$info->is_habeas_data_viewed = 1;
$info->created_at = $user->created_at;
$info->save();
} else {
$info->id = $id;
UserInformation::create($info->toArray());
}
}
return 'Proceso ejecutado exitosamente: Total usuarios revisados => ' . count($users);
}
return 'Proceso no ejecutado por permisos';
}
public function deleteUser($userId)
{
$user = User::find($userId);
if ($user) {
TermClient::where('user_id', $userId)->delete();
UserInformation::where('user_id', $userId)->delete();
User::where('id', $userId)->delete();
}
}
public function getByEmail($email)
{
return User::select('id', 'first_name', 'last_name', 'document', 'phone')->where('email', $email)->first();
}
public function getByDocument($document)
{
return User::select('id', 'first_name', 'last_name', 'document', 'phone', 'email')
->where('document', $document)
->get();
}
private function tableFilterClientCustomColumns($dataTable)
{
$dataTable->addColumn('actions', function ($obj) {
$cards = $obj->cards;
if ($this->validateRolePermissions('user', 'administrator') || $this->validateRolePermissions('user', 'supervisor')) {
$actions = '
<i class="fa fa-eye iconMini" onClick="clickInfoClient(' . $obj->id . ')" data-id="' . $obj->id . '" title="Información"></i>
<i class="fa fa-pencil iconMini" onClick="clickEditClient(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
<i class="fa fa-trash iconMini" onClick="clickDeleteClient(' . $obj->id . ')" data-id="' . $obj->id . '" title="Eliminar"></i>
';
if ($cards) {
$first_name = "'$obj->first_name'";
$last_name = "'$obj->last_name'";
$document = "'$obj->document'";
$documentType = "'$obj->documentTypeAlias'";
if (gettype($cards) == 'string') {
$items = explode(',', $cards);
$cards = [];
foreach ($items as $item) {
if ($item) {
$cards[] = $item;
}
}
$cards = implode($cards);
}
$actions .= '<i class="fa fa-id-card-o iconMini" onClick="loadCards(' . $obj->id . ', ' . $first_name . ', ' . $last_name . ', ' . $document . ', ' . $documentType . ', ' . $cards . ')" data-id="' . $obj->id . '" title="Carnés"></i>';
}
return $actions;
} elseif ($this->validateRolePermissions('user', 'seller')) {
return '<i class="fa fa-eye iconMini" onClick="clickInfoClient(' . $obj->id . ')" data-id="' . $obj->id . '" title="Información"></i>';
} else {
return '';
}
})
->addColumn('segmentation', function ($obj) {
return $obj->segmentation;
})
->addColumn('terms_conditions', function ($obj) {
return $obj->terms_conditions;
})
->addColumn('accepted', function ($obj) {
return $obj->accepted;
})
->addColumn('cards', function ($obj) {
return $obj->cards;
})
->editColumn('active', function ($obj) {
if ($this->validateRolePermissions('ticketing', 'administrator') || $this->validateRolePermissions('ticketing', 'supervisor')) {
if ($obj->active == 0) {
return '<div class="switch"><label><div class="checkbox checbox-switch switch-success"> <label> ' . __('messages.no') . ' <input type="checkbox" onChange="chkClient(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" /> <span></span>' . __('messages.yes') . ' </label></div> </label> </div>';
} else {
return '<div class="switch"><label> <div class="checkbox checbox-switch switch-success"> <label> ' . __('messages.no') . ' <input type="checkbox" onChange="chkClient(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
<span></span> ' . __('messages.yes') . ' </label> </div> </label> </div>';
}
} else {
return $obj->active == 1 ? 'SI' : 'NO';
}
})
->editColumn('time_session', function ($obj) {
return \Carbon\Carbon::parse($obj->time_session)->format('h:i:s A');
})
->editColumn('sex', function ($obj) {
return $this->util->getFullSexText($obj->sex);
})
->rawColumns(['active', 'actions']);
}
}