3namespace Bitrix\Im\V2\Link\Reminder;
5use Bitrix\Im\Model\LinkReminderTable;
7use Bitrix\Im\V2\Common\ContextCustomer;
8use Bitrix\Im\V2\Link\Push;
9use Bitrix\Im\V2\Message;
10use Bitrix\Im\V2\Result;
11use Bitrix\Im\V2\Service\Context;
12use Bitrix\Main\Localization\Loc;
13use Bitrix\Main\ORM\Query\Query;
14use Bitrix\Main\Type\DateTime;
28 return __METHOD__.
'();';
34 ->where(
'CHAT_ID', $chatId)
35 ->where(
'AUTHOR_ID', $this->getContext()->getUserId())
38 return LinkReminderTable::getCount(
$filter);
53 if (!$saveResult->isSuccess())
55 return $result->addErrors($saveResult->getErrors());
58 $pushRecipient = [
'RECIPIENT' => [$this->getContext()->getUserId()]];
61 ->setContext($this->context)
62 ->sendFull(
$reminder, static::ADD_REMINDERS_EVENT, $pushRecipient)
74 if ($reminders->count() === 0)
79 $deleteResult = $reminders->delete();
81 if (!$deleteResult->isSuccess())
83 return $result->addErrors($deleteResult->getErrors());
88 $pushRecipient = [
'RECIPIENT' => [
$reminder->getAuthorId()]];
91 ->sendIdOnly(
$reminder, static::DELETE_REMINDERS_EVENT, $pushRecipient)
104 if (!$deleteResult->isSuccess())
106 return $result->addErrors($deleteResult->getErrors());
111 if (!$deleteNotifyResult->isSuccess())
113 $result->addErrors($deleteNotifyResult->getErrors());
116 $pushRecipient = [
'RECIPIENT' => [
$reminder->getAuthorId()]];
120 ->sendIdOnly(
$reminder, static::DELETE_REMINDERS_EVENT, $pushRecipient)
131 $reminders->getMessageCollection()->fillFiles();
136 if (!$sendResult->isSuccess())
143 $saveResult = $reminders->save(
true);
145 if(!$saveResult->isSuccess())
147 return $result->addErrors($saveResult->getErrors());
157 $attach = new \CIMMessageParamAttach();
164 'NAME' =>
$user->getName(),
165 'AVATAR' =>
$user->getAvatar(
false),
169 $attach->AddMessage(
$reminder->getEntity()->getPreviewMessage());
172 'TO_USER_ID' =>
$reminder->getAuthorId(),
175 'NOTIFY_MODULE' =>
'im',
176 'NOTIFY_SUB_TAG' => $this->getSubTag(
$reminder),
182 $notifyId = CIMNotify::Add($notifyParams);
184 if ($notifyId ===
false)
194 $isDeleteSuccess = CIMNotify::DeleteBySubTag($this->getSubTag(
$reminder));
196 if ($isDeleteSuccess)
220 $chatTitle = $isOut ? $chat->getDisplayedTitle() :
"[CHAT={$chat->getChatId()}]{$chat->getDisplayedTitle()}[/CHAT]";
222 return fn (?
string $languageId =
null) => Loc::getMessage(
223 'IM_CHAT_REMINDER_REMIND_NOTIFICATION',
224 [
'#CHAT_TITLE#' => $chatTitle],
231 return "MESSAGE_REMINDER_{$reminder->getId()}";
static getByMessage(Message $message)
const REMINDER_NOTIFY_ADD_ERROR
const REMINDER_NOTIFY_DELETE_ERROR
static createFromMessage(Message $message, ?Context $context=null)
deleteNotify(ReminderItem $reminder)
const ADD_REMINDERS_EVENT
const DELETE_REMINDERS_EVENT
sendNotifyAboutReminder(ReminderItem $reminder)
addMessageToReminders(Message $message, DateTime $dateRemind)
saveReminder(ReminderItem $reminder)
deleteReminder(ReminderItem $reminder)
getNotifyMessageText(ReminderItem $reminder, bool $isOut)
deleteRemindersByMessage(Message $message)