From 1342dd86f3d7dd5128be8a00edaaccd650ae4300 Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Sat, 24 Feb 2024 15:39:26 +0330 Subject: [PATCH] feat : add newsletter and newsletter members , add version 0.8.15.22 add needed controller and models , fix sidebar in responsive --- .../Components/Originals/SideBarUi.razor | 14 +-- .../Layout/MainLayout.razor | 4 +- NetinaShop.AdminPanel.PWA/Models/Address.cs | 1 + .../NetinaShop.AdminPanel.PWA.csproj | 4 +- NetinaShop.AdminPanel.PWA/Pages/Home.razor | 102 +++++++++++------- .../Pages/NewsletterManagementPage.razor | 49 +++++++++ .../Pages/NewsletterManagementPage.razor.cs | 98 +++++++++++++++++ .../wwwroot/css/app.min.css | 6 ++ .../wwwroot/css/app.output.css | 12 ++- 9 files changed, 232 insertions(+), 58 deletions(-) create mode 100644 NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor create mode 100644 NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor.cs diff --git a/NetinaShop.AdminPanel.PWA/Components/Originals/SideBarUi.razor b/NetinaShop.AdminPanel.PWA/Components/Originals/SideBarUi.razor index 3333fa3..5bc4036 100644 --- a/NetinaShop.AdminPanel.PWA/Components/Originals/SideBarUi.razor +++ b/NetinaShop.AdminPanel.PWA/Components/Originals/SideBarUi.razor @@ -3,17 +3,7 @@ - @* - - - -
- @item.Text -
-
-
-
-
*@ + داشبورد @@ -59,6 +49,8 @@ Icon="@Icons.Material.Outlined.PeopleAlt">مشترکین پنل پیامکی + خبرنامه - - + + diff --git a/NetinaShop.AdminPanel.PWA/Models/Address.cs b/NetinaShop.AdminPanel.PWA/Models/Address.cs index ab97bc7..f04ef2a 100644 --- a/NetinaShop.AdminPanel.PWA/Models/Address.cs +++ b/NetinaShop.AdminPanel.PWA/Models/Address.cs @@ -23,4 +23,5 @@ public static class Address public static string PaymentController => $"{BaseAddress}/accounting/pay"; public static string PageController => $"{BaseAddress}/page"; public static string ScraperController => $"{BaseAddress}/scraper"; + public static string NewsletterMemberController => $"{BaseAddress}/newsletter/member"; } \ No newline at end of file diff --git a/NetinaShop.AdminPanel.PWA/NetinaShop.AdminPanel.PWA.csproj b/NetinaShop.AdminPanel.PWA/NetinaShop.AdminPanel.PWA.csproj index d0444ad..19186e1 100644 --- a/NetinaShop.AdminPanel.PWA/NetinaShop.AdminPanel.PWA.csproj +++ b/NetinaShop.AdminPanel.PWA/NetinaShop.AdminPanel.PWA.csproj @@ -5,8 +5,8 @@ enable enable service-worker-assets.js - 0.7.14.22 - 0.7.14.22 + 0.8.15.22 + 0.8.15.22 $(MSBuildProjectName) diff --git a/NetinaShop.AdminPanel.PWA/Pages/Home.razor b/NetinaShop.AdminPanel.PWA/Pages/Home.razor index 47fb7c0..4e7a1b4 100644 --- a/NetinaShop.AdminPanel.PWA/Pages/Home.razor +++ b/NetinaShop.AdminPanel.PWA/Pages/Home.razor @@ -2,53 +2,77 @@ @page "/home" @attribute [Microsoft.AspNetCore.Authorization.Authorize] - - - + + + + + + تعداد محصولاتــ + 1124 + عدد + + + + + تعداد بلاگــ ها + 845 + عدد + + + + + فروش های امروز + 125 + عدد + + + + + فروش های تایید نشده + 10 + عدد + + + + + تعداد برنـــدها + 125 + عدد + + + + + تعداد مشترکین + 5632 + عدد + + + + + + + تعداد محصولاتــ 1124 عدد - - + - تعداد بلاگــ ها - 845 + تعداد محصولاتــ + 1124 عدد - - + - فروش های امروز - 125 + تعداد محصولاتــ + 1124 عدد - - - - فروش های تایید نشده - 10 - عدد - - - - - تعداد برنـــدها - 125 - عدد - - - - - تعداد مشترکین - 5632 - عدد - - - + + - + - + - + - + سفارشاتــ تایید نشده @@ -119,7 +143,7 @@ - + سفارشاتــ ارسال نشده diff --git a/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor b/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor new file mode 100644 index 0000000..1251f50 --- /dev/null +++ b/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor @@ -0,0 +1,49 @@ +@page "/newsletler" +@attribute [Microsoft.AspNetCore.Authorization.Authorize] + +@inject IDialogService DialogService +@inject ISnackbar Snackbar +@inject IUserUtility UserUtility +@inject IRestWrapper RestWrapper + + + + + + اعضا خبرنامه + 124 عدد + + + + + + + + + + + + + + + + + + + + + +@code +{ + public NewsletterManagementPageViewModel ViewModel { get; set; } + protected override async Task OnInitializedAsync() + { + ViewModel = new NewsletterManagementPageViewModel(Snackbar, UserUtility, RestWrapper, DialogService); + await ViewModel.InitializeAsync(); + await base.OnInitializedAsync(); + } +} diff --git a/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor.cs b/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor.cs new file mode 100644 index 0000000..0f52b41 --- /dev/null +++ b/NetinaShop.AdminPanel.PWA/Pages/NewsletterManagementPage.razor.cs @@ -0,0 +1,98 @@ +using NetinaShop.Domain.Entities.Users; + +namespace NetinaShop.AdminPanel.PWA.Pages; + +public class NewsletterManagementPageViewModel : BaseViewModel +{ + + + private readonly ISnackbar _snackbar; + private readonly IUserUtility _userUtility; + private readonly IDialogService _dialogService; + private readonly IRestWrapper _restWrapper; + + public ObservableCollection Members { get; set; } = new ObservableCollection(); + + public int CurrentPage = 0; + public int PageCount = 1; + + public NewsletterManagementPageViewModel(ISnackbar snackbar, IUserUtility userUtility, IRestWrapper restWrapper, IDialogService dialogService) + { + _snackbar = snackbar; + _userUtility = userUtility; + _restWrapper = restWrapper; + _dialogService = dialogService; + } + + public override async Task InitializeAsync() + { + try + { + var token = await _userUtility.GetBearerTokenAsync(); + if (token == null) + throw new Exception("Token is null"); + IsProcessing = true; + Members.Clear(); + var dto = await _restWrapper.CrudDtoApiRest(Address.NewsletterMemberController) + .ReadAll(CurrentPage, token); + dto.ForEach(d => Members.Add(d)); + if (Members.Count == 20) + PageCount = 2; + } + catch (ApiException ex) + { + var exe = await ex.GetContentAsAsync(); + _snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); + } + catch (Exception e) + { + _snackbar.Add(e.Message, Severity.Error); + } + finally + { + + IsProcessing = false; + } + await base.InitializeAsync(); + } + + public async Task ChangePageAsync(int page) + { + CurrentPage = page - 1; + if (CurrentPage > PageCount - 2) + { + + try + { + IsProcessing = true; + + var token = await _userUtility.GetBearerTokenAsync(); + if (token == null) + throw new Exception("Token is null"); + List dto = await _restWrapper.CrudDtoApiRest(Address.NewsletterMemberController) + .ReadAll(CurrentPage, token); + + + dto.ForEach(d => Members.Add(d)); + if (Members.Count % 20 == 0) + PageCount = CurrentPage + 2; + + } + catch (ApiException ex) + { + var exe = await ex.GetContentAsAsync(); + _snackbar.Add(exe != null ? exe.Message : ex.Content, Severity.Error); + } + catch (Exception e) + { + _snackbar.Add(e.Message, Severity.Error); + } + finally + { + + IsProcessing = false; + } + } + } + +} \ No newline at end of file diff --git a/NetinaShop.AdminPanel.PWA/wwwroot/css/app.min.css b/NetinaShop.AdminPanel.PWA/wwwroot/css/app.min.css index f5aa18e..b13c67e 100644 --- a/NetinaShop.AdminPanel.PWA/wwwroot/css/app.min.css +++ b/NetinaShop.AdminPanel.PWA/wwwroot/css/app.min.css @@ -1222,6 +1222,9 @@ input:checked + .toggle-bg { .h-6 { height: 1.5rem; } +.h-60 { + height: 15rem; +} .h-64 { height: 16rem; } @@ -1417,6 +1420,9 @@ input:checked + .toggle-bg { .overflow-hidden { overflow: hidden; } +.overflow-x-scroll { + overflow-x: scroll; +} .overflow-y-scroll { overflow-y: scroll; } diff --git a/NetinaShop.AdminPanel.PWA/wwwroot/css/app.output.css b/NetinaShop.AdminPanel.PWA/wwwroot/css/app.output.css index 770c365..2dfb217 100644 --- a/NetinaShop.AdminPanel.PWA/wwwroot/css/app.output.css +++ b/NetinaShop.AdminPanel.PWA/wwwroot/css/app.output.css @@ -1347,6 +1347,10 @@ input:checked + .toggle-bg { height: 1.5rem; } +.h-60 { + height: 15rem; +} + .h-64 { height: 16rem; } @@ -1396,10 +1400,6 @@ input:checked + .toggle-bg { max-height: 40rem; } -.min-h-\[28rem\] { - min-height: 28rem; -} - .min-h-\[33rem\] { min-height: 33rem; } @@ -1606,6 +1606,10 @@ input:checked + .toggle-bg { overflow: hidden; } +.overflow-x-scroll { + overflow-x: scroll; +} + .overflow-y-scroll { overflow-y: scroll; }