• File: MerchantKyC.php
  • Full Path: /var/www/imaliapitest/app/Classes/MerchantKyC.php
  • Date Modified: 05/19/2025 4:29 PM
  • File size: 2.33 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php


namespace App\Classes;


use App\Imali\ImaliAccount;
use App\Imali\ImaliAccountConfig;
use App\Imali\MerchantAccount;
use App\Store;
use App\UserClient;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class MerchantKyC
{
    public function checkMerchant(Request $request)
    {
        $merchant = MerchantAccount::query()
            ->where('id', $request->user()->id)
            ->first();

        $merchantActivo = MerchantAccount::query()
            ->where('id', $request->user()->id)
            ->where('status', '=', 'activa')
            ->first();

        if (!$merchant) {
            return response()->json(['message' => 'Comerciante Inválido'], 400);
        }
        if (!$merchantActivo) {
            return response()->json(['message' => 'Está conta tem problemas: Estado da conta ' . $merchantActivo->status], 400);
        }

        if (!Hash::check($request->password, $merchant->password)) {
            return response()->json(['message' => 'Pin Incorrecto'], 400);
        }
        $imaliConfig = ImaliAccountConfig::find($request->user()->kyc_config_id);
        if ($request->amount + $imaliConfig->taxa_refund_mechant > $merchant->balance) {
            return response()->json(['message' => 'Saldo Insuficiente'], 400);
        }
//        $store = Store::query()
//            ->where('id', $request->store_id)
//            ->where('merchant_account_id', $request->user()->id)
//            ->first();
//
//        if (!$store) {
//            return response()->json(['message' => 'Não tem permissão sobre essa loja'], 400);
//        }
        $imaliUser = ImaliAccount::query()
            ->where('account_number', $request->account_number)
            ->first();

        if (!$imaliUser) {
            return response()->json(['message' => 'Conta i.Mali inválida'], 400);
        }

        $token = str_replace('Bearer ', '', $request->header('authorization'));
        $userClient = UserClient::query()
            ->where('client_key', '=', $token)
            ->first();

        $loja = Store::query()
            ->where('user_client_id', $userClient->id)
            ->where('account_number', $request->store_account_number)
            ->first();

        if (!$loja) {
            return response()->json(['message' => 'Não tem permissão de fazer operações nesta loja'], 400);
        }

    }
}