Skip to content

Commit 7cdb5b9

Browse files
committed
feat: log gestione SMS
1 parent 6457cf5 commit 7cdb5b9

10 files changed

Lines changed: 131 additions & 0 deletions

File tree

modules/contratti/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@
455455
456456
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
457457
458+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
459+
458460
<script type="text/javascript">
459461
function gestioneSconto(button) {
460462
gestioneRiga(button, "is_sconto=1");

modules/ddt/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,8 @@
501501
502502
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
503503
504+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
505+
504506
<script>
505507
async function saveForm() {
506508
// Salvataggio via AJAX

modules/fatture/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,8 @@
10551055

10561056
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
10571057

1058+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
1059+
10581060
<?php
10591061
// Eliminazione ddt solo se ho accesso alla sede aziendale
10601062
$field_name = ($dir == 'entrata') ? 'idsede_partenza' : 'idsede_destinazione';

modules/interventi/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,8 @@
473473
474474
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
475475
476+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
477+
476478
<script>
477479
async function saveForm() {
478480
// Salvataggio via AJAX

modules/ordini/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,8 @@
421421
422422
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
423423
424+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
425+
424426
<script>
425427
async function saveForm() {
426428
// Salvataggio via AJAX

modules/preventivi/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@
314314
315315
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
316316
317+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
318+
317319
<script type="text/javascript">
318320
function gestioneSconto(button) {
319321
gestioneRiga(button, "is_sconto=1");

modules/scadenzario/edit.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@
307307

308308
{( "name": "log_email", "id_module": "$id_module$", "id_record": "$id_record$" )}
309309

310+
{( "name": "log_sms", "id_module": "$id_module$", "id_record": "$id_record$" )}
311+
310312
<?php
311313
if (empty($documento)) {
312314
echo '

src/HTMLBuilder/HTMLBuilder.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class HTMLBuilder
9898
'custom_fields' => Manager\FieldManager::class,
9999
'widgets' => Manager\WidgetManager::class,
100100
'log_email' => Manager\EmailManager::class,
101+
'log_sms' => Manager\SMSManager::class,
101102
],
102103
'instances' => [],
103104
];
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
/*
3+
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
4+
* Copyright (C) DevCode s.r.l.
5+
*
6+
* This program is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU General Public License as published by
8+
* the Free Software Foundation, either version 3 of the License, or
9+
* (at your option) any later version.
10+
*
11+
* This program is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU General Public License
17+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
18+
*/
19+
20+
namespace HTMLBuilder\Manager;
21+
22+
use Models\Module;
23+
use Modules\SMS\Sms;
24+
25+
/**
26+
* Gestione SMS.
27+
*
28+
* @since 2.4.2
29+
*/
30+
class SMSManager implements ManagerInterface
31+
{
32+
/**
33+
* Gestione "log_sms".
34+
* Esempio: {( "name": "log_sms", "id_module": "2", "id_record": "1" )}.
35+
*
36+
* @param array $options
37+
*
38+
* @return string
39+
*/
40+
public function manage($options)
41+
{
42+
// Verifico se il modulo SMS è installato
43+
$sms_module = Module::where('name', 'Template SMS')->first();
44+
if (!$sms_module || !$sms_module->id) {
45+
return ' ';
46+
}
47+
48+
// Visualizzo il log delle operazioni di invio SMS
49+
$messages = Sms::whereRaw('id_template IN (SELECT id FROM sms_templates WHERE id_module = '.prepare($options['id_module']).')')
50+
->where('id_record', $options['id_record'])
51+
->orderBy('created_at', 'DESC')
52+
->get();
53+
54+
if ($messages->isEmpty()) {
55+
return ' ';
56+
}
57+
58+
// Codice HTML
59+
$result = '
60+
<div class="card card-info collapsable collapsed-card">
61+
<div class="card-header with-border">
62+
<h3 class="card-title"><i class="fa fa-comment"></i> '.tr('SMS inviati: _NUM_', [
63+
'_NUM_' => $messages->count(),
64+
]).'</h3>
65+
<div class="card-tools pull-right">
66+
<button type="button" class="btn btn-card-tool" data-card-widget="collapse"><i class="fa fa-plus"></i></button>
67+
</div>
68+
</div>
69+
<div class="card-body">
70+
<ul>';
71+
72+
foreach ($messages as $message) {
73+
$sent = !empty($message['sent_at']) ? tr('inviato il _DATE_ alle _HOUR_', [
74+
'_DATE_' => dateFormat($message['sent_at']),
75+
'_HOUR_' => timeFormat($message['sent_at']),
76+
]) : tr('in coda di invio');
77+
78+
$descrizione = \Modules::link('Coda SMS', $message->id, tr('SMS "_TEMPLATE_" da _USER_', [
79+
'_TEMPLATE_' => $message->template ? $message->template->name : tr('Template eliminato'),
80+
'_USER_' => $message->user ? $message->user->username : tr('Utente eliminato'),
81+
]));
82+
83+
$result .= '
84+
<li>'.$descrizione.' ('.$sent.')</li>';
85+
}
86+
87+
$result .= '
88+
</ul>
89+
</div>
90+
</div>';
91+
92+
return $result;
93+
}
94+
}

src/HTMLBuilder/Wrapper/HTMLWrapper.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,28 @@ protected function choice(&$values, &$extras, $string)
314314
'descrizione' => tr('anno/i'),
315315
],
316316
];
317+
} elseif ($type == 'prefissi') {
318+
// Gestione dei prefissi telefonici dalla tabella sms_prefissi
319+
$database = database();
320+
$prefissi = $database->fetchArray('SELECT dial_code as id, CONCAT(name, " (", dial_code, ")") as descrizione FROM sms_prefissi ORDER BY name');
321+
322+
$choices = [];
323+
foreach ($prefissi as $prefisso) {
324+
$choices[] = [
325+
'id' => $prefisso['id'],
326+
'descrizione' => $prefisso['descrizione'],
327+
];
328+
}
329+
330+
// Se non ci sono prefissi nella tabella, aggiungi almeno l'Italia come default
331+
if (empty($choices)) {
332+
$choices = [
333+
[
334+
'id' => '+39',
335+
'descrizione' => 'Italia (+39)',
336+
],
337+
];
338+
}
317339
}
318340

319341
$disabled = '';

0 commit comments

Comments
 (0)