File size: 7,380 Bytes
07c3cdd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?php

use ProcessMaker\Plugins\PluginRegistry;
use ProcessMaker\Exception\RBACException;

$req = (isset($_REQUEST['request']) ? $_REQUEST['request'] : '');

/** @var RBAC $RBAC */
global $RBAC;
switch ($RBAC->userCanAccess('PM_LOGIN')) {
    case -2:
        throw new RBACException('ID_USER_HAVENT_RIGHTS_SYSTEM', -2);
        break;
    case -1:
        throw new RBACException('ID_USER_HAVENT_RIGHTS_PAGE', -1);
        break;
}
$RBAC->allows(basename(__FILE__), $req);

switch ($req) {
    case 'MessageList':
        $start = (isset($_REQUEST['start'])) ? $_REQUEST['start'] : '0';
        $limit = (isset($_REQUEST['limit'])) ? $_REQUEST['limit'] : '25';
        $proUid = (isset($_REQUEST['process'])) ? $_REQUEST['process'] : '';
        $eventype = (isset($_REQUEST['type'])) ? $_REQUEST['type'] : '';
        $emailStatus = (isset($_REQUEST['status'])) ? $_REQUEST['status'] : '';
        $sort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '';
        $dir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : 'ASC';
        $dateFrom = isset($_POST["dateFrom"]) ? substr($_POST["dateFrom"], 0, 10) : "";
        $dateTo = isset($_POST["dateTo"]) ? substr($_POST["dateTo"], 0, 10) : "";
        $filterBy = (isset($_REQUEST['filterBy'])) ? $_REQUEST['filterBy'] : 'ALL';

        //Review the External Registration
        $arrayType = [];
        $pluginRegistry = PluginRegistry::loadSingleton();
        $flagEr = $pluginRegistry->isEnable('externalRegistration') ? 1 : 0;
        if ($flagEr == 0) {
            $arrayType[] = 'EXTERNAL_REGISTRATION';
        }

        $criteria = new Criteria();
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_UID);
        $criteria->addSelectColumn(AppMessagePeer::APP_UID);
        $criteria->addSelectColumn(AppMessagePeer::DEL_INDEX);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TYPE);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SUBJECT);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_FROM);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TO);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_BODY);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_STATUS);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_DATE);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SEND_DATE);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SHOW_MESSAGE);
        $criteria->addSelectColumn(AppMessagePeer::APP_MSG_ERROR);
        $criteria->addSelectColumn(ApplicationPeer::PRO_UID);
        $criteria->addSelectColumn(ApplicationPeer::APP_TITLE);
        $criteria->addSelectColumn(ApplicationPeer::APP_NUMBER);
        $criteria->addSelectColumn(ProcessPeer::PRO_TITLE);
        $criteria->addSelectColumn(TaskPeer::TAS_TITLE);
        $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN);
        $criteria->addJoin(ApplicationPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
        $criteria->addJoin(AppMessagePeer::TAS_ID, TaskPeer::TAS_ID, Criteria::LEFT_JOIN);

        //Status can be: All, Participated, Pending
        if (!empty($emailStatus)) {
            $criteria->add(AppMessagePeer::APP_MSG_STATUS, $emailStatus);
        }
        //Process uid
        if (!empty($proUid)) {
            $criteria->add(ApplicationPeer::PRO_UID, $proUid);
        }
        //Filter by can be: All, Cases, Test
        switch ($filterBy) {
            case 'CASES':
                $criteria->add(AppMessagePeer::APP_MSG_TYPE, ['TEST', 'EXTERNAL_REGISTRATION'], Criteria::NOT_IN);
                break;
            case 'TEST':
                $criteria->add(AppMessagePeer::APP_MSG_TYPE, 'TEST', Criteria::EQUAL);
                break;
            case 'EXTERNAL-REGISTRATION':
                $criteria->add(AppMessagePeer::APP_MSG_TYPE, 'EXTERNAL_REGISTRATION', Criteria::EQUAL);
                break;
            default:
                if (!empty($arrayType)) {
                    $criteria->add(AppMessagePeer::APP_MSG_TYPE, $arrayType, Criteria::NOT_IN);
                }
                break;
        }
        //Date from and to
        if (!empty($dateFrom) && !empty($dateTo)) {
            $dateTo = $dateTo . " 23:59:59";
            $criteria->add($criteria->getNewCriterion(AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL)->addAnd($criteria->getNewCriterion(AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL)));
        } else {
            if (!empty($dateFrom)) {
                $criteria->add(AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL);
            }
            if (!empty($dateTo)) {
                $dateTo = $dateTo . " 23:59:59";
                $criteria->add(AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL);
            }
        }

        //Number records total
        $criteriaCount = clone $criteria;
        $criteriaCount->clearSelectColumns();
        $criteriaCount->addSelectColumn('COUNT(' . AppMessagePeer::APP_MSG_UID . ') AS NUM_REC');
        $rsCriteriaCount = AppMessagePeer::doSelectRS($criteriaCount);
        $rsCriteriaCount->setFetchmode(ResultSet::FETCHMODE_ASSOC);
        $resultCount = $rsCriteriaCount->next();
        $rowCount = $rsCriteriaCount->getRow();
        $totalCount = (int)($rowCount['NUM_REC']);

        if (!empty($sort)) {
            if (!in_array($sort, AppMessagePeer::getFieldNames(BasePeer::TYPE_FIELDNAME))) {
                throw new Exception(G::LoadTranslation('ID_INVALID_VALUE_FOR', array('$sort')));
            }
            if ($dir == 'ASC') {
                $criteria->addAscendingOrderByColumn($sort);
            } else {
                $criteria->addDescendingOrderByColumn($sort);
            }
        } else {
            $oCriteria->addDescendingOrderByColumn(AppMessagePeer::APP_MSG_SEND_DATE);
        }
        if (!empty($limit)) {
            $criteria->setLimit($limit);
            $criteria->setOffset($start);
        }

        $result = AppMessagePeer::doSelectRS($criteria);
        $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
        $data = Array();
        $dataPro = array();
        $index = 1;
        $content = new Content();
        $tasTitleDefault = G::LoadTranslation('ID_TASK_NOT_RELATED');
        while ($result->next()) {
            $row = $result->getRow();
            $row['APP_MSG_FROM'] = htmlentities($row['APP_MSG_FROM'], ENT_QUOTES, "UTF-8");
            $row['APP_MSG_STATUS'] = ucfirst($row['APP_MSG_STATUS']);

            switch ($filterBy) {
                case 'CASES':
                    if ($row['DEL_INDEX'] != 0) {
                        $index = $row['DEL_INDEX'];
                    }
                    if ($row['DEL_INDEX'] == 0) {
                        $row['TAS_TITLE'] = $tasTitleDefault;
                    }
                    break;
            }

            $data[] = $row;
        }
        $response = [];
        $response['totalCount'] = $totalCount;
        $response['data'] = $data;
        die(G::json_encode($response));
        break;
    case 'updateStatusMessage':
        if (isset($_REQUEST['APP_MSG_UID']) && isset($_REQUEST['APP_MSG_STATUS'])) {
            $message = new AppMessage();
            $result = $message->updateStatus($_REQUEST['APP_MSG_UID'], $_REQUEST['APP_MSG_STATUS']);
        }
        break;
}