1: <?php
2: /**
3: * This code is licensed under AGPLv3 license or Afterlogic Software License
4: * if commercial version of the product was purchased.
5: * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
6: */
7:
8: namespace Aurora\Modules\MailScheduledMessages;
9:
10: /**
11: * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
12: * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
13: * @copyright Copyright (c) 2023, Afterlogic Corp.
14: *
15: * @property Module $oModule
16: */
17: class Manager extends \Aurora\System\Managers\AbstractManager
18: {
19: public function __construct(\Aurora\System\Module\AbstractModule $oModule = null)
20: {
21: parent::__construct($oModule);
22: }
23:
24: /**
25: * @return array|bool
26: */
27: public function getMessagesForSend($iTimestamp)
28: {
29: return Models\Message::where('schedule_timestamp', '<', $iTimestamp)
30: ->orderBy('schedule_timestamp')
31: ->get()
32: ->map(function ($message) {
33: return [
34: 'AccountId' => (int) $message->account_id,
35: 'FolderFullName' => $message->folder_full_name,
36: 'MessageUid' => $message->message_uid,
37: 'ScheduleTimestamp' => (int) $message->schedule_timestamp
38: ];
39: });
40: }
41:
42: /**
43: * @param int $iAccountID
44: * @param string $sFolderFullName
45: * @param string $sMessageUid
46: * @param int $iTimestamp
47: *
48: * @return bool
49: */
50: public function addMessage($iAccountID, $sFolderFullName, $sMessageUid, $iTimestamp)
51: {
52: return Models\Message::query()->create([
53: 'account_id' => $iAccountID,
54: 'folder_full_name' => $sFolderFullName,
55: 'message_uid' => $sMessageUid,
56: 'schedule_timestamp' => $iTimestamp
57: ]);
58: }
59:
60: public function updateMessageScheduleTimestamp($iAccountID, $sFolderFullName, $sMessageUid, $iTimestamp)
61: {
62: return Models\Message::where('account_id', $iAccountID)
63: ->where('folder_full_name', $sFolderFullName)
64: ->where('message_uid', $sMessageUid)
65: ->update(['schedule_timestamp' => $iTimestamp]);
66: }
67:
68: public function getMessage($iAccountID, $sFolderFullName, $sMessageUid)
69: {
70: $mResult = false;
71:
72: $message = Models\Message::where('account_id', $iAccountID)
73: ->where('folder_full_name', $sFolderFullName)
74: ->where('message_uid', $sMessageUid)
75: ->first();
76: if ($message) {
77: $mResult = [
78: 'AccountId' => (int) $message->account_id,
79: 'FolderFullName' => $message->folder_full_name,
80: 'MessageUid' => $message->message_uid,
81: 'ScheduleTimestamp' => (int) $message->schedule_timestamp
82: ];
83: }
84: return $mResult;
85: }
86:
87: public function removeMessage($iAccountID, $sFolderFullName, $sMessageUid)
88: {
89: return Models\Message::where('account_id', $iAccountID)
90: ->where('folder_full_name', $sFolderFullName)
91: ->where('message_uid', $sMessageUid)
92: ->delete();
93: }
94:
95: public function removeAccountMessages($iAccountID)
96: {
97: return Models\Message::where('account_id', $iAccountID)->delete();
98: }
99: }
100: