1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
MarketTransitionNotification.php
См. документацию.
1<?php
2
3namespace Bitrix\Rest\Notification\MarketExpired;
4
5use Bitrix\Main\Application;
6use Bitrix\Main\Loader;
7use Bitrix\Rest\Infrastructure\Market\MarketSubscription;
8use Bitrix\Rest\Infrastructure\Market\MarketOption;
9use Bitrix\Rest\Notification\MarketExpired\Curtain\MarketExpiredCurtain;
10use Bitrix\Rest\Notification\MarketExpired\Curtain\SubscriptionCurtain;
11use Bitrix\Rest\Notification\MarketExpired\Curtain\TransitionCurtain;
12use Bitrix\Rest\Notification\MarketExpired\Popup\MarketExpiredPopup;
13use Bitrix\Rest\Notification\MarketExpired\Popup\SubscriptionPopup;
14use Bitrix\Rest\Notification\MarketExpired\Popup\TransitionPopup;
15use Bitrix\Rest\Service\RestOption;
16use Bitrix\Rest\Service\RestUserOption;
17
19{
20 private const BEFORE_DEMO_ENDS_DELAY = 60 * 60 * 24 * 7; // 1 week
21
22 public function getPopup(): MarketExpiredPopup
23 {
24 return new TransitionPopup(new RestUserOption(), $this);
25 }
26
28 {
29 return new TransitionCurtain(new RestUserOption(), $this);
30 }
31
32 public function getEndDateTimestamp(): int
33 {
34 return $this->marketSubscription->getTransitionPeriodEndDate()->getTimestamp();
35 }
36
37 public function isAvailable(): bool
38 {
39 if (Loader::includeModule('extranet') && \CExtranet::IsExtranetSite())
40 {
41 return false;
42 }
43
44 if (!$this->marketSubscription->isAvailableToPurchase())
45 {
46 return false;
47 }
48
49 if (!$this->marketSubscription->isTransitionPeriodEnabled())
50 {
51 return false;
52 }
53
54 $transitionEndTs = $this->marketSubscription->getTransitionPeriodEndDate()->getTimestamp();
55
56 if ($transitionEndTs + self::AFTER_SHOW_DURATION < time())
57 {
58 return false;
59 }
60
61 if (!$this->marketSubscription->isPaidAppsOrIntegrationsInstalled())
62 {
63 return false;
64 }
65
66 if ($this->marketSubscription->isDemo())
67 {
68 return $transitionEndTs < time() + self::BEFORE_DEMO_ENDS_DELAY;
69 }
70
71 return !$this->marketSubscription->isActive();
72 }
73
74 public function getType(): MarketExpiredType
75 {
76 return $this->marketSubscription->isTransitionPeriodEnds()
78 : MarketExpiredType::WARNING;
79 }
80
82 {
83 return MarketExpiredCategory::TRANSITION;
84 }
85
86 public function getOpenLinesWidgetCode(): string
87 {
88 return match (Application::getInstance()->getLicense()->getRegion())
89 {
90 'ru' => '160_j8zdo1',
91 default => '',
92 };
93 }
94}