<?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);
}
}