add credit estimation on message

This commit is contained in:
osaajani 2021-06-15 01:49:47 +02:00
parent 7a20cbb286
commit fa8ee399e9
4 changed files with 37 additions and 3 deletions

View File

@ -367,6 +367,12 @@ footer img
font-weight: bold; font-weight: bold;
} }
.credit-estimation-container
{
margin-top: 10px;
text-align: right;
}
/* AUDIO RECEPTION MESSAGE */ /* AUDIO RECEPTION MESSAGE */
#reception-sound #reception-sound
{ {

View File

@ -15,6 +15,7 @@ namespace controllers\publics;
{ {
private $internal_contact; private $internal_contact;
private $internal_templating; private $internal_templating;
private $internal_quota;
/** /**
* Cette fonction est appelée avant toute les autres : * Cette fonction est appelée avant toute les autres :
@ -27,6 +28,7 @@ namespace controllers\publics;
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD); $bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD);
$this->internal_contact = new \controllers\internals\Contact($bdd); $this->internal_contact = new \controllers\internals\Contact($bdd);
$this->internal_templating = new \controllers\internals\Templating(); $this->internal_templating = new \controllers\internals\Templating();
$this->internal_quota = new \controllers\internals\Quota($bdd);
\controllers\internals\Tool::verifyconnect(); \controllers\internals\Tool::verifyconnect();
} }
@ -44,6 +46,7 @@ namespace controllers\publics;
$return = [ $return = [
'success' => false, 'success' => false,
'result' => 'Une erreur inconnue est survenue.', 'result' => 'Une erreur inconnue est survenue.',
'estimation_credit' => 0,
]; ];
$template = $_POST['template'] ?? false; $template = $_POST['template'] ?? false;
@ -79,11 +82,16 @@ namespace controllers\publics;
$result = $this->internal_templating->render($template, $data); $result = $this->internal_templating->render($template, $data);
$return = $result; $return = $result;
if (!trim($result['result'])) if (!trim($result['result']))
{ {
$return['result'] = 'Message vide, il ne sera pas envoyé.'; $return['result'] = 'Message vide, il ne sera pas envoyé.';
} }
//Add credit estimation
$return['estimation_credit'] = $this->internal_quota->compute_credits_for_message($return['result']);
echo json_encode($return); echo json_encode($return);
return true; return true;

View File

@ -45,8 +45,8 @@
<label>Texte du SMS</label> <label>Texte du SMS</label>
<?php if ($_SESSION['user']['settings']['templating']) { ?> <?php if ($_SESSION['user']['settings']['templating']) { ?>
<p class="italic small help description-scheduled-text"> <p class="italic small help description-scheduled-text">
Vous pouvez utilisez des fonctionnalités de templating pour indiquer des valeures génériques qui seront remplacées par les données du contact au moment de l'envoie. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des templates.</a><br/> Vous pouvez utilisez des fonctionnalités de templating pour indiquer des valeures génériques qui seront remplacées par les données du contact au moment de l'envoie. Pour plus d'information, consultez la documentation sur <a href="https://documentation.raspisms.fr/users/templating/overview.html" target="_blank">l'utilisation des templates.</a><br/>
Vous pouvez obtenir une prévisualisation du résultat pour un contact en cliquant sur le boutton <b>"Prévisualiser"</b>. Vous pouvez obtenir une prévisualisation du résultat pour un contact, ainsi qu'une estimation du nombre de crédits qui seront utilisés par SMS, en cliquant sur le boutton <b>"Prévisualiser"</b>.
</p> </p>
<?php } ?> <?php } ?>
<textarea name="text" class="form-control" required><?php $this->s($_SESSION['previous_http_post']['text'] ?? '') ?></textarea> <textarea name="text" class="form-control" required><?php $this->s($_SESSION['previous_http_post']['text'] ?? '') ?></textarea>
@ -67,7 +67,7 @@
<div class="form-group scheduled-media-group"> <div class="form-group scheduled-media-group">
<label>Ajouter un média au SMS</label> <label>Ajouter un média au SMS</label>
<p class="italic small help description-scheduled-media"> <p class="italic small help description-scheduled-media">
L'ajout d'un média nécessite un téléphone supportant l'envoi de MMS. Pour plus d'information, consultez la documentation sur <a href="#">l'utilisation des MMS.</a>. L'ajout d'un média nécessite un téléphone supportant l'envoi de MMS. Pour plus d'information, consultez la documentation sur <a href="https://documentation.raspisms.fr/users/mms/overview.html" target="_blank">l'utilisation des MMS.</a>
</p> </p>
<div class="form-group"> <div class="form-group">
<input class="" name="medias[]" value="" type="file" multiple /> <input class="" name="medias[]" value="" type="file" multiple />
@ -141,6 +141,9 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<pre></pre> <pre></pre>
<p class="credit-estimation-container bold">
Ce message devrait coûter <span class="credit-estimation-value"></span> crédits par destinataire.
</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
@ -262,6 +265,13 @@
data: data, data: data,
success: function (data) { success: function (data) {
jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(data.result); jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(data.result);
if (data.estimation_credit !== 'undefined') {
jQuery('#scheduled-preview-text-modal').find('.modal-body .credit-estimation-value').text(data.estimation_credit);
} else {
jQuery('#scheduled-preview-text-modal').find('.modal-body .credit-estimation-value').text('0');
}
jQuery('#scheduled-preview-text-modal').modal({'keyboard': true}); jQuery('#scheduled-preview-text-modal').modal({'keyboard': true});
}, },
dataType: 'json' dataType: 'json'

View File

@ -151,6 +151,9 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<pre></pre> <pre></pre>
<p class="credit-estimation-container bold">
Ce message devrait coûter <span class="credit-estimation-value"></span> crédits par destinataire.
</p>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
@ -270,6 +273,13 @@
data: data, data: data,
success: function (data) { success: function (data) {
jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(data.result); jQuery('#scheduled-preview-text-modal').find('.modal-body pre').text(data.result);
if (data.estimation_credit !== 'undefined') {
jQuery('#scheduled-preview-text-modal').find('.modal-body .credit-estimation-value').text(data.estimation_credit);
} else {
jQuery('#scheduled-preview-text-modal').find('.modal-body .credit-estimation-value').text('0');
}
jQuery('#scheduled-preview-text-modal').modal({'keyboard': true}); jQuery('#scheduled-preview-text-modal').modal({'keyboard': true});
}, },
dataType: 'json' dataType: 'json'