';
// Elaborazione delle risorse API in scadenza
- if (!empty($response['risorse-api'])) {
- $risorse_in_scadenza = ServicesHook::getRisorseInScadenza($response['risorse-api'], $limite_scadenze);
+ $risorse_attive = Services::getRisorseAttive();
+ if (!$risorse_attive->isEmpty()) {
+ $risorse_in_scadenza = Services::getRisorseInScadenza($limite_scadenze);
if (!$risorse_in_scadenza->isEmpty()) {
echo '
'.tr('Le seguenti risorse sono in scadenza:').'
@@ -115,11 +108,12 @@ if (Services::isEnabled()) {
';
foreach ($risorse_in_scadenza as $servizio) {
- $scadenza = Carbon::parse($servizio['data_scadenza']);
+ $scadenza = Carbon::parse($servizio['expiration_at']);
+
echo '
- '.$servizio['nome'].' |
- '.$servizio['crediti'].' |
+ '.$servizio['name'].' |
+ '.$servizio['credits'].' |
'.dateFormat($scadenza).' ('.$scadenza->diffForHumans().') |
';
}
diff --git a/modules/stato_servizi/src/ServicesHook.php b/modules/stato_servizi/src/ServicesHook.php
index fdfe85555..f90a4a63e 100644
--- a/modules/stato_servizi/src/ServicesHook.php
+++ b/modules/stato_servizi/src/ServicesHook.php
@@ -21,29 +21,15 @@ namespace Modules\StatoServizi;
use API\Services;
use Carbon\Carbon;
-use Hooks\CachedManager;
+use Hooks\Manager;
-class ServicesHook extends CachedManager
+class ServicesHook extends Manager
{
- public function getCacheName()
- {
- return 'Informazioni su Services';
- }
-
- public function cacheData()
- {
- $response = Services::request('GET', 'info');
-
- return Services::responseBody($response);
- }
-
public function response()
{
- $servizi = $this->getCache()->content;
- $limite_scadenze = (new Carbon())->addDays(60);
-
// Elaborazione dei servizi in scadenza
- $risorse_in_scadenza = self::getRisorseInScadenza($servizi['risorse-api'], $limite_scadenze);
+ $limite_scadenze = (new Carbon())->addDays(60);
+ $risorse_in_scadenza = Services::getRisorseInScadenza($limite_scadenze);
$message = tr('I seguenti servizi sono in scadenza: _LIST_', [
'_LIST_' => implode(', ', $risorse_in_scadenza->pluck('nome')->all()),
@@ -56,26 +42,13 @@ class ServicesHook extends CachedManager
];
}
- /**
- * Restituisce l'elenco delle risorse API in scadenza, causa data oppure crediti.
- *
- * @param $servizi
- */
- public static function getRisorseInScadenza($risorse, $limite_scadenze)
+ public function execute()
{
- // Elaborazione dei servizi in scadenza
- $risorse_in_scadenza = collect($risorse)
- ->filter(function ($item) use ($limite_scadenze) {
- return (isset($item['expiration_at']) && Carbon::parse($item['expiration_at'])->lessThan($limite_scadenze))
- || (isset($item['credits']) && $item['credits'] < 100);
- });
+ return false;
+ }
- return $risorse_in_scadenza->transform(function ($item, $key) {
- return [
- 'nome' => $item['name'],
- 'data_scadenza' => $item['expiration_at'],
- 'crediti' => $item['credits'],
- ];
- });
+ public function needsExecution()
+ {
+ return false;
}
}
diff --git a/plugins/exportFE/src/Interaction.php b/plugins/exportFE/src/Interaction.php
index 4adc6583f..84752c10b 100755
--- a/plugins/exportFE/src/Interaction.php
+++ b/plugins/exportFE/src/Interaction.php
@@ -30,6 +30,11 @@ use UnexpectedValueException;
*/
class Interaction extends Services
{
+ public static function isEnabled()
+ {
+ return parent::isEnabled() && self::verificaRisorsaAttiva('Fatturazione Elettronica');
+ }
+
public static function sendInvoice($id_record)
{
try {
diff --git a/plugins/importFE/src/Interaction.php b/plugins/importFE/src/Interaction.php
index 90019cd28..6d6ee8109 100755
--- a/plugins/importFE/src/Interaction.php
+++ b/plugins/importFE/src/Interaction.php
@@ -29,6 +29,11 @@ use Models\Cache;
*/
class Interaction extends Services
{
+ public static function isEnabled()
+ {
+ return parent::isEnabled() && self::verificaRisorsaAttiva('Fatturazione Elettronica');
+ }
+
public static function getInvoiceList()
{
$list = self::getRemoteList();
diff --git a/plugins/receiptFE/src/Interaction.php b/plugins/receiptFE/src/Interaction.php
index 35edd3a15..22a1a73af 100755
--- a/plugins/receiptFE/src/Interaction.php
+++ b/plugins/receiptFE/src/Interaction.php
@@ -29,6 +29,11 @@ use Models\Cache;
*/
class Interaction extends Services
{
+ public static function isEnabled()
+ {
+ return parent::isEnabled() && self::verificaRisorsaAttiva('Fatturazione Elettronica');
+ }
+
public static function getReceiptList()
{
$list = self::getRemoteList();
diff --git a/src/API/Services.php b/src/API/Services.php
index b81cc3239..e5c7cdd01 100755
--- a/src/API/Services.php
+++ b/src/API/Services.php
@@ -19,7 +19,9 @@
namespace API;
+use Carbon\Carbon;
use GuzzleHttp\Client;
+use Models\Cache;
/**
* Classe per l'interazione con API esterne.
@@ -30,11 +32,98 @@ class Services
{
protected static $client = null;
+ /**
+ * Controlla se il gestionale ha accesso a Services.
+ *
+ * @return bool
+ */
public static function isEnabled()
{
return !empty(setting('OSMCloud Services API Token'));
}
+ /**
+ * Restituisce le informazioni disponibili su Services.
+ *
+ * @return array
+ */
+ public static function getInformazioni($force = false)
+ {
+ $cache = Cache::pool('Informazioni su Services');
+
+ // Aggiornamento dei contenuti della cache
+ if (!$cache->isValid() || $force) {
+ $response = self::request('GET', 'info');
+ $content = self::responseBody($response);
+
+ $cache->set($content);
+
+ return $content;
+ }
+
+ return $cache->content;
+ }
+
+ /**
+ * Restituisce i servizi attivi attraverso Services.
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public static function getServiziAttivi()
+ {
+ return collect(self::getInformazioni()['servizi']);
+ }
+
+ /**
+ * Restituisce le risorse attive in Services.
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public static function getRisorseAttive()
+ {
+ return collect(self::getInformazioni()['risorse-api']);
+ }
+
+ /**
+ * Controlla se il gestionale ha accesso a una specifica risorsa di Services.
+ *
+ * @return bool
+ */
+ public static function verificaRisorsaAttiva($servizio)
+ {
+ return self::isEnabled() && self::getRisorseAttive()->search(function ($item) use ($servizio) {
+ return $item['name'] == $servizio;
+ }) !== false;
+ }
+
+ /**
+ * Restituisce le risorse in scadenza per assenza di crediti oppure per data di fine prossima.
+ *
+ * @param Carbon $limite_scadenze
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public static function getRisorseInScadenza($limite_scadenze)
+ {
+ return self::getRisorseAttive()
+ ->filter(function ($item) use ($limite_scadenze) {
+ return (isset($item['expiration_at']) && Carbon::parse($item['expiration_at'])->lessThan($limite_scadenze))
+ || (isset($item['credits']) && $item['credits'] < 100);
+ });
+ }
+
+ /**
+ * Effettua una richiesta a Services.
+ *
+ * @param $type
+ * @param $resource
+ * @param array $data
+ * @param array $options
+ *
+ * @throws \GuzzleHttp\Exception\GuzzleException
+ *
+ * @return \Psr\Http\Message\ResponseInterface
+ */
public static function request($type, $resource, $data = [], $options = [])
{
$client = static::getClient();
@@ -53,6 +142,13 @@ class Services
return $client->request($type, '', $options);
}
+ /**
+ * Restituisce il corpo JSON della risposta in array.
+ *
+ * @param $response
+ *
+ * @return array
+ */
public static function responseBody($response)
{
$body = $response->getBody();
diff --git a/src/Validate.php b/src/Validate.php
index 8b0b718e6..f79a6ecf0 100755
--- a/src/Validate.php
+++ b/src/Validate.php
@@ -98,7 +98,7 @@ class Validate
} */
// Controllo attraverso apilayer
- if (Services::isEnabled()) {
+ if (Services::verificaRisorsaAttiva('Verifica Partita IVA')) {
$response = Services::request('post', 'check_iva', [
'partita_iva' => $vat_number,
]);
@@ -151,7 +151,7 @@ class Validate
}
// Controllo attraverso apilayer
- if (Services::isEnabled()) {
+ if (Services::verificaRisorsaAttiva('Verifica Email')) {
$response = Services::request('post', 'check_email', [
'email' => $email,
]);