HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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'));
        }
     }

}