• File: ComercianteController.php.save
  • Full Path: /var/www/imaliapi/app/Http/Controllers/ComercianteController.php.save
  • Date Modified: 04/15/2024 8:53 PM
  • File size: 33.14 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Bank\Payment;
use App\Classes\Comerciante;
use App\Classes\GenerateImaliAccount;
use App\Classes\Record;
use App\Imali\ImaliAccount;
use App\Imali\MerchantAccount;
use App\Imali\MerchantContract;
use App\Imali\RamoActivity;
use App\Imali\RechargeImaliAccount;
use App\Store;
use App\StoreConfig;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use QRCode;
use Webpatser\Uuid\Uuid;

class ComercianteController extends Controller
{
    public function getUserByImaliAccount($account_number)
    {
        $user = ImaliAccount::query()
            ->join('users', 'users.id', '=', 'imali_accounts.user_id')
//            ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.id')
            ->where('imali_accounts.account_number', $account_number)
            ->first();

        $recharge = RechargeImaliAccount::query()
            ->join('imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.id')
            ->where('imali_accounts.account_number', $account_number)
            ->get()
            ->last();

        return response()->json(['user' => $user, 'lastRecharge' => $recharge]);
    }

    public function getUserByImaliAccountPhone($account_number)
    {
        $user = ImaliAccount::query()
            ->join('users', 'users.id', '=', 'imali_accounts.user_id')
//            ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.id')
            ->where('imali_accounts.account_number', $account_number)
            ->select('users.name', 'imali_accounts.account_number')
            ->first();

        $recharge = RechargeImaliAccount::query()
            ->join('imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.id')
            ->where('imali_accounts.account_number', $account_number)
            ->get()
            ->last();


        return response()->json($user);
    }

    public function getUserData($id)
    {
        $user = ImaliAccount::query()
            ->join('users', 'users.id', '=', 'imali_accounts.user_id')
            ->where('users.id', $id)
            ->first();
        return response()->json($user);
    }

    public function getRamoActivity()
    {
        $log = new Record();

        $ramo = RamoActivity::query()->orderBy('nome', 'asc')->get();

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

    public function saveLoja(Request $request)
    {
        if ($request->isXmlHttpRequest()) {
            return response()->json("Fe");
        }
        if ($request->isJson()) {

            $this->validate($request, [
                'name' => 'required',
                'email' => 'required',
                'nuit' => 'required|int',
                'address' => 'required',
                'manager' => 'required',
                'username' => 'required',
                'manager_phone_number' => 'required|string',
                'mobile_phone' => 'required|string',
                'taxa' => 'required',
                'max_balance' => 'required',
                'nr_transaction' => 'required',
                'min_amount' => 'required',
                'max_amount' => 'required',
                'use_point_limit' => 'required',
            ]);

            $random = new GenerateImaliAccount();
//            $number = $random->GenerateImaliAccountNumberAndStore();
            $number = $random->GenerateImaliAccountNumberAndStoreAndMerchant();

            $response = Store::create([
                'name' => $request->name,
                'username' => $request->username,
                'nuit' => $request->nuit,
                'nib' => $request->nib,
                'address' => $request->address,
                'balance' => 0,
                'manager' => $request->manager,
                'manager_phone_number' => $request->manager_phone_number,
                'public_id' => Uuid::generate()->string,
                'mobile_phone' => $request->mobile_phone,
                'account_number' => $number,
                'email' => $request->email,
                'logo' => url('/') . '/imaliapi/public/images/comerciante/logo/store.png',
                'photo' => url('/') . '/imaliapi/public/images/comerciante/logo/store.png',
                'password' => Hash::make('12345678'),
                'user_client_id' => $request->user_client_id,
                'merchant_account_id' => $request->merchant_account_id,
//                'merchant_contract_id' => $request->$contrato->id,
                'industry_activity' => $request->industry_activity,
                'user_id' => $request->user()->id
            ]);
            $contrato = MerchantContract::create([
                'taxa' => $request->taxa,
                'max_balance' => $request->max_balance,
                'nr_transaction' => $request->nr_transaction,
                'status' => 'activo',
                'min_amount' => $request->min_amount,
                'max_amount' => $request->max_amount,
                'use_point' => true,
                'use_point_limit' => $request->use_point_limit,
                'user_id' => $request->user()->id,
                'merchant_account_id' => $request->merchant_account_id,
                'store_id' => $response->id,
            ]);
            $response->update(['merchant_contract_id' => $contrato->id]);

            $storeConfig = StoreConfig::query()
                ->where('store_id', '=', $response->id)
                ->first();

            if (!$storeConfig) {
                StoreConfig::create([
                    'store_id' => $response->id
                ]);
            }

            if ($response) {
                $fileQrcode = $path = public_path('/images/comerciante/qrcode/loja' . '/' . $response->public_id . '.' . 'png');
//                $response->update(['qrcode' => 'http://localhost:8000/images/comerciante/qrcode/' . $response->public_id . '.' . 'png']);
//                $response->update(['qrcode' => 'http://160.242.35.226/imaliapi/public/images/comerciante/qrcode/loja/' . $response->public_id . '.' . 'png']);
                $response->update(['qrcode' => url('/') . '/images/comerciante/qrcode/loja/' . $response->public_id . '.' . 'png']);
                \QRCode::text($response->public_id)
                    ->setOutfile($fileQrcode)
                    ->setSize(10)
                    ->setMargin(10)
                    ->png();

                return response()->json(['message' => 'Loja Adiconada com Sucesso'], 200);
            }

        }
    }

    public function generateQrcode($id, $accountNumber)
    {

        $response = Store::query()
            ->where('id', $id)
            ->where('account_number', $accountNumber)
            ->first();
        if ($response) {

            $fileQrcode = $path = public_path('/images/comerciante/qrcode' . '/' . $response->public_id . '.' . 'png');
//                $response->update(['qrcode' => 'http://localhost:8000/images/comerciante/qrcode/' . $response->public_id . '.' . 'png']);
//            $response->update(['qrcode' => 'http://160.242.35.226/imaliapi/public/images/comerciante/qrcode/' . $response->public_id . '.' . 'png']);
            $response->update(['qrcode' => url('/') . '/images/comerciante/qrcode/' . $response->public_id . '.' . 'png']);
            \QRCode::text($response->public_id)
                ->setOutfile($fileQrcode)
                ->setSize(10)
                ->setMargin(10)
                ->png();

            return response()->json(['message' => 'Gerado com Sucesso'], 200);
        } else {
            return response()->json(['message' => 'Falha ao Gerar o Qrcode. Erro Loja nao encontrada'], 400);
        }


    }

    public function saveComerciante22(Request $request)
    {
        $comerciante = MerchantAccount::create([
            'name' => $request->name,
            'address' => $request->address,
            'institution' => $request->institution,
            'bi' => $request->bi,
//            'nuit' => $request->nuit,
            'status' => 'activa',
            'phone_number' => $request->phone_number,
            'email' => $request->email,
            'password' => Hash::make('12345678'),
            'imali_account_id' => null,
//                'account_number' => $numero,
            'user_id' => $request->user()->id,
//            'nib' => $request->nib,
            'public_merchant_id' => Uuid::generate()->string
        ]);
    }

    public function saveComerciante(Request $request)
    {
        $this->validate($request, [
            'name' => 'required',
            'institution' => 'required',
            'address' => 'required',
            'phone_number' => 'required|unique:merchant_accounts,phone_number',
            'email' => 'required|email|unique:merchant_accounts,email',
            'nuit' => 'required|min:9',
            'nib' => 'required',
            'bi' => 'required|min:13'
        ], [
            'email.required' => 'O Campo Email é de carácter Obrigatório',
            'email.unique' => 'Este Email já está em uso',
            'phone.required' => 'O Número do celular é obrigatório',
            'phone_number.unique' => 'O Número do celular já está em uso',
            'phone_number.min' => 'O Campo Celular deve ter 9 dígitos',
            'name.required' => 'O Campo Nome é obrigatório',
            'bi.required' => 'O campo Bi é Obrigatório',
            'bi.min' => 'O campo Bi ter 13 dígitos',
        ]);
//        $user = User::find($request->user()->id);

//        $imali = ImaliAccount::query()->where('account_number', $request->account_number)->first();

//        $imaliCheck = ImaliAccount::query()->where('account_number', $request->account_number)->count();

//        $ramo = RamoActivity::find(1);


//        $generate = new Comerciante();
//        $numero  = $generate->generateNumber(9);
//        $numero = $random->GenerateImaliAccountNumberAndMetchant();

//        $imali = new GenerateImaliAccount();
////        $generateImaliAcount = $imali->GenerateImaliAccountNumberAndMetchant();
////        $generateImaliAcount = $imali->GenerateImaliAccountNumberAndStore();
//        $generateImaliAcount = $imali->GenerateImaliAccountNumberAndStoreAndMerchant();
//        str_replace(["-", "–"], '', Uuid::generate()->string);
//                'account_number' => $numero,


        $random = new GenerateImaliAccount();
        $numero = $random->GenerateImaliAccountNumberAndStoreAndMerchant();
//        $numero = $random->GenerateImaliAccountNumberAndStore();

        $comerciante = MerchantAccount::create([
            'name' => $request->name,
            'address' => $request->address,
            'institution' => $request->institution,
            'bi' => $request->bi,
            'nuit' => $request->nuit,
            'status' => 'activa',
            'phone_number' => $request->phone_number,
            'email' => $request->email,
            'password' => Hash::make('12345678'),
            'account_number' => $numero,
            'imali_account_id' => null,
            'user_id' => $request->user()->id,
            'nib' => $request->nib,
            'public_merchant_id' => Uuid::generate()->string,
            'kyc_config_id' => 1
        ]);

        $fileQrcode = $path = public_path('/images/comerciante/qrcode/comerciante' . '/' . $comerciante->public_merchant_id . '.' . 'png');
        $comerciante->update(['qrcode' => url('/') . '/images/comerciante/qrcode/comerciante/' . $comerciante->public_merchant_id . '.' . 'png']);
        \QRCode::text($comerciante->public_merchant_id)
            ->setOutfile($fileQrcode)
            ->setSize(10)
            ->setMargin(10)
            ->png();
        return response()->json(['message' => 'Comerciante Adicionado com Sucesso'], 200);

//        if ($imaliCheck === 0) {
//            $comerciante = MerchantAccount::create([
//                'name' => $request->name,
//                'address' => $request->address,
//                'institution' => $request->institution,
//                'bi' => $request->bi,
//                'nuit' => $request->nuit,
//                'status' => 'activa',
//                'phone_number' => $request->phone_number,
//                'email' => $request->email,
//                'password' => Hash::make('12345678'),
//                'imali_account_id' => null,
//                'account_number' => $numero,
//                'user_id' => $request->user()->id,
//                'nib' => $request->nib,
//                'public_merchant_id' => Uuid::generate()->string
//            ]);
//
//            $fileQrcode = $path = public_path('/images/comerciante/qrcode/comerciante' . '/' . $comerciante->account_number . '.' . 'png');
//            $comerciante->update(['qrcode' => 'http://160.242.36.118:81/imaliapitest/public/images/comerciante/qrcode/comerciante/' . $comerciante->public_merchant_id . '.' . 'png']);
//            \QRCode::text($comerciante->public_merchant_id)
//                ->setOutfile($fileQrcode)
//                ->setSize(10)
//                ->setMargin(10)
//                ->png();
//
//
//
//
////            if ($contrato) {
////                $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->public_merchant_id.'.'.'png');
//////           $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->account_number.'.'.'png');
////                $comerciante->update(['qrcode' => 'http://localhost:8000/images/comerciante/qrcode/'.$comerciante->public_merchant_id.'.'.'png']);
////                \QRCode::text($comerciante->public_merchant_id)
////                    ->setOutfile($fileQrcode)
////                    ->setSize(10)
////                    ->setMargin(10)
////                    ->png();
////
////                $log = new Record();
////
////                $log->createLog([
////                    'description' => 'Comerciante Adicionado com Sucesso',
////                    'details' => $request->all(),
////                    'operation' => 'Save Comerciante',
////                    'status' => 'Success',
////                    'user_id' => $request->user()->id
////                ]);
////
////                return response()->json(['message' => 'Comerciante Adicionado com Sucesso'], 200);
////            }
//            return response()->json(['message' => 'Comerciante Adicionado com Sucesso'], 200);
//        } else {
//
//            $comerciante = MerchantAccount::create([
//                'name' => $request->name,
//                'address' => $request->address,
//                'institution' => $request->institution,
//                'bi' => $request->bi,
//                'nuit' => $request->nuit,
//                'status' => 'activa',
//                'phone_number' => $request->phone_number,
//                'email' => $request->email,
//                'password' => Hash::make('12345678'),
//                'account_number' => $numero,
//                'imali_account_id' => null,
//                'user_id' => $request->user()->id,
//                'nib' => $request->nib,
//                'public_merchant_id' => Uuid::generate()->string
//            ]);
//
////            $contrato = MerchantContract::create([
////                'taxa' =>$request->taxa,
////                'max_balance' => $request->max_balance,
////                'nr_transaction' => $request->nr_transaction,
////                'status' => 'activo',
////                'min_amount' => $request->min_amount,
////                'max_amount' => $request->max_amount,
////                'use_point' => true,
////                'use_point_limit' => $request->use_point_limit,
////                'user_id' => $request->user()->id,
////                'merchant_account_id' => $comerciante->id
////            ]);
//
//            $fileQrcode = $path = public_path('/images/comerciante/qrcode/comerciante' . '/' . $comerciante->account_number . '.' . 'png');
//            $comerciante->update(['qrcode' => 'http://160.242.36.118:81/imaliapitest/public/images/comerciante/qrcode/comerciante/' . $comerciante->public_merchant_id . '.' . 'png']);
//            \QRCode::text($comerciante->public_merchant_id)
//                ->setOutfile($fileQrcode)
//                ->setSize(10)
//                ->setMargin(10)
//                ->png();


//            if ($contrato) {
//                $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->public_merchant_id.'.'.'png');
////           $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->account_number.'.'.'png');
//                $comerciante->update(['qrcode' => 'http://localhost:8000/images/comerciante/qrcode/'.$comerciante->public_merchant_id.'.'.'png']);
//                \QRCode::text($comerciante->public_merchant_id)
//                    ->setOutfile($fileQrcode)
//                    ->setSize(10)
//                    ->setMargin(10)
//                    ->png();
//
//                $log = new Record();
//
//                $log->createLog([
//                    'description' => 'Comerciante Adicionado com Sucesso',
//                    'details' => $request->all(),
//                    'operation' => 'Save Comerciante',
//                    'status' => 'Success',
//                    'user_id' => $request->user()->id
//                ]);
//
//                return response()->json(['message' => 'Comerciante adicionado com sucesso'], 200);
//            }

//       $comerciante = MerchantAccount::create([
//           'name' => $request->name,
//           'endereco' => $request->endereco,
//           'account_number' => $numero,
//           'balance' => 0,
//           'balance_maximo' => $request->balance_maximo,
//           'estado' => 'activa',
//           'estado_color' => '#388E3C',
//           'imali_account_id' => $imali->id,
//           'user_id' => $request->user_id,
//           'ramo_activity_id' => $request->ramo_activity_id,
//           'telefone_comerciante' => $request->telefone_comerciante,
//           'telefone_loja' => $request->telefone_loja,
//           'nome_comerciante' => $request->nome_comerciante
//       ]);
//
//       $contrato = MerchantContract::create([
//           'taxa' =>$request->taxa,
//           'balance_max' => $request->balance_max,
//           'nr_transacao' => $request->nr_transacao,
//           'estado' => 'active',
//           'valor_max' => $request->valor_max,
//           'valor_min' => $request->valor_min,
//           'estado_color' => '#388E3C',
//           'use_point' => true,
//           'use_point_limite' => $request->use_point_limite,
//           'user_id' => $request->user_id,
//           'merchant_account_id' => $comerciante->id
//       ]);
//
//       if ($contrato) {
//           $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->account_number.'.'.'png');
////           $fileQrcode = $path = public_path('/images/comerciante/qrcode'.'/'.$comerciante->account_number.'.'.'png');
//           $comerciante->update(['qrcode' => 'http://localhost:8000/images/comerciante/qrcode/'.$comerciante->account_number.'.'.'png']);
//           \QRCode::text($comerciante->account_number)
//               ->setOutfile($fileQrcode)
//               ->setSize(10)
//               ->setMargin(10)
//               ->png();;
//           return response()->json(['message' => 'Comerciante adicionado com sucesso'], 200);
//       }
//        return response()->json(['message' => 'Comerciante adicionado com sucesso'], 200);
    }

    public function updateComerciante(Request $request)
    {
//        $comerciante = MerchantAccount::find($request->id);
        $comerciante = MerchantAccount::query()
            ->where('id', '=', $request->id)->first();
//        $imaliCheck = ImaliAccount::query()->where('account_number', $request->account_number)->count();

        $comerciante->update([
            'name' => $request->name,
            'address' => $request->address,
//            'balance' => 0,
            'email' => $request->email,
            'phone_number' => $request->phone_number,
            'institution' => $request->institution,
            'bi' => $request->bi,
//            'balance_maximo' => $request->balance_maximo,
            'status' => 'activa',
//            'estado' => 'activa',
//            'estado_color' => '#388E3C',
//            'imali_account_id' => null,
            'user_id' => $request->user_id,
//            'ramo_activity_id' => $request->ramo_activity_id,
//            'telefone_comerciante' => $request->telefone_comerciante,
//            'telefone_loja' => $request->telefone_loja,
//            'nome_comerciante' => $request->nome_comerciante,
//            'email_loja' => $request->email_loja,
//            'nib' => $request->nib,
        ]);

//        $contrato = MerchantContract::query()->where('merchant_account_id', $comerciante->id)->first();
//        $contrato->update([
//            'taxa' => $request->taxa,
//            'balance_max' => $request->balance_max,
//            'nr_transacao' => $request->nr_transacao,
//            'estado' => 'active',
//            'valor_max' => $request->valor_max,
//            'valor_min' => $request->valor_min,
//            'estado_color' => '#388E3C',
//            'use_point' => true,
//            'use_point_limite' => $request->use_point_limite,
//            'user_id' => $request->user_id,
//        ]);
        return response()->json(['message' => 'Dados do Comerciante ' . $comerciante->name, ' actualizados com Sucesso'], 200);

    }

    public function getComerciante($account_number)
    {
        $comerciante = MerchantAccount::query()
            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
            ->join('users', 'users.id', '=', 'merchant_accounts.user_id')
            ->leftJoin('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
            ->join('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
            ->where('merchant_accounts.account_number', $account_number)
            ->select('merchant_accounts.*')
            ->first();

        if ($comerciante) {
            return response()->json($comerciante, 200);
        } else {
            return response()->json(['message' => 'Qrcode Inválido'], 404);
        }
    }

    public function getMerchant(Request $request)
    {

        $log = new Record();
        $comerciante = MerchantAccount::query()
            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
            ->join('users', 'users.id', '=', 'merchant_accounts.user_id')
            ->leftJoin('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
            ->join('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
            ->where('merchant_accounts.public_merchant_id', $request->merchant_id)
            ->select('merchant_accounts.*')
            ->first();
        if ($comerciante) {

            $log->createLog([
                'description' => 'Comerciante encontrado com Sucesso',
                'details' => $comerciante->name . ' ' . $comerciante->account_number,
                'operation' => 'Get Comerciante',
                'status' => 'Success',
                'user_id' => $request->user()->id
            ]);
            return response()->json($comerciante, 200);
        } else {
            $log->createLog([
                'description' => 'Qrcode Inválido',
                'details' => $request->all(),
                'operation' => 'Get Comerciante',
                'status' => 'Success',
                'user_id' => $request->user()->id
            ]);
            return response()->json(['message' => 'Qrcode Inválido'], 404);
        }

    }

    public function getStorePayment(Request $request)
    {

        $log = new Record();
        $comerciante = Store::query()
            ->where('public_id', '=', $request->merchant_id)
            ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
            ->select('stores.*', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category')
            ->first();

        if ($comerciante) {
            $log->createLog([
                'description' => 'Comerciante encontrado com Sucesso',
                'details' => $comerciante->name . ' ' . $comerciante->account_number,
                'operation' => 'Get Comerciante',
                'status' => 'Success',
                'user_id' => $request->user()->id
            ]);

            $comerciante->makeHidden([
                "industry_activity", "user_id", "created_at", "updated_at", "user_client_id",
                "balance", "session_status", "nib", "nuit", "status", "email", "manager_phone_number",
                "manager", "id", "merchant_account_id", "merchant_contract_id", "username", "latitude", "longitude"
            ]);
            return response()->json($comerciante);

        } else {

            $store = Store::query()
                ->join('payments', 'payments.store_id', '=', 'stores.id')
                ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
                ->where('payments.transaction_id', '=', $request->merchant_id)
                ->select('stores.name', 'stores.mobile_phone', 'stores.account_number', 'stores.address', 'payments.transaction_id as transaction', 'payments.amount', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category')
                ->first();

            if ($store) {
                return response()->json($store);
            } else {
                return response()->json(['message' => 'Qrcode Inválido'], 404);
            }
        }

    }

    public function getMerchant2(Request $request)
    {

        $log = new Record();
//        $comerciante = MerchantAccount::query()
//            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
//            ->join('users', 'users.id', '=', 'merchant_accounts.user_id')
//            ->leftJoin('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
//            ->join('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
//            ->where('merchant_accounts.public_merchant_id', $request->merchant_id)
//            ->select('merchant_accounts.*')
//            ->first();
        $comerciante = Store::query()
            ->where('public_id', '=', $request->merchant_id)
            ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
            ->select('stores.*', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category')
            ->first();

        if ($comerciante) {
            $log->createLog([
                'description' => 'Comerciante encontrado com Sucesso',
                'details' => $comerciante->name . ' ' . $comerciante->account_number,
                'operation' => 'Get Comerciante',
                'status' => 'Success',
                'user_id' => $request->user()->id
            ]);
            return response()->json($comerciante, 200);
        } else {

            $store = Store::query()
//                ->join('store_amount_generations', 'store_amount_generations.store_id', '=', 'stores.id')
                ->join('payments', 'payments.store_id', '=', 'stores.id')
                ->join('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
                ->where('store_amount_generations.transaction', '=', $request->merchant_id)
                ->select('stores.*', 'store_amount_generations.amount', 'ramo_activities.nome as category', 'ramo_activities.logo as logo_category', 'store_amount_generations.*', 'store_amount_generations.id as store_amount_generation_id')
                ->first();
            if ($store) {
                return response()->json($store);
            } else {
                return response()->json(['message' => 'Qrcode Inválido'], 404);
            }
        }

    }

    public function getComerciante2($account_number)
    {
        $comerciante = MerchantAccount::query()
            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
            ->join('users', 'users.id', '=', 'merchant_accounts.user_id')
            ->join('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
            ->join('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
            ->where('merchant_accounts.account_number', $account_number)
            ->select('ramo_activities.nome as ramo', 'imali_accounts.account_number as imali_account', 'users.name as user_name', 'merchant_contracts.*', 'merchant_accounts.*')
            ->first();
        return response()->json(['data' => $comerciante], 200);
    }

    public function getComerciantes()
    {
        $comerciante = MerchantAccount::query()
//            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
            ->join('admins', 'admins.id', '=', 'merchant_accounts.user_id')
//            ->leftJoin('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
            ->leftJoin('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
//            ->select('ramo_activities.nome as ramo', 'imali_accounts.account_number as imali_account', 'users.name as user_name', 'merchant_contracts.*', 'merchant_accounts.*')
            ->select('merchant_accounts.*', 'admins.name as username')
            ->distinct()
            ->paginate(10);

        $comerciante = MerchantAccount::query()
//            ->join('ramo_activities', 'ramo_activities.id', '=', 'merchant_accounts.ramo_activity_id')
            ->join('admins', 'admins.id', '=', 'merchant_accounts.user_id')
//            ->leftJoin('imali_accounts', 'imali_accounts.id', '=', 'merchant_accounts.imali_account_id')
            ->leftJoin('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
//            ->select('ramo_activities.nome as ramo', 'imali_accounts.account_number as imali_account', 'users.name as>            ->select('merchant_accounts.*', 'admins.name as username')
            ->distinct()
            ->paginate(10);

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

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

    public function getComercianteTransactions($account_number)
    {
        $comerciante = MerchantAccount::query()
            ->join('merchant_contracts', 'merchant_contracts.merchant_account_id', '=', 'merchant_accounts.id')
            ->where('merchant_accounts.account_number', $account_number)
            ->first();
        $payments = Payment::query()
            ->join('users', 'users.id', '=', 'payments.sender_id')
            ->join('imali_accounts', 'imali_accounts.user_id', '=', 'payments.sender_id')
            ->where('payments.merchant_account_id', $comerciante->id)
            ->get();
        return response()->json(['payments' => $payments, 'data' => $comerciante], 200);
    }

    public function getUserByImaliAccountReference($reference)
    {
        $user = ImaliAccount::query()
            ->join('users', 'users.id', '=', 'imali_accounts.user_id')
            ->where('imali_accounts.reference', $reference)
            ->first();

        $lastBalance = ImaliAccount::query()
            ->join('users', 'users.id', '=', 'imali_accounts.user_id')
            ->join('recharge_imali_accounts', 'recharge_imali_accounts.imali_account_id', '=', 'imali_accounts.id')
            ->where('imali_accounts.reference', $reference)
            ->select('recharge_imali_accounts.*')
            ->get()->last();

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

    public function getStore($id)
    {
        $store = Store::query()
            ->where('stores.merchant_account_id', $id)
            ->leftJoin('admins', 'admins.id', '=', 'stores.user_id')
            ->leftJoin('ramo_activities', 'ramo_activities.id', '=', 'stores.industry_activity')
            ->leftJoin('merchant_contracts', 'stores.merchant_contract_id', '=', 'merchant_contracts.id')
            ->join('merchant_accounts', 'stores.merchant_account_id', '=', 'merchant_accounts.id')
            ->select('stores.*', 'admins.name as username', 'ramo_activities.nome as industry', 'merchant_contracts.*', 'merchant_accounts.name as merchant_name', 'stores.name as store_name')
            ->get();

        return response()->json(['data' => $store]);
    }

}