From a8240ed0db291ff3a8ae184ab6ee6b93323df728 Mon Sep 17 00:00:00 2001 From: gofnnp Date: Tue, 12 Sep 2023 15:10:58 +0400 Subject: [PATCH] =?UTF-8?q?dev=20#15189=20=D1=84=D0=B8=D0=BA=D1=81=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D0=B4=D0=B6=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/directives/download-app.directive.ts | 47 ++++- .../last-order/last-order.component.html | 32 +-- .../last-order/last-order.component.ts | 5 +- .../loyality-program.component.html | 188 +++++++++--------- 4 files changed, 154 insertions(+), 118 deletions(-) diff --git a/angular/src/app/directives/download-app.directive.ts b/angular/src/app/directives/download-app.directive.ts index 410f49f..18f7b1d 100644 --- a/angular/src/app/directives/download-app.directive.ts +++ b/angular/src/app/directives/download-app.directive.ts @@ -7,27 +7,57 @@ import { } from '@angular/core'; import { MessageService } from 'primeng/api'; -import { AppComponent } from '../app.component'; +import { getTypeDevice, pwaInstalled } from 'src/app/utils'; @Directive({ selector: '[appDownloadApp]', }) export class DownloadAppDirective implements OnInit { + public deviceType: 'ios' | 'android' | null = null; + public deferredPrompt: any; + constructor( private messageService: MessageService, public renderer: Renderer2, - private el: ElementRef - ) {} + private el: ElementRef, + ) { } ngOnInit(): void { - if (AppComponent.pwaInstalled) { + getTypeDevice(); + if (this.deviceType === 'ios') { + this.el.nativeElement.style.display = 'block'; + } + this.checkInstalled(); + } + + async checkInstalled(): Promise { + if (window.matchMedia('(display-mode: standalone)').matches + || await pwaInstalled()) { this.el.nativeElement.style.display = 'none'; } } + @HostListener('window:beforeinstallprompt', ['$event']) + onBeforeInstallPrompt(e: any) { + e.preventDefault(); + this.deferredPrompt = e; + if (this.deferredPrompt) { + this.el.nativeElement.style.display = 'block'; + } + } + + @HostListener('window:appinstalled', ['$event']) + onAppInstalled(e: any) { + // Prevent Chrome 67 and earlier from automatically showing the prompt + e.preventDefault(); + // Stash the event so it can be triggered later. + this.deferredPrompt = e; + this.el.nativeElement.style.display = 'none'; + } + @HostListener('click', ['$event']) async downloadApp(event: MouseEvent) { - if (!AppComponent.pwaPrompt) { + if (!this.deferredPrompt) { this.messageService.clear(); this.messageService.add({ severity: 'error', @@ -35,8 +65,8 @@ export class DownloadAppDirective implements OnInit { }); return; } - AppComponent.pwaPrompt.prompt(); - AppComponent.pwaPrompt.userChoice.then((res: any) => { + this.deferredPrompt.prompt(); + this.deferredPrompt.userChoice.then((res: any) => { if (res.outcome === 'accepted') { this.messageService.clear(); this.messageService.add({ @@ -44,7 +74,8 @@ export class DownloadAppDirective implements OnInit { summary: 'Спасибо за установку!', }); } - AppComponent.pwaPrompt = null; + this.deferredPrompt = null; }); } + } diff --git a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html index 6dfe208..7410862 100644 --- a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html +++ b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.html @@ -1,19 +1,23 @@ +

Ваш предыдущий заказ

- -

Ваш предыдущий заказ

-

Дата: - {{lastOrder!.last_purchase_date}} -

-

На сумму: - {{lastOrder?.last_purchase_sum}}₽ -

-
- -

- Покупок за последние пол года не было -

-
+

Дата: + {{(lastOrder?.transactionCreateDate | date:'dd.MM.yyyyг.') || 'Данные не найдены'}} + + + +

+

На сумму: + {{lastOrder?.orderSum ? lastOrder?.orderSum + ' ₽' : 'Данные не найдены'}} + + + +

+ diff --git a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.ts b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.ts index 498ac89..ab3963c 100644 --- a/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.ts +++ b/angular/src/app/presentation-options/default-option/components/last-order/last-order.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit } from '@angular/core'; -import { LastPurchase } from 'src/app/interface/data'; +import { Purchase } from 'src/app/interface/data'; @Component({ selector: 'app-last-order[lastOrder]', @@ -7,11 +7,12 @@ import { LastPurchase } from 'src/app/interface/data'; styleUrls: ['./last-order.component.scss'] }) export class LastOrderComponent implements OnInit { - @Input() lastOrder?: LastPurchase; + @Input() lastOrder?: Purchase; @Input() loading!: boolean; constructor() { } ngOnInit(): void { } + } diff --git a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html index 9850f25..88bb56c 100644 --- a/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html +++ b/angular/src/app/presentation-options/default-option/pages/loyality-program/loyality-program.component.html @@ -1,105 +1,105 @@ -
- -

- Ваш текущий уровень {{ authService.userInfo?.current_level_and_cashback?.current_level ?? '--' }}, - поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки. -

-

- Смена уровня произойдет в начале следующего квартала, - {{ authService.currentPeriod[1] - .locale("ru") - .format("DD.MM.YY") }}. -

-
- -

- Начисление Бонусных баллов происходит по дифференцированной шкале в - зависимости от уровня: -

- - - -
    - Уровень {{ index + 1 }} -
  • - Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }} - руб. -
  • -
  • Начисляемый бонус {{ item.percent }}% от суммы покупки
  • -
-
-
- -
    - Уровень {{ index + 1 }} -
  • Сумма покупок за прошлый квартал — от {{ item.start }} руб.
  • -
  • Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%
  • -
-
-
-
- - -

- Участник может использовать Бонусы для «оплаты» до 100% стоимости любой - покупки. -

-

- Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1 - российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая - Участнику при списании Бонусов, уменьшает цену товаров в заказе в - соответствии с условиями ПЛ. -

-

- Для списания Бонусов Участник должен попросить об этом в кофе-баре сети - «COFFEE LIKE» кассира до момента пробития фискального чека, после чего им - будет проверена возможность списания Бонусов. -

-

- Для всех Участников возможно списание без использования мобильного - приложения. -

-

Полученные Бонусы не подлежат обмену на денежные средства.

-
- -

- Начисленные на счет бонусы сгорают по прошествии 90 дней с момента - совершения последней покупки с начислением или списанием бонусов. -

+
+ +

+ Ваш текущий уровень {{ authService.userInfo?.customer_level }}, + поэтому вам начисляется {{ authService.currentLvlPeriod.percent }}% от суммы покупки. +

+

+ Смена уровня произойдет в начале следующего квартала, + {{ authService.purchaseData.currentPeriod[1] + .locale("ru") + .format("DD.MM.YY") }}. +

+
+ +

+ Начисление Бонусных баллов происходит по дифференцированной шкале в + зависимости от уровня: +

+ +
    - Возврат покупки, за которую бонусы были начислены: -
  • - В случае, если бонусов на счету достаточно для списания, бонусы - списываются в полном ранее начисленном за возвращаемый товар объеме. -
  • -
  • - В случае, если бонусов на счету недостаточно, формируется минусовой - баланс. -
  • + Уровень {{ index + 1 }} +
  • + Сумма покупок за прошлый квартал {{ item.start }}-{{ item.end }} + руб. +
  • +
  • Начисляемый бонус {{ item.percent }}% от суммы покупки
- +
+
+
    - Возврат покупки, которая была оплачена бонусами: -
  • - В случае предъявления Участником кассового или товарного чека, сумма - бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет - участника. -
  • -
  • - В случае возврата товара с применением оплаты бонусами, клиенту - возвращается денежная сумма в размере, внесенном Участником в оплату - товара при покупке, за вычетом суммы, оплаченной бонусами. -
  • + Уровень {{ index + 1 }} +
  • Сумма покупок за прошлый квартал — от {{ item.start }} руб.
  • +
  • Начисляемый бонус, в % от суммы покупки - {{ item.percent }}%
-
+ + + -
+ +

+ Участник может использовать Бонусы для «оплаты» до 100% стоимости любой + покупки. +

+

+ Списание Бонусов происходит из расчета 1:1 (один Бонус дает скидку 1 + российский рубль / 1 тенге / 1 белорусский рубль. Скидка, предоставляемая + Участнику при списании Бонусов, уменьшает цену товаров в заказе в + соответствии с условиями ПЛ. +

+

+ Для списания Бонусов Участник должен попросить об этом в кофе-баре сети + «COFFEE LIKE» кассира до момента пробития фискального чека, после чего им + будет проверена возможность списания Бонусов. +

+

+ Для всех Участников возможно списание без использования мобильного + приложения. +

+

Полученные Бонусы не подлежат обмену на денежные средства.

+
+ +

+ Начисленные на счет бонусы сгорают по прошествии 90 дней с момента + совершения последней покупки с начислением или списанием бонусов. +

- +
    + Возврат покупки, за которую бонусы были начислены: +
  • + В случае, если бонусов на счету достаточно для списания, бонусы + списываются в полном ранее начисленном за возвращаемый товар объеме. +
  • +
  • + В случае, если бонусов на счету недостаточно, формируется минусовой + баланс. +
  • +
+ +
    + Возврат покупки, которая была оплачена бонусами: +
  • + В случае предъявления Участником кассового или товарного чека, сумма + бонусов, списанная для оплаты возвращаемого товара, зачисляется на счет + участника. +
  • +
  • + В случае возврата товара с применением оплаты бонусами, клиенту + возвращается денежная сумма в размере, внесенном Участником в оплату + товара при покупке, за вычетом суммы, оплаченной бонусами. +
  • +
+
+ +
+ +