<?php
/**
 * Api.php
 *
 * @since      1.0.0
 * @package    POPToFattureAruba
 * @author     alfiopiccione <alfio.piccione@gmail.com>

 * @license    http://opensource.org/licenses/gpl-2.0.php GPL v2
 *
 * Copyright (C) 2025 POP
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

namespace WooPoPToFattureAruba;

if (! defined('ABSPATH')) {
    exit; // Exit if accessed directly.
}

/**
 * Class Api
 *
 * Auth Demo : https://demoauth.fatturazioneelettronica.aruba.it
 * Auth Live : https://auth.fatturazioneelettronica.aruba.it
 *
 * Other method Demo: https://demows.fatturazioneelettronica.aruba.it
 * Other method Live: https://ws.fatturazioneelettronica.aruba.it
 *
 * @author alfiopiccione <alfio.piccione@gmail.com>
 */
final class Api
{
    /**
     * Notification Message
     *
     * @var array
     */
    public static $notificationMessage = array(
        'NS'      => '<b>SCARTATA:</b> La fattura è stata rifiutata dal Sistema di Interscambio (SDI)',
        'MC'      => '<b>NON CONSEGNATA:</b> La consegna della fattura da parte del Sistema di Interscambio (SDI) è fallita.',
        'AT'      => '<b>RECAPITO IMPOSSIBILE:</b> La consegna della fattura da parte del Sistema di Intercambio (SDI) non è andata a buon fine.',
        'RC'      => '<b>CONSEGNATA:</b> La fattura è stata consegnata da parte del Sistema di Interscambio (SDI).',
        'NE_EC01' => '<b>ACCETTATA:</b> Il cliente ha accettato la fattura consegnata dal Sistema di Interscambio (SDI)',
        'NE_EC02' => '<b>RIFIUTATA:</b> Il cliente ha rifiutato la fattura consegnata dal Sistema di Interscambio (SDI).',
    );

    /**
     * Routes
     *
     * @var array|string[]
     */
    public static $routes = array(
        'login'                    => 'auth/signin',
        'upload'                   => 'services/invoice/upload',
        'get_invoice'              => 'services/invoice/out/getByFilename',
        'get_notification_invoice' => 'services/notification/out/getByInvoiceFilename',
    );

    /**
     * Regex SDI Code
     *
     * @since 1.0.0
     *
     * @var string
     */
    public static $regexWEBSERV = "/^[a-zA-Z0-9]{7}$/i";

    /**
     * Regex PEC
     *
     * @since 1.0.0
     *
     * @var string
     */
    public static $regexPEC = "/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:\w*.?pec(?:.?\w+)*)$/i";

    /**
     * Regex Legal Mail
     *
     * @since 1.0.0
     *
     * @var string
     */
    public static $regexLEGALMAIL = "/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:\w*.?legalmail(?:.?\w+)*)$/i";
}
