File: /var/www/vhost/disk-apps/agile-selling-wpb/app/Http/Controllers/SucursalController.php
<?php
namespace App\Http\Controllers;
use App\City;
use App\Coverage;
use App\Http\Controllers\AddressController;
use App\State;
use App\Sucursal;
use App\User;
use App\Parameter;
use Datatables;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class SucursalController 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 index()
{
// $rol = Auth::user()->rol->id;
// if ($rol == 1 || $rol == 6) {
$sucursals = Sucursal::orderBy('name', 'ASC')->get();
return view('sucursals.sucursals')->with('sucursals', $sucursals);
// } else {
// return redirect()->back();
// }
}
public function indexAdd()
{
$coverages = Coverage::all();
$cities = City::where('active', 1)->get();
$states = State::where('active', 1)->get();
return view('sucursals.addSucursal')
->with('coverages', $coverages)
->with('states', $states)
->with('cities', $cities);
}
public function create(Request $request)
{
$userV = User::where('email',$request["mail"])->first();
if($userV){
return array('r' => false, 'm' => trans('messages.controller_sucursal_tag5'));
}
$user = $this->createUser($request);
if($user->status != "success"){
return array('r' => false, 'm' => trans('messages.controller_sucursal_tag4'));
}
$logObj = $user;
$this->registerLog(Auth::user()->id, 'creo cliente sucursal', json_encode($logObj), "Create", 3);
if ($user) {
$address = new AddressController;
$idAddress = $address->create("", $request["direction"], $request["district"], $request["indications"], $request["lat"], $request["long"], $request["city_id"], $user->user->id);
} else {
return array('r' => false, 'm' => trans('messages.controller_sucursal_tag4'));
}
$sucursal = new Sucursal();
$sucursal->code = $request["code"];
$sucursal->coverage_id = $request["coverage_id"];
$sucursal->city_id = $request["city_id"];
$sucursal->name = $request["name"];
$sucursal->phone = $request["phone"];
$sucursal->mail = $request["mail"];
$sucursal->active = true;
$sucursal->address_id = $idAddress;
$sucursal->save();
$logObj = $sucursal;
$this->registerLog(Auth::user()->id, 'Creó sucursal', json_encode($logObj), "Create", 5);
return array('r' => true, 'm' => trans('messages.controller_sucursal_tag1'), 'd' => $sucursal->id);
}
public function createUser($request){
$parameters = Parameter::where('id',1)->select('id', 'db_city', 'db_name')->first();
$accountInfo = array(
'rol' => 4, // Rol para cliente
'name_database' => $parameters->db_name,
'accountInfo' => array(
'name' => $request["name"],
'lastName' => '',
'cellPhone' => $request["phone"],
'email' => $request["mail"],
'password' => '#PassSucurlsa2018.',
'identificationCard' => $request["code"],
)
);
// 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);
}
return $remoteUser;
}
public function getAll()
{
$sucursals = Sucursal::where('active', 1)->with('address')->get();
return array('r' => true, 's' => $sucursals->toArray());
}
public function getCities(Request $request)
{
$cities = City::where('state_id', $request["id"])->where('active', 1)->get();
return array('r' => true, 'c' => $cities);
}
public function indexEdit($id)
{
$sucursal = Sucursal::find($id);
$coverages = Coverage::all();
$cities = City::where('active', 1)->get();
$states = State::where('active', 1)->get();
return view('sucursals.editSucursal')
->with('sucursal', $sucursal)
->with('coverages', $coverages)
->with('states', $states)
->with('cities', $cities);
}
public function update(Request $request)
{
$sucursal = Sucursal::find($request["id"]);
$logObj = $sucursal;
$sucursal->code = $request["code"];
$sucursal->coverage_id = $request["coverage_id"];
$sucursal->city_id = $request["city_id"];
$sucursal->name = $request["name"];
$sucursal->phone = $request["phone"];
$sucursal->mail = $request["mail"];
$sucursal->active = true;
if ($request["direction_id"] == "") {
$address = new AddressController;
$idAddress = $address->create("", $request["direction"], $request["district"], $request["indications"], $request["lat"], $request["long"], $request["city_id"], Auth::user()->id);
$sucursal->address_id = $idAddress;
$sucursal->update();
$this->registerLog(Auth::user()->id, 'Actualizó sucursal y creo direccion nueva', json_encode($logObj)
, "Update", 5);
return array('r' => true, 'm' => trans('messages.controller_sucursal_tag2'));
} else {
$address = new AddressController;
$updateAddress = $address->update($request["direction_id"], "", $request["district"], $request["indications"]);
if ($updateAddress) {
$sucursal->update();
$this->registerLog(Auth::user()->id, 'Actualizó sucursal', json_encode($logObj)
, "Update", 5);
return array('r' => true, 'm' => trans('messages.controller_sucursal_tag2'));
return $arr;
} else {
$arr = array('response' => false);
return $arr;
}
}
}
public function deleteSucursal(Request $request)
{
$sucursal = Sucursal::find($request['id']);
$logObj = $sucursal;
$sucursal->delete();
$this->registerLog(Auth::user()->id, 'Eliminó sucursal', json_encode($logObj)
, "Delete", 5);
return array('r' => true, 'm' => trans('messages.controller_sucursal_tag3'));
}
public function activateSucursal(Request $request)
{
$id = $request['id'];
$state = $request['state'];
$sucursal = Sucursal::find($id);
$logObj = $sucursal;
$sucursal->active = $state;
$sucursal->update();
// Log
$this->registerLog(Auth::user()->id, 'Actualizó campo active de sucursal', json_encode($logObj)
, "Update", 5);
return array('r' => true, 'm' => trans('messages.controller_sucursal_tag2'));
}
public function getSucursal(Request $request)
{
$id = $request["id"];
$sucursal = Sucursal::find($id);
$sucursal->city_id = $sucursal->city->name;
$sucursal->coverage_id = $sucursal->coverage->name;
$sucursal->direction_id = $sucursal->address->direction;
return $sucursal->toArray();
}
public function tableFilter()
{
$obj = $obj = DB::table('sucursals')
->join('addresses', 'addresses.id', '=', 'sucursals.address_id')
->select('sucursals.id', 'sucursals.name', 'sucursals.code', 'sucursals.phone', 'sucursals.image', 'sucursals.active', 'addresses.direction as direction')->whereNull('sucursals.deleted_at');
return Datatables::of($obj)
->editColumn('image', function ($obj) {
if ($obj->image == '') {
return '<div class="media-left">
<img src="' . env('AWS_URL') . '/public/no_image.png" class="media-object" alt="' . $obj->name . '">
</div>';
} else {
return '<div class="media-left">
<img src="' . env('AWS_URL') . '/sucursals/' . $obj->image . '" class="media-object" alt="' . $obj->name . '">
</div>';
}
})
->addColumn('actions', function ($obj) {
return '<i class="fa fa-eye iconMini " onClick="clickInfoSucursal(' . $obj->id . ')" name="btnEditar" data-id="' . $obj->id . '" title="Información"></i>
<i class="fa fa-pencil iconMini " onClick="clickEditSucursal(' . $obj->id . ')" data-id="' . $obj->id . '" title="Editar"></i>
<i class="fa fa-trash iconMini " onClick="clickDeleteSucursal(' . $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="chkSucursal(' . $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="chkSucursal(' . $obj->id . ')" data-id="' . $obj->id . '" id="Checkactive' . $obj->id . '" name="Checkactivo" checked="" />
<span></span> Si </label> </div> </label> </div>';
}
})
->rawColumns(['active', 'actions', 'image'])
->make(true);
}
public function saveImage(Request $request){
$sucursal_id = $request["sucursal_id"];
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $request["sucursal_name"].'.'.$extension;
Storage::disk('s3')->put(env('S3_SUCURSALS_PATH').$filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = Sucursal::where('id', $sucursal_id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm'=> trans('messages.controller_sucursal_tag1'));
}else{
return array('r' => false,'d' => null, 'm'=> trans('messages.controller_sucursal_tag6'));
}
}
public function updateImage(Request $request){
$sucursal_id = $request["sucursal_id"];
$sucursal = Sucursal::find($sucursal_id);
Storage::disk('s3')->delete(env('S3_SUCURSALS_PATH').$sucursal->image);
$extension = $request->file('image')->getClientOriginalExtension();
$filenametostore = $sucursal->name.'.'.$extension;
Storage::disk('s3')->put(env('S3_SUCURSALS_PATH').$filenametostore, fopen($request->file('image'), 'r+'), 'public');
$status = Sucursal::where('id', $sucursal_id)->update(['image' => $filenametostore]);
if ($status) {
return array('r' => true, 'd' => null, 'm'=> trans('messages.controller_sucursal_tag2'));
}else{
return array('r' => false,'d' => null, 'm'=> trans('messages.controller_sucursal_tag7'));
}
}
}