• File: BusinessController.php
  • Full Path: /var/www/sandbox/app/Http/Controllers/BusinessController.php
  • Date Modified: 07/01/2024 8:13 PM
  • File size: 3.04 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Store;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Route;
use Laravel\Passport\Client;

class BusinessController extends Controller
{

    private $client;

    public function __construct()
    {
        $this->client = Client::find(27);
    }

    public function login(Request $request)
    {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required'
        ], [
            'username.required' => 'O Campo username é Obrigatório',
            'password.required' => 'O Campo Senha é Obrigatório',
        ]);

        $params = [
            'grant_type' => 'password',
            'client_id' => $this->client->id,
            'client_secret' => $this->client->secret,
            'username' => request('username'),
            'password' => request('password'),
            'provider' => 'users',
            'scope' => '*'
        ];

        // return $request->username . ' ' . $request->password . ' ' . $params['client_id'];

        $request->request->add($params);

        Config::set('auth.guards.business-api.provider', $params['provider']);

        $proxy = Request::create('oauth/token', 'POST');

        return Route::dispatch($proxy);
    }

    // Get Authenticated User
    public function getUser()
    {
        return response()->json(User::getUserAccount());
    }

    // LOJAS CONTA EMPRESA
    public function getAllStores(Request $request)
    {
        // $profile = User::getUserDetails(auth()->user()->id)->profile;
        $user = User::getUserDetails(auth()->user()->id)->account_id;

        $perPage = !!$request->input('per_page') ? $request->input('per_page') : 10;
        $orderType = $request->input('order_type') === 'ASC' ? 'ASC' : 'DESC';
        $orderBy = !!$request->input('order_by') && $request->input('order_by') !== 'null' ? $request->input('order_by') : 'stores.id';

        $stores = Store::query()
            // ->join('users', 'users.id', '=', 'stores.user_id')
            ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
            ->join('merchant_contracts', 'stores.merchant_contract_id', '=', 'merchant_contracts.id')
            ->select(
                'stores.*',
                'ramo_activities.nome as industry',
                'merchant_contracts.id as merchant_contract_id',
                'merchant_contracts.taxa',
                'merchant_contracts.max_balance',
                'merchant_contracts.nr_transaction',
                'merchant_contracts.min_amount',
                'merchant_contracts.max_amount',
                'merchant_contracts.use_point_limit',
                'stores.name as store_name',
                'stores.id as id_store'
            )
            // ->where('users.profile', $profile)
            ->where('stores.business_account_id', $user)
            ->orderBy($orderBy, $orderType)
            ->paginate($perPage);

        return response()->json(['data' => $stores], 200);
    }
}