17
17
namespace tool_emailutils \reportbuilder \local \entities ;
18
18
19
19
use lang_string ;
20
+ use core \output \html_writer ;
20
21
use core_reportbuilder \local \entities \base ;
21
22
use core_reportbuilder \local \filters \number ;
22
23
use core_reportbuilder \local \report \column ;
23
24
use core_reportbuilder \local \report \filter ;
25
+ use tool_emailutils \helper ;
24
26
25
27
/**
26
28
* Email bounce entity class class implementation.
@@ -102,7 +104,13 @@ protected function get_all_columns(): array {
102
104
->add_joins ($ this ->get_joins ())
103
105
->set_type (column::TYPE_INTEGER )
104
106
->add_field ($ DB ->sql_cast_char2int ("{$ tablealias }.value " ), 'bounces ' )
105
- ->set_is_sortable (true );
107
+ ->set_is_sortable (true )
108
+ ->add_callback (function (int $ value ): string {
109
+ if ($ value >= helper::get_min_bounces ()) {
110
+ return html_writer::span ($ value , 'alert alert-danger p-2 ' );
111
+ }
112
+ return $ value ;
113
+ });
106
114
107
115
// Emails send column.
108
116
$ columns [] = (new column (
@@ -114,7 +122,6 @@ protected function get_all_columns(): array {
114
122
->set_type (column::TYPE_INTEGER )
115
123
->add_field ($ DB ->sql_cast_char2int ("{$ sendalias }.value " ), 'send ' )
116
124
->set_is_sortable (true );
117
-
118
125
// Bounce ratio column.
119
126
$ bouncesql = $ DB ->sql_cast_char2real ("{$ tablealias }.value " );
120
127
$ sendsql = $ DB ->sql_cast_char2real ("{$ sendalias }.value " );
@@ -127,8 +134,13 @@ protected function get_all_columns(): array {
127
134
->set_type (column::TYPE_FLOAT )
128
135
->add_field ("CASE WHEN $ sendsql = 0 THEN NULL ELSE $ bouncesql / $ sendsql END " , 'ratio ' )
129
136
->set_is_sortable (true )
137
+ ->set_is_available (helper::use_bounce_ratio ())
130
138
->add_callback (function (?float $ value ): string {
131
- return format_float ($ value , 2 );
139
+ $ float = format_float ($ value , 2 );
140
+ if ($ value > helper::get_bounce_ratio ()) {
141
+ return html_writer::span ($ float , 'alert alert-danger p-2 ' );
142
+ }
143
+ return $ float ;
132
144
});
133
145
134
146
return $ columns ;
0 commit comments