View file core/libs/PayStack-PHP/vendor/yabacon/paystack-php/src/Paystack/Routes/Customer.php

File size: 2.47Kb
<?php

namespace Yabacon\Paystack\Routes;

use Yabacon\Paystack\Contracts\RouteInterface;

/**
 * Customer
 * Insert description here
 *
 * @category
 * @package
 * @author
 * @copyright
 * @license
 * @version
 * @link
 * @see
 * @since
 */
class Customer implements RouteInterface
{

    /**
      Root
     *
      @param=> first_name, last_name, email, phone
     */
    public static function root()
    {
        return '/customer';
    }

    /**
      Create customer
     *
      @param=> first_name, last_name, email, phone
     */
    public static function create()
    {
        return [
            RouteInterface::METHOD_KEY   => RouteInterface::POST_METHOD,
            RouteInterface::ENDPOINT_KEY => Customer::root(),
            RouteInterface::PARAMS_KEY   => ['first_name',
                'last_name',
                'email',
                'phone' ],
            RouteInterface::REQUIRED_KEY => [
                RouteInterface::PARAMS_KEY => ['first_name',
                    'last_name',
                    'email' ]
            ]
        ];
    }

    /**
      Get customer by ID or code
     */
    public static function fetch()
    {
        return [
            RouteInterface::METHOD_KEY   => RouteInterface::GET_METHOD,
            RouteInterface::ENDPOINT_KEY => Customer::root() . '/{id}',
            RouteInterface::ARGS_KEY     => ['id' ],
            RouteInterface::REQUIRED_KEY => [RouteInterface::ARGS_KEY => ['id' ] ]
        ];
    }

    /**
      List customers
     */
    public static function getList()
    {
        return [
            RouteInterface::METHOD_KEY   => RouteInterface::GET_METHOD,
            RouteInterface::ENDPOINT_KEY => Customer::root(),
            RouteInterface::PARAMS_KEY   => ['perPage',
                'page' ]
        ];
    }

    /**
      Update customer
     *
      @param=> first_name, last_name, email, phone
     */
    public static function update()
    {
        return [
            RouteInterface::METHOD_KEY   => RouteInterface::PUT_METHOD,
            RouteInterface::ENDPOINT_KEY => Customer::root() . '/{id}',
            RouteInterface::PARAMS_KEY   => ['first_name',
                'last_name',
                'email',
                'phone' ],
            RouteInterface::ARGS_KEY     => ['id' ],
            RouteInterface::REQUIRED_KEY => [
                RouteInterface::ARGS_KEY   => ['id' ],
                RouteInterface::PARAMS_KEY => ['first_name',
                    'last_name' ]
            ]
        ];
    }
}