PHP code example of powersystem / cakeapigateway

1. Go to this page and download the library: Download powersystem/cakeapigateway library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

powersystem / cakeapigateway example snippets


        throw new UnprocessableEntityException([
            'message' => 'Error de validación!',
            'errors' => $entity->getErrors()
        ])
        

        throw new UnprocessableEntityException([
            'message' => __('Data Validation Failed'),
            'errors' => $entity->getErrors()
        ]);
        

        $errors = [
            'email' => [
                '_empty' => 'This field cannot be left empty',
                'email'  => 'This field must be a valid email address'
            ]
        ];

        pr($this->formatErrors($errors));
        

        //resultado:
        [
            'email' => [
                [
                    'code' => 'Empty',
                    'message' => 'This field cannot be left empty'
                ],
                [
                    'code' => 'Email',
                    'message' => 'This field must be a valid email address'
                ],
            ]
        ]

        

        [
             'get' => [
                'identificador' => 'id',
                'nombre' => 'name'
             ],
             'set' => [
                'id' => 'identificador',
                'name' => 'nombre'
            ]
        ]
        

        //dentro de la Table
        $entity = $this->get($id);
        $map    = $this->getFlattenedFieldsMap('get');
        $result = $this->mapFlattenedFields($entity, $map, function($field, $entity){
            return Hash::get($entity, $field);
        });
        

        [
            'index' => [
                'id'                => 'id',
                'title'             => 'title',
                'category'          => 'news_category.name',
                'thumbnail'         => 'news_images.0.thumbnail',
                'created_at'        => 'created_at',
                'created_by'        => 'creator.full_name',
                'modified_at'       => 'modified_at',
                'modified_by'       => 'modifier.full_name',
            ]
        ]
        

        [
            'get' => [
                'id' => 'id',
                'titulo' => 'title',
                'cuentas' => [
                    'entities' => 'bank_accounts',
                    'map' => [
                        'banco'  => 'bank.name',
                        'tipo'   => 'bank_account_type.title',
                        'numero' => 'account_number',
                        'cbu'    => 'account_cbu',
                    ]
                ]
            ]
        ]
        

        //dentro de la Table
        $entity = $this->get($id);
        $mapped_entity = $this->getFlattenedEntity(['id' => $id]);
        

        public function setPaymentNotification($flattened_data, $api_user_id)
        {
            //obtiene un error map custom1
            $error_map = $this->getFlattenedFieldsMap('errors');

            //llama al método setFlattenedEntity
            return $this->setFlattenedEntity(function() use ($flattened_data, $api_user_id){

                /*  encierra el proceso en una transacción para poder guardar en varias tablas y
                    si alguna falla, revertir todos los cambios.
                */
                return $this->getConnection()->transactional(
                function ($connection) use ($flattened_data, $api_user_id){

                    //mapeamos con set
                    $fields_map = $this->getFlattenedFieldsMap('set');
                    $data = $this->mapFlattenedFields($flattened_data, $fields_map,
                    function($field, $payment_notification){
                        return Hash::get($payment_notification, $field);
                    });

                    //creamos entidad
                    $payment_notification = $this->newEntity($data, [
                        'associated' => ['FunctionalUnits']
                    ]);

                    /*  acá también se podrían guardar datos en otras tablas,
                        por ejemplo tablas asociadas a esta entidad.
                    */

                    //setteamos algunos campos manualmente
                    $payment_notification->api_user_id = $api_user_id;

                    /*  finalmente usamos saveOrFail en todas nuestras operaciones para que
                        el catch ataje las excepciones si el guardado falla.
                    */
                    return $this->saveOrFail($payment_notification, [
                        'associated' => ['FunctionalUnits']
                    ]);

                });
            }, $error_map);
        }
         

'ApiGatewaySDK' => [
    /*
    Esto es para que las peticiones requieren el api_id que agrega APIGateway a las requests.
    Al setearlo como requerido, las peticiones que no vengan a través de APIGateway no serán aceptadas.
    */
    'api_id'                => 'rlrr9c1dk8',
    '