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

namespace App\Classes;

abstract class SendResponse
{
    // ------- SUCCESS RESPONSE ------
    private static function generateParams($data, $paramsKeyValues)
    {
        if (count($paramsKeyValues) > 0) {
            foreach ($paramsKeyValues as $key => $value) {
                $data[$key] = $value;
            }
        }

        return $data;
    }

    private static function getData($msgType, $msgPos, $msgPT, $msgEN)
    {
        $data = [
            'code' => trans($msgType)[$msgPos]['cody'],
            $msgType => trans($msgType)[$msgPos][$msgType],
            'type' => trans($msgType)[$msgPos]['type'],
            'message' => $msgPT,
            'messageLang' => [
                'pt' => $msgPT,
                'en' => $msgEN,
            ]
        ];

        return $data;
    }

    // public static function  successResp200($msgPT = 'Transação bem sucedida', $msgEN = 'Transaction Successfully', $paramsKeyValues = array())
    // {
    //     $data = SendResponse::getData('success', 0, $msgPT, $msgEN);

    //     $data = SendResponse::generateParams($data, $paramsKeyValues);

    //     return response()->json($data, trans('success')[0]['http_code']);
    // }

    public static function successResp200($msgPT = 'Transação bem sucedida', $msgEN = 'Transaction Successfully', $paramsKeyValues = array())
    {
        // Gera a resposta base com as mensagens padrão
        $data = SendResponse::getData('success', 0, $msgPT, $msgEN);

        // Adiciona os parâmetros extras como 'transaction' e 'created_at'
        $data = SendResponse::generateParams($data, $paramsKeyValues);

        // Inclui os dados da transação
        // if (isset($paramsKeyValues['transaction']) && isset($paramsKeyValues['partner_transaction_id']) && isset($paramsKeyValues['created_at'])) {
        //     $data['transaction'] = $paramsKeyValues['transaction'];
        //     $data['partner_transaction_id'] = $paramsKeyValues['partner_transaction_id'];
        //     $data['created_at'] = $paramsKeyValues['created_at'];
        // }

        // Adiciona transaction e created_at diretamente em $data
        // if (isset($paramsKeyValues['transaction'])) {
        //     $data['transaction'] = $paramsKeyValues['transaction'];
        // }

        // if (isset($paramsKeyValues['created_at'])) {
        //     $data['created_at'] = $paramsKeyValues['created_at'];
        // }

        // Retorna a resposta com código de sucesso (200)
        return response()->json($data, trans('success')[0]['http_code']);
    }


    public static function  successResp201($msgPT = 'Transação bem sucedida', $msgEN = 'Transaction Successfully', $paramsKeyValues = array())
    {
        $data = SendResponse::getData('success', 1, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('success')[1]['http_code']);
    }




    // ------- ERROR RESPONSE ------

    public static function  errorResp400($msgPT = 'Parametros ou dados Invalidos', $msgEN = 'Invalid Params or Data', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 0, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[0]['http_code']);
    }

    public static function  errorResp401unauthenticated($msgPT = 'Não auntenticado', $msgEN = 'Unauthenticated', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 1, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[1]['http_code']);
    }

    public static function  errorResp403forbidden($msgPT = 'Acção proibida', $msgEN = 'Forbidden to perform the action', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 2, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[2]['http_code']);
    }

    public static function  errorResp404notfound($msgPT = 'Não encontrado', $msgEN = 'Not found', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 3, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[3]['http_code']);
    }

    public static function  errorResp408timeout($msgPT = 'Requisição expirou', $msgEN = 'Request Timeout', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 4, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[4]['http_code']);
    }

    public static function  errorResp409conflit($msgPT = 'Duplicação de dados', $msgEN = 'Data Conflit', $paramsKeyValues = array())
    {
        $data = SendResponse::getData('error', 5, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[5]['http_code']);
    }

    public static function  errorResp401unauthorized($msgPT = 'Não autorizado', $msgEN = 'Unauthorized', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 6, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[6]['http_code']);
    }

    public static function  errorResp402rejected($msgPT = 'Transação rejeitada', $msgEN = 'Transaction Rejected', $paramsKeyValues = array())
    {

        $data = SendResponse::getData('error', 7, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('error')[7]['http_code']);
    }

    // ------- WARNING RESPONSE ------

    public static function  warningResp500serverError($msgPT = 'Erro interno do servidor', $msgEN = 'Internal server error', $paramsKeyValues = array())
    {
        $data = SendResponse::getData('warning', 0, $msgPT, $msgEN);

        $data = SendResponse::generateParams($data, $paramsKeyValues);

        return response()->json($data, trans('warning')[0]['http_code']);
    }
}