Add MetaTags support and update project configurations
- Removed unused @using directives in App.razor and BrandsPage.razor. - Added UI elements for meta tags in BrandActionDialogBox.razor. - Updated BrandActionDialogBoxViewModel to handle meta tags. - Changed label text in DiscountActionDialogBox.razor. - Updated assembly and file versions in Netina.AdminPanel.PWA.csproj. - Added BlogMetaTag and BrandMetaTag classes. - Added migration to update database schema for meta tags. - Updated BlogController to handle meta tags. - Set LangVersion to latest in multiple project files. - Changed array initialization syntax in various files. - Added MetaTags property to BlogLDto and BrandLDto classes. - Updated Blog and Brand classes to handle meta tags. - Refactored mappers to include meta tags handling. - Improved product sorting in GetProductsQueryHandler.cs. - Updated ApplicationContextModelSnapshot for new entities.subProduct
parent
0e7c1d7f81
commit
0619b0b7de
|
@ -1,5 +1,4 @@
|
||||||
@using Netina.AdminPanel.PWA.Models
|
@using Netina.AdminPanel.PWA.Layout
|
||||||
@using Netina.AdminPanel.PWA.Layout
|
|
||||||
@using Netina.AdminPanel.PWA.Pages
|
@using Netina.AdminPanel.PWA.Pages
|
||||||
<Router AppAssembly="@typeof(App).Assembly">
|
<Router AppAssembly="@typeof(App).Assembly">
|
||||||
<Found Context="routeData">
|
<Found Context="routeData">
|
||||||
|
|
|
@ -85,6 +85,60 @@
|
||||||
<MudTabPanel Text="متاتگ و سوالات متداول">
|
<MudTabPanel Text="متاتگ و سوالات متداول">
|
||||||
|
|
||||||
<MudGrid>
|
<MudGrid>
|
||||||
|
<MudItem xs="12">
|
||||||
|
<MudText Typo="Typo.h6">اطلاعات متا تگ</MudText>
|
||||||
|
<MudText Typo="Typo.caption">می توانید متا تگ های سئو برای صفحه مورد نظر را وارد کنید</MudText>
|
||||||
|
<MudGrid>
|
||||||
|
|
||||||
|
<MudItem lg="5" md="6">
|
||||||
|
<MudTextField @bind-Value="@ViewModel.MetaTagType" T="string" Label="نوع" Variant="Variant.Outlined"></MudTextField>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem lg="5" md="6">
|
||||||
|
<MudTextField @bind-Value="@ViewModel.MetaTagValue" T="string" Label="مقدار" Variant="Variant.Outlined"></MudTextField>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem lg="2" md="12">
|
||||||
|
<MudButton Variant="Variant.Filled"
|
||||||
|
Size="Size.Large"
|
||||||
|
Color="Color.Info"
|
||||||
|
class="mt-2 w-full py-3"
|
||||||
|
OnClick="ViewModel.AddMetaTag"
|
||||||
|
StartIcon="@Icons.Material.Outlined.Add">افزودن</MudButton>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
<MudItem sm="12">
|
||||||
|
|
||||||
|
<MudDataGrid Items="@ViewModel.MetaTags"
|
||||||
|
T="MetaTagSDto"
|
||||||
|
Elevation="0"
|
||||||
|
Outlined="true"
|
||||||
|
Bordered="true"
|
||||||
|
Striped="true"
|
||||||
|
Filterable="false"
|
||||||
|
SortMode="@SortMode.None"
|
||||||
|
Groupable="false">
|
||||||
|
<Columns>
|
||||||
|
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Type" Title="نوع" />
|
||||||
|
<PropertyColumn T="MetaTagSDto" TProperty="string" Property="x => x.Value" Title="مقدار" />
|
||||||
|
<TemplateColumn T="MetaTagSDto" CellClass="d-flex justify-end">
|
||||||
|
<CellTemplate>
|
||||||
|
<MudStack Row>
|
||||||
|
<MudButton DisableElevation="true"
|
||||||
|
Size="@Size.Small"
|
||||||
|
Variant="@Variant.Filled"
|
||||||
|
OnClick="() => ViewModel.MetaTags.Remove(context.Item)"
|
||||||
|
Color="@Color.Error"
|
||||||
|
StartIcon="@Icons.Material.Outlined.Delete">حذف</MudButton>
|
||||||
|
</MudStack>
|
||||||
|
</CellTemplate>
|
||||||
|
</TemplateColumn>
|
||||||
|
</Columns>
|
||||||
|
</MudDataGrid>
|
||||||
|
</MudItem>
|
||||||
|
|
||||||
|
</MudGrid>
|
||||||
|
</MudItem>
|
||||||
<MudItem xs="12">
|
<MudItem xs="12">
|
||||||
|
|
||||||
<MudText Typo="Typo.h6">سوالات متداول</MudText>
|
<MudText Typo="Typo.h6">سوالات متداول</MudText>
|
||||||
|
@ -120,7 +174,7 @@
|
||||||
Size="@Size.Small"
|
Size="@Size.Small"
|
||||||
Variant="@Variant.Outlined"
|
Variant="@Variant.Outlined"
|
||||||
Color="@Color.Error"
|
Color="@Color.Error"
|
||||||
OnClick="() => ViewModel.Faqs.Remove(item.Key)" />
|
OnClick="() => ViewModel.Faqs.Remove(item.Key)"/>
|
||||||
<MudText>@item.Key</MudText>
|
<MudText>@item.Key</MudText>
|
||||||
</MudStack>
|
</MudStack>
|
||||||
</TitleContent>
|
</TitleContent>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using Netina.Domain.Entities.Brands;
|
using Netina.Domain.Dtos.LargDtos;
|
||||||
|
using Netina.Domain.Entities.Brands;
|
||||||
|
|
||||||
namespace Netina.AdminPanel.PWA.Dialogs;
|
namespace Netina.AdminPanel.PWA.Dialogs;
|
||||||
|
|
||||||
|
@ -65,6 +66,7 @@ public class BrandActionDialogBoxViewModel : BaseViewModel<BrandLDto>
|
||||||
IsProcessing = true;
|
IsProcessing = true;
|
||||||
var response = await _restWrapper.CrudDtoApiRest<Brand, BrandLDto, Guid>(Address.BrandController).ReadOne(Brand.Id);
|
var response = await _restWrapper.CrudDtoApiRest<Brand, BrandLDto, Guid>(Address.BrandController).ReadOne(Brand.Id);
|
||||||
var brandLDto = response;
|
var brandLDto = response;
|
||||||
|
brandLDto.MetaTags.ForEach(m => MetaTags.Add(m));
|
||||||
PageDto = brandLDto;
|
PageDto = brandLDto;
|
||||||
}
|
}
|
||||||
catch (ApiException ex)
|
catch (ApiException ex)
|
||||||
|
@ -106,7 +108,7 @@ public class BrandActionDialogBoxViewModel : BaseViewModel<BrandLDto>
|
||||||
PageDto.PageUrl,
|
PageDto.PageUrl,
|
||||||
PageDto.Files,
|
PageDto.Files,
|
||||||
Faqs,
|
Faqs,
|
||||||
new Dictionary<string, string>());
|
MetaTags.ToDictionary(x => x.Type, x => x.Value));
|
||||||
await _restWrapper.CrudApiRest<Brand, Guid>(Address.BrandController).Create<CreateBrandCommand>(request, token);
|
await _restWrapper.CrudApiRest<Brand, Guid>(Address.BrandController).Create<CreateBrandCommand>(request, token);
|
||||||
_mudDialog.Close(DialogResult.Ok(true));
|
_mudDialog.Close(DialogResult.Ok(true));
|
||||||
}
|
}
|
||||||
|
@ -147,7 +149,7 @@ public class BrandActionDialogBoxViewModel : BaseViewModel<BrandLDto>
|
||||||
PageDto.PageUrl,
|
PageDto.PageUrl,
|
||||||
PageDto.Files,
|
PageDto.Files,
|
||||||
Faqs,
|
Faqs,
|
||||||
new Dictionary<string, string>());
|
MetaTags.ToDictionary(x => x.Type, x => x.Value));
|
||||||
|
|
||||||
await _restWrapper.CrudApiRest<Brand, Guid>(Address.BrandController).Update<UpdateBrandCommand>(request, token);
|
await _restWrapper.CrudApiRest<Brand, Guid>(Address.BrandController).Update<UpdateBrandCommand>(request, token);
|
||||||
_mudDialog.Close();
|
_mudDialog.Close();
|
||||||
|
@ -191,6 +193,26 @@ public class BrandActionDialogBoxViewModel : BaseViewModel<BrandLDto>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public readonly ObservableCollection<MetaTagSDto> MetaTags = new();
|
||||||
|
public string MetaTagType { get; set; } = string.Empty;
|
||||||
|
public string MetaTagValue { get; set; } = string.Empty;
|
||||||
|
public void AddMetaTag()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (MetaTagType.IsNullOrEmpty())
|
||||||
|
throw new Exception("لطفا نوع متا مورد نظر را وارد کنید");
|
||||||
|
if (MetaTagValue.IsNullOrEmpty())
|
||||||
|
throw new Exception("لطفا مقدار متا مورد نظر را وارد کنید");
|
||||||
|
|
||||||
|
MetaTags.Add(new MetaTagSDto() { Type = MetaTagType, Value = MetaTagValue });
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_snackbar.Add(e.Message, Severity.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task SelectFileAsync()
|
public async Task SelectFileAsync()
|
||||||
{
|
{
|
||||||
|
|
|
@ -133,7 +133,7 @@
|
||||||
</MudAutocomplete>
|
</MudAutocomplete>
|
||||||
</MudItem>
|
</MudItem>
|
||||||
<MudItem sm="5">
|
<MudItem sm="5">
|
||||||
<MudSwitch @bind-Value="@ViewModel.IsProductEnable" class="mt-2" Size="Size.Large" T="bool" Label="تخفیف برای غذای خاص" Color="Color.Info" />
|
<MudSwitch @bind-Value="@ViewModel.IsProductEnable" class="mt-2" Size="Size.Large" T="bool" Label="تخفیف برای محصول خاص" Color="Color.Info" />
|
||||||
</MudItem>
|
</MudItem>
|
||||||
|
|
||||||
<MudItem sm="7">
|
<MudItem sm="7">
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
|
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
|
||||||
<AssemblyVersion>1.7.20.34</AssemblyVersion>
|
<AssemblyVersion>1.10.21.36</AssemblyVersion>
|
||||||
<FileVersion>1.7.20.34</FileVersion>
|
<FileVersion>1.10.21.36</FileVersion>
|
||||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
@page "/product/brands"
|
@page "/product/brands"
|
||||||
@using StringExtensions = Netina.Common.Extensions.StringExtensions
|
|
||||||
|
|
||||||
@inject IDialogService DialogService
|
@inject IDialogService DialogService
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
|
Loading…
Reference in New Issue