File: /var/www/vhost/disk-apps/agile-selling-wpb/app/Http/Controllers/UserController.php
<?php
namespace App\Http\Controllers;
use App\Address;
use App\BoEmployeeInformation;
use App\BoPriceList;
use App\BoSalesPerson;
use App\City;
use App\CourierCompany;
use App\Discount;
use App\DiscountOrderUser;
use App\Http\Controllers\AddressController;
use App\Order;
use App\Parameter;
use App\Rol;
use App\Sucursal;
use App\User;
use App\UserInformation;
use Datatables;
use DateTime;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use \Excel;
use Illuminate\Database\Eloquent\Builder;
use App\Http\Controllers\Exports\ReportClients;
use App\Http\Controllers\Exports\ReportClientsNever;
use App\Http\Controllers\Exports\ReportClientsFifteen;
class UserController extends Controller
{
public function __construct(Request $request)
{
$this->middleware('auth');
// $this->middleware(function ($request, $next) {
// $this->user = Auth::user();
// if (Auth::user()->rol->id == 1 || Auth::user()->rol->id == 6) {
// $this->changeDbDefault($request);
// }
// return $next($request);
// });
}
public function indexClient()
{
$clients = User::orderBy('first_name', 'ASC')->where("rol_id", 4)->get();
return view('users.clients')->with('clients', $clients);
}
public function indexDelivery()
{
$sucursal = Auth::user()->userInfo->sucursal->id;
// $rol = Auth::user()->rol->id;
// if ($rol == 1 || $rol == 6) {
$deliveryMan = User::orderBy('first_name', 'ASC')->where("rol_id", 3)->get();
// } else {
// $deliveryMan = User::where("rol_id", 3)
// ->whereHas('userInfo', function (Builder $query) use ($sucursal) {
// $query->where('sucursal_id', $sucursal);
// })
// ->orderBy('first_name', 'ASC')->get();
// }
$sucursals = Sucursal::where('active', 1)->get();
return view('users.deliveryMan')
->with('deliveryMan', $deliveryMan)
->with('sucursals', $sucursals);
}
public function indexAdmin()
{
// $rol = Auth::user()->rol->id;
// if ($rol == 1 || $rol == 6) {
$admins = User::where('rol_id', '!=', 3)->orWhere('rol_id', '!=', 4)->orderBy('first_name', 'ASC')->get();
$rols = Rol::all();
$sucursals = Sucursal::where('active', 1)->get();
return view('users.admins')->with('admins', $admins)->with('rols', $rols)->with('sucursals', $sucursals);
// } else {
// return redirect()->back();
// }
}
public function indexAddClient()
{
$cities = City::where('active', 1)->get();
$parameters = Parameter::first();
$return = view('users.addClients')->with('cities', $cities)->with('parameters', $parameters);
if($parameters->b1_activate){
$price_lists = BoPriceList::all();
$return->with('price_lists', $price_lists);
}
return $return;
}
public function indexAddDelivery()
{
$sucursals = Sucursal::where('active', 1)->get();
$courier = CourierCompany::all();
return view('users.addDeliveryMan')->with('sucursals', $sucursals)->with('courier', $courier);
}
public function indexAddAdmin()
{
$sucursals = Sucursal::where('active', 1)->get();
$rols = Rol::where('id', '!=', 3)->orWhere('id', '!=', 4)->get();
$bo_sales_persons = BoSalesPerson::where('active', true)->get();
return view('users.addAdmin')->with('sucursals', $sucursals)->with('rols', $rols)->with('bo_sales_persons', $bo_sales_persons);
}
public function indexEditClient($id)
{
$client = User::find($id);
$directions = Address::where('user_id', $id)->get();
$cities = City::where('active', 1)->get();
$parameters = Parameter::first();
$return = view('users.editClients')->with('client', $client)->with('directions', $directions)->with('cities', $cities)->with('parameters', $parameters);
if($parameters->b1_activate){
$price_lists = BoPriceList::all();
$return->with('price_lists', $price_lists);
}
return $return;
}
public function indexEditDeliveryMan($id)
{
$deliveryM = User::find($id);
$info = UserInformation::where('user_id', $id)->first();
$sucursals = Sucursal::where('active', 1)->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)->get();
$rols = Rol::where('id', '!=', 3)->orWhere('id', '!=', 4)->get();
$bo_sales_persons = BoSalesPerson::where('active', true)->get();
return view('users.editAdmin')->with('admin', $admin)->with('sucursals', $sucursals)->with('rols', $rols)->with('info', $info)->with('bo_sales_persons', $bo_sales_persons);
}
public function createClient(Request $request, $is_ticket = false)
{
$parameters = Parameter::where('id', 1)->first();
$accountInfo = array(
'rol' => 4, // Rol para cliente
'name_database' => $parameters->db_name,
'accountInfo' => array(
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"],
'identificationCard' => $request["document"],
),
);
$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_client_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_client_tag3'));
}
}
// Peticion a Central para crear el "Cliente"
$client = new \GuzzleHttp\Client([
'base_uri' => env('CENTRAL_URL'),
'defaults' => [
'exceptions' => false,
],
]);
$responseGuzzle = $client->post('/api/user/signup/admin', [
\GuzzleHttp\RequestOptions::JSON => $accountInfo,
'headers' => [
'Accept' => 'application/json',
],
]);
$body = (string) $responseGuzzle->getBody();
$remoteUser = json_decode($body);
if ($remoteUser->status != "success") {
return array('r' => false);
}
$logObj = $remoteUser;
$this->registerLog(Auth::user()->id, 'Creó cliente', json_encode($logObj), "Create", 3);
// Actualizar campos nuevos create client
if($parameters->b1_activate){
$userToUpd = User::find($remoteUser->user->id);
$userToUpd->bo_price_list_id = $request["bo_price_list_id"];
$userToUpd->update();
}
if(!$is_ticket){
$address = new AddressController;
$idAddress = $address->create("", $request["direction"], $request["district"], $request["indications"], $request["lat"], $request["long"], $request["city_id"], $remoteUser->user->id);
if ($idAddress == true) {
return array('r' => true, 'm' => trans('messages.controller_client_tag1'), 'id' => $remoteUser->user->id);
} else {
$user = User::find($remoteUser->user->id);
$userInfo = UserInformation::where('user_id', $user->id)->first();
$userInfo->forceDelete();
$user->forceDelete();
$client = new \GuzzleHttp\Client([
'base_uri' => env('CENTRAL_URL'),
'defaults' => [
'exceptions' => false,
],
]);
$responseGuzzle = $client->get('/api/user/delete/signup/admin/' . $remoteUser->user->id, [
'headers' => [
'Accept' => 'application/json',
],
]);
$body = (string) $responseGuzzle->getBody();
return array('r' => false);
}
}
return array('r' => true,'d'=> $remoteUser->user);
}
public function createDeliveryMan(Request $request)
{
$parameters = Parameter::where('id', 1)->select('id', 'db_city', 'db_name')->first();
$accountInfo = array(
'rol' => 3, // Rol para mensajero
'name_database' => $parameters->db_name,
'accountInfo' => array(
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"],
'identificationCard' => $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'));
}
}
}
// Peticion a Central para crear el "Mensajero"
$client = new \GuzzleHttp\Client([
'base_uri' => env('CENTRAL_URL'),
'defaults' => [
'exceptions' => false,
],
]);
$responseGuzzle = $client->post('/api/user/signup/admin', [
\GuzzleHttp\RequestOptions::JSON => $accountInfo,
'headers' => [
'Accept' => 'application/json',
],
]);
$body = (string) $responseGuzzle->getBody();
$remoteUser = json_decode($body);
$logObj = $remoteUser;
$this->registerLog(Auth::user()->id, 'Creó mensajero', json_encode($logObj), "Create", 5);
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::where('id', 1)->select('id', 'db_city', 'db_name')->first();
$accountInfo = array(
'rol' => $request["rol_id"], // Rol para cliente
'name_database' => $parameters->db_name,
'accountInfo' => array(
'name' => $request["first_name"],
'lastName' => $request["last_name"],
'cellPhone' => $request["phone"],
'email' => $request["email"],
'password' => $request["password"],
'identificationCard' => $request["document"],
'courier_company_id' => null,
'sucursal_id' => $request["sucursal_id"],
'plate' => null,
'bo_sales_people_id' => $request["bo_sales_people_id"]
),
);
//$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'));
}
}
// Peticion a Central para crear el "Cliente"
$client = new \GuzzleHttp\Client([
'base_uri' => env('CENTRAL_URL'),
'defaults' => [
'exceptions' => false,
],
]);
$responseGuzzle = $client->post('/api/user/signup/admin', [
\GuzzleHttp\RequestOptions::JSON => $accountInfo,
'headers' => [
'Accept' => 'application/json',
],
]);
$body = (string) $responseGuzzle->getBody();
$remoteUser = json_decode($body);
if ($remoteUser->status != "success") {
return array('r' => false);
}
$logObj = $remoteUser;
$this->registerLog(Auth::user()->id, 'Creó admin', json_encode($logObj), "Create", 5);
return array('r' => true, 'm' => trans('messages.controller_admin_tag1'));
}
public function updateClient(Request $request)
{
$user = User::find($request["id"]);
$logObj = $user;
$user->first_name = $request["first_name"];
$user->last_name = $request["last_name"];
$user->phone = $request["phone"];
$user->email = $request["email"];
$user->popup_active = $request["popup_active"];
$user->popup_text = $request["popup_text"];
$user->required_po = $request["required_po"];
$user->bo_price_list_id = $request["bo_price_list_id"] ? $request["bo_price_list_id"] : null;
if(isset($request["password"])){
$user->password = \Hash::make($request["password"]) ;
}
$user->document = $request["document"];
$user->rol_id = 4;
$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 $key => $direction) {
if ($direction->id == $idAddress) {
$direction->last_used = 1;
} else {
$direction->last_used = 0;
}
$direction->update();
}
$user->update();
//log
$this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj) , "update", 5);
return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// if ($request["document"] == null && $request["email"] == null) {
// $user->update();
// //log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj)
// , "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// }
// if ($request["document"] != null && $request["email"] == null) {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj)
// , "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// }
// if ($request["document"] == null && $request["email"] != null) {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj)
// , "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// }
// $r = User::where([['id', '!=', $request["id"]],["document", $user->document]])->get();
// $email = User::where([['id', '!=', $request["id"]],["email", "=", $user->email]])->first();
// if (count($r) > 0) {
// if (($r[0]->id) == ($request["id"])) {
// if ($email) {
// if ($email->id == $user->id) {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj), "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// } else {
// return array('r' => false, 'm' => trans('messages.controller_client_tag3'));
// }
// } else {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj), "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// }
// } else {
// return array('r' => false, 'm' => trans('messages.controller_client_tag2'));
// }
// } else {
// if ($email) {
// if ($email->id == $user->id) {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj), "update", 5);
// return array('r' => true, 'm' => trans('messages.controller_client_tag4'));
// } else {
// return array('r' => false);
// }
// } else {
// $user->update();
// // Log
// $this->registerLog(Auth::user()->id, 'Se modifico la información del cliente', json_encode($logObj), "update", 5);
// 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"]);
$userC = new User();
$userC->setConnection('main-db');
$userUpdate = $userC->where('id', $user->id)->first();
$userUpdate->password = \Hash::make($request["password"]);
$userUpdate->save();
}
$r = User::where("document", "=", $user->document)->get();
$email = User::where("email", "=", $user->email)->get();
if (count($r) > 0) {
if (($r[0]->id) == ($request["id"])) {
if (count($email) > 0) {
if ($email[0]->id == $user->id) {
$user->update();
$this->updateInfoDelivery($request["plate"], $request["id"], $request["courier_company_id"], $request["sucursal_id"]);
// Log
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag3'));
}
} else {
$user->update();
$this->updateInfoDelivery($request["plate"], $request["id"], $request["courier_company_id"], $request["sucursal_id"]);
// Log
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
}
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag2'));
}
} else {
if (count($email) > 0) {
if ($email[0]->id == $user->id) {
$user->update();
$this->updateInfoDelivery($request["plate"], $request["id"], $request["courier_company_id"], $request["sucursal_id"]);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag3'));
}
} else {
$user->update();
$this->updateInfoDelivery($request["plate"], $request["id"], $request["courier_company_id"], $request["sucursal_id"]);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
}
}
}
public function updateAdmin(Request $request)
{
// dd($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"];
$user->bo_sales_people_id = $request["bo_sales_people_id"] ? $request["bo_sales_people_id"] : null;
if (!empty($request["password"])) {
$user->password = \Hash::make($request["password"]);
}
$r = User::where("document", "=", $user->document)->get();
$email = User::where("email", "=", $user->email)->get();
if (count($r) > 0) {
//if (($r[0]->id) == ($request["id"])) {
if (count($email) > 0) {
if ($email[0]->id == $user->id) {
$user->update();
$info = UserInformation::where('user_id', $request["id"])->first();
$info->sucursal_id = $request["sucursal_id"];
$info->update();
// Log
return array('r' => true, 'm' => trans('messages.controller_admin_tag4'));
} else {
return array('r' => false, 'm' => trans('messages.controller_admin_tag3'));
}
} else {
$user->update();
$info = UserInformation::where('user_id', $request["id"])->first();
$info->sucursal_id = $request["sucursal_id"];
$info->update();
// Log
return array('r' => true, 'm' => trans('messages.controller_admin_tag4'));
}
//} else {
// return array('r' => false, 'm' => trans('messages.controller_admin_tag2'));
//}
} else {
if (count($email) > 0) {
if ($email[0]->id == $user->id) {
$user->update();
$info = UserInformation::where('user_id', $request["id"])->first();
$info->sucursal_id = $request["sucursal_id"];
$info->update();
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag4'));
} else {
return array('r' => false, 'm' => trans('messages.controller_deliveryMan_tag3'));
}
} else {
$user->update();
$info = UserInformation::where('user_id', $request["id"])->first();
$info->sucursal_id = $request["sucursal_id"];
$info->update();
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_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::with('boPriceList')->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 = env('AWS_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", 6);
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)
{
$id = $request['id'];
$user = User::find($id);
$logObj = $user;
$user->delete();
// Log
$this->registerLog(Auth::user()->id, 'Elimino mensajero', json_encode($logObj)
, "Delete", 6);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag6'));
}
public function deleteAdmin(Request $request)
{
$id = $request['id'];
$user = User::find($id);
$logObj = $user;
$user->delete();
// Log
$this->registerLog(Auth::user()->id, 'Elimino administrador', json_encode($logObj)
, "Delete", 6);
return array('r' => true, 'm' => trans('messages.controller_admin_tag6'));
}
public function tableFilterClient()
{
$obj = $obj = DB::table('users')
->select('users.id', 'users.first_name', 'users.last_name', 'users.email', 'users.active')->where('users.rol_id', 4);
return Datatables::of($obj)
->addColumn('actions', function ($obj) {
if(Auth::user()->rol_id == 1 || Auth::user()->rol_id == 2){
return '<i class="fa fa-eye iconMini " onClick="clickInfoClient(' . $obj->id . ')" name="btnEditar" 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>';
}elseif (Auth::user()->rol_id == 7 || Auth::user()->rol_id == 8) {
return '<i class="fa fa-eye iconMini " onClick="clickInfoClient(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" title="Información"></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="chkClient(' . $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="chkClient(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" /> <span></span> Si </label> </div> </label> </div>';
}
})
->rawColumns(['active', 'actions'])
->make(true);
}
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')->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="Modificar"></i> <i class="fa fa-trash iconMini " onClick="clickDeleteDeliveryMan(' . $obj->id . ')" data-id="' . $obj->id . '" title="Borrar"></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>';
}
})
->rawColumns(['active', 'actions', 'multiple_session', 'online'])
->make(true);
}
public function tableFilterAdmins()
{
$obj = $obj = DB::table('users')
->join('rols', 'rols.id', '=', 'users.rol_id')
->select('users.id', 'users.first_name', 'users.last_name', 'users.email', 'users.active', 'rols.name as rol')
->orWhere(function ($query) {
$query->orWhere('users.rol_id', 1);
$query->orWhere('users.rol_id', 2);
$query->orWhere('users.rol_id', 7);
$query->orWhere('users.rol_id', 8);
$query->orWhere('users.rol_id', 9);
$query->orWhere('users.rol_id', 10);
$query->orWhere('users.rol_id', 11);
$query->orWhere('users.rol_id', 12);
})->whereNull('users.deleted_at');
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="Modificar"></i> <i class="fa fa-trash iconMini " onClick="clickDeleteAdmins(' . $obj->id . ')" data-id="' . $obj->id . '" title="Borrar"></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>';
}
})
->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::all();
$parameters = $parameters->last();
$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,
];
}
// dd($results);
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 autocompleteMail(Request $request)
{
$term = $request->input('term');
$results = array();
$queries = DB::table('users')
->where('email', 'LIKE', '%' . $term . '%')
->where('rol_id', 4)
->take(5)->get();
$parameters = Parameter::all();
$parameters = $parameters->last();
$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),
];
}
// dd($results);
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(env('S3_DELIVERYMAN_PATH') . $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", 3);
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(env('S3_DELIVERYMAN_PATH') . $image);
$num_ram = rand(1, 999);
$extension = $request->file('photo')->getClientOriginalExtension();
$filenametostore = $num_ram . time() . '.' . $extension;
Storage::disk('s3')->put(env('S3_DELIVERYMAN_PATH') . $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", 3);
return array('r' => true, 'm' => trans('messages.controller_deliveryMan_tag9'), 'file' => env('AWS_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 ReportClientsNever, trans('messages.controller_deliveryMan_tag10').'.xlsx');
}
public function reportClientFifteen()
{
return Excel::download(new ReportClientsFifteen, 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 = "")
{
try {
if($document && $document != ""){
return User::select('id','first_name','last_name','document','phone','email')->where('document', $document)->first();
}else if($email && $email != ""){
$user = User::select('id','first_name','last_name','document','phone','email')->where('email', $email)->first();
if($user){
$user->first_name = $first_name;
$user->last_name = $last_name;
$user->document = $document ? $document : "";
$user->phone = $phone ? $phone : "";
$user->update();
return $user;
}
}
return null;
} catch (\Throwable $th) {
return response(array("r" => false, "type" => "error", "title" => "Oops...", "m" => __('messages.error_creating'), "data" => $th->getMessage()));
}
}
}