<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'wrap' => [$this, 'block_wrap'],
'header' => [$this, 'block_header'],
'content' => [$this, 'block_content'],
'modals' => [$this, 'block_modals'],
];
}
protected function doGetParent(array $context)
{
// line 1
return "@ProductsNotifications/base.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
// line 3
$this->extensions['App\Twig\Extension\DomExtension']->dom_title_($context, "section", "Messages");
// line 1
$this->parent = $this->loadTemplate("@ProductsNotifications/base.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 1);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 5
public function block_wrap($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "wrap"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "wrap"));
echo "content__area--uilib reports";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
// line 7
public function block_header($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "header"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "header"));
// line 8
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 8, "205303346")->display(twig_array_merge(twig_array_merge($context, ["title" => twig_get_attribute($this->env, $this->source, // line 9
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 9, $this->source); })()), "title", [], "any", false, false, false, 9), "back" => ["text" => "Back to Messages", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.main")]]), ['_args' => twig_to_array(["title" => twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 9, $this->source); })()), "title", [], "any", false, false, false, 9), "back" => ["text" => "Back to Messages", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.main")]])]));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
// line 27
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 28
echo " ";
if ( !twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 28, $this->source); })()), "firstJob", [], "any", false, false, false, 28)) {
// line 29
echo " <div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">";
// line 32
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 32, $this->source); })()), "title", [], "any", false, false, false, 32), "html", null, true);
echo "</h2>
</div>
</div>
";
} else {
// line 36
echo "
";
// line 37
$context["stats"] = twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 37, $this->source); })()), "firstJob", [], "any", false, false, false, 37), "summarize", [], "any", false, false, false, 37);
// line 38
echo "
<div class=\"content__data reports__message pt-2\">
";
// line 40
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 40, "81890466")->display(twig_array_merge(twig_array_merge($context, ["items" => [0 => ["text" => "Summary", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.report", ["message" => twig_get_attribute($this->env, $this->source, // line 45
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 45, $this->source); })()), "id", [], "any", false, false, false, 45)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 47
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 47, $this->source); })()), "request", [], "any", false, false, false, 47), "attributes", [], "any", false, false, false, 47), "get", [0 => "_route"], "method", false, false, false, 47) === "app.notifications.dashboard.messages.report")], 1 => ["text" => "Logs", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.logs", ["message" => twig_get_attribute($this->env, $this->source, // line 52
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 52, $this->source); })()), "id", [], "any", false, false, false, 52)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 54
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 54, $this->source); })()), "request", [], "any", false, false, false, 54), "attributes", [], "any", false, false, false, 54), "get", [0 => "_route"], "method", false, false, false, 54) === "app.notifications.dashboard.messages.logs")], 2 => ["text" => "Debugging", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.debugging", ["message" => twig_get_attribute($this->env, $this->source, // line 59
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 59, $this->source); })()), "id", [], "any", false, false, false, 59)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 61
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 61, $this->source); })()), "request", [], "any", false, false, false, 61), "attributes", [], "any", false, false, false, 61), "get", [0 => "_route"], "method", false, false, false, 61) === "app.notifications.dashboard.messages.debugging")], 3 => ["text" => "Details", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.details", ["message" => twig_get_attribute($this->env, $this->source, // line 66
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 66, $this->source); })()), "id", [], "any", false, false, false, 66)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 68
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 68, $this->source); })()), "request", [], "any", false, false, false, 68), "attributes", [], "any", false, false, false, 68), "get", [0 => "_route"], "method", false, false, false, 68) === "app.notifications.dashboard.messages.details")]]]), ['_args' => twig_to_array(["items" => [0 => ["text" => "Summary", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.report", ["message" => twig_get_attribute($this->env, $this->source, // line 45
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 45, $this->source); })()), "id", [], "any", false, false, false, 45)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 47
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 47, $this->source); })()), "request", [], "any", false, false, false, 47), "attributes", [], "any", false, false, false, 47), "get", [0 => "_route"], "method", false, false, false, 47) === "app.notifications.dashboard.messages.report")], 1 => ["text" => "Logs", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.logs", ["message" => twig_get_attribute($this->env, $this->source, // line 52
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 52, $this->source); })()), "id", [], "any", false, false, false, 52)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 54
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 54, $this->source); })()), "request", [], "any", false, false, false, 54), "attributes", [], "any", false, false, false, 54), "get", [0 => "_route"], "method", false, false, false, 54) === "app.notifications.dashboard.messages.logs")], 2 => ["text" => "Debugging", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.debugging", ["message" => twig_get_attribute($this->env, $this->source, // line 59
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 59, $this->source); })()), "id", [], "any", false, false, false, 59)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 61
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 61, $this->source); })()), "request", [], "any", false, false, false, 61), "attributes", [], "any", false, false, false, 61), "get", [0 => "_route"], "method", false, false, false, 61) === "app.notifications.dashboard.messages.debugging")], 3 => ["text" => "Details", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.details", ["message" => twig_get_attribute($this->env, $this->source, // line 66
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 66, $this->source); })()), "id", [], "any", false, false, false, 66)]), "active" => (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 68
(isset($context["app"]) || array_key_exists("app", $context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.', 68, $this->source); })()), "request", [], "any", false, false, false, 68), "attributes", [], "any", false, false, false, 68), "get", [0 => "_route"], "method", false, false, false, 68) === "app.notifications.dashboard.messages.details")]]])]));
// line 759
echo " </div>
";
}
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
// line 763
public function block_modals($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modals"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "modals"));
// line 764
echo " ";
$this->displayParentBlock("modals", $context, $blocks);
echo "
";
// line 765
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 765, "1719583840")->display(twig_array_merge(twig_array_merge($context, ["attr" => ["id" => "modal__email_preview"]]), ['_args' => twig_to_array(["attr" => ["id" => "modal__email_preview"]])]));
// line 787
echo " ";
$this->loadTemplate("@ui2022/schoolnow/modal--sidepanel.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 787)->display(twig_array_merge(twig_array_merge($context, ["attr" => ["id" => "sidepanel__filtered_logs"]]), ['_args' => twig_to_array(["attr" => ["id" => "sidepanel__filtered_logs"]])]));
// line 792
echo " <script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___205303346 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'actions' => [$this, 'block_actions'],
];
}
protected function doGetParent(array $context)
{
// line 8
return "@ui2022/schoolnow/header.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/schoolnow/header.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 8);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 15
public function block_actions($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "actions"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "actions"));
// line 16
echo " ";
$this->loadTemplate("@ui2022/button--a.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 16)->display(twig_array_merge(twig_array_merge($context, ["text" => "Clone message", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.create", ["clone" => twig_get_attribute($this->env, $this->source, // line 19
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 19, $this->source); })()), "id", [], "any", false, false, false, 19)]), "styles" => "gray"]), ['_args' => twig_to_array(["text" => "Clone message", "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.create", ["clone" => twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 19, $this->source); })()), "id", [], "any", false, false, false, 19)]), "styles" => "gray"])]));
// line 23
echo " ";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___81890466 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'tab' => [$this, 'block_tab'],
];
}
protected function doGetParent(array $context)
{
// line 40
return "@ui2022/tabs--static.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/tabs--static.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 40);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 72
public function block_tab($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "tab"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "tab"));
// line 73
echo " ";
$this->loadTemplate("@ui2022/subheader.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 73)->display(twig_array_merge(twig_array_merge($context, ["title" => "Summary", "classes" => "mt-4 pt-4"]), ['_args' => twig_to_array(["title" => "Summary", "classes" => "mt-4 pt-4"])]));
// line 77
echo " <div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
";
// line 79
$this->loadTemplate("@ui2022/schoolnow/stat.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 79)->display(twig_array_merge(twig_array_merge($context, ["title" => "Sent", "subtitle" => $this->extensions['Cms\CoreBundle\Service\Twig\DateTimeExtension']->ui_datetime(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 81
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 81, $this->source); })()), "firstJob", [], "any", false, false, false, 81), "firstActivityAt", [], "any", false, false, false, 81)), "value" => (((twig_get_attribute($this->env, $this->source, // line 82
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 82, $this->source); })()), "sending", [], "any", false, false, false, 82) && (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82) > 0))) ? ((twig_round((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "succeeded", [], "any", false, false, false, 82) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "failed", [], "any", false, false, false, 82)) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82)) * 100), 0, "ceil") . "%")) : (twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82)))), "label" => "Contacts", "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 84
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 84, $this->source); })()), "all", [], "any", false, false, false, 84), "succeeded", [], "any", false, false, false, 84) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 84, $this->source); })()), "all", [], "any", false, false, false, 84), "failed", [], "any", false, false, false, 84)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 86
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 86, $this->source); })()), "id", [], "any", false, false, false, 86), "query" => ["filter" => "all", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 95
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 95, $this->source); })()), "all", [], "any", false, false, false, 95), "succeeded", [], "any", false, false, false, 95) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 95, $this->source); })()), "all", [], "any", false, false, false, 95), "failed", [], "any", false, false, false, 95)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 96
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 96, $this->source); })()), "all", [], "any", false, false, false, 96), "succeeded", [], "any", false, false, false, 96) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 96, $this->source); })()), "all", [], "any", false, false, false, 96), "failed", [], "any", false, false, false, 96)) > 0)) ? ("#sidepanel__filtered_logs") : (null))]), ['_args' => twig_to_array(["title" => "Sent", "subtitle" => $this->extensions['Cms\CoreBundle\Service\Twig\DateTimeExtension']->ui_datetime(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 81
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 81, $this->source); })()), "firstJob", [], "any", false, false, false, 81), "firstActivityAt", [], "any", false, false, false, 81)), "value" => (((twig_get_attribute($this->env, $this->source, // line 82
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 82, $this->source); })()), "sending", [], "any", false, false, false, 82) && (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82) > 0))) ? ((twig_round((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "succeeded", [], "any", false, false, false, 82) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "failed", [], "any", false, false, false, 82)) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82)) * 100), 0, "ceil") . "%")) : (twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 82, $this->source); })()), "all", [], "any", false, false, false, 82), "total", [], "any", false, false, false, 82)))), "label" => "Contacts", "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 84
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 84, $this->source); })()), "all", [], "any", false, false, false, 84), "succeeded", [], "any", false, false, false, 84) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 84, $this->source); })()), "all", [], "any", false, false, false, 84), "failed", [], "any", false, false, false, 84)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 86
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 86, $this->source); })()), "id", [], "any", false, false, false, 86), "query" => ["filter" => "all", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 95
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 95, $this->source); })()), "all", [], "any", false, false, false, 95), "succeeded", [], "any", false, false, false, 95) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 95, $this->source); })()), "all", [], "any", false, false, false, 95), "failed", [], "any", false, false, false, 95)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 96
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 96, $this->source); })()), "all", [], "any", false, false, false, 96), "succeeded", [], "any", false, false, false, 96) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 96, $this->source); })()), "all", [], "any", false, false, false, 96), "failed", [], "any", false, false, false, 96)) > 0)) ? ("#sidepanel__filtered_logs") : (null))])]));
// line 98
echo " ";
$context["interval"] = twig_split_filter($this->env, $this->extensions['Cms\CoreBundle\Service\Twig\DateTimeExtension']->ui_relativeDate(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 98, $this->source); })()), "firstJob", [], "any", false, false, false, 98), "activityInterval", [], "any", false, false, false, 98), true), " ");
// line 99
echo " ";
$this->loadTemplate("@ui2022/schoolnow/stat.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 99)->display(twig_array_merge(twig_array_merge($context, ["title" => ((twig_get_attribute($this->env, $this->source, // line 100
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 100, $this->source); })()), "sending", [], "any", false, false, false, 100)) ? ("Running") : ("Completed")), "subtitle" => $this->extensions['Cms\CoreBundle\Service\Twig\DateTimeExtension']->ui_datetime(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 101
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 101, $this->source); })()), "firstJob", [], "any", false, false, false, 101), "lastActivityAt", [], "any", false, false, false, 101)), "value" => ((twig_get_attribute($this->env, $this->source, // line 102
($context["interval"] ?? null), 1, [], "array", true, true, false, 102)) ? (twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["interval"]) || array_key_exists("interval", $context) ? $context["interval"] : (function () { throw new RuntimeError('Variable "interval" does not exist.', 102, $this->source); })()), 0, [], "array", false, false, false, 102))) : (twig_get_attribute($this->env, $this->source, (isset($context["interval"]) || array_key_exists("interval", $context) ? $context["interval"] : (function () { throw new RuntimeError('Variable "interval" does not exist.', 102, $this->source); })()), 0, [], "array", false, false, false, 102))), "label" => ((twig_get_attribute($this->env, $this->source, // line 103
($context["interval"] ?? null), 1, [], "array", true, true, false, 103)) ? (_twig_default_filter(twig_get_attribute($this->env, $this->source, ($context["interval"] ?? null), 1, [], "array", false, false, false, 103), "")) : (""))]), ['_args' => twig_to_array(["title" => ((twig_get_attribute($this->env, $this->source, // line 100
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 100, $this->source); })()), "sending", [], "any", false, false, false, 100)) ? ("Running") : ("Completed")), "subtitle" => $this->extensions['Cms\CoreBundle\Service\Twig\DateTimeExtension']->ui_datetime(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 101
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 101, $this->source); })()), "firstJob", [], "any", false, false, false, 101), "lastActivityAt", [], "any", false, false, false, 101)), "value" => ((twig_get_attribute($this->env, $this->source, // line 102
($context["interval"] ?? null), 1, [], "array", true, true, false, 102)) ? (twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["interval"]) || array_key_exists("interval", $context) ? $context["interval"] : (function () { throw new RuntimeError('Variable "interval" does not exist.', 102, $this->source); })()), 0, [], "array", false, false, false, 102))) : (twig_get_attribute($this->env, $this->source, (isset($context["interval"]) || array_key_exists("interval", $context) ? $context["interval"] : (function () { throw new RuntimeError('Variable "interval" does not exist.', 102, $this->source); })()), 0, [], "array", false, false, false, 102))), "label" => ((twig_get_attribute($this->env, $this->source, // line 103
($context["interval"] ?? null), 1, [], "array", true, true, false, 103)) ? (_twig_default_filter(twig_get_attribute($this->env, $this->source, ($context["interval"] ?? null), 1, [], "array", false, false, false, 103), "")) : (""))])]));
// line 105
echo " ";
$this->loadTemplate("@ui2022/schoolnow/stat.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 105)->display(twig_array_merge(twig_array_merge($context, ["title" => "Errors", "subtitle" => "Message not delivered", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 108
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 108, $this->source); })()), "all", [], "any", false, false, false, 108), "failed", [], "any", false, false, false, 108)), "label" => "Contacts", "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 110
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 110, $this->source); })()), "all", [], "any", false, false, false, 110), "failed", [], "any", false, false, false, 110) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 112
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 112, $this->source); })()), "id", [], "any", false, false, false, 112), "query" => ["filter" => "all", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 121
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 121, $this->source); })()), "all", [], "any", false, false, false, 121), "failed", [], "any", false, false, false, 121) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 122
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 122, $this->source); })()), "all", [], "any", false, false, false, 122), "failed", [], "any", false, false, false, 122) > 0)) ? ("#sidepanel__filtered_logs") : (null))]), ['_args' => twig_to_array(["title" => "Errors", "subtitle" => "Message not delivered", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 108
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 108, $this->source); })()), "all", [], "any", false, false, false, 108), "failed", [], "any", false, false, false, 108)), "label" => "Contacts", "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 110
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 110, $this->source); })()), "all", [], "any", false, false, false, 110), "failed", [], "any", false, false, false, 110) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 112
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 112, $this->source); })()), "id", [], "any", false, false, false, 112), "query" => ["filter" => "all", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 121
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 121, $this->source); })()), "all", [], "any", false, false, false, 121), "failed", [], "any", false, false, false, 121) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 122
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 122, $this->source); })()), "all", [], "any", false, false, false, 122), "failed", [], "any", false, false, false, 122) > 0)) ? ("#sidepanel__filtered_logs") : (null))])]));
// line 124
echo " </div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
";
// line 132
$this->loadTemplate("@ui2022/chart--donut.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 132)->display(twig_array_merge(twig_array_merge($context, ["legend" => twig_array_map($this->env, twig_array_filter($this->env, twig_get_attribute($this->env, $this->source, // line 133
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 133, $this->source); })()), "message_channels", [], "any", false, false, false, 133), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return (twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 133, $this->source); })()), "total", [], "any", false, false, false, 133) > 0); }), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return ["label" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(twig_sprintf("app.notifications.stats.reporting.labels.%s", // line 134
(isset($context["k"]) || array_key_exists("k", $context) ? $context["k"] : (function () { throw new RuntimeError('Variable "k" does not exist.', 134, $this->source); })()))), "color" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(twig_sprintf("app.notifications.stats.reporting.colors.%s", // line 135
(isset($context["k"]) || array_key_exists("k", $context) ? $context["k"] : (function () { throw new RuntimeError('Variable "k" does not exist.', 135, $this->source); })())), [], "styles", "app")]; }), "dataset" => twig_array_map($this->env, twig_array_filter($this->env, twig_get_attribute($this->env, $this->source, // line 137
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 137, $this->source); })()), "message_channels", [], "any", false, false, false, 137), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return (twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 137, $this->source); })()), "total", [], "any", false, false, false, 137) > 0); }), function ($__v__) use ($context, $macros) { $context["v"] = $__v__; return twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 137, $this->source); })()), "total", [], "any", false, false, false, 137); }), "label" => "Total contacts"]), ['_args' => twig_to_array(["legend" => twig_array_map($this->env, twig_array_filter($this->env, twig_get_attribute($this->env, $this->source, // line 133
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 133, $this->source); })()), "message_channels", [], "any", false, false, false, 133), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return (twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 133, $this->source); })()), "total", [], "any", false, false, false, 133) > 0); }), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return ["label" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(twig_sprintf("app.notifications.stats.reporting.labels.%s", // line 134
(isset($context["k"]) || array_key_exists("k", $context) ? $context["k"] : (function () { throw new RuntimeError('Variable "k" does not exist.', 134, $this->source); })()))), "color" => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(twig_sprintf("app.notifications.stats.reporting.colors.%s", // line 135
(isset($context["k"]) || array_key_exists("k", $context) ? $context["k"] : (function () { throw new RuntimeError('Variable "k" does not exist.', 135, $this->source); })())), [], "styles", "app")]; }), "dataset" => twig_array_map($this->env, twig_array_filter($this->env, twig_get_attribute($this->env, $this->source, // line 137
(isset($context["stats"]) || array_key_exists("stats", $context) ? $context["stats"] : (function () { throw new RuntimeError('Variable "stats" does not exist.', 137, $this->source); })()), "message_channels", [], "any", false, false, false, 137), function ($__v__, $__k__) use ($context, $macros) { $context["v"] = $__v__; $context["k"] = $__k__; return (twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 137, $this->source); })()), "total", [], "any", false, false, false, 137) > 0); }), function ($__v__) use ($context, $macros) { $context["v"] = $__v__; return twig_get_attribute($this->env, $this->source, (isset($context["v"]) || array_key_exists("v", $context) ? $context["v"] : (function () { throw new RuntimeError('Variable "v" does not exist.', 137, $this->source); })()), "total", [], "any", false, false, false, 137); }), "label" => "Total contacts"])]));
// line 140
echo " </div>
</div>
";
// line 142
if ((twig_constant("DISCR", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 142, $this->source); })())) === twig_constant("Products\\NotificationsBundle\\Entity\\Notifications\\Message::DISCR"))) {
// line 143
echo " <div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
";
// line 146
if (twig_length_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 146, $this->source); })()), "lists", [], "any", false, false, false, 146))) {
// line 147
echo " ";
$this->loadTemplate("@ui2022/targetlist__item.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 147)->display(twig_array_merge(twig_array_merge($context, ["title" => "Contact lists", "icon" => "icon-contact-reachable", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 150
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 150, $this->source); })()), "lists", [], "any", false, false, false, 150), function ($__list__) use ($context, $macros) { $context["list"] = $__list__; return ["text" => twig_get_attribute($this->env, $this->source, // line 151
(isset($context["list"]) || array_key_exists("list", $context) ? $context["list"] : (function () { throw new RuntimeError('Variable "list" does not exist.', 151, $this->source); })()), "name", [], "any", false, false, false, 151), "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.lists.view", ["list" => twig_get_attribute($this->env, $this->source, // line 153
(isset($context["list"]) || array_key_exists("list", $context) ? $context["list"] : (function () { throw new RuntimeError('Variable "list" does not exist.', 153, $this->source); })()), "id", [], "any", false, false, false, 153)])]; })]), ['_args' => twig_to_array(["title" => "Contact lists", "icon" => "icon-contact-reachable", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 150
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 150, $this->source); })()), "lists", [], "any", false, false, false, 150), function ($__list__) use ($context, $macros) { $context["list"] = $__list__; return ["text" => twig_get_attribute($this->env, $this->source, // line 151
(isset($context["list"]) || array_key_exists("list", $context) ? $context["list"] : (function () { throw new RuntimeError('Variable "list" does not exist.', 151, $this->source); })()), "name", [], "any", false, false, false, 151), "link" => $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.lists.view", ["list" => twig_get_attribute($this->env, $this->source, // line 153
(isset($context["list"]) || array_key_exists("list", $context) ? $context["list"] : (function () { throw new RuntimeError('Variable "list" does not exist.', 153, $this->source); })()), "id", [], "any", false, false, false, 153)])]; })])]));
// line 157
echo " ";
}
// line 158
echo " ";
if (twig_length_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 158, $this->source); })()), "facebookSocialAccounts", [], "any", false, false, false, 158))) {
// line 159
echo " ";
$this->loadTemplate("@ui2022/targetlist__item.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 159)->display(twig_array_merge(twig_array_merge($context, ["title" => "Facebook pages", "icon" => "icon-facebook-fill", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 162
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 162, $this->source); })()), "facebookSocialAccounts", [], "any", false, false, false, 162), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 163
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 163, $this->source); })()), "name", [], "any", false, false, false, 163), "target" => "_blank", "link" => twig_sprintf("https://www.facebook.com/%s", twig_get_attribute($this->env, $this->source, // line 166
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 166, $this->source); })()), "facebookPageId", [], "any", false, false, false, 166))]; })]), ['_args' => twig_to_array(["title" => "Facebook pages", "icon" => "icon-facebook-fill", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 162
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 162, $this->source); })()), "facebookSocialAccounts", [], "any", false, false, false, 162), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 163
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 163, $this->source); })()), "name", [], "any", false, false, false, 163), "target" => "_blank", "link" => twig_sprintf("https://www.facebook.com/%s", twig_get_attribute($this->env, $this->source, // line 166
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 166, $this->source); })()), "facebookPageId", [], "any", false, false, false, 166))]; })])]));
// line 170
echo " ";
}
// line 171
echo " ";
if (twig_length_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 171, $this->source); })()), "twitterSocialAccounts", [], "any", false, false, false, 171))) {
// line 172
echo " ";
$this->loadTemplate("@ui2022/targetlist__item.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 172)->display(twig_array_merge(twig_array_merge($context, ["title" => "Twitter profiles", "icon" => "icon-twitter-fill", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 175
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 175, $this->source); })()), "twitterSocialAccounts", [], "any", false, false, false, 175), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 176
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 176, $this->source); })()), "name", [], "any", false, false, false, 176), "target" => "_blank", "link" => twig_sprintf("https://www.twitter.com/%s", twig_get_attribute($this->env, $this->source, // line 179
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 179, $this->source); })()), "twitterUserName", [], "any", false, false, false, 179))]; })]), ['_args' => twig_to_array(["title" => "Twitter profiles", "icon" => "icon-twitter-fill", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 175
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 175, $this->source); })()), "twitterSocialAccounts", [], "any", false, false, false, 175), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 176
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 176, $this->source); })()), "name", [], "any", false, false, false, 176), "target" => "_blank", "link" => twig_sprintf("https://www.twitter.com/%s", twig_get_attribute($this->env, $this->source, // line 179
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 179, $this->source); })()), "twitterUserName", [], "any", false, false, false, 179))]; })])]));
// line 183
echo " ";
}
// line 184
echo " ";
if (twig_length_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 184, $this->source); })()), "instagramSocialAccounts", [], "any", false, false, false, 184))) {
// line 185
echo " ";
$this->loadTemplate("@ui2022/targetlist__item.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 185)->display(twig_array_merge(twig_array_merge($context, ["title" => "Instagram accounts", "icon" => "fab fa-instagram", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 188
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 188, $this->source); })()), "instagramSocialAccounts", [], "any", false, false, false, 188), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 189
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 189, $this->source); })()), "name", [], "any", false, false, false, 189), "target" => "_blank", "link" => twig_sprintf("https://www.instagram.com/%s", twig_get_attribute($this->env, $this->source, // line 192
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 192, $this->source); })()), "name", [], "any", false, false, false, 192))]; })]), ['_args' => twig_to_array(["title" => "Instagram accounts", "icon" => "fab fa-instagram", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 188
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 188, $this->source); })()), "instagramSocialAccounts", [], "any", false, false, false, 188), function ($__social__) use ($context, $macros) { $context["social"] = $__social__; return ["text" => twig_get_attribute($this->env, $this->source, // line 189
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 189, $this->source); })()), "name", [], "any", false, false, false, 189), "target" => "_blank", "link" => twig_sprintf("https://www.instagram.com/%s", twig_get_attribute($this->env, $this->source, // line 192
(isset($context["social"]) || array_key_exists("social", $context) ? $context["social"] : (function () { throw new RuntimeError('Variable "social" does not exist.', 192, $this->source); })()), "name", [], "any", false, false, false, 192))]; })])]));
// line 196
echo " ";
}
// line 197
echo " ";
if (twig_length_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 197, $this->source); })()), "websiteDepartments", [], "any", false, false, false, 197))) {
// line 198
echo " ";
$this->loadTemplate("@ui2022/targetlist__item.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 198)->display(twig_array_merge(twig_array_merge($context, ["title" => "Website departments", "icon" => "icon-website", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 201
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 201, $this->source); })()), "websiteDepartments", [], "any", false, false, false, 201), function ($__department__) use ($context, $macros) { $context["department"] = $__department__; return ["text" => twig_get_attribute($this->env, $this->source, // line 202
(isset($context["department"]) || array_key_exists("department", $context) ? $context["department"] : (function () { throw new RuntimeError('Variable "department" does not exist.', 202, $this->source); })()), "name", [], "any", false, false, false, 202), "target" => "_blank", "link" => $this->env->getFunction('web_url_catchall')->getCallable()( // line 204
(isset($context["department"]) || array_key_exists("department", $context) ? $context["department"] : (function () { throw new RuntimeError('Variable "department" does not exist.', 204, $this->source); })()), "/")]; })]), ['_args' => twig_to_array(["title" => "Website departments", "icon" => "icon-website", "items" => twig_array_map($this->env, twig_get_attribute($this->env, $this->source, // line 201
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 201, $this->source); })()), "websiteDepartments", [], "any", false, false, false, 201), function ($__department__) use ($context, $macros) { $context["department"] = $__department__; return ["text" => twig_get_attribute($this->env, $this->source, // line 202
(isset($context["department"]) || array_key_exists("department", $context) ? $context["department"] : (function () { throw new RuntimeError('Variable "department" does not exist.', 202, $this->source); })()), "name", [], "any", false, false, false, 202), "target" => "_blank", "link" => $this->env->getFunction('web_url_catchall')->getCallable()( // line 204
(isset($context["department"]) || array_key_exists("department", $context) ? $context["department"] : (function () { throw new RuntimeError('Variable "department" does not exist.', 204, $this->source); })()), "/")]; })])]));
// line 207
echo " ";
}
// line 208
echo " </div>
</div>
";
}
// line 211
echo " </div>
</div>
</div>
";
// line 215
$context['_parent'] = $context;
$context['_seq'] = twig_ensure_traversable(twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 215, $this->source); })()), "usedChannels", [0 => true], "method", false, false, false, 215));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["channel"]) {
// line 216
echo " ";
if ((($context["channel"] == twig_constant("CHANNELS__EMAIL", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 216, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 216, $this->source); })()), "firstJob", [], "any", false, false, false, 216), "emailTotal", [], "any", false, false, false, 216))) {
// line 217
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 217, "1040482493")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-activity-mail", "title" => "Email", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 223
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 223, $this->source); })()), "firstJob", [], "any", false, false, false, 223), "emailSucceeded", [], "any", false, false, false, 223)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 224
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 224, $this->source); })()), "firstJob", [], "any", false, false, false, 224), "emailSucceeded", [], "any", false, false, false, 224) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 226
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 226, $this->source); })()), "id", [], "any", false, false, false, 226), "query" => ["filter" => "email", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 234
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 234, $this->source); })()), "firstJob", [], "any", false, false, false, 234), "emailSucceeded", [], "any", false, false, false, 234) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 235
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 235, $this->source); })()), "firstJob", [], "any", false, false, false, 235), "emailSucceeded", [], "any", false, false, false, 235) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 239
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 239, $this->source); })()), "firstJob", [], "any", false, false, false, 239), "emailDelivered", [], "any", false, false, false, 239)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 240
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 240, $this->source); })()), "firstJob", [], "any", false, false, false, 240), "emailDelivered", [], "any", false, false, false, 240) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 242
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 242, $this->source); })()), "id", [], "any", false, false, false, 242), "query" => ["filter" => "email", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 251
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 251, $this->source); })()), "firstJob", [], "any", false, false, false, 251), "emailDelivered", [], "any", false, false, false, 251) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 252
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 252, $this->source); })()), "firstJob", [], "any", false, false, false, 252), "emailDelivered", [], "any", false, false, false, 252) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 256
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 256, $this->source); })()), "firstJob", [], "any", false, false, false, 256), "emailUndelivered", [], "any", false, false, false, 256) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 256, $this->source); })()), "firstJob", [], "any", false, false, false, 256), "emailFailed", [], "any", false, false, false, 256))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 257
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 257, $this->source); })()), "firstJob", [], "any", false, false, false, 257), "emailUndelivered", [], "any", false, false, false, 257) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 257, $this->source); })()), "firstJob", [], "any", false, false, false, 257), "emailFailed", [], "any", false, false, false, 257)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 259
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 259, $this->source); })()), "id", [], "any", false, false, false, 259), "query" => ["filter" => "email", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 268
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 268, $this->source); })()), "firstJob", [], "any", false, false, false, 268), "emailUndelivered", [], "any", false, false, false, 268) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 268, $this->source); })()), "firstJob", [], "any", false, false, false, 268), "emailFailed", [], "any", false, false, false, 268)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 269
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 269, $this->source); })()), "firstJob", [], "any", false, false, false, 269), "emailUndelivered", [], "any", false, false, false, 269) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 269, $this->source); })()), "firstJob", [], "any", false, false, false, 269), "emailFailed", [], "any", false, false, false, 269)) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 3 => ["label" => "Open rate", "value" => $this->extensions['App\Twig\Extension\MiscellaneousExtension']->percentage(((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 273
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailSucceeded", [], "any", false, false, false, 273)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailOpened", [], "any", false, false, false, 273) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailSucceeded", [], "any", false, false, false, 273))) : (0))), "progress" => ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 274
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailSucceeded", [], "any", false, false, false, 274)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailOpened", [], "any", false, false, false, 274) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailSucceeded", [], "any", false, false, false, 274))) : (0))]]]), ['_args' => twig_to_array(["icon" => "icon-activity-mail", "title" => "Email", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 223
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 223, $this->source); })()), "firstJob", [], "any", false, false, false, 223), "emailSucceeded", [], "any", false, false, false, 223)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 224
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 224, $this->source); })()), "firstJob", [], "any", false, false, false, 224), "emailSucceeded", [], "any", false, false, false, 224) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 226
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 226, $this->source); })()), "id", [], "any", false, false, false, 226), "query" => ["filter" => "email", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 234
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 234, $this->source); })()), "firstJob", [], "any", false, false, false, 234), "emailSucceeded", [], "any", false, false, false, 234) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 235
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 235, $this->source); })()), "firstJob", [], "any", false, false, false, 235), "emailSucceeded", [], "any", false, false, false, 235) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 239
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 239, $this->source); })()), "firstJob", [], "any", false, false, false, 239), "emailDelivered", [], "any", false, false, false, 239)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 240
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 240, $this->source); })()), "firstJob", [], "any", false, false, false, 240), "emailDelivered", [], "any", false, false, false, 240) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 242
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 242, $this->source); })()), "id", [], "any", false, false, false, 242), "query" => ["filter" => "email", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 251
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 251, $this->source); })()), "firstJob", [], "any", false, false, false, 251), "emailDelivered", [], "any", false, false, false, 251) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 252
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 252, $this->source); })()), "firstJob", [], "any", false, false, false, 252), "emailDelivered", [], "any", false, false, false, 252) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 256
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 256, $this->source); })()), "firstJob", [], "any", false, false, false, 256), "emailUndelivered", [], "any", false, false, false, 256) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 256, $this->source); })()), "firstJob", [], "any", false, false, false, 256), "emailFailed", [], "any", false, false, false, 256))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 257
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 257, $this->source); })()), "firstJob", [], "any", false, false, false, 257), "emailUndelivered", [], "any", false, false, false, 257) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 257, $this->source); })()), "firstJob", [], "any", false, false, false, 257), "emailFailed", [], "any", false, false, false, 257)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 259
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 259, $this->source); })()), "id", [], "any", false, false, false, 259), "query" => ["filter" => "email", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 268
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 268, $this->source); })()), "firstJob", [], "any", false, false, false, 268), "emailUndelivered", [], "any", false, false, false, 268) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 268, $this->source); })()), "firstJob", [], "any", false, false, false, 268), "emailFailed", [], "any", false, false, false, 268)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 269
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 269, $this->source); })()), "firstJob", [], "any", false, false, false, 269), "emailUndelivered", [], "any", false, false, false, 269) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 269, $this->source); })()), "firstJob", [], "any", false, false, false, 269), "emailFailed", [], "any", false, false, false, 269)) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 3 => ["label" => "Open rate", "value" => $this->extensions['App\Twig\Extension\MiscellaneousExtension']->percentage(((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 273
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailSucceeded", [], "any", false, false, false, 273)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailOpened", [], "any", false, false, false, 273) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 273, $this->source); })()), "firstJob", [], "any", false, false, false, 273), "emailSucceeded", [], "any", false, false, false, 273))) : (0))), "progress" => ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 274
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailSucceeded", [], "any", false, false, false, 274)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailOpened", [], "any", false, false, false, 274) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 274, $this->source); })()), "firstJob", [], "any", false, false, false, 274), "emailSucceeded", [], "any", false, false, false, 274))) : (0))]]])]));
// line 298
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__SMS", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 298, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 298, $this->source); })()), "firstJob", [], "any", false, false, false, 298), "smsTotal", [], "any", false, false, false, 298))) {
// line 299
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 299, "1062131583")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-activity-text", "title" => "SMS", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 305
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 305, $this->source); })()), "firstJob", [], "any", false, false, false, 305), "smsSucceeded", [], "any", false, false, false, 305)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 306
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 306, $this->source); })()), "firstJob", [], "any", false, false, false, 306), "smsSucceeded", [], "any", false, false, false, 306) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 308
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 308, $this->source); })()), "id", [], "any", false, false, false, 308), "query" => ["filter" => "sms", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 317
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 317, $this->source); })()), "firstJob", [], "any", false, false, false, 317), "smsSucceeded", [], "any", false, false, false, 317) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 318
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 318, $this->source); })()), "firstJob", [], "any", false, false, false, 318), "smsSucceeded", [], "any", false, false, false, 318) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 322
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 322, $this->source); })()), "firstJob", [], "any", false, false, false, 322), "smsDelivered", [], "any", false, false, false, 322)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 323
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 323, $this->source); })()), "firstJob", [], "any", false, false, false, 323), "smsDelivered", [], "any", false, false, false, 323) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 325
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 325, $this->source); })()), "id", [], "any", false, false, false, 325), "query" => ["filter" => "sms", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 334
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 334, $this->source); })()), "firstJob", [], "any", false, false, false, 334), "smsDelivered", [], "any", false, false, false, 334) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 335
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 335, $this->source); })()), "firstJob", [], "any", false, false, false, 335), "smsDelivered", [], "any", false, false, false, 335) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 339
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 339, $this->source); })()), "firstJob", [], "any", false, false, false, 339), "smsUndelivered", [], "any", false, false, false, 339) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 339, $this->source); })()), "firstJob", [], "any", false, false, false, 339), "smsFailed", [], "any", false, false, false, 339))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 340
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 340, $this->source); })()), "firstJob", [], "any", false, false, false, 340), "smsUndelivered", [], "any", false, false, false, 340) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 340, $this->source); })()), "firstJob", [], "any", false, false, false, 340), "smsFailed", [], "any", false, false, false, 340)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 342
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 342, $this->source); })()), "id", [], "any", false, false, false, 342), "query" => ["filter" => "sms", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 351
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 351, $this->source); })()), "firstJob", [], "any", false, false, false, 351), "smsUndelivered", [], "any", false, false, false, 351) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 351, $this->source); })()), "firstJob", [], "any", false, false, false, 351), "smsFailed", [], "any", false, false, false, 351)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 352
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 352, $this->source); })()), "firstJob", [], "any", false, false, false, 352), "smsUndelivered", [], "any", false, false, false, 352) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 352, $this->source); })()), "firstJob", [], "any", false, false, false, 352), "smsFailed", [], "any", false, false, false, 352)) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "icon-activity-text", "title" => "SMS", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 305
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 305, $this->source); })()), "firstJob", [], "any", false, false, false, 305), "smsSucceeded", [], "any", false, false, false, 305)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 306
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 306, $this->source); })()), "firstJob", [], "any", false, false, false, 306), "smsSucceeded", [], "any", false, false, false, 306) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 308
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 308, $this->source); })()), "id", [], "any", false, false, false, 308), "query" => ["filter" => "sms", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 317
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 317, $this->source); })()), "firstJob", [], "any", false, false, false, 317), "smsSucceeded", [], "any", false, false, false, 317) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 318
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 318, $this->source); })()), "firstJob", [], "any", false, false, false, 318), "smsSucceeded", [], "any", false, false, false, 318) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 322
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 322, $this->source); })()), "firstJob", [], "any", false, false, false, 322), "smsDelivered", [], "any", false, false, false, 322)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 323
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 323, $this->source); })()), "firstJob", [], "any", false, false, false, 323), "smsDelivered", [], "any", false, false, false, 323) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 325
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 325, $this->source); })()), "id", [], "any", false, false, false, 325), "query" => ["filter" => "sms", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 334
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 334, $this->source); })()), "firstJob", [], "any", false, false, false, 334), "smsDelivered", [], "any", false, false, false, 334) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 335
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 335, $this->source); })()), "firstJob", [], "any", false, false, false, 335), "smsDelivered", [], "any", false, false, false, 335) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 339
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 339, $this->source); })()), "firstJob", [], "any", false, false, false, 339), "smsUndelivered", [], "any", false, false, false, 339) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 339, $this->source); })()), "firstJob", [], "any", false, false, false, 339), "smsFailed", [], "any", false, false, false, 339))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 340
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 340, $this->source); })()), "firstJob", [], "any", false, false, false, 340), "smsUndelivered", [], "any", false, false, false, 340) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 340, $this->source); })()), "firstJob", [], "any", false, false, false, 340), "smsFailed", [], "any", false, false, false, 340)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 342
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 342, $this->source); })()), "id", [], "any", false, false, false, 342), "query" => ["filter" => "sms", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 351
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 351, $this->source); })()), "firstJob", [], "any", false, false, false, 351), "smsUndelivered", [], "any", false, false, false, 351) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 351, $this->source); })()), "firstJob", [], "any", false, false, false, 351), "smsFailed", [], "any", false, false, false, 351)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 352
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 352, $this->source); })()), "firstJob", [], "any", false, false, false, 352), "smsUndelivered", [], "any", false, false, false, 352) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 352, $this->source); })()), "firstJob", [], "any", false, false, false, 352), "smsFailed", [], "any", false, false, false, 352)) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 378
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__VOICE", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 378, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 378, $this->source); })()), "firstJob", [], "any", false, false, false, 378), "voiceTotal", [], "any", false, false, false, 378))) {
// line 379
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 379, "1222024576")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-activity-voice", "title" => "Phone", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 385
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 385, $this->source); })()), "firstJob", [], "any", false, false, false, 385), "voiceSucceeded", [], "any", false, false, false, 385)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 386
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 386, $this->source); })()), "firstJob", [], "any", false, false, false, 386), "voiceSucceeded", [], "any", false, false, false, 386) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 388
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 388, $this->source); })()), "id", [], "any", false, false, false, 388), "query" => ["filter" => "voice", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 397
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 397, $this->source); })()), "firstJob", [], "any", false, false, false, 397), "voiceSucceeded", [], "any", false, false, false, 397) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 398
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 398, $this->source); })()), "firstJob", [], "any", false, false, false, 398), "voiceSucceeded", [], "any", false, false, false, 398) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 402
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 402, $this->source); })()), "firstJob", [], "any", false, false, false, 402), "voiceDelivered", [], "any", false, false, false, 402)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 403
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 403, $this->source); })()), "firstJob", [], "any", false, false, false, 403), "voiceDelivered", [], "any", false, false, false, 403) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 405
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 405, $this->source); })()), "id", [], "any", false, false, false, 405), "query" => ["filter" => "voice", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 414
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 414, $this->source); })()), "firstJob", [], "any", false, false, false, 414), "voiceDelivered", [], "any", false, false, false, 414) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 415
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 415, $this->source); })()), "firstJob", [], "any", false, false, false, 415), "voiceDelivered", [], "any", false, false, false, 415) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 419
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 419, $this->source); })()), "firstJob", [], "any", false, false, false, 419), "voiceUndelivered", [], "any", false, false, false, 419) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 419, $this->source); })()), "firstJob", [], "any", false, false, false, 419), "voiceFailed", [], "any", false, false, false, 419))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 420
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 420, $this->source); })()), "firstJob", [], "any", false, false, false, 420), "voiceUndelivered", [], "any", false, false, false, 420) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 420, $this->source); })()), "firstJob", [], "any", false, false, false, 420), "voiceFailed", [], "any", false, false, false, 420)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 422
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 422, $this->source); })()), "id", [], "any", false, false, false, 422), "query" => ["filter" => "voice", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 431
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 431, $this->source); })()), "firstJob", [], "any", false, false, false, 431), "voiceUndelivered", [], "any", false, false, false, 431) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 431, $this->source); })()), "firstJob", [], "any", false, false, false, 431), "voiceFailed", [], "any", false, false, false, 431)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 432
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 432, $this->source); })()), "firstJob", [], "any", false, false, false, 432), "voiceUndelivered", [], "any", false, false, false, 432) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 432, $this->source); })()), "firstJob", [], "any", false, false, false, 432), "voiceFailed", [], "any", false, false, false, 432)) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 3 => ["label" => "Answer rate", "value" => $this->extensions['App\Twig\Extension\MiscellaneousExtension']->percentage(((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 436
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceSucceeded", [], "any", false, false, false, 436)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceAnswered", [], "any", false, false, false, 436) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceSucceeded", [], "any", false, false, false, 436))) : (0))), "progress" => ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 437
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceSucceeded", [], "any", false, false, false, 437)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceAnswered", [], "any", false, false, false, 437) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceSucceeded", [], "any", false, false, false, 437))) : (0))]]]), ['_args' => twig_to_array(["icon" => "icon-activity-voice", "title" => "Phone", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 385
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 385, $this->source); })()), "firstJob", [], "any", false, false, false, 385), "voiceSucceeded", [], "any", false, false, false, 385)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 386
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 386, $this->source); })()), "firstJob", [], "any", false, false, false, 386), "voiceSucceeded", [], "any", false, false, false, 386) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 388
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 388, $this->source); })()), "id", [], "any", false, false, false, 388), "query" => ["filter" => "voice", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 397
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 397, $this->source); })()), "firstJob", [], "any", false, false, false, 397), "voiceSucceeded", [], "any", false, false, false, 397) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 398
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 398, $this->source); })()), "firstJob", [], "any", false, false, false, 398), "voiceSucceeded", [], "any", false, false, false, 398) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 402
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 402, $this->source); })()), "firstJob", [], "any", false, false, false, 402), "voiceDelivered", [], "any", false, false, false, 402)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 403
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 403, $this->source); })()), "firstJob", [], "any", false, false, false, 403), "voiceDelivered", [], "any", false, false, false, 403) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 405
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 405, $this->source); })()), "id", [], "any", false, false, false, 405), "query" => ["filter" => "voice", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 414
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 414, $this->source); })()), "firstJob", [], "any", false, false, false, 414), "voiceDelivered", [], "any", false, false, false, 414) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 415
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 415, $this->source); })()), "firstJob", [], "any", false, false, false, 415), "voiceDelivered", [], "any", false, false, false, 415) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 419
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 419, $this->source); })()), "firstJob", [], "any", false, false, false, 419), "voiceUndelivered", [], "any", false, false, false, 419) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 419, $this->source); })()), "firstJob", [], "any", false, false, false, 419), "voiceFailed", [], "any", false, false, false, 419))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 420
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 420, $this->source); })()), "firstJob", [], "any", false, false, false, 420), "voiceUndelivered", [], "any", false, false, false, 420) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 420, $this->source); })()), "firstJob", [], "any", false, false, false, 420), "voiceFailed", [], "any", false, false, false, 420)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 422
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 422, $this->source); })()), "id", [], "any", false, false, false, 422), "query" => ["filter" => "voice", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 431
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 431, $this->source); })()), "firstJob", [], "any", false, false, false, 431), "voiceUndelivered", [], "any", false, false, false, 431) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 431, $this->source); })()), "firstJob", [], "any", false, false, false, 431), "voiceFailed", [], "any", false, false, false, 431)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 432
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 432, $this->source); })()), "firstJob", [], "any", false, false, false, 432), "voiceUndelivered", [], "any", false, false, false, 432) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 432, $this->source); })()), "firstJob", [], "any", false, false, false, 432), "voiceFailed", [], "any", false, false, false, 432)) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 3 => ["label" => "Answer rate", "value" => $this->extensions['App\Twig\Extension\MiscellaneousExtension']->percentage(((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 436
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceSucceeded", [], "any", false, false, false, 436)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceAnswered", [], "any", false, false, false, 436) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 436, $this->source); })()), "firstJob", [], "any", false, false, false, 436), "voiceSucceeded", [], "any", false, false, false, 436))) : (0))), "progress" => ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 437
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceSucceeded", [], "any", false, false, false, 437)) ? ((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceAnswered", [], "any", false, false, false, 437) / twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 437, $this->source); })()), "firstJob", [], "any", false, false, false, 437), "voiceSucceeded", [], "any", false, false, false, 437))) : (0))]]])]));
// line 465
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__APP", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 465, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 465, $this->source); })()), "firstJob", [], "any", false, false, false, 465), "appTotal", [], "any", false, false, false, 465))) {
// line 466
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 466, "2123896173")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-deviceapp", "title" => "Mobile app", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 472
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 472, $this->source); })()), "firstJob", [], "any", false, false, false, 472), "appSucceeded", [], "any", false, false, false, 472)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 473
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 473, $this->source); })()), "firstJob", [], "any", false, false, false, 473), "appSucceeded", [], "any", false, false, false, 473) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 475
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 475, $this->source); })()), "id", [], "any", false, false, false, 475), "query" => ["filter" => "app", "state" => "pending", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 484
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 484, $this->source); })()), "firstJob", [], "any", false, false, false, 484), "appSucceeded", [], "any", false, false, false, 484) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 485
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 485, $this->source); })()), "firstJob", [], "any", false, false, false, 485), "appSucceeded", [], "any", false, false, false, 485) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 489
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 489, $this->source); })()), "firstJob", [], "any", false, false, false, 489), "appDelivered", [], "any", false, false, false, 489))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 493
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 493, $this->source); })()), "firstJob", [], "any", false, false, false, 493), "appUndelivered", [], "any", false, false, false, 493) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 493, $this->source); })()), "firstJob", [], "any", false, false, false, 493), "appFailed", [], "any", false, false, false, 493))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 494
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 494, $this->source); })()), "firstJob", [], "any", false, false, false, 494), "appUndelivered", [], "any", false, false, false, 494) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 494, $this->source); })()), "firstJob", [], "any", false, false, false, 494), "appFailed", [], "any", false, false, false, 494)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 496
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 496, $this->source); })()), "id", [], "any", false, false, false, 496), "query" => ["filter" => "app", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 505
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 505, $this->source); })()), "firstJob", [], "any", false, false, false, 505), "appUndelivered", [], "any", false, false, false, 505) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 505, $this->source); })()), "firstJob", [], "any", false, false, false, 505), "appFailed", [], "any", false, false, false, 505)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 506
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 506, $this->source); })()), "firstJob", [], "any", false, false, false, 506), "appUndelivered", [], "any", false, false, false, 506) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 506, $this->source); })()), "firstJob", [], "any", false, false, false, 506), "appFailed", [], "any", false, false, false, 506)) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "icon-deviceapp", "title" => "Mobile app", "stats" => [0 => ["label" => "Total sent", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 472
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 472, $this->source); })()), "firstJob", [], "any", false, false, false, 472), "appSucceeded", [], "any", false, false, false, 472)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 473
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 473, $this->source); })()), "firstJob", [], "any", false, false, false, 473), "appSucceeded", [], "any", false, false, false, 473) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 475
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 475, $this->source); })()), "id", [], "any", false, false, false, 475), "query" => ["filter" => "app", "state" => "pending", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 484
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 484, $this->source); })()), "firstJob", [], "any", false, false, false, 484), "appSucceeded", [], "any", false, false, false, 484) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 485
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 485, $this->source); })()), "firstJob", [], "any", false, false, false, 485), "appSucceeded", [], "any", false, false, false, 485) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Delivery verified", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 489
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 489, $this->source); })()), "firstJob", [], "any", false, false, false, 489), "appDelivered", [], "any", false, false, false, 489))], 2 => ["label" => "Bounces", "value" => twig_number_format_filter($this->env, (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 493
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 493, $this->source); })()), "firstJob", [], "any", false, false, false, 493), "appUndelivered", [], "any", false, false, false, 493) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 493, $this->source); })()), "firstJob", [], "any", false, false, false, 493), "appFailed", [], "any", false, false, false, 493))), "link" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 494
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 494, $this->source); })()), "firstJob", [], "any", false, false, false, 494), "appUndelivered", [], "any", false, false, false, 494) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 494, $this->source); })()), "firstJob", [], "any", false, false, false, 494), "appFailed", [], "any", false, false, false, 494)) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 496
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 496, $this->source); })()), "id", [], "any", false, false, false, 496), "query" => ["filter" => "app", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 505
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 505, $this->source); })()), "firstJob", [], "any", false, false, false, 505), "appUndelivered", [], "any", false, false, false, 505) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 505, $this->source); })()), "firstJob", [], "any", false, false, false, 505), "appFailed", [], "any", false, false, false, 505)) > 0)) ? ("sidepanel") : (null)), "dataTarget" => ((((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 506
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 506, $this->source); })()), "firstJob", [], "any", false, false, false, 506), "appUndelivered", [], "any", false, false, false, 506) + twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 506, $this->source); })()), "firstJob", [], "any", false, false, false, 506), "appFailed", [], "any", false, false, false, 506)) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 523
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__FACEBOOK", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 523, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 523, $this->source); })()), "firstJob", [], "any", false, false, false, 523), "facebookTotal", [], "any", false, false, false, 523))) {
// line 524
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 524, "1146006736")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-facebook-fill", "title" => "Facebook", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 530
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 530, $this->source); })()), "firstJob", [], "any", false, false, false, 530), "facebookTotal", [], "any", false, false, false, 530)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 531
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 531, $this->source); })()), "firstJob", [], "any", false, false, false, 531), "facebookTotal", [], "any", false, false, false, 531) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 533
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 533, $this->source); })()), "id", [], "any", false, false, false, 533), "query" => ["filter" => "facebook", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 542
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 542, $this->source); })()), "firstJob", [], "any", false, false, false, 542), "facebookTotal", [], "any", false, false, false, 542) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 543
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 543, $this->source); })()), "firstJob", [], "any", false, false, false, 543), "facebookTotal", [], "any", false, false, false, 543) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 547
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 547, $this->source); })()), "firstJob", [], "any", false, false, false, 547), "facebookSucceeded", [], "any", false, false, false, 547)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 548
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 548, $this->source); })()), "firstJob", [], "any", false, false, false, 548), "facebookSucceeded", [], "any", false, false, false, 548) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 550
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 550, $this->source); })()), "id", [], "any", false, false, false, 550), "query" => ["filter" => "facebook", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 559
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 559, $this->source); })()), "firstJob", [], "any", false, false, false, 559), "facebookSucceeded", [], "any", false, false, false, 559) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 560
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 560, $this->source); })()), "firstJob", [], "any", false, false, false, 560), "facebookSucceeded", [], "any", false, false, false, 560) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 564
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 564, $this->source); })()), "firstJob", [], "any", false, false, false, 564), "facebookFailed", [], "any", false, false, false, 564)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 565
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 565, $this->source); })()), "firstJob", [], "any", false, false, false, 565), "facebookFailed", [], "any", false, false, false, 565) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 567
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 567, $this->source); })()), "id", [], "any", false, false, false, 567), "query" => ["filter" => "facebook", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 576
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 576, $this->source); })()), "firstJob", [], "any", false, false, false, 576), "facebookFailed", [], "any", false, false, false, 576) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 577
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 577, $this->source); })()), "firstJob", [], "any", false, false, false, 577), "facebookFailed", [], "any", false, false, false, 577) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "icon-facebook-fill", "title" => "Facebook", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 530
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 530, $this->source); })()), "firstJob", [], "any", false, false, false, 530), "facebookTotal", [], "any", false, false, false, 530)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 531
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 531, $this->source); })()), "firstJob", [], "any", false, false, false, 531), "facebookTotal", [], "any", false, false, false, 531) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 533
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 533, $this->source); })()), "id", [], "any", false, false, false, 533), "query" => ["filter" => "facebook", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 542
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 542, $this->source); })()), "firstJob", [], "any", false, false, false, 542), "facebookTotal", [], "any", false, false, false, 542) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 543
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 543, $this->source); })()), "firstJob", [], "any", false, false, false, 543), "facebookTotal", [], "any", false, false, false, 543) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 547
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 547, $this->source); })()), "firstJob", [], "any", false, false, false, 547), "facebookSucceeded", [], "any", false, false, false, 547)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 548
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 548, $this->source); })()), "firstJob", [], "any", false, false, false, 548), "facebookSucceeded", [], "any", false, false, false, 548) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 550
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 550, $this->source); })()), "id", [], "any", false, false, false, 550), "query" => ["filter" => "facebook", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 559
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 559, $this->source); })()), "firstJob", [], "any", false, false, false, 559), "facebookSucceeded", [], "any", false, false, false, 559) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 560
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 560, $this->source); })()), "firstJob", [], "any", false, false, false, 560), "facebookSucceeded", [], "any", false, false, false, 560) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 564
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 564, $this->source); })()), "firstJob", [], "any", false, false, false, 564), "facebookFailed", [], "any", false, false, false, 564)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 565
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 565, $this->source); })()), "firstJob", [], "any", false, false, false, 565), "facebookFailed", [], "any", false, false, false, 565) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 567
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 567, $this->source); })()), "id", [], "any", false, false, false, 567), "query" => ["filter" => "facebook", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 576
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 576, $this->source); })()), "firstJob", [], "any", false, false, false, 576), "facebookFailed", [], "any", false, false, false, 576) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 577
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 577, $this->source); })()), "firstJob", [], "any", false, false, false, 577), "facebookFailed", [], "any", false, false, false, 577) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 581
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__TWITTER", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 581, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 581, $this->source); })()), "firstJob", [], "any", false, false, false, 581), "twitterTotal", [], "any", false, false, false, 581))) {
// line 582
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 582, "799899813")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-twitter-fill", "title" => "Twitter", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 588
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 588, $this->source); })()), "firstJob", [], "any", false, false, false, 588), "twitterTotal", [], "any", false, false, false, 588)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 589
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 589, $this->source); })()), "firstJob", [], "any", false, false, false, 589), "twitterTotal", [], "any", false, false, false, 589) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 591
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 591, $this->source); })()), "id", [], "any", false, false, false, 591), "query" => ["filter" => "twitter", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 600
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 600, $this->source); })()), "firstJob", [], "any", false, false, false, 600), "twitterTotal", [], "any", false, false, false, 600) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 601
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 601, $this->source); })()), "firstJob", [], "any", false, false, false, 601), "twitterTotal", [], "any", false, false, false, 601) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 605
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 605, $this->source); })()), "firstJob", [], "any", false, false, false, 605), "twitterSucceeded", [], "any", false, false, false, 605)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 606
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 606, $this->source); })()), "firstJob", [], "any", false, false, false, 606), "twitterSucceeded", [], "any", false, false, false, 606) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 608
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 608, $this->source); })()), "id", [], "any", false, false, false, 608), "query" => ["filter" => "twitter", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 617
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 617, $this->source); })()), "firstJob", [], "any", false, false, false, 617), "twitterSucceeded", [], "any", false, false, false, 617) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 618
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 618, $this->source); })()), "firstJob", [], "any", false, false, false, 618), "twitterSucceeded", [], "any", false, false, false, 618) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 622
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 622, $this->source); })()), "firstJob", [], "any", false, false, false, 622), "twitterFailed", [], "any", false, false, false, 622)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 623
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 623, $this->source); })()), "firstJob", [], "any", false, false, false, 623), "twitterFailed", [], "any", false, false, false, 623) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 625
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 625, $this->source); })()), "id", [], "any", false, false, false, 625), "query" => ["filter" => "twitter", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 634
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 634, $this->source); })()), "firstJob", [], "any", false, false, false, 634), "twitterFailed", [], "any", false, false, false, 634) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 635
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 635, $this->source); })()), "firstJob", [], "any", false, false, false, 635), "twitterFailed", [], "any", false, false, false, 635) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "icon-twitter-fill", "title" => "Twitter", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 588
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 588, $this->source); })()), "firstJob", [], "any", false, false, false, 588), "twitterTotal", [], "any", false, false, false, 588)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 589
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 589, $this->source); })()), "firstJob", [], "any", false, false, false, 589), "twitterTotal", [], "any", false, false, false, 589) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 591
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 591, $this->source); })()), "id", [], "any", false, false, false, 591), "query" => ["filter" => "twitter", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 600
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 600, $this->source); })()), "firstJob", [], "any", false, false, false, 600), "twitterTotal", [], "any", false, false, false, 600) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 601
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 601, $this->source); })()), "firstJob", [], "any", false, false, false, 601), "twitterTotal", [], "any", false, false, false, 601) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 605
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 605, $this->source); })()), "firstJob", [], "any", false, false, false, 605), "twitterSucceeded", [], "any", false, false, false, 605)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 606
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 606, $this->source); })()), "firstJob", [], "any", false, false, false, 606), "twitterSucceeded", [], "any", false, false, false, 606) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 608
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 608, $this->source); })()), "id", [], "any", false, false, false, 608), "query" => ["filter" => "twitter", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 617
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 617, $this->source); })()), "firstJob", [], "any", false, false, false, 617), "twitterSucceeded", [], "any", false, false, false, 617) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 618
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 618, $this->source); })()), "firstJob", [], "any", false, false, false, 618), "twitterSucceeded", [], "any", false, false, false, 618) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 622
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 622, $this->source); })()), "firstJob", [], "any", false, false, false, 622), "twitterFailed", [], "any", false, false, false, 622)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 623
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 623, $this->source); })()), "firstJob", [], "any", false, false, false, 623), "twitterFailed", [], "any", false, false, false, 623) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 625
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 625, $this->source); })()), "id", [], "any", false, false, false, 625), "query" => ["filter" => "twitter", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 634
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 634, $this->source); })()), "firstJob", [], "any", false, false, false, 634), "twitterFailed", [], "any", false, false, false, 634) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 635
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 635, $this->source); })()), "firstJob", [], "any", false, false, false, 635), "twitterFailed", [], "any", false, false, false, 635) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 639
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__INSTAGRAM", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 639, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 639, $this->source); })()), "firstJob", [], "any", false, false, false, 639), "instagramTotal", [], "any", false, false, false, 639))) {
// line 640
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 640, "34679198")->display(twig_array_merge(twig_array_merge($context, ["icon" => "fab fa-instagram", "title" => "Instagram", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 646
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 646, $this->source); })()), "firstJob", [], "any", false, false, false, 646), "instagramTotal", [], "any", false, false, false, 646)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 647
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 647, $this->source); })()), "firstJob", [], "any", false, false, false, 647), "instagramTotal", [], "any", false, false, false, 647) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 649
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 649, $this->source); })()), "id", [], "any", false, false, false, 649), "query" => ["filter" => "instagram", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 658
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 658, $this->source); })()), "firstJob", [], "any", false, false, false, 658), "instagramTotal", [], "any", false, false, false, 658) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 659
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 659, $this->source); })()), "firstJob", [], "any", false, false, false, 659), "instagramTotal", [], "any", false, false, false, 659) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 663
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 663, $this->source); })()), "firstJob", [], "any", false, false, false, 663), "instagramSucceeded", [], "any", false, false, false, 663)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 664
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 664, $this->source); })()), "firstJob", [], "any", false, false, false, 664), "instagramSucceeded", [], "any", false, false, false, 664) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 666
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 666, $this->source); })()), "id", [], "any", false, false, false, 666), "query" => ["filter" => "instagram", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 675
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 675, $this->source); })()), "firstJob", [], "any", false, false, false, 675), "instagramSucceeded", [], "any", false, false, false, 675) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 676
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 676, $this->source); })()), "firstJob", [], "any", false, false, false, 676), "instagramSucceeded", [], "any", false, false, false, 676) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 680
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 680, $this->source); })()), "firstJob", [], "any", false, false, false, 680), "instagramFailed", [], "any", false, false, false, 680)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 681
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 681, $this->source); })()), "firstJob", [], "any", false, false, false, 681), "instagramFailed", [], "any", false, false, false, 681) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 683
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 683, $this->source); })()), "id", [], "any", false, false, false, 683), "query" => ["filter" => "instagram", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 692
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 692, $this->source); })()), "firstJob", [], "any", false, false, false, 692), "instagramFailed", [], "any", false, false, false, 692) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 693
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 693, $this->source); })()), "firstJob", [], "any", false, false, false, 693), "instagramFailed", [], "any", false, false, false, 693) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "fab fa-instagram", "title" => "Instagram", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 646
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 646, $this->source); })()), "firstJob", [], "any", false, false, false, 646), "instagramTotal", [], "any", false, false, false, 646)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 647
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 647, $this->source); })()), "firstJob", [], "any", false, false, false, 647), "instagramTotal", [], "any", false, false, false, 647) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 649
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 649, $this->source); })()), "id", [], "any", false, false, false, 649), "query" => ["filter" => "instagram", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 658
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 658, $this->source); })()), "firstJob", [], "any", false, false, false, 658), "instagramTotal", [], "any", false, false, false, 658) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 659
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 659, $this->source); })()), "firstJob", [], "any", false, false, false, 659), "instagramTotal", [], "any", false, false, false, 659) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 663
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 663, $this->source); })()), "firstJob", [], "any", false, false, false, 663), "instagramSucceeded", [], "any", false, false, false, 663)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 664
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 664, $this->source); })()), "firstJob", [], "any", false, false, false, 664), "instagramSucceeded", [], "any", false, false, false, 664) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 666
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 666, $this->source); })()), "id", [], "any", false, false, false, 666), "query" => ["filter" => "instagram", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 675
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 675, $this->source); })()), "firstJob", [], "any", false, false, false, 675), "instagramSucceeded", [], "any", false, false, false, 675) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 676
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 676, $this->source); })()), "firstJob", [], "any", false, false, false, 676), "instagramSucceeded", [], "any", false, false, false, 676) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 680
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 680, $this->source); })()), "firstJob", [], "any", false, false, false, 680), "instagramFailed", [], "any", false, false, false, 680)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 681
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 681, $this->source); })()), "firstJob", [], "any", false, false, false, 681), "instagramFailed", [], "any", false, false, false, 681) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 683
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 683, $this->source); })()), "id", [], "any", false, false, false, 683), "query" => ["filter" => "instagram", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 692
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 692, $this->source); })()), "firstJob", [], "any", false, false, false, 692), "instagramFailed", [], "any", false, false, false, 692) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 693
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 693, $this->source); })()), "firstJob", [], "any", false, false, false, 693), "instagramFailed", [], "any", false, false, false, 693) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 697
echo " ";
} elseif ((($context["channel"] == twig_constant("CHANNELS__WEBSITE", (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 697, $this->source); })()))) && twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 697, $this->source); })()), "firstJob", [], "any", false, false, false, 697), "websiteTotal", [], "any", false, false, false, 697))) {
// line 698
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 698, "855330866")->display(twig_array_merge(twig_array_merge($context, ["icon" => "icon-website", "title" => "Website", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 704
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 704, $this->source); })()), "firstJob", [], "any", false, false, false, 704), "websiteTotal", [], "any", false, false, false, 704)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 705
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 705, $this->source); })()), "firstJob", [], "any", false, false, false, 705), "websiteTotal", [], "any", false, false, false, 705) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 707
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 707, $this->source); })()), "id", [], "any", false, false, false, 707), "query" => ["filter" => "website", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 716
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 716, $this->source); })()), "firstJob", [], "any", false, false, false, 716), "websiteTotal", [], "any", false, false, false, 716) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 717
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 717, $this->source); })()), "firstJob", [], "any", false, false, false, 717), "websiteTotal", [], "any", false, false, false, 717) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 721
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 721, $this->source); })()), "firstJob", [], "any", false, false, false, 721), "websiteSucceeded", [], "any", false, false, false, 721)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 722
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 722, $this->source); })()), "firstJob", [], "any", false, false, false, 722), "websiteSucceeded", [], "any", false, false, false, 722) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 724
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 724, $this->source); })()), "id", [], "any", false, false, false, 724), "query" => ["filter" => "website", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 733
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 733, $this->source); })()), "firstJob", [], "any", false, false, false, 733), "websiteSucceeded", [], "any", false, false, false, 733) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 734
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 734, $this->source); })()), "firstJob", [], "any", false, false, false, 734), "websiteSucceeded", [], "any", false, false, false, 734) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 738
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 738, $this->source); })()), "firstJob", [], "any", false, false, false, 738), "websiteFailed", [], "any", false, false, false, 738)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 739
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 739, $this->source); })()), "firstJob", [], "any", false, false, false, 739), "websiteFailed", [], "any", false, false, false, 739) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 741
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 741, $this->source); })()), "id", [], "any", false, false, false, 741), "query" => ["filter" => "website", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 750
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 750, $this->source); })()), "firstJob", [], "any", false, false, false, 750), "websiteFailed", [], "any", false, false, false, 750) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 751
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 751, $this->source); })()), "firstJob", [], "any", false, false, false, 751), "websiteFailed", [], "any", false, false, false, 751) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]]), ['_args' => twig_to_array(["icon" => "icon-website", "title" => "Website", "stats" => [0 => ["label" => "Total posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 704
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 704, $this->source); })()), "firstJob", [], "any", false, false, false, 704), "websiteTotal", [], "any", false, false, false, 704)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 705
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 705, $this->source); })()), "firstJob", [], "any", false, false, false, 705), "websiteTotal", [], "any", false, false, false, 705) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 707
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 707, $this->source); })()), "id", [], "any", false, false, false, 707), "query" => ["filter" => "website", "state" => "all", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 716
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 716, $this->source); })()), "firstJob", [], "any", false, false, false, 716), "websiteTotal", [], "any", false, false, false, 716) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 717
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 717, $this->source); })()), "firstJob", [], "any", false, false, false, 717), "websiteTotal", [], "any", false, false, false, 717) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 1 => ["label" => "Successful posts", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 721
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 721, $this->source); })()), "firstJob", [], "any", false, false, false, 721), "websiteSucceeded", [], "any", false, false, false, 721)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 722
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 722, $this->source); })()), "firstJob", [], "any", false, false, false, 722), "websiteSucceeded", [], "any", false, false, false, 722) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 724
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 724, $this->source); })()), "id", [], "any", false, false, false, 724), "query" => ["filter" => "website", "state" => "completed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 733
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 733, $this->source); })()), "firstJob", [], "any", false, false, false, 733), "websiteSucceeded", [], "any", false, false, false, 733) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 734
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 734, $this->source); })()), "firstJob", [], "any", false, false, false, 734), "websiteSucceeded", [], "any", false, false, false, 734) > 0)) ? ("#sidepanel__filtered_logs") : (null))], 2 => ["label" => "Errors", "value" => twig_number_format_filter($this->env, twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 738
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 738, $this->source); })()), "firstJob", [], "any", false, false, false, 738), "websiteFailed", [], "any", false, false, false, 738)), "link" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 739
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 739, $this->source); })()), "firstJob", [], "any", false, false, false, 739), "websiteFailed", [], "any", false, false, false, 739) > 0)) ? ($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.filtered_logs", ["message" => twig_get_attribute($this->env, $this->source, // line 741
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 741, $this->source); })()), "id", [], "any", false, false, false, 741), "query" => ["filter" => "website", "state" => "failed", "sort" => "timestamp", "direction" => "DESC"]])) : (null)), "dataToggle" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 750
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 750, $this->source); })()), "firstJob", [], "any", false, false, false, 750), "websiteFailed", [], "any", false, false, false, 750) > 0)) ? ("sidepanel") : (null)), "dataTarget" => (((twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, // line 751
(isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 751, $this->source); })()), "firstJob", [], "any", false, false, false, 751), "websiteFailed", [], "any", false, false, false, 751) > 0)) ? ("#sidepanel__filtered_logs") : (null))]]])]));
// line 755
echo " ";
}
// line 756
echo " ";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['length'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['channel'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 757
echo " ";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___1040482493 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'content' => [$this, 'block_content'],
];
}
protected function doGetParent(array $context)
{
// line 217
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 217);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 278
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 279
echo " <table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>";
// line 284
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 284, $this->source); })()), "emailSubject", [], "any", false, false, false, 284), "html", null, true);
echo "</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">";
// line 291
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 291, $this->source); })()), "emailName", [], "any", false, false, false, 291), "html", null, true);
echo " <";
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 291, $this->source); })()), "emailFrom", [], "any", false, false, false, 291), "html", null, true);
echo "></span>
</td>
</tr>
</tbody>
</table>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___1062131583 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'content' => [$this, 'block_content'],
];
}
protected function doGetParent(array $context)
{
// line 299
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 299);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 356
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 357
echo " <table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>";
// line 362
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 362, $this->source); })()), "smsText", [], "any", false, false, false, 362), "html", null, true);
echo "</span>
";
// line 363
if (twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 363, $this->source); })()), "smsUrl", [], "any", false, false, false, 363)) {
// line 364
echo " <a class=\"text-body text-underline\" href=\"";
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 364, $this->source); })()), "smsUrl", [], "any", false, false, false, 364), "html", null, true);
echo "\">";
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 364, $this->source); })()), "smsUrl", [], "any", false, false, false, 364), "html", null, true);
echo "</a>
";
}
// line 366
echo " </td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">";
// line 371
echo twig_escape_filter($this->env, $this->extensions['App\Twig\Extension\PhoneNumberExtension']->phone_number_format(twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["configs"]) || array_key_exists("configs", $context) ? $context["configs"] : (function () { throw new RuntimeError('Variable "configs" does not exist.', 371, $this->source); })()), "twilio", [], "any", false, false, false, 371), "incomingPhoneNumber", [], "any", false, false, false, 371)), "html", null, true);
echo "</span>
</td>
</tr>
</tbody>
</table>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___1222024576 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'content' => [$this, 'block_content'],
];
}
protected function doGetParent(array $context)
{
// line 379
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 379);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 441
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 442
echo " <table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"";
// line 448
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, $this->extensions['App\Twig\Extension\BlobsExtension']->blobs(twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 448, $this->source); })()), "recording", [], "any", false, false, false, 448)), "recordingUrl", [0 => twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 448, $this->source); })()), "recording", [], "any", false, false, false, 448)], "method", false, false, false, 448), "html_attr");
echo "\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">";
// line 457
echo twig_escape_filter($this->env, $this->extensions['App\Twig\Extension\PhoneNumberExtension']->phone_number_format(((twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 457, $this->source); })()), "voiceCallerId", [], "any", false, false, false, 457)) ? (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 457, $this->source); })()), "voiceCallerId", [], "any", false, false, false, 457), "phoneNumber", [], "any", false, false, false, 457)) : (twig_get_attribute($this->env, $this->source, twig_get_attribute($this->env, $this->source, (isset($context["configs"]) || array_key_exists("configs", $context) ? $context["configs"] : (function () { throw new RuntimeError('Variable "configs" does not exist.', 457, $this->source); })()), "twilio", [], "any", false, false, false, 457), "incomingPhoneNumber", [], "any", false, false, false, 457)))), "html", null, true);
// line 458
echo "</span>
</td>
</tr>
</tbody>
</table>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___2123896173 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'content' => [$this, 'block_content'],
];
}
protected function doGetParent(array $context)
{
// line 466
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 466);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 510
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 511
echo " <table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>";
// line 516
echo twig_escape_filter($this->env, twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 516, $this->source); })()), "appTitle", [], "any", false, false, false, 516), "html", null, true);
echo "</span>
</td>
</tr>
</tbody>
</table>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___1146006736 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
];
}
protected function doGetParent(array $context)
{
// line 524
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 524);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___799899813 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
];
}
protected function doGetParent(array $context)
{
// line 582
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 582);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 7829 => 582, 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___34679198 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
];
}
protected function doGetParent(array $context)
{
// line 640
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 640);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 8695 => 640, 7829 => 582, 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___855330866 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
];
}
protected function doGetParent(array $context)
{
// line 698
return "@ui2022/card__deliverymethods.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/card__deliverymethods.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 698);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 9561 => 698, 8695 => 640, 7829 => 582, 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___1719583840 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'content' => [$this, 'block_content'],
];
}
protected function doGetParent(array $context)
{
// line 765
return "@ui2022/modal.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/modal.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 765);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 770
public function block_content($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "content"));
// line 771
echo " ";
$this->loadTemplate("@ProductsNotifications/dashboard/messages/report.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 771, "497543387")->display(twig_array_merge(twig_array_merge($context, ["title" => "Email Preview"]), ['_args' => twig_to_array(["title" => "Email Preview"])]));
// line 785
echo " ";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 10464 => 785, 10461 => 771, 10451 => 770, 10428 => 765, 9561 => 698, 8695 => 640, 7829 => 582, 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}
/* @ProductsNotifications/dashboard/messages/report.html.twig */
class __TwigTemplate_7e29e1756143e90c7bb513c3fd2ecd46___497543387 extends \Twig\Template
{
private $source;
private $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'body' => [$this, 'block_body'],
];
}
protected function doGetParent(array $context)
{
// line 771
return "@ui2022/modal__content.html.twig";
}
protected function doDisplay(array $context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@ProductsNotifications/dashboard/messages/report.html.twig"));
$this->parent = $this->loadTemplate("@ui2022/modal__content.html.twig", "@ProductsNotifications/dashboard/messages/report.html.twig", 771);
$this->parent->display($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 774
public function block_body($context, array $blocks = [])
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
// line 775
echo " <iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"";
// line 778
echo twig_escape_filter($this->env, $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app.notifications.dashboard.messages.email_preview", ["message" => twig_get_attribute($this->env, $this->source, (isset($context["message"]) || array_key_exists("message", $context) ? $context["message"] : (function () { throw new RuntimeError('Variable "message" does not exist.', 778, $this->source); })()), "id", [], "any", false, false, false, 778)]), "html", null, true);
echo "\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
}
public function getTemplateName()
{
return "@ProductsNotifications/dashboard/messages/report.html.twig";
}
public function isTraitable()
{
return false;
}
public function getDebugInfo()
{
return array ( 11356 => 778, 11351 => 775, 11341 => 774, 11318 => 771, 10464 => 785, 10461 => 771, 10451 => 770, 10428 => 765, 9561 => 698, 8695 => 640, 7829 => 582, 6963 => 524, 6104 => 516, 6097 => 511, 6087 => 510, 6064 => 466, 5205 => 458, 5203 => 457, 5192 => 448, 5184 => 442, 5174 => 441, 5151 => 379, 4291 => 371, 4284 => 366, 4276 => 364, 4274 => 363, 4270 => 362, 4263 => 357, 4253 => 356, 4230 => 299, 3368 => 291, 3358 => 284, 3351 => 279, 3341 => 278, 3318 => 217, 2464 => 757, 2450 => 756, 2447 => 755, 2445 => 751, 2444 => 750, 2443 => 741, 2442 => 739, 2441 => 738, 2440 => 734, 2439 => 733, 2438 => 724, 2437 => 722, 2436 => 721, 2435 => 717, 2434 => 716, 2433 => 707, 2432 => 705, 2431 => 704, 2430 => 751, 2429 => 750, 2428 => 741, 2427 => 739, 2426 => 738, 2425 => 734, 2424 => 733, 2423 => 724, 2422 => 722, 2421 => 721, 2420 => 717, 2419 => 716, 2418 => 707, 2417 => 705, 2416 => 704, 2414 => 698, 2411 => 697, 2409 => 693, 2408 => 692, 2407 => 683, 2406 => 681, 2405 => 680, 2404 => 676, 2403 => 675, 2402 => 666, 2401 => 664, 2400 => 663, 2399 => 659, 2398 => 658, 2397 => 649, 2396 => 647, 2395 => 646, 2394 => 693, 2393 => 692, 2392 => 683, 2391 => 681, 2390 => 680, 2389 => 676, 2388 => 675, 2387 => 666, 2386 => 664, 2385 => 663, 2384 => 659, 2383 => 658, 2382 => 649, 2381 => 647, 2380 => 646, 2378 => 640, 2375 => 639, 2373 => 635, 2372 => 634, 2371 => 625, 2370 => 623, 2369 => 622, 2368 => 618, 2367 => 617, 2366 => 608, 2365 => 606, 2364 => 605, 2363 => 601, 2362 => 600, 2361 => 591, 2360 => 589, 2359 => 588, 2358 => 635, 2357 => 634, 2356 => 625, 2355 => 623, 2354 => 622, 2353 => 618, 2352 => 617, 2351 => 608, 2350 => 606, 2349 => 605, 2348 => 601, 2347 => 600, 2346 => 591, 2345 => 589, 2344 => 588, 2342 => 582, 2339 => 581, 2337 => 577, 2336 => 576, 2335 => 567, 2334 => 565, 2333 => 564, 2332 => 560, 2331 => 559, 2330 => 550, 2329 => 548, 2328 => 547, 2327 => 543, 2326 => 542, 2325 => 533, 2324 => 531, 2323 => 530, 2322 => 577, 2321 => 576, 2320 => 567, 2319 => 565, 2318 => 564, 2317 => 560, 2316 => 559, 2315 => 550, 2314 => 548, 2313 => 547, 2312 => 543, 2311 => 542, 2310 => 533, 2309 => 531, 2308 => 530, 2306 => 524, 2303 => 523, 2301 => 506, 2300 => 505, 2299 => 496, 2298 => 494, 2297 => 493, 2296 => 489, 2295 => 485, 2294 => 484, 2293 => 475, 2292 => 473, 2291 => 472, 2290 => 506, 2289 => 505, 2288 => 496, 2287 => 494, 2286 => 493, 2285 => 489, 2284 => 485, 2283 => 484, 2282 => 475, 2281 => 473, 2280 => 472, 2278 => 466, 2275 => 465, 2273 => 437, 2272 => 436, 2271 => 432, 2270 => 431, 2269 => 422, 2268 => 420, 2267 => 419, 2266 => 415, 2265 => 414, 2264 => 405, 2263 => 403, 2262 => 402, 2261 => 398, 2260 => 397, 2259 => 388, 2258 => 386, 2257 => 385, 2256 => 437, 2255 => 436, 2254 => 432, 2253 => 431, 2252 => 422, 2251 => 420, 2250 => 419, 2249 => 415, 2248 => 414, 2247 => 405, 2246 => 403, 2245 => 402, 2244 => 398, 2243 => 397, 2242 => 388, 2241 => 386, 2240 => 385, 2238 => 379, 2235 => 378, 2233 => 352, 2232 => 351, 2231 => 342, 2230 => 340, 2229 => 339, 2228 => 335, 2227 => 334, 2226 => 325, 2225 => 323, 2224 => 322, 2223 => 318, 2222 => 317, 2221 => 308, 2220 => 306, 2219 => 305, 2218 => 352, 2217 => 351, 2216 => 342, 2215 => 340, 2214 => 339, 2213 => 335, 2212 => 334, 2211 => 325, 2210 => 323, 2209 => 322, 2208 => 318, 2207 => 317, 2206 => 308, 2205 => 306, 2204 => 305, 2202 => 299, 2199 => 298, 2197 => 274, 2196 => 273, 2195 => 269, 2194 => 268, 2193 => 259, 2192 => 257, 2191 => 256, 2190 => 252, 2189 => 251, 2188 => 242, 2187 => 240, 2186 => 239, 2185 => 235, 2184 => 234, 2183 => 226, 2182 => 224, 2181 => 223, 2180 => 274, 2179 => 273, 2178 => 269, 2177 => 268, 2176 => 259, 2175 => 257, 2174 => 256, 2173 => 252, 2172 => 251, 2171 => 242, 2170 => 240, 2169 => 239, 2168 => 235, 2167 => 234, 2166 => 226, 2165 => 224, 2164 => 223, 2162 => 217, 2159 => 216, 2142 => 215, 2136 => 211, 2131 => 208, 2128 => 207, 2126 => 204, 2125 => 202, 2124 => 201, 2123 => 204, 2122 => 202, 2121 => 201, 2119 => 198, 2116 => 197, 2113 => 196, 2111 => 192, 2110 => 189, 2109 => 188, 2108 => 192, 2107 => 189, 2106 => 188, 2104 => 185, 2101 => 184, 2098 => 183, 2096 => 179, 2095 => 176, 2094 => 175, 2093 => 179, 2092 => 176, 2091 => 175, 2089 => 172, 2086 => 171, 2083 => 170, 2081 => 166, 2080 => 163, 2079 => 162, 2078 => 166, 2077 => 163, 2076 => 162, 2074 => 159, 2071 => 158, 2068 => 157, 2066 => 153, 2065 => 151, 2064 => 150, 2063 => 153, 2062 => 151, 2061 => 150, 2059 => 147, 2057 => 146, 2052 => 143, 2050 => 142, 2046 => 140, 2044 => 137, 2043 => 135, 2042 => 134, 2041 => 133, 2040 => 137, 2039 => 135, 2038 => 134, 2037 => 133, 2036 => 132, 2026 => 124, 2024 => 122, 2023 => 121, 2022 => 112, 2021 => 110, 2020 => 108, 2019 => 122, 2018 => 121, 2017 => 112, 2016 => 110, 2015 => 108, 2013 => 105, 2011 => 103, 2010 => 102, 2009 => 101, 2008 => 100, 2007 => 103, 2006 => 102, 2005 => 101, 2004 => 100, 2002 => 99, 1999 => 98, 1997 => 96, 1996 => 95, 1995 => 86, 1994 => 84, 1993 => 82, 1992 => 81, 1991 => 96, 1990 => 95, 1989 => 86, 1988 => 84, 1987 => 82, 1986 => 81, 1985 => 79, 1981 => 77, 1978 => 73, 1968 => 72, 1945 => 40, 1091 => 23, 1089 => 19, 1087 => 16, 1077 => 15, 1054 => 8, 189 => 792, 186 => 787, 184 => 765, 179 => 764, 169 => 763, 157 => 759, 155 => 68, 154 => 66, 153 => 61, 152 => 59, 151 => 54, 150 => 52, 149 => 47, 148 => 45, 147 => 68, 146 => 66, 145 => 61, 144 => 59, 143 => 54, 142 => 52, 141 => 47, 140 => 45, 139 => 40, 135 => 38, 133 => 37, 130 => 36, 123 => 32, 118 => 29, 115 => 28, 105 => 27, 95 => 9, 93 => 8, 83 => 7, 64 => 5, 53 => 1, 51 => 3, 38 => 1,);
}
public function getSourceContext()
{
return new Source("{% extends '@ProductsNotifications/base.html.twig' %}
{% do dom_title_section('Messages') %}
{% block wrap %}content__area--uilib reports{% endblock %}
{% block header %}
{% embed '@ui2022/schoolnow/header.html.twig' with {
title: message.title,
back: {
text: 'Back to Messages',
link: path('app.notifications.dashboard.messages.main'),
},
} %}
{% block actions %}
{% include '@ui2022/button--a.html.twig' with {
text: 'Clone message',
link: path('app.notifications.dashboard.messages.create', {
clone: message.id,
}),
styles: 'gray',
} %}
{% endblock %}
{% endembed %}
{% endblock %}
{% block content %}
{% if not message.firstJob %}
<div class=\"content__data reports__message pt-2\">
<div class=\"blockgroup\">
<label class=\"blockgroup__label\">Message</label>
<h2 class=\"h4\">{{- message.title -}}</h2>
</div>
</div>
{% else %}
{% set stats = message.firstJob.summarize %}
<div class=\"content__data reports__message pt-2\">
{% embed '@ui2022/tabs--static.html.twig' with {
items: [
{
text: 'Summary',
link: path('app.notifications.dashboard.messages.report', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.report')),
},
{
text: 'Logs',
link: path('app.notifications.dashboard.messages.logs', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.logs')),
},
{
text: 'Debugging',
link: path('app.notifications.dashboard.messages.debugging', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.debugging')),
},
{
text: 'Details',
link: path('app.notifications.dashboard.messages.details', {
message: message.id,
}),
active: (app.request.attributes.get('_route') is same as('app.notifications.dashboard.messages.details')),
},
],
} %}
{% block tab %}
{% include '@ui2022/subheader.html.twig' with {
title: 'Summary',
classes: 'mt-4 pt-4',
} %}
<div class=\"three-column-section\">
<div class=\"three-column-inner-section\">
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Sent',
subtitle: message.firstJob.firstActivityAt|ui_datetime,
value: (message.sending and stats.all.total > 0) ? ((((stats.all.succeeded + stats.all.failed) / stats.all.total) * 100)|round(0, 'ceil') ~ '%') : stats.all.total|number_format,
label: 'Contacts',
link: ((stats.all.succeeded + stats.all.failed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((stats.all.succeeded + stats.all.failed) > 0) ? 'sidepanel' : null,
dataTarget: ((stats.all.succeeded + stats.all.failed) > 0) ? '#sidepanel__filtered_logs' : null,
} %}
{% set interval = message.firstJob.activityInterval|ui_relativeDate(true)|split(' ') %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: message.sending ? 'Running' : 'Completed',
subtitle: message.firstJob.lastActivityAt|ui_datetime,
value: interval[1] is defined ? interval[0]|number_format : interval[0],
label: interval[1]|default(''),
} %}
{% include '@ui2022/schoolnow/stat.html.twig' with {
title: 'Errors',
subtitle: 'Message not delivered',
value: stats.all.failed|number_format,
label: 'Contacts',
link: (stats.all.failed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'all',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (stats.all.failed > 0) ? 'sidepanel' : null,
dataTarget: (stats.all.failed > 0) ? '#sidepanel__filtered_logs' : null,
} %}
</div>
</div>
<div class=\"section__infostats mb-4\">
<div class=\"card card__charts\">
<div class=\"row row-10\">
<div class=\"col-12 col-md-6\">
<h4 class=\"infostats__title\">Delivery methods</h4>
<div class=\"d-flex justify-content-center justify-content-sm-start flex-wrap mt-1 pt-2\">
{% include '@ui2022/chart--donut.html.twig' with {
legend: stats.message_channels|filter((v,k) => v.total > 0)|map((v,k) => {
label: 'app.notifications.stats.reporting.labels.%s'|format(k)|trans,
color: 'app.notifications.stats.reporting.colors.%s'|format(k)|trans([], 'styles', 'app'),
}),
dataset: stats.message_channels|filter((v,k) => v.total > 0)|map((v) => v.total),
label: 'Total contacts',
} %}
</div>
</div>
{% if constant('DISCR', message) is same as(constant('Products\\\\NotificationsBundle\\\\Entity\\\\Notifications\\\\Message::DISCR')) %}
<div class=\"col-12 mt-4 mt-lg-0 col-md-6\">
<h4 class=\"infostats__title\">Targeted audience</h4>
<div class=\"targetlist\">
{% if message.lists|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Contact lists',
icon: 'icon-contact-reachable',
items: message.lists|map((list) => {
text: list.name,
link: path('app.notifications.dashboard.lists.view', {
list: list.id,
}),
}),
} %}
{% endif %}
{% if message.facebookSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Facebook pages',
icon: 'icon-facebook-fill',
items: message.facebookSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.facebook.com/%s'|format(
social.facebookPageId,
),
}),
} %}
{% endif %}
{% if message.twitterSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Twitter profiles',
icon: 'icon-twitter-fill',
items: message.twitterSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.twitter.com/%s'|format(
social.twitterUserName,
),
}),
} %}
{% endif %}
{% if message.instagramSocialAccounts|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Instagram accounts',
icon: 'fab fa-instagram',
items: message.instagramSocialAccounts|map((social) => {
text: social.name,
target: '_blank',
link: 'https://www.instagram.com/%s'|format(
social.name,
),
}),
} %}
{% endif %}
{% if message.websiteDepartments|length %}
{% include '@ui2022/targetlist__item.html.twig' with {
title: 'Website departments',
icon: 'icon-website',
items: message.websiteDepartments|map((department) => {
text: department.name,
target: '_blank',
link: web_url_catchall(department, '/'),
}),
} %}
{% endif %}
</div>
</div>
{% endif %}
</div>
</div>
</div>
{% for channel in message.usedChannels(true) %}
{% if channel == constant('CHANNELS__EMAIL', message) and message.firstJob.emailTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-mail',
title: 'Email',
stats: [
{
label: 'Total sent',
value: message.firstJob.emailSucceeded|number_format,
link: (message.firstJob.emailSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.emailDelivered|number_format,
link: (message.firstJob.emailDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.emailDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.emailDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.emailUndelivered + message.firstJob.emailFailed)|number_format,
link: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'email',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.emailUndelivered + message.firstJob.emailFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Open rate',
value: (message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0)|percentage,
progress: message.firstJob.emailSucceeded ? (message.firstJob.emailOpened / message.firstJob.emailSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Subject:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.emailSubject }}</span>
<a class=\"text-body text-underline\" href=\"#\" title=\"View email\" data-toggle=\"modal\" data-target=\"#modal__email_preview\">View email</a>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ message.emailName }} <{{ message.emailFrom }}></span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__SMS', message) and message.firstJob.smsTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-text',
title: 'SMS',
stats: [
{
label: 'Total sent',
value: message.firstJob.smsSucceeded|number_format,
link: (message.firstJob.smsSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.smsDelivered|number_format,
link: (message.firstJob.smsDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.smsDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.smsDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.smsUndelivered + message.firstJob.smsFailed)|number_format,
link: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'sms',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.smsUndelivered + message.firstJob.smsFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.smsText }}</span>
{% if message.smsUrl %}
<a class=\"text-body text-underline\" href=\"{{ message.smsUrl }}\">{{ message.smsUrl }}</a>
{% endif %}
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">{{ configs.twilio.incomingPhoneNumber|phone_number_format }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__VOICE', message) and message.firstJob.voiceTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-activity-voice',
title: 'Phone',
stats: [
{
label: 'Total sent',
value: message.firstJob.voiceSucceeded|number_format,
link: (message.firstJob.voiceSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.voiceDelivered|number_format,
link: (message.firstJob.voiceDelivered > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.voiceDelivered > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.voiceDelivered > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Bounces',
value: (message.firstJob.voiceUndelivered + message.firstJob.voiceFailed)|number_format,
link: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'voice',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.voiceUndelivered + message.firstJob.voiceFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Answer rate',
value: (message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0)|percentage,
progress: message.firstJob.voiceSucceeded ? (message.firstJob.voiceAnswered / message.firstJob.voiceSucceeded) : 0,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<audio controls=\"\" class=\"d-block ml-md-auto\">
<source src=\"{{ blobs(message.recording).recordingUrl(message.recording)|escape('html_attr') }}\" type=\"audio/mpeg\" />
Your browser does not support the audio element.
</audio>
</td>
</tr>
<tr>
<td class=\"text-semibold pr-3\">From:</td>
<td>
<span class=\"emailid\">
{{- (message.voiceCallerId ? message.voiceCallerId.phoneNumber : configs.twilio.incomingPhoneNumber)|phone_number_format -}}
</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__APP', message) and message.firstJob.appTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-deviceapp',
title: 'Mobile app',
stats: [
{
label: 'Total sent',
value: message.firstJob.appSucceeded|number_format,
link: (message.firstJob.appSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'pending',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.appSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.appSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Delivery verified',
value: message.firstJob.appDelivered|number_format,
},
{
label: 'Bounces',
value: (message.firstJob.appUndelivered + message.firstJob.appFailed)|number_format,
link: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'app',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? 'sidepanel' : null,
dataTarget: ((message.firstJob.appUndelivered + message.firstJob.appFailed) > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}
{% block content %}
<table class=\"table-clear border-0 text-gray-dark\">
<tbody>
<tr>
<td class=\"text-semibold pr-3 pb-2\">Message:</td>
<td class=\"pb-3 pb-sm-2\">
<span>{{ message.appTitle }}</span>
</td>
</tr>
</tbody>
</table>
{% endblock %}
{% endembed %}
{% elseif channel == constant('CHANNELS__FACEBOOK', message) and message.firstJob.facebookTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-facebook-fill',
title: 'Facebook',
stats: [
{
label: 'Total posts',
value: message.firstJob.facebookTotal|number_format,
link: (message.firstJob.facebookTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.facebookSucceeded|number_format,
link: (message.firstJob.facebookSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.facebookFailed|number_format,
link: (message.firstJob.facebookFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'facebook',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.facebookFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.facebookFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__TWITTER', message) and message.firstJob.twitterTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-twitter-fill',
title: 'Twitter',
stats: [
{
label: 'Total posts',
value: message.firstJob.twitterTotal|number_format,
link: (message.firstJob.twitterTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.twitterSucceeded|number_format,
link: (message.firstJob.twitterSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.twitterFailed|number_format,
link: (message.firstJob.twitterFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'twitter',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.twitterFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.twitterFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__INSTAGRAM', message) and message.firstJob.instagramTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'fab fa-instagram',
title: 'Instagram',
stats: [
{
label: 'Total posts',
value: message.firstJob.instagramTotal|number_format,
link: (message.firstJob.instagramTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.instagramSucceeded|number_format,
link: (message.firstJob.instagramSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.instagramFailed|number_format,
link: (message.firstJob.instagramFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'instagram',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.instagramFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.instagramFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% elseif channel == constant('CHANNELS__WEBSITE', message) and message.firstJob.websiteTotal %}
{% embed '@ui2022/card__deliverymethods.html.twig' with {
icon: 'icon-website',
title: 'Website',
stats: [
{
label: 'Total posts',
value: message.firstJob.websiteTotal|number_format,
link: (message.firstJob.websiteTotal > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'all',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteTotal > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteTotal > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Successful posts',
value: message.firstJob.websiteSucceeded|number_format,
link: (message.firstJob.websiteSucceeded > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'completed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteSucceeded > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteSucceeded > 0) ? '#sidepanel__filtered_logs' : null,
},
{
label: 'Errors',
value: message.firstJob.websiteFailed|number_format,
link: (message.firstJob.websiteFailed > 0)
? path('app.notifications.dashboard.messages.filtered_logs', {
message: message.id,
query: {
filter: 'website',
state: 'failed',
sort: 'timestamp',
direction: 'DESC'
}
})
: null,
dataToggle: (message.firstJob.websiteFailed > 0) ? 'sidepanel' : null,
dataTarget: (message.firstJob.websiteFailed > 0) ? '#sidepanel__filtered_logs' : null,
},
],
} %}{% endembed %}
{% endif %}
{% endfor %}
{% endblock %}
{% endembed %}
</div>
{% endif %}
{% endblock %}
{% block modals %}
{{ parent() }}
{% embed '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__email_preview',
},
} %}
{% block content %}
{% embed '@ui2022/modal__content.html.twig' with {
title: 'Email Preview',
} %}
{% block body %}
<iframe
id=\"preview-email-iframe\"
loading=\"lazy\"
src=\"{{ path('app.notifications.dashboard.messages.email_preview', {message: message.id}) }}\"
frameborder=\"0\"
style=\"width: 100%; height: 500px\"
>
</iframe>
{% endblock %}
{% endembed %}
{% endblock %}
{% endembed %}
{% include '@ui2022/schoolnow/modal--sidepanel.html.twig' with {
attr: {
id: 'sidepanel__filtered_logs',
},
} %}
<script type=\"text/javascript\">
(function (window, document, \$, undefined) {
\$(function () {
\$('#sidepanel__filtered_logs').on('updated.cs.modal', function (e) {
const pageHeight = \$(window).height();
const headerHeight = \$('.sidepanel__head').outerHeight();
\$('.sidepanel__content').height((pageHeight - 3 * headerHeight) + 'px');
});
});
})(window, document, jQuery);
</script>
{% endblock %}
", "@ProductsNotifications/dashboard/messages/report.html.twig", "/var/www/campussuite/src/Products/NotificationsBundle/Resources/views/dashboard/messages/report.html.twig");
}
}