init: initial commit
This commit is contained in:
370
.gitignore
vendored
Normal file
370
.gitignore
vendored
Normal file
@ -0,0 +1,370 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Oo]ut/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
.idea/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
/src/Presentation/Server/Database.db
|
||||
/src/Presentation/Server/Database.db-shm
|
||||
/src/Presentation/Server/Database.db-wal
|
||||
/DocProject
|
||||
/dist
|
||||
/src/Presentation/Server/wwwroot/dist/
|
||||
BIN
db/database.db
Normal file
BIN
db/database.db
Normal file
Binary file not shown.
BIN
db/database.db-shm
Normal file
BIN
db/database.db-shm
Normal file
Binary file not shown.
0
db/database.db-wal
Normal file
0
db/database.db-wal
Normal file
94
src/Core/Application/Aggregates/Users/UsersApplication.cs
Normal file
94
src/Core/Application/Aggregates/Users/UsersApplication.cs
Normal file
@ -0,0 +1,94 @@
|
||||
using Application.Aggregates.Users.ViewModels;
|
||||
using Domain.Aggregates.Users;
|
||||
using Domain.Aggregates.Users.Data;
|
||||
using Mapster;
|
||||
using Resources.Messages;
|
||||
|
||||
namespace Application.Aggregates.Users;
|
||||
|
||||
public class UsersApplication
|
||||
(IUserRepository userRepository)
|
||||
{
|
||||
public async Task<UserViewModel> CreateAsync(CreateUserViewModel viewModel)
|
||||
{
|
||||
var user = User.Create(
|
||||
username: viewModel.Username,
|
||||
password: viewModel.Password,
|
||||
mobile: viewModel.Mobile);
|
||||
|
||||
if (viewModel.IsActive == true)
|
||||
{
|
||||
user.Activate();
|
||||
}
|
||||
|
||||
await userRepository.AddAsync(user);
|
||||
await userRepository.SaveChangesAsync();
|
||||
|
||||
return user.Adapt<UserViewModel>();
|
||||
}
|
||||
|
||||
public async Task<List<UserViewModel>> GetUsers()
|
||||
{
|
||||
var users =
|
||||
await userRepository.GetAllAsync();
|
||||
|
||||
return users.Adapt<List<UserViewModel>>();
|
||||
}
|
||||
|
||||
public async Task<UserViewModel> GetAsync(Guid userId)
|
||||
{
|
||||
var user =
|
||||
await userRepository.GetAsync(userId);
|
||||
|
||||
return user.Adapt<UserViewModel>();
|
||||
}
|
||||
|
||||
public async Task<UserViewModel> UpdateAsync(UpdateUserViewModel updateViewModel)
|
||||
{
|
||||
var userForUpdate =
|
||||
await userRepository.GetAsync(updateViewModel.Id);
|
||||
|
||||
if (userForUpdate == null || userForUpdate.Id == Guid.Empty)
|
||||
{
|
||||
var message =
|
||||
string.Format(Errors.NotFound, Resources.DataDictionary.User);
|
||||
|
||||
throw new Exception(message);
|
||||
}
|
||||
|
||||
userForUpdate.Update(
|
||||
username: updateViewModel.Username,
|
||||
password: updateViewModel.Password,
|
||||
mobile: updateViewModel.Mobile);
|
||||
|
||||
if (updateViewModel.IsActive == true)
|
||||
{
|
||||
userForUpdate.Activate();
|
||||
}
|
||||
else
|
||||
{
|
||||
userForUpdate.Deactivate();
|
||||
}
|
||||
|
||||
await userRepository.SaveChangesAsync();
|
||||
|
||||
return userForUpdate.Adapt<UserViewModel>();
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(Guid userId)
|
||||
{
|
||||
var userForUpdate =
|
||||
await userRepository.GetAsync(userId);
|
||||
|
||||
if (userForUpdate == null || userForUpdate.Id == Guid.Empty)
|
||||
{
|
||||
var message =
|
||||
string.Format(Errors.NotFound, Resources.DataDictionary.User);
|
||||
|
||||
throw new Exception(message);
|
||||
}
|
||||
|
||||
userRepository.Remove(userForUpdate);
|
||||
await userRepository.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
namespace Application.Aggregates.Users.ViewModels;
|
||||
|
||||
public class CreateUserViewModel
|
||||
{
|
||||
public CreateUserViewModel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
public string Mobile { get; set; }
|
||||
public bool IsActive { get; set; }
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
namespace Application.Aggregates.Users.ViewModels;
|
||||
|
||||
public class UpdateUserViewModel : CreateUserViewModel
|
||||
{
|
||||
public UpdateUserViewModel()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
namespace Application.Aggregates.Users.ViewModels;
|
||||
|
||||
public class UserViewModel : UpdateUserViewModel
|
||||
{
|
||||
public UserViewModel()
|
||||
{
|
||||
}
|
||||
}
|
||||
18
src/Core/Application/Application.csproj
Normal file
18
src/Core/Application/Application.csproj
Normal file
@ -0,0 +1,18 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Mapster" Version="7.4.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Persistence\Persistence\Persistence.csproj" />
|
||||
<ProjectReference Include="..\Domain\Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
6
src/Core/Constants/BaksetConstants.cs
Normal file
6
src/Core/Constants/BaksetConstants.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace Constants;
|
||||
|
||||
public class BasketConstants
|
||||
{
|
||||
public const string BASKET = "basketId";
|
||||
}
|
||||
48
src/Core/Constants/CommonRouting.cs
Normal file
48
src/Core/Constants/CommonRouting.cs
Normal file
@ -0,0 +1,48 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class CommonRouting
|
||||
{
|
||||
static CommonRouting()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Root Index
|
||||
/// </summary>
|
||||
public const string RootIndex = "/Index";
|
||||
|
||||
/// <summary>
|
||||
/// Current Index
|
||||
/// </summary>
|
||||
public const string CurrentIndex = "Index";
|
||||
|
||||
/// <summary>
|
||||
/// Error 400
|
||||
/// </summary>
|
||||
public const string BadRequest = "/Errors/Error400";
|
||||
|
||||
/// <summary>
|
||||
/// Error 403
|
||||
/// </summary>
|
||||
public const string Forbidden = "/Errors/Error403";
|
||||
|
||||
/// <summary>
|
||||
/// Error 404
|
||||
/// </summary>
|
||||
public const string NotFound = "/Errors/Error404";
|
||||
|
||||
/// <summary>
|
||||
/// Error 500
|
||||
/// </summary>
|
||||
public const string InternalServerError = "/Errors/Error500";
|
||||
|
||||
/// <summary>
|
||||
/// Login
|
||||
/// </summary>
|
||||
public const string Login = "/Account/Login";
|
||||
|
||||
/// <summary>
|
||||
/// Logout
|
||||
/// </summary>
|
||||
public const string Logout = "/Account/Logout";
|
||||
}
|
||||
9
src/Core/Constants/Constants.csproj
Normal file
9
src/Core/Constants/Constants.csproj
Normal file
@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
17
src/Core/Constants/FixedLength.cs
Normal file
17
src/Core/Constants/FixedLength.cs
Normal file
@ -0,0 +1,17 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class FixedLength
|
||||
{
|
||||
static FixedLength()
|
||||
{
|
||||
}
|
||||
|
||||
public const int NationalCode = 10;
|
||||
public const int CellPhoneNumberIran = 11;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// TODO
|
||||
/// </summary>
|
||||
public const int DatabasePassword = 44;
|
||||
}
|
||||
57
src/Core/Constants/Format.cs
Normal file
57
src/Core/Constants/Format.cs
Normal file
@ -0,0 +1,57 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class Format
|
||||
{
|
||||
static Format()
|
||||
{
|
||||
}
|
||||
|
||||
//public const string Integer = "#,##0";
|
||||
//public const string NullValue = "-----";
|
||||
|
||||
//public const string Time = "HH:mm:ss";
|
||||
//public const string Date = "yyyy/MM/dd";
|
||||
//public const string DateTime = "yyyy/MM/dd - HH:mm:ss";
|
||||
|
||||
public static string NullValue
|
||||
{
|
||||
get
|
||||
{
|
||||
//return null;
|
||||
//return string.Empty;
|
||||
return "-----";
|
||||
}
|
||||
}
|
||||
|
||||
public static string Integer
|
||||
{
|
||||
get
|
||||
{
|
||||
return "#,##0";
|
||||
}
|
||||
}
|
||||
|
||||
public static string Time
|
||||
{
|
||||
get
|
||||
{
|
||||
return "HH:mm:ss";
|
||||
}
|
||||
}
|
||||
|
||||
public static string Date
|
||||
{
|
||||
get
|
||||
{
|
||||
return "yyyy/MM/dd";
|
||||
}
|
||||
}
|
||||
|
||||
public static string DateTime
|
||||
{
|
||||
get
|
||||
{
|
||||
return $"{Date} - {Time}";
|
||||
}
|
||||
}
|
||||
}
|
||||
69
src/Core/Constants/JalaliCalendar.cs
Normal file
69
src/Core/Constants/JalaliCalendar.cs
Normal file
@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
|
||||
namespace JalaliCalendar
|
||||
{
|
||||
public static class Jalali
|
||||
{
|
||||
private static readonly PersianCalendar persiancalendar = new PersianCalendar();
|
||||
|
||||
public static string ToPersianDate(this DateTime date)
|
||||
{
|
||||
return $"{persiancalendar.GetYear(date)}/{persiancalendar.GetMonth(date):00}/{persiancalendar.GetDayOfMonth(date):00}";
|
||||
}
|
||||
|
||||
public static DateTime ToGregorianDate(string persianDate)
|
||||
{
|
||||
persianDate = ConvertToEnglishDigits(persianDate);
|
||||
|
||||
var parts = persianDate.Split('/');
|
||||
if (parts.Length != 3)
|
||||
throw new FormatException($"فرمت تاریخ اشتباه است. ورودی: {persianDate}. مثال صحیح: 1404/07/15");
|
||||
|
||||
if (!int.TryParse(parts[0], out int year) ||
|
||||
!int.TryParse(parts[1], out int month) ||
|
||||
!int.TryParse(parts[2], out int day))
|
||||
{
|
||||
throw new FormatException($"تاریخ نامعتبر: {persianDate}");
|
||||
}
|
||||
|
||||
return persiancalendar.ToDateTime(year, month, day, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
public static DateTime ToGregorianDate(DateTime persianDateTime)
|
||||
{
|
||||
var persianCalendar = new PersianCalendar();
|
||||
int year = persianCalendar.GetYear(persianDateTime);
|
||||
int month = persianCalendar.GetMonth(persianDateTime);
|
||||
int day = persianCalendar.GetDayOfMonth(persianDateTime);
|
||||
|
||||
return persianCalendar.ToDateTime(year, month, day,
|
||||
persianDateTime.Hour, persianDateTime.Minute, persianDateTime.Second, 0);
|
||||
}
|
||||
|
||||
private static string ConvertToEnglishDigits(string input)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input))
|
||||
return input;
|
||||
|
||||
var result = input;
|
||||
|
||||
char[] persianDigits = { '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹' };
|
||||
char[] englishDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
result = result.Replace(persianDigits[i], englishDigits[i]);
|
||||
}
|
||||
|
||||
char[] arabicDigits = { '٠', '١', '٢', '٣', '٤', '٥', '٦', '٧', '٨', '٩' };
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
result = result.Replace(arabicDigits[i], englishDigits[i]);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
21
src/Core/Constants/Logger.cs
Normal file
21
src/Core/Constants/Logger.cs
Normal file
@ -0,0 +1,21 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class Logger
|
||||
{
|
||||
static Logger()
|
||||
{
|
||||
}
|
||||
|
||||
public const string ErrorMessage = "Error Message: {Message}";
|
||||
|
||||
/// <summary>
|
||||
/// Note: Below Code Generates Some Warning!
|
||||
/// </summary>
|
||||
//public static string ErrorMessage
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return "Error Message: {Message}";
|
||||
// }
|
||||
//}
|
||||
}
|
||||
35
src/Core/Constants/MaxLength.cs
Normal file
35
src/Core/Constants/MaxLength.cs
Normal file
@ -0,0 +1,35 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class MaxLength
|
||||
{
|
||||
static MaxLength()
|
||||
{
|
||||
}
|
||||
|
||||
public const int IP = 15;
|
||||
|
||||
public const int Name = 100;
|
||||
public const int Title = 100;
|
||||
public const int Prefix = 100;
|
||||
|
||||
public const int NativeName = 50;
|
||||
public const int CultureName = 5;
|
||||
|
||||
public const int Link = 500;
|
||||
public const int Path = 200;
|
||||
|
||||
public const int Icon = 100;
|
||||
|
||||
public const int Username = 20;
|
||||
public const int Password = 20;
|
||||
public const int LastName = 50;
|
||||
public const int FirstName = 50;
|
||||
|
||||
public const int EmailAddress = 254;
|
||||
public const int CellPhoneNumber = 11;
|
||||
|
||||
public const int MetaTitle = 70;
|
||||
public const int MetaDescription = 155;
|
||||
|
||||
public const int CellPhoneNumberVerificationKey = 10;
|
||||
}
|
||||
10
src/Core/Constants/MaxValue.cs
Normal file
10
src/Core/Constants/MaxValue.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class MaxValue
|
||||
{
|
||||
static MaxValue()
|
||||
{
|
||||
}
|
||||
|
||||
public const int Ordering = 100_000;
|
||||
}
|
||||
11
src/Core/Constants/MinLength.cs
Normal file
11
src/Core/Constants/MinLength.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class MinLength
|
||||
{
|
||||
static MinLength()
|
||||
{
|
||||
}
|
||||
|
||||
public const int CellPhoneNumber = 13;
|
||||
public const int CellPhoneNumberVerificationKey = 6;
|
||||
}
|
||||
10
src/Core/Constants/MinValue.cs
Normal file
10
src/Core/Constants/MinValue.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class MinValue
|
||||
{
|
||||
static MinValue()
|
||||
{
|
||||
}
|
||||
|
||||
public const int Ordering = 1;
|
||||
}
|
||||
35
src/Core/Constants/RegularExpression.cs
Normal file
35
src/Core/Constants/RegularExpression.cs
Normal file
@ -0,0 +1,35 @@
|
||||
namespace Constants;
|
||||
|
||||
/// <summary>
|
||||
/// https://regex101.com/
|
||||
/// </summary>
|
||||
public static class RegularExpression
|
||||
{
|
||||
static RegularExpression()
|
||||
{
|
||||
}
|
||||
|
||||
public const string NationalCode = @"^\d{10}$";
|
||||
//public const string NationalCode = @"^\d{10,12}$";
|
||||
|
||||
public const string CellPhoneNumber = @"^09\d{9}$";
|
||||
//public const string CellPhoneNumber = @"^076\d{7}"; // برای سوئد
|
||||
|
||||
// 0046762122002 : 13
|
||||
// 00989121087461 : 14
|
||||
/*public const string CellPhoneNumber = @"^00\d{11,12}$";*/ // برای سایتهای چند ملیتی
|
||||
public const string PostalCode = @"^\d{10}$";
|
||||
public const string Username = @"^[a-zA-Z0-9_]{6,20}$";
|
||||
public const string Password = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&#])[A-Za-z\d@$!%*?&#]{8,}$";
|
||||
|
||||
public const string AToZDigitsUnderline = @"^[a-zA-Z][a-zA-Z0-9_]*$";
|
||||
|
||||
public const string EmailAddress =
|
||||
@"^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+$";
|
||||
|
||||
public const string IP =
|
||||
@"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
|
||||
|
||||
public const string Url =
|
||||
@"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)";
|
||||
}
|
||||
21
src/Core/Constants/Role.cs
Normal file
21
src/Core/Constants/Role.cs
Normal file
@ -0,0 +1,21 @@
|
||||
namespace Constants;
|
||||
|
||||
/// <summary>
|
||||
/// TODO: بعد از داینامیک کردن سیستم، باید حذف شود
|
||||
/// </summary>
|
||||
public static class Role
|
||||
{
|
||||
static Role()
|
||||
{
|
||||
}
|
||||
|
||||
public const string SimpleUser = nameof(SimpleUser);
|
||||
public const string SpecialUser = nameof(SpecialUser);
|
||||
|
||||
public const string Supervisor = nameof(Supervisor);
|
||||
|
||||
public const string Administrator = nameof(Administrator);
|
||||
public const string ApplicationOwner = nameof(ApplicationOwner);
|
||||
|
||||
public const string Programmer = nameof(Programmer);
|
||||
}
|
||||
22
src/Core/Constants/Storage.cs
Normal file
22
src/Core/Constants/Storage.cs
Normal file
@ -0,0 +1,22 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class Storage
|
||||
{
|
||||
static Storage()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public const string SliderPrefix = "SLD";
|
||||
public const string SliderPath = "SliderImages";
|
||||
|
||||
public const string ImagePrefix = "IMG";
|
||||
public const string ImagePath = "ImageViews";
|
||||
|
||||
public const string ProductImagePrefix = "IMG";
|
||||
public const string ProductImagesPath = "ProductImages";
|
||||
|
||||
public const string PosLogoPrefix = "IMG";
|
||||
public const string PosImagePath = "PosImages";
|
||||
|
||||
}
|
||||
25
src/Core/Constants/TagHelper.cs
Normal file
25
src/Core/Constants/TagHelper.cs
Normal file
@ -0,0 +1,25 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class TagHelper
|
||||
{
|
||||
static TagHelper()
|
||||
{
|
||||
}
|
||||
|
||||
public const string Prefix = "ub-";
|
||||
|
||||
public const string Label = Prefix + "simple-label";
|
||||
public const string Input = Prefix + "simple-input";
|
||||
public const string CheckBox = Prefix + "simple-checkbox";
|
||||
public const string TextArea = Prefix + "simple-textarea";
|
||||
|
||||
public const string FullInput = Prefix + "full-input";
|
||||
public const string FullSelect = Prefix + "full-select";
|
||||
public const string FullCheckBox = Prefix + "full-checkbox";
|
||||
public const string FullTextArea = Prefix + "full-textarea";
|
||||
public const string FullPasswordInput = Prefix + "full-password-input";
|
||||
|
||||
public const string ReadOnlyInput = Prefix + "readonly-input";
|
||||
public const string ReadOnlyCheckBox = Prefix + "readonly-checkbox";
|
||||
public const string ReadOnlyTextArea = Prefix + "readonly-textarea";
|
||||
}
|
||||
44
src/Core/Constants/ViewDataKeyName.cs
Normal file
44
src/Core/Constants/ViewDataKeyName.cs
Normal file
@ -0,0 +1,44 @@
|
||||
namespace Constants;
|
||||
|
||||
public static class ViewDataKeyName
|
||||
{
|
||||
static ViewDataKeyName()
|
||||
{
|
||||
}
|
||||
|
||||
//public const string PageTitle = "PageTitle";
|
||||
|
||||
//public static string PageTitle = "PageTitle";
|
||||
|
||||
public static string PageTitle
|
||||
{
|
||||
get
|
||||
{
|
||||
return "PageTitle";
|
||||
}
|
||||
}
|
||||
|
||||
public static string PageAuthor
|
||||
{
|
||||
get
|
||||
{
|
||||
return "PageAuthor";
|
||||
}
|
||||
}
|
||||
|
||||
public static string PageImageUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
return "PageImageUrl";
|
||||
}
|
||||
}
|
||||
|
||||
public static string PageDescription
|
||||
{
|
||||
get
|
||||
{
|
||||
return "PageDescription";
|
||||
}
|
||||
}
|
||||
}
|
||||
10
src/Core/Domain/Aggregates/Users/Data/IUserRepository.cs
Normal file
10
src/Core/Domain/Aggregates/Users/Data/IUserRepository.cs
Normal file
@ -0,0 +1,10 @@
|
||||
namespace Domain.Aggregates.Users.Data;
|
||||
|
||||
public interface IUserRepository
|
||||
{
|
||||
Task AddAsync(User user);
|
||||
Task<List<User>> GetAllAsync();
|
||||
Task<User?> GetAsync(Guid userId);
|
||||
void Remove(User user);
|
||||
Task SaveChangesAsync();
|
||||
}
|
||||
60
src/Core/Domain/Aggregates/Users/User.cs
Normal file
60
src/Core/Domain/Aggregates/Users/User.cs
Normal file
@ -0,0 +1,60 @@
|
||||
using Domain.SeedWork;
|
||||
using Framework.DataType;
|
||||
using Resources.Messages;
|
||||
|
||||
namespace Domain.Aggregates.Users;
|
||||
|
||||
public class User : Entity
|
||||
{
|
||||
public User()
|
||||
{
|
||||
// FOR EF!
|
||||
}
|
||||
|
||||
private User(string username, string password, string mobile)
|
||||
{
|
||||
Username = username;
|
||||
Password = password;
|
||||
Mobile = mobile;
|
||||
}
|
||||
|
||||
|
||||
public string Username { get; private set; }
|
||||
public string Password { get; private set; }
|
||||
public string Mobile { get; private set; }
|
||||
|
||||
public static User Create(string username, string password, string mobile)
|
||||
{
|
||||
if (!mobile.IsValidMobile())
|
||||
{
|
||||
var message =
|
||||
string.Format(Errors.Invalid, Resources.DataDictionary.CellPhonenumber);
|
||||
|
||||
throw new InvalidDataException(message);
|
||||
}
|
||||
|
||||
var user = new User(
|
||||
username: username.Fix() ?? "",
|
||||
password: password.Fix() ?? "",
|
||||
mobile: mobile);
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public void Update(string username, string password, string mobile)
|
||||
{
|
||||
if (!mobile.IsValidMobile())
|
||||
{
|
||||
var message =
|
||||
string.Format(Errors.Invalid, Resources.DataDictionary.CellPhonenumber);
|
||||
|
||||
throw new InvalidDataException(message);
|
||||
}
|
||||
|
||||
Username = username.Fix() ?? "";
|
||||
Password = password.Fix() ?? "";
|
||||
Mobile = mobile;
|
||||
|
||||
SetUpdateDateTime();
|
||||
}
|
||||
}
|
||||
14
src/Core/Domain/Domain.csproj
Normal file
14
src/Core/Domain/Domain.csproj
Normal file
@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Framework\Framework.DataType\Framework.DataType.csproj" />
|
||||
<ProjectReference Include="..\Resources\Resources.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
59
src/Core/Domain/SeedWork/Entity.cs
Normal file
59
src/Core/Domain/SeedWork/Entity.cs
Normal file
@ -0,0 +1,59 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace Domain.SeedWork;
|
||||
|
||||
public class Entity
|
||||
{
|
||||
public Entity()
|
||||
{
|
||||
Id = Guid.CreateVersion7();
|
||||
|
||||
SetInsertDateTime();
|
||||
}
|
||||
|
||||
[DatabaseGenerated
|
||||
(DatabaseGeneratedOption.None)]
|
||||
public Guid Id { get; protected set; }
|
||||
|
||||
public long InsertDateTime { get; protected set; }
|
||||
public long UpdateDateTime { get; protected set; }
|
||||
public long? DeleteDateTime { get; protected set; }
|
||||
|
||||
public bool IsActive { get; protected set; }
|
||||
public bool IsDeleted { get; protected set; }
|
||||
|
||||
|
||||
public void SetInsertDateTime()
|
||||
{
|
||||
InsertDateTime =
|
||||
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||
}
|
||||
|
||||
public void SetUpdateDateTime()
|
||||
{
|
||||
UpdateDateTime =
|
||||
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||
}
|
||||
|
||||
public void SetDeleteDateTime()
|
||||
{
|
||||
DeleteDateTime =
|
||||
DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||
}
|
||||
|
||||
public void Activate()
|
||||
{
|
||||
IsActive = true;
|
||||
}
|
||||
|
||||
public void Deactivate()
|
||||
{
|
||||
IsActive = false;
|
||||
}
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
IsDeleted = true;
|
||||
SetDeleteDateTime();
|
||||
}
|
||||
}
|
||||
369
src/Core/Resources/ButtonCaptions.Designer.cs
generated
Normal file
369
src/Core/Resources/ButtonCaptions.Designer.cs
generated
Normal file
@ -0,0 +1,369 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Resources {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class ButtonCaptions {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal ButtonCaptions() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.ButtonCaptions", typeof(ButtonCaptions).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Actions.
|
||||
/// </summary>
|
||||
public static string Actions {
|
||||
get {
|
||||
return ResourceManager.GetString("Actions", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to addressmanagement.
|
||||
/// </summary>
|
||||
public static string AddressManagement {
|
||||
get {
|
||||
return ResourceManager.GetString("AddressManagement", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Back.
|
||||
/// </summary>
|
||||
public static string Back {
|
||||
get {
|
||||
return ResourceManager.GetString("Back", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Back to List.
|
||||
/// </summary>
|
||||
public static string BackToList {
|
||||
get {
|
||||
return ResourceManager.GetString("BackToList", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Cancel.
|
||||
/// </summary>
|
||||
public static string Cancel {
|
||||
get {
|
||||
return ResourceManager.GetString("Cancel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Confirm Delete.
|
||||
/// </summary>
|
||||
public static string ConfirmDelete {
|
||||
get {
|
||||
return ResourceManager.GetString("ConfirmDelete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Create.
|
||||
/// </summary>
|
||||
public static string Create {
|
||||
get {
|
||||
return ResourceManager.GetString("Create", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Create new {0}.
|
||||
/// </summary>
|
||||
public static string CreateNew {
|
||||
get {
|
||||
return ResourceManager.GetString("CreateNew", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete.
|
||||
/// </summary>
|
||||
public static string Delete {
|
||||
get {
|
||||
return ResourceManager.GetString("Delete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Details.
|
||||
/// </summary>
|
||||
public static string Details {
|
||||
get {
|
||||
return ResourceManager.GetString("Details", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Edit.
|
||||
/// </summary>
|
||||
public static string Edit {
|
||||
get {
|
||||
return ResourceManager.GetString("Edit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Export Excel.
|
||||
/// </summary>
|
||||
public static string ExportExcel {
|
||||
get {
|
||||
return ResourceManager.GetString("ExportExcel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Forgot Password.
|
||||
/// </summary>
|
||||
public static string ForgotPassword {
|
||||
get {
|
||||
return ResourceManager.GetString("ForgotPassword", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Fotgot Username.
|
||||
/// </summary>
|
||||
public static string ForgotUsername {
|
||||
get {
|
||||
return ResourceManager.GetString("ForgotUsername", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Home.
|
||||
/// </summary>
|
||||
public static string Home {
|
||||
get {
|
||||
return ResourceManager.GetString("Home", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to List of.
|
||||
/// </summary>
|
||||
public static string ListOf {
|
||||
get {
|
||||
return ResourceManager.GetString("ListOf", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Login.
|
||||
/// </summary>
|
||||
public static string Login {
|
||||
get {
|
||||
return ResourceManager.GetString("Login", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Login with Google.
|
||||
/// </summary>
|
||||
public static string LoginWithGoogle {
|
||||
get {
|
||||
return ResourceManager.GetString("LoginWithGoogle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Manage of.
|
||||
/// </summary>
|
||||
public static string ManageOf {
|
||||
get {
|
||||
return ResourceManager.GetString("ManageOf", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to More.
|
||||
/// </summary>
|
||||
public static string More {
|
||||
get {
|
||||
return ResourceManager.GetString("More", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Next.
|
||||
/// </summary>
|
||||
public static string Next {
|
||||
get {
|
||||
return ResourceManager.GetString("Next", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No.
|
||||
/// </summary>
|
||||
public static string No {
|
||||
get {
|
||||
return ResourceManager.GetString("No", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OK.
|
||||
/// </summary>
|
||||
public static string OK {
|
||||
get {
|
||||
return ResourceManager.GetString("OK", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OR.
|
||||
/// </summary>
|
||||
public static string OR {
|
||||
get {
|
||||
return ResourceManager.GetString("OR", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Previous.
|
||||
/// </summary>
|
||||
public static string Previous {
|
||||
get {
|
||||
return ResourceManager.GetString("Previous", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Refresh.
|
||||
/// </summary>
|
||||
public static string Refresh {
|
||||
get {
|
||||
return ResourceManager.GetString("Refresh", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Register.
|
||||
/// </summary>
|
||||
public static string Register {
|
||||
get {
|
||||
return ResourceManager.GetString("Register", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Register rating and comment.
|
||||
/// </summary>
|
||||
public static string RegisterRatingAndComment {
|
||||
get {
|
||||
return ResourceManager.GetString("RegisterRatingAndComment", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Reset.
|
||||
/// </summary>
|
||||
public static string Reset {
|
||||
get {
|
||||
return ResourceManager.GetString("Reset", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Save.
|
||||
/// </summary>
|
||||
public static string Save {
|
||||
get {
|
||||
return ResourceManager.GetString("Save", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Send.
|
||||
/// </summary>
|
||||
public static string Send {
|
||||
get {
|
||||
return ResourceManager.GetString("Send", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Send Again Email Address Verification Key.
|
||||
/// </summary>
|
||||
public static string SendAgainEmailAddressVerificationKey {
|
||||
get {
|
||||
return ResourceManager.GetString("SendAgainEmailAddressVerificationKey", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Update.
|
||||
/// </summary>
|
||||
public static string Update {
|
||||
get {
|
||||
return ResourceManager.GetString("Update", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Update of.
|
||||
/// </summary>
|
||||
public static string UpdateOf {
|
||||
get {
|
||||
return ResourceManager.GetString("UpdateOf", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
222
src/Core/Resources/ButtonCaptions.fa-IR.resx
Normal file
222
src/Core/Resources/ButtonCaptions.fa-IR.resx
Normal file
@ -0,0 +1,222 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>عملیات</value>
|
||||
</data>
|
||||
<data name="Back" xml:space="preserve">
|
||||
<value>بازگشت</value>
|
||||
</data>
|
||||
<data name="BackToList" xml:space="preserve">
|
||||
<value>بازگشت به فهرست</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>منصرف شدم</value>
|
||||
</data>
|
||||
<data name="ConfirmDelete" xml:space="preserve">
|
||||
<value>تایید حذف</value>
|
||||
</data>
|
||||
<data name="Create" xml:space="preserve">
|
||||
<value>ایجاد</value>
|
||||
</data>
|
||||
<data name="CreateNew" xml:space="preserve">
|
||||
<value>ایجاد {0} جدید</value>
|
||||
</data>
|
||||
<data name="Delete" xml:space="preserve">
|
||||
<value>حذف</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>جزئیات</value>
|
||||
</data>
|
||||
<data name="Edit" xml:space="preserve">
|
||||
<value>ویرایش</value>
|
||||
</data>
|
||||
<data name="ExportExcel" xml:space="preserve">
|
||||
<value>خروجی اکسل</value>
|
||||
</data>
|
||||
<data name="ForgotPassword" xml:space="preserve">
|
||||
<value>فراموشی گذرواژه</value>
|
||||
</data>
|
||||
<data name="ForgotUsername" xml:space="preserve">
|
||||
<value>فراموشی شناسهکاربری</value>
|
||||
</data>
|
||||
<data name="Home" xml:space="preserve">
|
||||
<value>خانه</value>
|
||||
</data>
|
||||
<data name="ListOf" xml:space="preserve">
|
||||
<value>فهرست</value>
|
||||
</data>
|
||||
<data name="Login" xml:space="preserve">
|
||||
<value>ورود</value>
|
||||
</data>
|
||||
<data name="LoginWithGoogle" xml:space="preserve">
|
||||
<value>ورود از طریق گوگل</value>
|
||||
</data>
|
||||
<data name="ManageOf" xml:space="preserve">
|
||||
<value>مدیریت</value>
|
||||
</data>
|
||||
<data name="More" xml:space="preserve">
|
||||
<value>بیشتر</value>
|
||||
</data>
|
||||
<data name="Next" xml:space="preserve">
|
||||
<value>بعدی</value>
|
||||
</data>
|
||||
<data name="No" xml:space="preserve">
|
||||
<value>خیر</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>تایید</value>
|
||||
</data>
|
||||
<data name="OR" xml:space="preserve">
|
||||
<value>یا</value>
|
||||
</data>
|
||||
<data name="Previous" xml:space="preserve">
|
||||
<value>قبلی</value>
|
||||
</data>
|
||||
<data name="Refresh" xml:space="preserve">
|
||||
<value>بازیابی</value>
|
||||
</data>
|
||||
<data name="Register" xml:space="preserve">
|
||||
<value>ثبتنام</value>
|
||||
</data>
|
||||
<data name="Reset" xml:space="preserve">
|
||||
<value>حالت اولیه</value>
|
||||
</data>
|
||||
<data name="Save" xml:space="preserve">
|
||||
<value>ذخیره</value>
|
||||
</data>
|
||||
<data name="Send" xml:space="preserve">
|
||||
<value>ارسال</value>
|
||||
</data>
|
||||
<data name="SendAgainEmailAddressVerificationKey" xml:space="preserve">
|
||||
<value>ارسال مجدد کد تایید نشانی پست الکترونیکی</value>
|
||||
</data>
|
||||
<data name="Update" xml:space="preserve">
|
||||
<value>ویرایش</value>
|
||||
</data>
|
||||
<data name="UpdateOf" xml:space="preserve">
|
||||
<value>ویرایش</value>
|
||||
</data>
|
||||
<data name="AddressManagement" xml:space="preserve">
|
||||
<value>مدیریت آدرس ها</value>
|
||||
</data>
|
||||
<data name="RegisterRatingAndComment" xml:space="preserve">
|
||||
<value>ثبت امتیاز و دیدگاه</value>
|
||||
</data>
|
||||
</root>
|
||||
222
src/Core/Resources/ButtonCaptions.resx
Normal file
222
src/Core/Resources/ButtonCaptions.resx
Normal file
@ -0,0 +1,222 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>Actions</value>
|
||||
</data>
|
||||
<data name="Back" xml:space="preserve">
|
||||
<value>Back</value>
|
||||
</data>
|
||||
<data name="BackToList" xml:space="preserve">
|
||||
<value>Back to List</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="ConfirmDelete" xml:space="preserve">
|
||||
<value>Confirm Delete</value>
|
||||
</data>
|
||||
<data name="Create" xml:space="preserve">
|
||||
<value>Create</value>
|
||||
</data>
|
||||
<data name="CreateNew" xml:space="preserve">
|
||||
<value>Create new {0}</value>
|
||||
</data>
|
||||
<data name="Delete" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="Details" xml:space="preserve">
|
||||
<value>Details</value>
|
||||
</data>
|
||||
<data name="Edit" xml:space="preserve">
|
||||
<value>Edit</value>
|
||||
</data>
|
||||
<data name="ExportExcel" xml:space="preserve">
|
||||
<value>Export Excel</value>
|
||||
</data>
|
||||
<data name="ForgotPassword" xml:space="preserve">
|
||||
<value>Forgot Password</value>
|
||||
</data>
|
||||
<data name="ForgotUsername" xml:space="preserve">
|
||||
<value>Fotgot Username</value>
|
||||
</data>
|
||||
<data name="Home" xml:space="preserve">
|
||||
<value>Home</value>
|
||||
</data>
|
||||
<data name="ListOf" xml:space="preserve">
|
||||
<value>List of</value>
|
||||
</data>
|
||||
<data name="Login" xml:space="preserve">
|
||||
<value>Login</value>
|
||||
</data>
|
||||
<data name="LoginWithGoogle" xml:space="preserve">
|
||||
<value>Login with Google</value>
|
||||
</data>
|
||||
<data name="ManageOf" xml:space="preserve">
|
||||
<value>Manage of</value>
|
||||
</data>
|
||||
<data name="More" xml:space="preserve">
|
||||
<value>More</value>
|
||||
</data>
|
||||
<data name="Next" xml:space="preserve">
|
||||
<value>Next</value>
|
||||
</data>
|
||||
<data name="No" xml:space="preserve">
|
||||
<value>No</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="OR" xml:space="preserve">
|
||||
<value>OR</value>
|
||||
</data>
|
||||
<data name="Previous" xml:space="preserve">
|
||||
<value>Previous</value>
|
||||
</data>
|
||||
<data name="Refresh" xml:space="preserve">
|
||||
<value>Refresh</value>
|
||||
</data>
|
||||
<data name="Register" xml:space="preserve">
|
||||
<value>Register</value>
|
||||
</data>
|
||||
<data name="Reset" xml:space="preserve">
|
||||
<value>Reset</value>
|
||||
</data>
|
||||
<data name="Save" xml:space="preserve">
|
||||
<value>Save</value>
|
||||
</data>
|
||||
<data name="Send" xml:space="preserve">
|
||||
<value>Send</value>
|
||||
</data>
|
||||
<data name="SendAgainEmailAddressVerificationKey" xml:space="preserve">
|
||||
<value>Send Again Email Address Verification Key</value>
|
||||
</data>
|
||||
<data name="Update" xml:space="preserve">
|
||||
<value>Update</value>
|
||||
</data>
|
||||
<data name="UpdateOf" xml:space="preserve">
|
||||
<value>Update of</value>
|
||||
</data>
|
||||
<data name="AddressManagement" xml:space="preserve">
|
||||
<value>addressmanagement</value>
|
||||
</data>
|
||||
<data name="RegisterRatingAndComment" xml:space="preserve">
|
||||
<value>Register rating and comment</value>
|
||||
</data>
|
||||
</root>
|
||||
1548
src/Core/Resources/DataDictionary.Designer.cs
generated
Normal file
1548
src/Core/Resources/DataDictionary.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
615
src/Core/Resources/DataDictionary.fa-IR.resx
Normal file
615
src/Core/Resources/DataDictionary.fa-IR.resx
Normal file
@ -0,0 +1,615 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ActivePriceListId" xml:space="preserve">
|
||||
<value>شناسه لیست قیمت فعال</value>
|
||||
</data>
|
||||
<data name="BaseUnit" xml:space="preserve">
|
||||
<value>واحد اصلی</value>
|
||||
</data>
|
||||
<data name="BasicInformation" xml:space="preserve">
|
||||
<value>اطلاعات پایه</value>
|
||||
</data>
|
||||
<data name="CategoryId" xml:space="preserve">
|
||||
<value>شناسه دستهبندی</value>
|
||||
</data>
|
||||
<data name="CellPhonenumber" xml:space="preserve">
|
||||
<value>شماره همراه</value>
|
||||
</data>
|
||||
<data name="CreateOf" xml:space="preserve">
|
||||
<value>ایجاد</value>
|
||||
</data>
|
||||
<data name="DeleteOf" xml:space="preserve">
|
||||
<value>حذف </value>
|
||||
</data>
|
||||
<data name="DownloadUrl" xml:space="preserve">
|
||||
<value>لینک دانلود</value>
|
||||
</data>
|
||||
<data name="FullDescription" xml:space="preserve">
|
||||
<value>توضیحات</value>
|
||||
</data>
|
||||
<data name="Id" xml:space="preserve">
|
||||
<value>شناسه</value>
|
||||
</data>
|
||||
<data name="IsPinned" xml:space="preserve">
|
||||
<value>سنجاق شده</value>
|
||||
</data>
|
||||
<data name="Name" xml:space="preserve">
|
||||
<value>نام</value>
|
||||
</data>
|
||||
<data name="Order" xml:space="preserve">
|
||||
<value>تراز</value>
|
||||
</data>
|
||||
<data name="Parent" xml:space="preserve">
|
||||
<value>والد</value>
|
||||
</data>
|
||||
<data name="Price" xml:space="preserve">
|
||||
<value>قیمت</value>
|
||||
</data>
|
||||
<data name="Product" xml:space="preserve">
|
||||
<value>کالا</value>
|
||||
</data>
|
||||
<data name="Features" xml:space="preserve">
|
||||
<value>ویژگیها</value>
|
||||
</data>
|
||||
<data name="ProductId" xml:space="preserve">
|
||||
<value>شناسه کالا</value>
|
||||
</data>
|
||||
<data name="Products" xml:space="preserve">
|
||||
<value>کالا ها</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>نوع محصول</value>
|
||||
</data>
|
||||
<data name="ShortDescription" xml:space="preserve">
|
||||
<value>خلاصه توضیحات</value>
|
||||
</data>
|
||||
<data name="SKU" xml:space="preserve">
|
||||
<value>کد کالا</value>
|
||||
</data>
|
||||
<data name="StoreId" xml:space="preserve">
|
||||
<value>شناسه فروشگاه</value>
|
||||
</data>
|
||||
<data name="Title" xml:space="preserve">
|
||||
<value>عنوان</value>
|
||||
</data>
|
||||
<data name="Unit" xml:space="preserve">
|
||||
<value>واحد</value>
|
||||
</data>
|
||||
<data name="UnitId" xml:space="preserve">
|
||||
<value>شناسه واحد</value>
|
||||
</data>
|
||||
<data name="UnitRatio" xml:space="preserve">
|
||||
<value>ضریب واحد</value>
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value>واحد ها</value>
|
||||
</data>
|
||||
<data name="UpdateOf" xml:space="preserve">
|
||||
<value>ویرایش </value>
|
||||
</data>
|
||||
<data name="Value" xml:space="preserve">
|
||||
<value>مقدار</value>
|
||||
</data>
|
||||
<data name="ProductFeatures" xml:space="preserve">
|
||||
<value>ویژگی های محصول</value>
|
||||
</data>
|
||||
<data name="ProductFeature" xml:space="preserve">
|
||||
<value>ویژگی محصول</value>
|
||||
</data>
|
||||
<data name="FeaturesOf" xml:space="preserve">
|
||||
<value>ویژگی های</value>
|
||||
</data>
|
||||
<data name="Family" xml:space="preserve">
|
||||
<value>نام خانوادگی</value>
|
||||
</data>
|
||||
<data name="NationalCode" xml:space="preserve">
|
||||
<value>کد ملی</value>
|
||||
</data>
|
||||
<data name="Mobile" xml:space="preserve">
|
||||
<value>شماره همراه</value>
|
||||
</data>
|
||||
<data name="Email" xml:space="preserve">
|
||||
<value>ایمیل</value>
|
||||
</data>
|
||||
<data name="Password" xml:space="preserve">
|
||||
<value>رمز عبور</value>
|
||||
</data>
|
||||
<data name="Customers" xml:space="preserve">
|
||||
<value>مشتری ها</value>
|
||||
</data>
|
||||
<data name="CustomersInformation" xml:space="preserve">
|
||||
<value>اطلاعات مشتری ها</value>
|
||||
</data>
|
||||
<data name="ConfirmPassword" xml:space="preserve">
|
||||
<value>تایید رمز</value>
|
||||
</data>
|
||||
<data name="Province" xml:space="preserve">
|
||||
<value>استان</value>
|
||||
</data>
|
||||
<data name="City" xml:space="preserve">
|
||||
<value>شهر</value>
|
||||
</data>
|
||||
<data name="Address" xml:space="preserve">
|
||||
<value>آدرس</value>
|
||||
</data>
|
||||
<data name="PostalCode" xml:space="preserve">
|
||||
<value>کد پستی</value>
|
||||
</data>
|
||||
<data name="Shippingaddress" xml:space="preserve">
|
||||
<value>آدرس حمل و نقل</value>
|
||||
</data>
|
||||
<data name="AddressInformation" xml:space="preserve">
|
||||
<value>اطلاعات آدرس ها</value>
|
||||
</data>
|
||||
<data name="AddressManagement" xml:space="preserve">
|
||||
<value>مدیریت آدرس ها</value>
|
||||
</data>
|
||||
<data name="IconClass" xml:space="preserve">
|
||||
<value>کلاس آیکون</value>
|
||||
</data>
|
||||
<data name="SubCategories" xml:space="preserve">
|
||||
<value>زیر دستهبندی ها</value>
|
||||
</data>
|
||||
<data name="Categories" xml:space="preserve">
|
||||
<value>دستهبندی ها</value>
|
||||
</data>
|
||||
<data name="Category" xml:space="preserve">
|
||||
<value>دستهبندی</value>
|
||||
</data>
|
||||
<data name="SubCategoriesOf" xml:space="preserve">
|
||||
<value>زیر دستهبندی های</value>
|
||||
</data>
|
||||
<data name="SubCategoriesCount" xml:space="preserve">
|
||||
<value>تعداد زیر دستهبندی ها</value>
|
||||
</data>
|
||||
<data name="AdminPanel" xml:space="preserve">
|
||||
<value>پنل مدیریت</value>
|
||||
</data>
|
||||
<data name="POS" xml:space="preserve">
|
||||
<value>فروشگاهی</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>لوگو</value>
|
||||
</data>
|
||||
<data name="IsActive" xml:space="preserve">
|
||||
<value>فعال</value>
|
||||
</data>
|
||||
<data name="Store" xml:space="preserve">
|
||||
<value>فروشگاه</value>
|
||||
</data>
|
||||
<data name="culture" xml:space="preserve">
|
||||
<value>زبان</value>
|
||||
</data>
|
||||
<data name="Stores" xml:space="preserve">
|
||||
<value>فروشگاه ها</value>
|
||||
</data>
|
||||
<data name="Dashboard" xml:space="preserve">
|
||||
<value>داشبورد</value>
|
||||
</data>
|
||||
<data name="Picture" xml:space="preserve">
|
||||
<value>تصویر</value>
|
||||
</data>
|
||||
<data name="ProductImage" xml:space="preserve">
|
||||
<value>عکس کالا</value>
|
||||
</data>
|
||||
<data name="Pictures" xml:space="preserve">
|
||||
<value>عکس ها</value>
|
||||
</data>
|
||||
<data name="PicturesOf" xml:space="preserve">
|
||||
<value>عکس های</value>
|
||||
</data>
|
||||
<data name="PriceLists" xml:space="preserve">
|
||||
<value>لیست قیمت ها</value>
|
||||
</data>
|
||||
<data name="PriceListsOf" xml:space="preserve">
|
||||
<value>لیست قیمت های</value>
|
||||
</data>
|
||||
<data name="Users" xml:space="preserve">
|
||||
<value>کاربرها</value>
|
||||
</data>
|
||||
<data name="Sellers" xml:space="preserve">
|
||||
<value>فروشنده ها</value>
|
||||
</data>
|
||||
<data name="User" xml:space="preserve">
|
||||
<value>کاربر</value>
|
||||
</data>
|
||||
<data name="UserName" xml:space="preserve">
|
||||
<value>نام کاربری</value>
|
||||
</data>
|
||||
<data name="EmailOrMobile" xml:space="preserve">
|
||||
<value>ایمیل یا شماره همراه</value>
|
||||
</data>
|
||||
<data name="LogIn" xml:space="preserve">
|
||||
<value>ورود</value>
|
||||
</data>
|
||||
<data name="Register" xml:space="preserve">
|
||||
<value>ثبت نام</value>
|
||||
</data>
|
||||
<data name="Role" xml:space="preserve">
|
||||
<value>نقش</value>
|
||||
</data>
|
||||
<data name="Customer" xml:space="preserve">
|
||||
<value>مشتری</value>
|
||||
</data>
|
||||
<data name="Branch" xml:space="preserve">
|
||||
<value>شعبه</value>
|
||||
</data>
|
||||
<data name="Branches" xml:space="preserve">
|
||||
<value>شعبه ها</value>
|
||||
</data>
|
||||
<data name="NothingFound" xml:space="preserve">
|
||||
<value>هیج موردی پیدا نشد...</value>
|
||||
</data>
|
||||
<data name="Searching" xml:space="preserve">
|
||||
<value>در حال جستجو...</value>
|
||||
</data>
|
||||
<data name="ProductSearch" xml:space="preserve">
|
||||
<value>جستجو در کالا ها</value>
|
||||
</data>
|
||||
<data name="CustomerSearch" xml:space="preserve">
|
||||
<value>جستجوی مشتری...</value>
|
||||
</data>
|
||||
<data name="CustomerInformation" xml:space="preserve">
|
||||
<value>اطلاعات مشتری</value>
|
||||
</data>
|
||||
<data name="CheckoutCounters" xml:space="preserve">
|
||||
<value>صندوقدار ها</value>
|
||||
</data>
|
||||
<data name="Discount" xml:space="preserve">
|
||||
<value>تخفیف</value>
|
||||
</data>
|
||||
<data name="DiscountCode" xml:space="preserve">
|
||||
<value>کد تخفیف</value>
|
||||
</data>
|
||||
<data name="InsertDateTime" xml:space="preserve">
|
||||
<value>زمان درج</value>
|
||||
</data>
|
||||
<data name="InsertedBy" xml:space="preserve">
|
||||
<value>ایجاد شده توسط</value>
|
||||
</data>
|
||||
<data name="OwnerId" xml:space="preserve">
|
||||
<value>کد مالک</value>
|
||||
</data>
|
||||
<data name="UpdateDateTime" xml:space="preserve">
|
||||
<value>زمان ویرایش</value>
|
||||
</data>
|
||||
<data name="UpdatedBy" xml:space="preserve">
|
||||
<value>ویرایش شده توسط</value>
|
||||
</data>
|
||||
<data name="DiscountCodes" xml:space="preserve">
|
||||
<value>کد های تخفیف</value>
|
||||
</data>
|
||||
<data name="Slug" xml:space="preserve">
|
||||
<value>Slug</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<value>تنظیمات</value>
|
||||
</data>
|
||||
<data name="SiteSetting" xml:space="preserve">
|
||||
<value>تنظیمات سایت</value>
|
||||
</data>
|
||||
<data name="Catalog" xml:space="preserve">
|
||||
<value>کاتالوگ</value>
|
||||
</data>
|
||||
<data name="Basket" xml:space="preserve">
|
||||
<value>سبد خرید</value>
|
||||
</data>
|
||||
<data name="Amount" xml:space="preserve">
|
||||
<value>هزینه</value>
|
||||
</data>
|
||||
<data name="DiscountType" xml:space="preserve">
|
||||
<value>نوع تخفیف</value>
|
||||
</data>
|
||||
<data name="End" xml:space="preserve">
|
||||
<value>پایان</value>
|
||||
</data>
|
||||
<data name="Maximum" xml:space="preserve">
|
||||
<value>حداکثر</value>
|
||||
</data>
|
||||
<data name="Minimum" xml:space="preserve">
|
||||
<value>حداقل</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>شروع</value>
|
||||
</data>
|
||||
<data name="Type" xml:space="preserve">
|
||||
<value>نوع</value>
|
||||
</data>
|
||||
<data name="DiscountFixed" xml:space="preserve">
|
||||
<value>تخفیف مبلغی</value>
|
||||
</data>
|
||||
<data name="DiscountPercentage" xml:space="preserve">
|
||||
<value>تخفیف درصدی</value>
|
||||
</data>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>عملیات</value>
|
||||
</data>
|
||||
<data name="PriceList" xml:space="preserve">
|
||||
<value>لیست قیمت</value>
|
||||
</data>
|
||||
<data name="Addto" xml:space="preserve">
|
||||
<value>افزودن به</value>
|
||||
</data>
|
||||
<data name="OtpCode" xml:space="preserve">
|
||||
<value>کد</value>
|
||||
</data>
|
||||
<data name="Quantity" xml:space="preserve">
|
||||
<value>تعداد</value>
|
||||
</data>
|
||||
<data name="UnitPrice" xml:space="preserve">
|
||||
<value>قیمت واحد</value>
|
||||
</data>
|
||||
<data name="TotalPrice" xml:space="preserve">
|
||||
<value>قیمت کل</value>
|
||||
</data>
|
||||
<data name="SubTotal" xml:space="preserve">
|
||||
<value>جمع کل</value>
|
||||
</data>
|
||||
<data name="TotalDiscount" xml:space="preserve">
|
||||
<value>تخفیف کل</value>
|
||||
</data>
|
||||
<data name="FinalPrice" xml:space="preserve">
|
||||
<value>قیمت نهایی</value>
|
||||
</data>
|
||||
<data name="Text" xml:space="preserve">
|
||||
<value>متن</value>
|
||||
</data>
|
||||
<data name="Comment" xml:space="preserve">
|
||||
<value>نظرات</value>
|
||||
</data>
|
||||
<data name="FullName" xml:space="preserve">
|
||||
<value>نام و نام خانوادگی</value>
|
||||
</data>
|
||||
<data name="NotRegistered" xml:space="preserve">
|
||||
<value>ثبت نشده</value>
|
||||
</data>
|
||||
<data name="FirstName" xml:space="preserve">
|
||||
<value>نام</value>
|
||||
</data>
|
||||
<data name="LastName" xml:space="preserve">
|
||||
<value>نام خانوادگی</value>
|
||||
</data>
|
||||
<data name="MyAddress" xml:space="preserve">
|
||||
<value>آدرس های من</value>
|
||||
</data>
|
||||
<data name="LogoutOfAccount" xml:space="preserve">
|
||||
<value>خروج از حساب کاربری</value>
|
||||
</data>
|
||||
<data name="AccountInformation" xml:space="preserve">
|
||||
<value>اطلاعات حساب کاربری</value>
|
||||
</data>
|
||||
<data name="Attribute" xml:space="preserve">
|
||||
<value>ویژگی</value>
|
||||
</data>
|
||||
<data name="AttributeValue" xml:space="preserve">
|
||||
<value>سایر ویژگی ها</value>
|
||||
</data>
|
||||
<data name="PriceAdjustment" xml:space="preserve">
|
||||
<value>تنظیم قیمت</value>
|
||||
</data>
|
||||
<data name="WeightAdjustment" xml:space="preserve">
|
||||
<value>تنظیم وزن</value>
|
||||
</data>
|
||||
<data name="IsPreSelected" xml:space="preserve">
|
||||
<value>تنظیم پیش فرض</value>
|
||||
</data>
|
||||
<data name="HomeView" xml:space="preserve">
|
||||
<value>آلبوم</value>
|
||||
</data>
|
||||
<data name="HomeViews" xml:space="preserve">
|
||||
<value>آلبوم ها</value>
|
||||
</data>
|
||||
<data name="ProductView" xml:space="preserve">
|
||||
<value>آلبوم کالا</value>
|
||||
</data>
|
||||
<data name="ImageView" xml:space="preserve">
|
||||
<value>آلبوم عکس</value>
|
||||
</data>
|
||||
<data name="Interval" xml:space="preserve">
|
||||
<value>فاصله زمانی</value>
|
||||
</data>
|
||||
<data name="NavigationUrl" xml:space="preserve">
|
||||
<value>لینک</value>
|
||||
</data>
|
||||
<data name="SliderItems" xml:space="preserve">
|
||||
<value>اسلاید ها</value>
|
||||
</data>
|
||||
<data name="SliderView" xml:space="preserve">
|
||||
<value>آلبوم اسلاید</value>
|
||||
</data>
|
||||
<data name="Items" xml:space="preserve">
|
||||
<value>آیتمها</value>
|
||||
</data>
|
||||
<data name="SliderItem" xml:space="preserve">
|
||||
<value>اسلاید</value>
|
||||
</data>
|
||||
<data name="Column" xml:space="preserve">
|
||||
<value>اندازه در صفحه</value>
|
||||
</data>
|
||||
<data name="ImageItem" xml:space="preserve">
|
||||
<value>عکس</value>
|
||||
</data>
|
||||
<data name="ImageItems" xml:space="preserve">
|
||||
<value>عکسها</value>
|
||||
</data>
|
||||
<data name="ProductItem" xml:space="preserve">
|
||||
<value>کالا</value>
|
||||
</data>
|
||||
<data name="ProductItems" xml:space="preserve">
|
||||
<value>کالاها</value>
|
||||
</data>
|
||||
<data name="Orders" xml:space="preserve">
|
||||
<value>سفارشات</value>
|
||||
</data>
|
||||
<data name="FullScreen" xml:space="preserve">
|
||||
<value>کل صفحه</value>
|
||||
</data>
|
||||
<data name="SplitScreen" xml:space="preserve">
|
||||
<value>نصف صفحه</value>
|
||||
</data>
|
||||
<data name="Cms" xml:space="preserve">
|
||||
<value>مدیریت محتوا</value>
|
||||
</data>
|
||||
<data name="PublicCustomer" xml:space="preserve">
|
||||
<value>مشتری عمومی</value>
|
||||
</data>
|
||||
<data name="Description" xml:space="preserve">
|
||||
<value>توضیحات</value>
|
||||
</data>
|
||||
<data name="LogoURL" xml:space="preserve">
|
||||
<value>آدرس لوگو</value>
|
||||
</data>
|
||||
<data name="PhoneNumber" xml:space="preserve">
|
||||
<value>شماره همراه</value>
|
||||
</data>
|
||||
<data name="PosSetting" xml:space="preserve">
|
||||
<value>تنظیمات پایانه فروش</value>
|
||||
</data>
|
||||
<data name="AccessToken" xml:space="preserve">
|
||||
<value>توکن دسترسی</value>
|
||||
</data>
|
||||
<data name="Gateway" xml:space="preserve">
|
||||
<value>درگاه</value>
|
||||
</data>
|
||||
<data name="Country" xml:space="preserve">
|
||||
<value>کشور</value>
|
||||
</data>
|
||||
<data name="TerminalId" xml:space="preserve">
|
||||
<value>شماره ترمینال</value>
|
||||
</data>
|
||||
<data name="Favorites" xml:space="preserve">
|
||||
<value>علاقه مندی ها</value>
|
||||
</data>
|
||||
<data name="ourproducts" xml:space="preserve">
|
||||
<value>محصولات</value>
|
||||
</data>
|
||||
<data name="salesmanagement" xml:space="preserve">
|
||||
<value>مدیریت فروش</value>
|
||||
</data>
|
||||
<data name="Dark" xml:space="preserve">
|
||||
<value>تاریک</value>
|
||||
</data>
|
||||
<data name="Light" xml:space="preserve">
|
||||
<value>روشن</value>
|
||||
</data>
|
||||
<data name="Invoicenumber" xml:space="preserve">
|
||||
<value>شماره فاکتور</value>
|
||||
</data>
|
||||
</root>
|
||||
615
src/Core/Resources/DataDictionary.resx
Normal file
615
src/Core/Resources/DataDictionary.resx
Normal file
@ -0,0 +1,615 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ActivePriceListId" xml:space="preserve">
|
||||
<value>Active Price List Id</value>
|
||||
</data>
|
||||
<data name="BaseUnit" xml:space="preserve">
|
||||
<value>Base Unit</value>
|
||||
</data>
|
||||
<data name="BasicInformation" xml:space="preserve">
|
||||
<value>Basic Information</value>
|
||||
</data>
|
||||
<data name="CategoryId" xml:space="preserve">
|
||||
<value>Category Id</value>
|
||||
</data>
|
||||
<data name="CellPhonenumber" xml:space="preserve">
|
||||
<value>CellPhoneNumber</value>
|
||||
</data>
|
||||
<data name="CreateOf" xml:space="preserve">
|
||||
<value>Create Of</value>
|
||||
</data>
|
||||
<data name="DeleteOf" xml:space="preserve">
|
||||
<value>Delete Of</value>
|
||||
</data>
|
||||
<data name="DownloadUrl" xml:space="preserve">
|
||||
<value>Download Url</value>
|
||||
</data>
|
||||
<data name="FullDescription" xml:space="preserve">
|
||||
<value>Full Description</value>
|
||||
</data>
|
||||
<data name="Id" xml:space="preserve">
|
||||
<value>Id</value>
|
||||
</data>
|
||||
<data name="IsPinned" xml:space="preserve">
|
||||
<value>Is Pinned</value>
|
||||
</data>
|
||||
<data name="Name" xml:space="preserve">
|
||||
<value>First Name</value>
|
||||
</data>
|
||||
<data name="Order" xml:space="preserve">
|
||||
<value>Order</value>
|
||||
</data>
|
||||
<data name="Parent" xml:space="preserve">
|
||||
<value>Parent</value>
|
||||
</data>
|
||||
<data name="Price" xml:space="preserve">
|
||||
<value>Price</value>
|
||||
</data>
|
||||
<data name="Product" xml:space="preserve">
|
||||
<value>Product</value>
|
||||
</data>
|
||||
<data name="Features" xml:space="preserve">
|
||||
<value>Features</value>
|
||||
</data>
|
||||
<data name="ProductId" xml:space="preserve">
|
||||
<value>Product Id</value>
|
||||
</data>
|
||||
<data name="Products" xml:space="preserve">
|
||||
<value>Products</value>
|
||||
</data>
|
||||
<data name="ProductType" xml:space="preserve">
|
||||
<value>Product Type</value>
|
||||
</data>
|
||||
<data name="ShortDescription" xml:space="preserve">
|
||||
<value>Short Description</value>
|
||||
</data>
|
||||
<data name="SKU" xml:space="preserve">
|
||||
<value>SKU</value>
|
||||
</data>
|
||||
<data name="StoreId" xml:space="preserve">
|
||||
<value>Store Id</value>
|
||||
</data>
|
||||
<data name="Title" xml:space="preserve">
|
||||
<value>Title</value>
|
||||
</data>
|
||||
<data name="Unit" xml:space="preserve">
|
||||
<value>Unit</value>
|
||||
</data>
|
||||
<data name="UnitId" xml:space="preserve">
|
||||
<value>Unit Id</value>
|
||||
</data>
|
||||
<data name="UnitRatio" xml:space="preserve">
|
||||
<value>Unit Ratio </value>
|
||||
</data>
|
||||
<data name="Units" xml:space="preserve">
|
||||
<value>Units</value>
|
||||
</data>
|
||||
<data name="UpdateOf" xml:space="preserve">
|
||||
<value>Update Of</value>
|
||||
</data>
|
||||
<data name="Value" xml:space="preserve">
|
||||
<value>Value</value>
|
||||
</data>
|
||||
<data name="ProductFeatures" xml:space="preserve">
|
||||
<value>Product Features</value>
|
||||
</data>
|
||||
<data name="ProductFeature" xml:space="preserve">
|
||||
<value>Product Feature</value>
|
||||
</data>
|
||||
<data name="FeaturesOf" xml:space="preserve">
|
||||
<value>Features of</value>
|
||||
</data>
|
||||
<data name="Family" xml:space="preserve">
|
||||
<value>Last Name</value>
|
||||
</data>
|
||||
<data name="NationalCode" xml:space="preserve">
|
||||
<value>National Code</value>
|
||||
</data>
|
||||
<data name="Mobile" xml:space="preserve">
|
||||
<value>Mobile</value>
|
||||
</data>
|
||||
<data name="Email" xml:space="preserve">
|
||||
<value>Email</value>
|
||||
</data>
|
||||
<data name="Password" xml:space="preserve">
|
||||
<value>Password</value>
|
||||
</data>
|
||||
<data name="Customers" xml:space="preserve">
|
||||
<value>Customers</value>
|
||||
</data>
|
||||
<data name="CustomersInformation" xml:space="preserve">
|
||||
<value>Customer Information</value>
|
||||
</data>
|
||||
<data name="ConfirmPassword" xml:space="preserve">
|
||||
<value>confirm password</value>
|
||||
</data>
|
||||
<data name="Province" xml:space="preserve">
|
||||
<value>province</value>
|
||||
</data>
|
||||
<data name="City" xml:space="preserve">
|
||||
<value>city</value>
|
||||
</data>
|
||||
<data name="Address" xml:space="preserve">
|
||||
<value>address</value>
|
||||
</data>
|
||||
<data name="PostalCode" xml:space="preserve">
|
||||
<value>postalCode</value>
|
||||
</data>
|
||||
<data name="Shippingaddress" xml:space="preserve">
|
||||
<value>shipping address</value>
|
||||
</data>
|
||||
<data name="AddressInformation" xml:space="preserve">
|
||||
<value>addressInformation</value>
|
||||
</data>
|
||||
<data name="AddressManagement" xml:space="preserve">
|
||||
<value>Address management</value>
|
||||
</data>
|
||||
<data name="IconClass" xml:space="preserve">
|
||||
<value>Icon Class</value>
|
||||
</data>
|
||||
<data name="SubCategories" xml:space="preserve">
|
||||
<value>Sub Categories</value>
|
||||
</data>
|
||||
<data name="Categories" xml:space="preserve">
|
||||
<value>Categories</value>
|
||||
</data>
|
||||
<data name="Category" xml:space="preserve">
|
||||
<value>Category</value>
|
||||
</data>
|
||||
<data name="SubCategoriesOf" xml:space="preserve">
|
||||
<value>Sub Categories of</value>
|
||||
</data>
|
||||
<data name="SubCategoriesCount" xml:space="preserve">
|
||||
<value>Sub Categories Count</value>
|
||||
</data>
|
||||
<data name="AdminPanel" xml:space="preserve">
|
||||
<value>Admin Panel</value>
|
||||
</data>
|
||||
<data name="POS" xml:space="preserve">
|
||||
<value>POS</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="IsActive" xml:space="preserve">
|
||||
<value>Active</value>
|
||||
</data>
|
||||
<data name="Store" xml:space="preserve">
|
||||
<value>Store</value>
|
||||
</data>
|
||||
<data name="culture" xml:space="preserve">
|
||||
<value>Culture</value>
|
||||
</data>
|
||||
<data name="Stores" xml:space="preserve">
|
||||
<value>Stores</value>
|
||||
</data>
|
||||
<data name="Dashboard" xml:space="preserve">
|
||||
<value>Dashboard</value>
|
||||
</data>
|
||||
<data name="Picture" xml:space="preserve">
|
||||
<value>Picture</value>
|
||||
</data>
|
||||
<data name="ProductImage" xml:space="preserve">
|
||||
<value>ProductImage</value>
|
||||
</data>
|
||||
<data name="Pictures" xml:space="preserve">
|
||||
<value>Pictures</value>
|
||||
</data>
|
||||
<data name="PicturesOf" xml:space="preserve">
|
||||
<value>PicturesOf</value>
|
||||
</data>
|
||||
<data name="PriceLists" xml:space="preserve">
|
||||
<value>PriceLists</value>
|
||||
</data>
|
||||
<data name="PriceListsOf" xml:space="preserve">
|
||||
<value>PriceListsOf</value>
|
||||
</data>
|
||||
<data name="Users" xml:space="preserve">
|
||||
<value>Users</value>
|
||||
</data>
|
||||
<data name="Sellers" xml:space="preserve">
|
||||
<value>Sellers</value>
|
||||
</data>
|
||||
<data name="User" xml:space="preserve">
|
||||
<value>User</value>
|
||||
</data>
|
||||
<data name="UserName" xml:space="preserve">
|
||||
<value>Username</value>
|
||||
</data>
|
||||
<data name="EmailOrMobile" xml:space="preserve">
|
||||
<value>Email Or Mobile</value>
|
||||
</data>
|
||||
<data name="LogIn" xml:space="preserve">
|
||||
<value>LogIn</value>
|
||||
</data>
|
||||
<data name="Register" xml:space="preserve">
|
||||
<value>Register</value>
|
||||
</data>
|
||||
<data name="Role" xml:space="preserve">
|
||||
<value>Role</value>
|
||||
</data>
|
||||
<data name="Customer" xml:space="preserve">
|
||||
<value>Customer</value>
|
||||
</data>
|
||||
<data name="Branch" xml:space="preserve">
|
||||
<value>branch</value>
|
||||
</data>
|
||||
<data name="Branches" xml:space="preserve">
|
||||
<value>branches</value>
|
||||
</data>
|
||||
<data name="NothingFound" xml:space="preserve">
|
||||
<value>Nothing Found</value>
|
||||
</data>
|
||||
<data name="Searching" xml:space="preserve">
|
||||
<value>Searching</value>
|
||||
</data>
|
||||
<data name="ProductSearch" xml:space="preserve">
|
||||
<value>Search In Products ...</value>
|
||||
</data>
|
||||
<data name="CustomerSearch" xml:space="preserve">
|
||||
<value>Customer Search...</value>
|
||||
</data>
|
||||
<data name="CustomerInformation" xml:space="preserve">
|
||||
<value>Customer Information</value>
|
||||
</data>
|
||||
<data name="CheckoutCounters" xml:space="preserve">
|
||||
<value>Checkout Counters</value>
|
||||
</data>
|
||||
<data name="Discount" xml:space="preserve">
|
||||
<value>Discount</value>
|
||||
</data>
|
||||
<data name="DiscountCode" xml:space="preserve">
|
||||
<value>DiscountCode</value>
|
||||
</data>
|
||||
<data name="InsertDateTime" xml:space="preserve">
|
||||
<value>InsertDateTime</value>
|
||||
</data>
|
||||
<data name="InsertedBy" xml:space="preserve">
|
||||
<value>InsertedBy</value>
|
||||
</data>
|
||||
<data name="OwnerId" xml:space="preserve">
|
||||
<value>OwnerId</value>
|
||||
</data>
|
||||
<data name="UpdateDateTime" xml:space="preserve">
|
||||
<value>UpdateDateTime</value>
|
||||
</data>
|
||||
<data name="UpdatedBy" xml:space="preserve">
|
||||
<value>UpdatedBy</value>
|
||||
</data>
|
||||
<data name="DiscountCodes" xml:space="preserve">
|
||||
<value>DiscountCodes</value>
|
||||
</data>
|
||||
<data name="Slug" xml:space="preserve">
|
||||
<value>Slug</value>
|
||||
</data>
|
||||
<data name="Settings" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="SiteSetting" xml:space="preserve">
|
||||
<value>Site Setting</value>
|
||||
</data>
|
||||
<data name="Catalog" xml:space="preserve">
|
||||
<value>Catalog</value>
|
||||
</data>
|
||||
<data name="Basket" xml:space="preserve">
|
||||
<value>Basket</value>
|
||||
</data>
|
||||
<data name="Amount" xml:space="preserve">
|
||||
<value>Amount</value>
|
||||
</data>
|
||||
<data name="DiscountType" xml:space="preserve">
|
||||
<value>Discount Type</value>
|
||||
</data>
|
||||
<data name="End" xml:space="preserve">
|
||||
<value>End</value>
|
||||
</data>
|
||||
<data name="Maximum" xml:space="preserve">
|
||||
<value>Maximum</value>
|
||||
</data>
|
||||
<data name="Minimum" xml:space="preserve">
|
||||
<value>Minimum</value>
|
||||
</data>
|
||||
<data name="Start" xml:space="preserve">
|
||||
<value>Start</value>
|
||||
</data>
|
||||
<data name="Type" xml:space="preserve">
|
||||
<value>Type</value>
|
||||
</data>
|
||||
<data name="DiscountFixed" xml:space="preserve">
|
||||
<value>Discount Fixed</value>
|
||||
</data>
|
||||
<data name="DiscountPercentage" xml:space="preserve">
|
||||
<value>Discount Percentage</value>
|
||||
</data>
|
||||
<data name="Actions" xml:space="preserve">
|
||||
<value>Actions</value>
|
||||
</data>
|
||||
<data name="PriceList" xml:space="preserve">
|
||||
<value>PriceList</value>
|
||||
</data>
|
||||
<data name="Addto" xml:space="preserve">
|
||||
<value>Add to</value>
|
||||
</data>
|
||||
<data name="OtpCode" xml:space="preserve">
|
||||
<value>Code</value>
|
||||
</data>
|
||||
<data name="Quantity" xml:space="preserve">
|
||||
<value>Quantity</value>
|
||||
</data>
|
||||
<data name="UnitPrice" xml:space="preserve">
|
||||
<value>Unit Price</value>
|
||||
</data>
|
||||
<data name="TotalPrice" xml:space="preserve">
|
||||
<value>Total Price</value>
|
||||
</data>
|
||||
<data name="SubTotal" xml:space="preserve">
|
||||
<value>Sub Total</value>
|
||||
</data>
|
||||
<data name="TotalDiscount" xml:space="preserve">
|
||||
<value>Total Discount</value>
|
||||
</data>
|
||||
<data name="FinalPrice" xml:space="preserve">
|
||||
<value>Final Price</value>
|
||||
</data>
|
||||
<data name="Text" xml:space="preserve">
|
||||
<value>text</value>
|
||||
</data>
|
||||
<data name="Comment" xml:space="preserve">
|
||||
<value>comment</value>
|
||||
</data>
|
||||
<data name="FullName" xml:space="preserve">
|
||||
<value>FullName</value>
|
||||
</data>
|
||||
<data name="NotRegistered" xml:space="preserve">
|
||||
<value>Not Registered</value>
|
||||
</data>
|
||||
<data name="FirstName" xml:space="preserve">
|
||||
<value>First Name</value>
|
||||
</data>
|
||||
<data name="LastName" xml:space="preserve">
|
||||
<value>LastName</value>
|
||||
</data>
|
||||
<data name="MyAddress" xml:space="preserve">
|
||||
<value>My Address</value>
|
||||
</data>
|
||||
<data name="LogoutOfAccount" xml:space="preserve">
|
||||
<value>Logout of account</value>
|
||||
</data>
|
||||
<data name="AccountInformation" xml:space="preserve">
|
||||
<value>AccountInformation</value>
|
||||
</data>
|
||||
<data name="Attribute" xml:space="preserve">
|
||||
<value>attribute</value>
|
||||
</data>
|
||||
<data name="AttributeValue" xml:space="preserve">
|
||||
<value>attribute value</value>
|
||||
</data>
|
||||
<data name="PriceAdjustment" xml:space="preserve">
|
||||
<value>price adjustment</value>
|
||||
</data>
|
||||
<data name="WeightAdjustment" xml:space="preserve">
|
||||
<value>weight adjustment</value>
|
||||
</data>
|
||||
<data name="IsPreSelected" xml:space="preserve">
|
||||
<value>is pre selected</value>
|
||||
</data>
|
||||
<data name="HomeView" xml:space="preserve">
|
||||
<value>Home View</value>
|
||||
</data>
|
||||
<data name="HomeViews" xml:space="preserve">
|
||||
<value>Home Views</value>
|
||||
</data>
|
||||
<data name="ProductView" xml:space="preserve">
|
||||
<value>Product View</value>
|
||||
</data>
|
||||
<data name="ImageView" xml:space="preserve">
|
||||
<value>Image View</value>
|
||||
</data>
|
||||
<data name="Interval" xml:space="preserve">
|
||||
<value>Interval</value>
|
||||
</data>
|
||||
<data name="NavigationUrl" xml:space="preserve">
|
||||
<value>Navigation URL</value>
|
||||
</data>
|
||||
<data name="SliderItems" xml:space="preserve">
|
||||
<value>Slider Items</value>
|
||||
</data>
|
||||
<data name="SliderView" xml:space="preserve">
|
||||
<value>Slider View</value>
|
||||
</data>
|
||||
<data name="Items" xml:space="preserve">
|
||||
<value>Items</value>
|
||||
</data>
|
||||
<data name="SliderItem" xml:space="preserve">
|
||||
<value>Slider Item</value>
|
||||
</data>
|
||||
<data name="Column" xml:space="preserve">
|
||||
<value>column</value>
|
||||
</data>
|
||||
<data name="ImageItem" xml:space="preserve">
|
||||
<value>image item</value>
|
||||
</data>
|
||||
<data name="ImageItems" xml:space="preserve">
|
||||
<value>image items</value>
|
||||
</data>
|
||||
<data name="ProductItem" xml:space="preserve">
|
||||
<value>product item</value>
|
||||
</data>
|
||||
<data name="ProductItems" xml:space="preserve">
|
||||
<value>product items</value>
|
||||
</data>
|
||||
<data name="Orders" xml:space="preserve">
|
||||
<value>orders</value>
|
||||
</data>
|
||||
<data name="FullScreen" xml:space="preserve">
|
||||
<value>Full Screen</value>
|
||||
</data>
|
||||
<data name="SplitScreen" xml:space="preserve">
|
||||
<value>Split Screen</value>
|
||||
</data>
|
||||
<data name="Cms" xml:space="preserve">
|
||||
<value>Cms</value>
|
||||
</data>
|
||||
<data name="PublicCustomer" xml:space="preserve">
|
||||
<value>PublicCustomer</value>
|
||||
</data>
|
||||
<data name="Description" xml:space="preserve">
|
||||
<value>Description</value>
|
||||
</data>
|
||||
<data name="LogoURL" xml:space="preserve">
|
||||
<value>LogoURL</value>
|
||||
</data>
|
||||
<data name="PhoneNumber" xml:space="preserve">
|
||||
<value>PhoneNumber</value>
|
||||
</data>
|
||||
<data name="PosSetting" xml:space="preserve">
|
||||
<value>Pos Setting</value>
|
||||
</data>
|
||||
<data name="AccessToken" xml:space="preserve">
|
||||
<value>accestoken</value>
|
||||
</data>
|
||||
<data name="Gateway" xml:space="preserve">
|
||||
<value>gateway</value>
|
||||
</data>
|
||||
<data name="Country" xml:space="preserve">
|
||||
<value>country</value>
|
||||
</data>
|
||||
<data name="TerminalId" xml:space="preserve">
|
||||
<value>terminal id</value>
|
||||
</data>
|
||||
<data name="Favorites" xml:space="preserve">
|
||||
<value>Favorites</value>
|
||||
</data>
|
||||
<data name="ourproducts" xml:space="preserve">
|
||||
<value>ourproducts</value>
|
||||
</data>
|
||||
<data name="salesmanagement" xml:space="preserve">
|
||||
<value>salesmanagement</value>
|
||||
</data>
|
||||
<data name="Dark" xml:space="preserve">
|
||||
<value>Dark</value>
|
||||
</data>
|
||||
<data name="Light" xml:space="preserve">
|
||||
<value>Light</value>
|
||||
</data>
|
||||
<data name="Invoicenumber" xml:space="preserve">
|
||||
<value>Invoicenumber</value>
|
||||
</data>
|
||||
</root>
|
||||
351
src/Core/Resources/Messages/Errors.Designer.cs
generated
Normal file
351
src/Core/Resources/Messages/Errors.Designer.cs
generated
Normal file
@ -0,0 +1,351 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Resources.Messages {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Errors {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Errors() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.Messages.Errors", typeof(Errors).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} already exists!.
|
||||
/// </summary>
|
||||
public static string AlreadyExists {
|
||||
get {
|
||||
return ResourceManager.GetString("AlreadyExists", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You should just use digits!.
|
||||
/// </summary>
|
||||
public static string Captcha {
|
||||
get {
|
||||
return ResourceManager.GetString("Captcha", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There are some related data to this {0}, So you can not delete this item!.
|
||||
/// </summary>
|
||||
public static string CascadeDelete {
|
||||
get {
|
||||
return ResourceManager.GetString("CascadeDelete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Are you sure to delete this item?.
|
||||
/// </summary>
|
||||
public static string ConfirmDelete {
|
||||
get {
|
||||
return ResourceManager.GetString("ConfirmDelete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Current password is not correct!.
|
||||
/// </summary>
|
||||
public static string CurrentPasswordIsNotCorrect {
|
||||
get {
|
||||
return ResourceManager.GetString("CurrentPasswordIsNotCorrect", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Email address is not verified yet! An email sent to your inbox..
|
||||
/// </summary>
|
||||
public static string EmailAddressIsNotVerified {
|
||||
get {
|
||||
return ResourceManager.GetString("EmailAddressIsNotVerified", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Id is null!.
|
||||
/// </summary>
|
||||
public static string IdIsNull {
|
||||
get {
|
||||
return ResourceManager.GetString("IdIsNull", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An internal server error has occurred. Our team has been notified..
|
||||
/// </summary>
|
||||
public static string InternalError {
|
||||
get {
|
||||
return ResourceManager.GetString("InternalError", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is not valid!.
|
||||
/// </summary>
|
||||
public static string Invalid {
|
||||
get {
|
||||
return ResourceManager.GetString("Invalid", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Invalid Action!.
|
||||
/// </summary>
|
||||
public static string InvalidAction {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidAction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OTP Code is not correct!.
|
||||
/// </summary>
|
||||
public static string InvalidOTPCode {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidOTPCode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Buxie Account is not valid!.
|
||||
/// </summary>
|
||||
public static string InvalidTenant {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidTenant", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to User Account is not valid!.
|
||||
/// </summary>
|
||||
public static string InvalidUser {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidUser", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Invalid Username or Password!.
|
||||
/// </summary>
|
||||
public static string InvalidUsernameOrPassword {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidUsernameOrPassword", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Invalid Verification Key.
|
||||
/// </summary>
|
||||
public static string InvalidVerificationKey {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidVerificationKey", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to This {0} is used in {1} , So you can not delete this item!.
|
||||
/// </summary>
|
||||
public static string IsUsed {
|
||||
get {
|
||||
return ResourceManager.GetString("IsUsed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to New password can not be same as current password!.
|
||||
/// </summary>
|
||||
public static string NewPasswordCanNotBeSameAsCurrentPassword {
|
||||
get {
|
||||
return ResourceManager.GetString("NewPasswordCanNotBeSameAsCurrentPassword", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There is no {0} with this information!.
|
||||
/// </summary>
|
||||
public static string NotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("NotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No Information Found!.
|
||||
/// </summary>
|
||||
public static string NotFoundGeneral {
|
||||
get {
|
||||
return ResourceManager.GetString("NotFoundGeneral", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Update in offline mode is not avaliable.
|
||||
/// </summary>
|
||||
public static string OnlyOnlineUpdate {
|
||||
get {
|
||||
return ResourceManager.GetString("OnlyOnlineUpdate", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Your changes have not been saved. Another User has updated the data since you retrieved it. Please refresh and try again..
|
||||
/// </summary>
|
||||
public static string OptimisticConcurrency {
|
||||
get {
|
||||
return ResourceManager.GetString("OptimisticConcurrency", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Please login first..
|
||||
/// </summary>
|
||||
public static string PleaseLoginFirst {
|
||||
get {
|
||||
return ResourceManager.GetString("PleaseLoginFirst", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Tenant Id Not Found!.
|
||||
/// </summary>
|
||||
public static string TenantIdNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("TenantIdNotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Tenant Is not multi User!.
|
||||
/// </summary>
|
||||
public static string TenantIsNotMultiUser {
|
||||
get {
|
||||
return ResourceManager.GetString("TenantIsNotMultiUser", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There is not any data with this id!.
|
||||
/// </summary>
|
||||
public static string ThereIsNotAnyDataWithThisId {
|
||||
get {
|
||||
return ResourceManager.GetString("ThereIsNotAnyDataWithThisId", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to We are unable to {0} this {1}!.
|
||||
/// </summary>
|
||||
public static string UnableTo {
|
||||
get {
|
||||
return ResourceManager.GetString("UnableTo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unable to change systematic {0}..
|
||||
/// </summary>
|
||||
public static string UnableToDeleteSystematice {
|
||||
get {
|
||||
return ResourceManager.GetString("UnableToDeleteSystematice", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unable to update parent!.
|
||||
/// </summary>
|
||||
public static string UnableToUpdateParent {
|
||||
get {
|
||||
return ResourceManager.GetString("UnableToUpdateParent", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unauthorized Access.
|
||||
/// </summary>
|
||||
public static string UnauthorizedAccess {
|
||||
get {
|
||||
return ResourceManager.GetString("UnauthorizedAccess", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Unexpected error! Our team informed about the error, If needed contact us with error code [{0}].
|
||||
/// </summary>
|
||||
public static string UnexpectedError {
|
||||
get {
|
||||
return ResourceManager.GetString("UnexpectedError", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Your account is not active!.
|
||||
/// </summary>
|
||||
public static string UserAccountIsNotActive {
|
||||
get {
|
||||
return ResourceManager.GetString("UserAccountIsNotActive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You have not registered an address yet..
|
||||
/// </summary>
|
||||
public static string YouHaveNotRegisteredAnAddressYet {
|
||||
get {
|
||||
return ResourceManager.GetString("YouHaveNotRegisteredAnAddressYet", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
216
src/Core/Resources/Messages/Errors.fa-IR.resx
Normal file
216
src/Core/Resources/Messages/Errors.fa-IR.resx
Normal file
@ -0,0 +1,216 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AlreadyExists" xml:space="preserve">
|
||||
<value>{0} تکراری است!</value>
|
||||
</data>
|
||||
<data name="Captcha" xml:space="preserve">
|
||||
<value>شما باید عدد فوق را با دقت و با ارقام انگلیسی وارد نمایید!</value>
|
||||
</data>
|
||||
<data name="CascadeDelete" xml:space="preserve">
|
||||
<value>از این {0} در جای دیگری استفاده شده است، لذا شما قادر به حذف آن نمیباشید!</value>
|
||||
</data>
|
||||
<data name="ConfirmDelete" xml:space="preserve">
|
||||
<value>آیا از حذف این آیتم اطمینان دارید؟</value>
|
||||
</data>
|
||||
<data name="CurrentPasswordIsNotCorrect" xml:space="preserve">
|
||||
<value>گذرواژه جاری صحیح نمیباشد!</value>
|
||||
</data>
|
||||
<data name="EmailAddressIsNotVerified" xml:space="preserve">
|
||||
<value>نشانی پست الکترونیکی هنوز تایید نشده است! برای شما ایمیلی ارسال شده است</value>
|
||||
</data>
|
||||
<data name="IdIsNull" xml:space="preserve">
|
||||
<value>شناسه اطلاعات باید مشخص شده باشد!</value>
|
||||
</data>
|
||||
<data name="InternalError" xml:space="preserve">
|
||||
<value>خطایی داخلی رخ داده، تیم ما از این خطا مطلع شده است</value>
|
||||
</data>
|
||||
<data name="Invalid" xml:space="preserve">
|
||||
<value>{0} معتبر نمی باشد!</value>
|
||||
</data>
|
||||
<data name="InvalidAction" xml:space="preserve">
|
||||
<value>عملیات غیرمجاز!</value>
|
||||
</data>
|
||||
<data name="InvalidOTPCode" xml:space="preserve">
|
||||
<value>کد صحیح نمی باشد</value>
|
||||
</data>
|
||||
<data name="InvalidTenant" xml:space="preserve">
|
||||
<value>باکسی اکانت شما معتبر نمی باشد</value>
|
||||
</data>
|
||||
<data name="InvalidUser" xml:space="preserve">
|
||||
<value>حساب کاربری شما معتبر نمی باشد</value>
|
||||
</data>
|
||||
<data name="InvalidUsernameOrPassword" xml:space="preserve">
|
||||
<value>شناسهکاربری و یا گذرواژه صحیح نمیباشد!</value>
|
||||
</data>
|
||||
<data name="InvalidVerificationKey" xml:space="preserve">
|
||||
<value>کد نامعتبر میبباشد</value>
|
||||
</data>
|
||||
<data name="IsUsed" xml:space="preserve">
|
||||
<value>این {0} در {1} استفاده شده، لذا نمیتوان آن را حذف کرد</value>
|
||||
</data>
|
||||
<data name="NewPasswordCanNotBeSameAsCurrentPassword" xml:space="preserve">
|
||||
<value>گذرواژه جدید نمیتواند با گذرواژه جاری یکسان باشد!</value>
|
||||
</data>
|
||||
<data name="NotFound" xml:space="preserve">
|
||||
<value>{0} مورد نظر یافت نشد!</value>
|
||||
</data>
|
||||
<data name="NotFoundGeneral" xml:space="preserve">
|
||||
<value>اطلاعات مورد نظر وجود ندارد!</value>
|
||||
</data>
|
||||
<data name="OnlyOnlineUpdate" xml:space="preserve">
|
||||
<value>در حالت آفلاین امکان ویرایش نمی باشد، لطفا پس از اتصال به اینترنت دوباره تلاش کنید</value>
|
||||
</data>
|
||||
<data name="OptimisticConcurrency" xml:space="preserve">
|
||||
<value>تغییرات شما ذخیره نشده است. کاربر دیگری دادهها را از زمانی که شما آنها را بازیابی کردهاید، بهروزرسانی کرده است. لطفاً صفحه را تازه کنید و دوباره تلاش کنید.</value>
|
||||
</data>
|
||||
<data name="PleaseLoginFirst" xml:space="preserve">
|
||||
<value>لطفا ابتدا وارد شوید</value>
|
||||
</data>
|
||||
<data name="TenantIdNotFound" xml:space="preserve">
|
||||
<value>شناسه یکتای کاربر پیدا نشد</value>
|
||||
</data>
|
||||
<data name="TenantIsNotMultiUser" xml:space="preserve">
|
||||
<value>این حساب کاربری، چند کاربره نمی باشد</value>
|
||||
</data>
|
||||
<data name="ThereIsNotAnyDataWithThisId" xml:space="preserve">
|
||||
<value>اطلاعاتی با چنین شناسهای وجود ندارد!</value>
|
||||
</data>
|
||||
<data name="UnableTo" xml:space="preserve">
|
||||
<value>در حال حاضر امکان {0} این {1} وجود ندارد!</value>
|
||||
</data>
|
||||
<data name="UnableToDeleteSystematice" xml:space="preserve">
|
||||
<value>امکان تغییر {0} های سیستمی نمیباشد</value>
|
||||
</data>
|
||||
<data name="UnableToUpdateParent" xml:space="preserve">
|
||||
<value>امکان تعریف والد برای این آیتم، به علت وجود زیر مجموعه وجود ندارد!</value>
|
||||
</data>
|
||||
<data name="UnauthorizedAccess" xml:space="preserve">
|
||||
<value>شما به این بخش دسترسی ندارید</value>
|
||||
</data>
|
||||
<data name="UnexpectedError" xml:space="preserve">
|
||||
<value>خطای ناشناختهای صورت گرفته است! تیم ما از این خطا مطلع شده، در صورت نیاز کد {0} را به پشتیبانی اعلام کنید</value>
|
||||
</data>
|
||||
<data name="UserAccountIsNotActive" xml:space="preserve">
|
||||
<value>دسترسی شما به سامانه تا اطلاع ثانوی مسدود میباشد!</value>
|
||||
</data>
|
||||
<data name="YouHaveNotRegisteredAnAddressYet" xml:space="preserve">
|
||||
<value>هنوز آدرس ثبت نکرده اید</value>
|
||||
</data>
|
||||
</root>
|
||||
216
src/Core/Resources/Messages/Errors.resx
Normal file
216
src/Core/Resources/Messages/Errors.resx
Normal file
@ -0,0 +1,216 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="AlreadyExists" xml:space="preserve">
|
||||
<value>The {0} already exists!</value>
|
||||
</data>
|
||||
<data name="Captcha" xml:space="preserve">
|
||||
<value>You should just use digits!</value>
|
||||
</data>
|
||||
<data name="CascadeDelete" xml:space="preserve">
|
||||
<value>There are some related data to this {0}, So you can not delete this item!</value>
|
||||
</data>
|
||||
<data name="ConfirmDelete" xml:space="preserve">
|
||||
<value>Are you sure to delete this item?</value>
|
||||
</data>
|
||||
<data name="CurrentPasswordIsNotCorrect" xml:space="preserve">
|
||||
<value>Current password is not correct!</value>
|
||||
</data>
|
||||
<data name="EmailAddressIsNotVerified" xml:space="preserve">
|
||||
<value>Email address is not verified yet! An email sent to your inbox.</value>
|
||||
</data>
|
||||
<data name="IdIsNull" xml:space="preserve">
|
||||
<value>Id is null!</value>
|
||||
</data>
|
||||
<data name="InternalError" xml:space="preserve">
|
||||
<value>An internal server error has occurred. Our team has been notified.</value>
|
||||
</data>
|
||||
<data name="Invalid" xml:space="preserve">
|
||||
<value>{0} is not valid!</value>
|
||||
</data>
|
||||
<data name="InvalidAction" xml:space="preserve">
|
||||
<value>Invalid Action!</value>
|
||||
</data>
|
||||
<data name="InvalidOTPCode" xml:space="preserve">
|
||||
<value>OTP Code is not correct!</value>
|
||||
</data>
|
||||
<data name="InvalidTenant" xml:space="preserve">
|
||||
<value>Buxie Account is not valid!</value>
|
||||
</data>
|
||||
<data name="InvalidUser" xml:space="preserve">
|
||||
<value>User Account is not valid!</value>
|
||||
</data>
|
||||
<data name="InvalidUsernameOrPassword" xml:space="preserve">
|
||||
<value>Invalid Username or Password!</value>
|
||||
</data>
|
||||
<data name="InvalidVerificationKey" xml:space="preserve">
|
||||
<value>Invalid Verification Key</value>
|
||||
</data>
|
||||
<data name="IsUsed" xml:space="preserve">
|
||||
<value>This {0} is used in {1} , So you can not delete this item!</value>
|
||||
</data>
|
||||
<data name="NewPasswordCanNotBeSameAsCurrentPassword" xml:space="preserve">
|
||||
<value>New password can not be same as current password!</value>
|
||||
</data>
|
||||
<data name="NotFound" xml:space="preserve">
|
||||
<value>There is no {0} with this information!</value>
|
||||
</data>
|
||||
<data name="NotFoundGeneral" xml:space="preserve">
|
||||
<value>No Information Found!</value>
|
||||
</data>
|
||||
<data name="OnlyOnlineUpdate" xml:space="preserve">
|
||||
<value>Update in offline mode is not avaliable</value>
|
||||
</data>
|
||||
<data name="OptimisticConcurrency" xml:space="preserve">
|
||||
<value>Your changes have not been saved. Another User has updated the data since you retrieved it. Please refresh and try again.</value>
|
||||
</data>
|
||||
<data name="PleaseLoginFirst" xml:space="preserve">
|
||||
<value>Please login first.</value>
|
||||
</data>
|
||||
<data name="TenantIdNotFound" xml:space="preserve">
|
||||
<value>Tenant Id Not Found!</value>
|
||||
</data>
|
||||
<data name="TenantIsNotMultiUser" xml:space="preserve">
|
||||
<value>Tenant Is not multi User!</value>
|
||||
</data>
|
||||
<data name="ThereIsNotAnyDataWithThisId" xml:space="preserve">
|
||||
<value>There is not any data with this id!</value>
|
||||
</data>
|
||||
<data name="UnableTo" xml:space="preserve">
|
||||
<value>We are unable to {0} this {1}!</value>
|
||||
</data>
|
||||
<data name="UnableToDeleteSystematice" xml:space="preserve">
|
||||
<value>Unable to change systematic {0}.</value>
|
||||
</data>
|
||||
<data name="UnableToUpdateParent" xml:space="preserve">
|
||||
<value>Unable to update parent!</value>
|
||||
</data>
|
||||
<data name="UnauthorizedAccess" xml:space="preserve">
|
||||
<value>Unauthorized Access</value>
|
||||
</data>
|
||||
<data name="UnexpectedError" xml:space="preserve">
|
||||
<value>Unexpected error! Our team informed about the error, If needed contact us with error code [{0}]</value>
|
||||
</data>
|
||||
<data name="UserAccountIsNotActive" xml:space="preserve">
|
||||
<value>Your account is not active!</value>
|
||||
</data>
|
||||
<data name="YouHaveNotRegisteredAnAddressYet" xml:space="preserve">
|
||||
<value>You have not registered an address yet.</value>
|
||||
</data>
|
||||
</root>
|
||||
126
src/Core/Resources/Messages/Successes.Designer.cs
generated
Normal file
126
src/Core/Resources/Messages/Successes.Designer.cs
generated
Normal file
@ -0,0 +1,126 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Resources.Messages {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Successes {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Successes() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.Messages.Successes", typeof(Successes).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} successfully added..
|
||||
/// </summary>
|
||||
public static string Added {
|
||||
get {
|
||||
return ResourceManager.GetString("Added", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Please check your inbox..
|
||||
/// </summary>
|
||||
public static string CheckInbox {
|
||||
get {
|
||||
return ResourceManager.GetString("CheckInbox", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} successfully created..
|
||||
/// </summary>
|
||||
public static string Created {
|
||||
get {
|
||||
return ResourceManager.GetString("Created", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} successfully deleted..
|
||||
/// </summary>
|
||||
public static string Deleted {
|
||||
get {
|
||||
return ResourceManager.GetString("Deleted", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The Opration Successfuly.
|
||||
/// </summary>
|
||||
public static string Success {
|
||||
get {
|
||||
return ResourceManager.GetString("Success", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} successfully updated..
|
||||
/// </summary>
|
||||
public static string Updated {
|
||||
get {
|
||||
return ResourceManager.GetString("Updated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} successfully verified..
|
||||
/// </summary>
|
||||
public static string Verified {
|
||||
get {
|
||||
return ResourceManager.GetString("Verified", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
138
src/Core/Resources/Messages/Successes.fa-IR.resx
Normal file
138
src/Core/Resources/Messages/Successes.fa-IR.resx
Normal file
@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Added" xml:space="preserve">
|
||||
<value>{0} با موفقیت اضافه گردید.</value>
|
||||
</data>
|
||||
<data name="CheckInbox" xml:space="preserve">
|
||||
<value>لطفا پست الکترونیکی خود را بررسی کنید</value>
|
||||
</data>
|
||||
<data name="Created" xml:space="preserve">
|
||||
<value>{0} با موفقیت ایجاد گردید.</value>
|
||||
</data>
|
||||
<data name="Deleted" xml:space="preserve">
|
||||
<value>{0} با موفقیت حذف گردید.</value>
|
||||
</data>
|
||||
<data name="Success" xml:space="preserve">
|
||||
<value>عملیات با موفقیت انجام شد</value>
|
||||
</data>
|
||||
<data name="Updated" xml:space="preserve">
|
||||
<value>{0} با موفقیت ویرایش گردید.</value>
|
||||
</data>
|
||||
</root>
|
||||
141
src/Core/Resources/Messages/Successes.resx
Normal file
141
src/Core/Resources/Messages/Successes.resx
Normal file
@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Added" xml:space="preserve">
|
||||
<value>The {0} successfully added.</value>
|
||||
</data>
|
||||
<data name="CheckInbox" xml:space="preserve">
|
||||
<value>Please check your inbox.</value>
|
||||
</data>
|
||||
<data name="Created" xml:space="preserve">
|
||||
<value>The {0} successfully created.</value>
|
||||
</data>
|
||||
<data name="Deleted" xml:space="preserve">
|
||||
<value>The {0} successfully deleted.</value>
|
||||
</data>
|
||||
<data name="Success" xml:space="preserve">
|
||||
<value>The Opration Successfuly</value>
|
||||
</data>
|
||||
<data name="Updated" xml:space="preserve">
|
||||
<value>The {0} successfully updated.</value>
|
||||
</data>
|
||||
<data name="Verified" xml:space="preserve">
|
||||
<value>The {0} successfully verified.</value>
|
||||
</data>
|
||||
</root>
|
||||
306
src/Core/Resources/Messages/Validations.Designer.cs
generated
Normal file
306
src/Core/Resources/Messages/Validations.Designer.cs
generated
Normal file
@ -0,0 +1,306 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Resources.Messages {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Validations {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Validations() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Resources.Messages.Validations", typeof(Validations).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is not valid!.
|
||||
/// </summary>
|
||||
public static string CellPhoneNumber {
|
||||
get {
|
||||
return ResourceManager.GetString("CellPhoneNumber", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} should be equql to {1}!.
|
||||
/// </summary>
|
||||
public static string Compare {
|
||||
get {
|
||||
return ResourceManager.GetString("Compare", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Email address is not valid!.
|
||||
/// </summary>
|
||||
public static string EmailAddress {
|
||||
get {
|
||||
return ResourceManager.GetString("EmailAddress", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The {0} should be equal!.
|
||||
/// </summary>
|
||||
public static string Equal {
|
||||
get {
|
||||
return ResourceManager.GetString("Equal", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Length of {0} must be {1}.
|
||||
/// </summary>
|
||||
public static string FixLengthNumeric {
|
||||
get {
|
||||
return ResourceManager.GetString("FixLengthNumeric", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} should be greater than {1}!.
|
||||
/// </summary>
|
||||
public static string GreaterThan {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThan", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Length of {0} greater than {1}.
|
||||
/// </summary>
|
||||
public static string GreaterThan_FieldValue {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThan_FieldValue", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Length of {0} greater than length of {1}.
|
||||
/// </summary>
|
||||
public static string GreaterThan_TwoFields {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThan_TwoFields", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} should be greater than or equal to {1}!.
|
||||
/// </summary>
|
||||
public static string GreaterThanOrEqualTo {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThanOrEqualTo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Length of {0} greater or equal than {1}.
|
||||
/// </summary>
|
||||
public static string GreaterThanOrEqualTo_FieldValue {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThanOrEqualTo_FieldValue", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Length of {0} greater or equal than length of {1}.
|
||||
/// </summary>
|
||||
public static string GreaterThanOrEqualTo_TwoFields {
|
||||
get {
|
||||
return ResourceManager.GetString("GreaterThanOrEqualTo_TwoFields", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Invalid Code : {0}.
|
||||
/// </summary>
|
||||
public static string InvalidCode {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidCode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Input data is not valid.
|
||||
/// </summary>
|
||||
public static string InvalidModelState {
|
||||
get {
|
||||
return ResourceManager.GetString("InvalidModelState", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Maximum Count of {0} is {1} !.
|
||||
/// </summary>
|
||||
public static string MaxCount {
|
||||
get {
|
||||
return ResourceManager.GetString("MaxCount", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Max length of {0} is {1}!.
|
||||
/// </summary>
|
||||
public static string MaxLength {
|
||||
get {
|
||||
return ResourceManager.GetString("MaxLength", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The '{0}' value must be a string with a minimum length of '{1}'!.
|
||||
/// </summary>
|
||||
public static string MinLength {
|
||||
get {
|
||||
return ResourceManager.GetString("MinLength", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is not valid!.
|
||||
/// </summary>
|
||||
public static string NationalCode {
|
||||
get {
|
||||
return ResourceManager.GetString("NationalCode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} Not found.
|
||||
/// </summary>
|
||||
public static string NotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("NotFound", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to '{0}' is not valid!.
|
||||
/// </summary>
|
||||
public static string NotValid {
|
||||
get {
|
||||
return ResourceManager.GetString("NotValid", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Password is not valid!.
|
||||
/// </summary>
|
||||
public static string Password {
|
||||
get {
|
||||
return ResourceManager.GetString("Password", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to postalcode.
|
||||
/// </summary>
|
||||
public static string PostalCode {
|
||||
get {
|
||||
return ResourceManager.GetString("PostalCode", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} should be greater than or equal to {1} and less than or equal to {2}!.
|
||||
/// </summary>
|
||||
public static string Range {
|
||||
get {
|
||||
return ResourceManager.GetString("Range", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Value of {0} is not valid..
|
||||
/// </summary>
|
||||
public static string RegularExpression {
|
||||
get {
|
||||
return ResourceManager.GetString("RegularExpression", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is repetitive. please use an other {0}.
|
||||
/// </summary>
|
||||
public static string Repetitive {
|
||||
get {
|
||||
return ResourceManager.GetString("Repetitive", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is required!.
|
||||
/// </summary>
|
||||
public static string Required {
|
||||
get {
|
||||
return ResourceManager.GetString("Required", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to {0} is not valid!.
|
||||
/// </summary>
|
||||
public static string Url {
|
||||
get {
|
||||
return ResourceManager.GetString("Url", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Username is not valid!.
|
||||
/// </summary>
|
||||
public static string Username {
|
||||
get {
|
||||
return ResourceManager.GetString("Username", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
201
src/Core/Resources/Messages/Validations.fa-IR.resx
Normal file
201
src/Core/Resources/Messages/Validations.fa-IR.resx
Normal file
@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="CellPhoneNumber" xml:space="preserve">
|
||||
<value>{0} باید دقیقا یازده رقمی بوده و باید با 09 آغاز شده باشد!</value>
|
||||
</data>
|
||||
<data name="Compare" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید با مقدار فیلد {1} یکسان باشد!</value>
|
||||
</data>
|
||||
<data name="EmailAddress" xml:space="preserve">
|
||||
<value>نشانی پست الکترونیکی معتبر نمیباشد!</value>
|
||||
</data>
|
||||
<data name="Equal" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید یکسان باشد!</value>
|
||||
</data>
|
||||
<data name="FixLengthNumeric" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید دقیقا {1} رقم باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThan" xml:space="preserve">
|
||||
<value>مقدار {0} باید بزرگتر از {1} باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo" xml:space="preserve">
|
||||
<value>مقدار {0} باید بزرگتر یا مساوی {1} باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo_FieldValue" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید بزرگتر یا مساوی {1} باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo_TwoFields" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید بزرگتر یا مساوی مقدار فیلد {1} باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThan_FieldValue" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید بزرگتر از {1} باشد!</value>
|
||||
</data>
|
||||
<data name="GreaterThan_TwoFields" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید بزرگتر از مقدار فیلد {1} باشد!</value>
|
||||
</data>
|
||||
<data name="InvalidCode" xml:space="preserve">
|
||||
<value>کد {0} صحیح نمیباشد!</value>
|
||||
</data>
|
||||
<data name="NotValid" xml:space="preserve">
|
||||
<value>'{0}' معتبر نمیباشد!</value>
|
||||
</data>
|
||||
<data name="MaxCount" xml:space="preserve">
|
||||
<value>حداکثر تعداد {0} میتواند {1} حرف باشد!</value>
|
||||
</data>
|
||||
<data name="MaxLength" xml:space="preserve">
|
||||
<value>حداکثر طول فیلد {0} میتواند {1} حرف باشد!</value>
|
||||
</data>
|
||||
<data name="MinLength" xml:space="preserve">
|
||||
<value>طول متن فیلد '{0}' باید حداقل '{1}' کاراکتر باشد!</value>
|
||||
</data>
|
||||
<data name="NationalCode" xml:space="preserve">
|
||||
<value>{0} معتبر نمی باشد!</value>
|
||||
</data>
|
||||
<data name="NotFound" xml:space="preserve">
|
||||
<value>{0} یافت نشد!</value>
|
||||
</data>
|
||||
<data name="Range" xml:space="preserve">
|
||||
<value>مقدار فیلد {0} باید بزرگتر یا مساوی {1} و کوچکتر یا مساوی {2} باشد.</value>
|
||||
</data>
|
||||
<data name="RegularExpression" xml:space="preserve">
|
||||
<value>مقدار {0} معتبر نمیباشد!</value>
|
||||
</data>
|
||||
<data name="Repetitive" xml:space="preserve">
|
||||
<value>{0} تکراری است! لطفا از {0} دیگری استفاده نمایید.</value>
|
||||
</data>
|
||||
<data name="Required" xml:space="preserve">
|
||||
<value>تکمیل فیلد {0} الزامی است!</value>
|
||||
</data>
|
||||
<data name="Url" xml:space="preserve">
|
||||
<value>{0} معتبر نمیباشد!</value>
|
||||
</data>
|
||||
<data name="PostalCode" xml:space="preserve">
|
||||
<value>کد پستی معتبر نمیباشد! کد پستی باید دقیقا از ده رقم انگلیسی تشکیل شود!</value>
|
||||
</data>
|
||||
<data name="InvalidModelState" xml:space="preserve">
|
||||
<value>اطلاعات ورودی معتبر نمیباشد، لطفا اطلاعات خود را بررسی فرمایید</value>
|
||||
</data>
|
||||
<data name="Password" xml:space="preserve">
|
||||
<value>رمز عبور باید حداقل شامل یک حرف کوچک، یک حرف بزرگ، یک عدد، و یک کاراکتر خاص باشد و حداقل طول آن ۸ کاراکتر باشد</value>
|
||||
</data>
|
||||
<data name="Username" xml:space="preserve">
|
||||
<value>شناسهکاربری باید از شش تا بیست کاراکتر تشکیل شود. شما میتوانید از حروف a تا z بزرگ یا کوچک، اعداد از 0 تا 9 انگلیسی و زیرخط استفاده نمایید!</value>
|
||||
</data>
|
||||
</root>
|
||||
201
src/Core/Resources/Messages/Validations.resx
Normal file
201
src/Core/Resources/Messages/Validations.resx
Normal file
@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="CellPhoneNumber" xml:space="preserve">
|
||||
<value>{0} is not valid!</value>
|
||||
</data>
|
||||
<data name="Compare" xml:space="preserve">
|
||||
<value>{0} should be equql to {1}!</value>
|
||||
</data>
|
||||
<data name="EmailAddress" xml:space="preserve">
|
||||
<value>Email address is not valid!</value>
|
||||
</data>
|
||||
<data name="Equal" xml:space="preserve">
|
||||
<value>The {0} should be equal!</value>
|
||||
</data>
|
||||
<data name="FixLengthNumeric" xml:space="preserve">
|
||||
<value>Length of {0} must be {1}</value>
|
||||
</data>
|
||||
<data name="GreaterThan" xml:space="preserve">
|
||||
<value>{0} should be greater than {1}!</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo" xml:space="preserve">
|
||||
<value>{0} should be greater than or equal to {1}!</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo_FieldValue" xml:space="preserve">
|
||||
<value>Length of {0} greater or equal than {1}</value>
|
||||
</data>
|
||||
<data name="GreaterThanOrEqualTo_TwoFields" xml:space="preserve">
|
||||
<value>Length of {0} greater or equal than length of {1}</value>
|
||||
</data>
|
||||
<data name="GreaterThan_FieldValue" xml:space="preserve">
|
||||
<value>Length of {0} greater than {1}</value>
|
||||
</data>
|
||||
<data name="GreaterThan_TwoFields" xml:space="preserve">
|
||||
<value>Length of {0} greater than length of {1}</value>
|
||||
</data>
|
||||
<data name="InvalidCode" xml:space="preserve">
|
||||
<value>Invalid Code : {0}</value>
|
||||
</data>
|
||||
<data name="NotValid" xml:space="preserve">
|
||||
<value>'{0}' is not valid!</value>
|
||||
</data>
|
||||
<data name="MaxCount" xml:space="preserve">
|
||||
<value>Maximum Count of {0} is {1} !</value>
|
||||
</data>
|
||||
<data name="MaxLength" xml:space="preserve">
|
||||
<value>Max length of {0} is {1}!</value>
|
||||
</data>
|
||||
<data name="MinLength" xml:space="preserve">
|
||||
<value>The '{0}' value must be a string with a minimum length of '{1}'!</value>
|
||||
</data>
|
||||
<data name="NationalCode" xml:space="preserve">
|
||||
<value>{0} is not valid!</value>
|
||||
</data>
|
||||
<data name="NotFound" xml:space="preserve">
|
||||
<value>{0} Not found</value>
|
||||
</data>
|
||||
<data name="Range" xml:space="preserve">
|
||||
<value>{0} should be greater than or equal to {1} and less than or equal to {2}!</value>
|
||||
</data>
|
||||
<data name="RegularExpression" xml:space="preserve">
|
||||
<value>Value of {0} is not valid.</value>
|
||||
</data>
|
||||
<data name="Repetitive" xml:space="preserve">
|
||||
<value>{0} is repetitive. please use an other {0}</value>
|
||||
</data>
|
||||
<data name="Required" xml:space="preserve">
|
||||
<value>{0} is required!</value>
|
||||
</data>
|
||||
<data name="Url" xml:space="preserve">
|
||||
<value>{0} is not valid!</value>
|
||||
</data>
|
||||
<data name="PostalCode" xml:space="preserve">
|
||||
<value>postalcode</value>
|
||||
</data>
|
||||
<data name="InvalidModelState" xml:space="preserve">
|
||||
<value>Input data is not valid</value>
|
||||
</data>
|
||||
<data name="Password" xml:space="preserve">
|
||||
<value>Password is not valid!</value>
|
||||
</data>
|
||||
<data name="Username" xml:space="preserve">
|
||||
<value>Username is not valid!</value>
|
||||
</data>
|
||||
</root>
|
||||
60
src/Core/Resources/Resources.csproj
Normal file
60
src/Core/Resources/Resources.csproj
Normal file
@ -0,0 +1,60 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="ButtonCaptions.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>ButtonCaptions.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="DataDictionary.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>DataDictionary.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Messages\Errors.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Errors.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Messages\Successes.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Successes.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Messages\Validations.Designer.cs">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Validations.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="ButtonCaptions.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>ButtonCaptions.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="DataDictionary.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>DataDictionary.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="Messages\Errors.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Errors.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="Messages\Successes.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Successes.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Update="Messages\Validations.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Validations.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
8
src/Framework/Framework.DataType/GuidHelper.cs
Normal file
8
src/Framework/Framework.DataType/GuidHelper.cs
Normal file
@ -0,0 +1,8 @@
|
||||
namespace Framework.DataType;
|
||||
|
||||
public static class GuidHelper
|
||||
{
|
||||
public static bool IsNullOrDefault(this Guid? id) => id == null || id == Guid.Empty;
|
||||
public static bool IsEmpty(this Guid id) => id == Guid.Empty;
|
||||
|
||||
}
|
||||
@ -0,0 +1,85 @@
|
||||
namespace Framework.DataType;
|
||||
|
||||
public class ErrorMessage
|
||||
{
|
||||
public ErrorMessage(string message, ErrorType errorType, Exception? exception = null)
|
||||
{
|
||||
Message = message;
|
||||
ErrorType = errorType;
|
||||
Exception = exception;
|
||||
}
|
||||
|
||||
public string Message { get; set; }
|
||||
public ErrorType ErrorType { get; set; }
|
||||
public Exception? Exception { get; set; }
|
||||
}
|
||||
|
||||
public enum ErrorType
|
||||
{
|
||||
// Success
|
||||
None = 0,
|
||||
|
||||
// General Errors
|
||||
UnknownError = 1,
|
||||
InvalidArgument = 2,
|
||||
InvalidOperation = 3,
|
||||
NullReference = 4,
|
||||
OutOfRange = 5,
|
||||
Timeout = 6,
|
||||
ResourceNotFound = 7,
|
||||
InvalidState = 8,
|
||||
InternalError = 9,
|
||||
|
||||
// Network Errors
|
||||
NetworkUnavailable = 100,
|
||||
ConnectionFailed = 101,
|
||||
TimeoutError = 102,
|
||||
ServerError = 103,
|
||||
RequestTimeout = 104,
|
||||
UnauthorizedAccess = 105,
|
||||
|
||||
// File System Errors
|
||||
FileNotFound = 200,
|
||||
FileAccessDenied = 201,
|
||||
FileReadError = 202,
|
||||
FileWriteError = 203,
|
||||
DirectoryNotFound = 204,
|
||||
|
||||
// Database Errors
|
||||
DatabaseConnectionFailed = 300,
|
||||
QueryExecutionError = 301,
|
||||
DataIntegrityError = 302,
|
||||
RecordNotFound = 303,
|
||||
DuplicateRecord = 304,
|
||||
|
||||
// Authentication/Authorization Errors
|
||||
InvalidCredentials = 400,
|
||||
AccountLocked = 401,
|
||||
SessionExpired = 402,
|
||||
AccessDenied = 403,
|
||||
|
||||
// Validation Errors
|
||||
ValidationFailed = 500,
|
||||
RequiredFieldMissing = 501,
|
||||
InvalidFormat = 502,
|
||||
|
||||
// Application Specific Errors
|
||||
FeatureNotImplemented = 600,
|
||||
ServiceUnavailable = 601,
|
||||
OperationNotSupported = 602,
|
||||
|
||||
// Security Errors
|
||||
InvalidToken = 700,
|
||||
TokenExpired = 701,
|
||||
PermissionDenied = 702,
|
||||
|
||||
// System Errors
|
||||
OutOfMemory = 800,
|
||||
StackOverflow = 801,
|
||||
DiskSpaceLow = 802,
|
||||
UnhandledException = 803,
|
||||
NotFound = 804,
|
||||
|
||||
//Custom
|
||||
BalanceIsNotEnough = 900
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
namespace Framework.DataType;
|
||||
|
||||
public class ResultContract
|
||||
{
|
||||
public bool IsSuccessful { get; set; }
|
||||
public ErrorMessage? ErrorMessage { get; private set; }
|
||||
public string[]? InformationMessages { get; private set; }
|
||||
public string? SuccessMessage { get; private set; }
|
||||
public DateTime Timestamp { get; private set; }
|
||||
public string? RequestId { get; set; }
|
||||
public string? DebugInfo { get; set; }
|
||||
public string? CorrelationId { get; set; }
|
||||
|
||||
protected ResultContract(bool isSuccessful)
|
||||
{
|
||||
Timestamp = DateTime.Now;
|
||||
IsSuccessful = isSuccessful;
|
||||
}
|
||||
|
||||
|
||||
public void SetSuccessMessage(string successMessage)
|
||||
{
|
||||
SuccessMessage = successMessage;
|
||||
IsSuccessful = true;
|
||||
}
|
||||
|
||||
public void SetErrorMessage(ErrorMessage errorMessage)
|
||||
{
|
||||
ErrorMessage = errorMessage;
|
||||
IsSuccessful = false;
|
||||
}
|
||||
|
||||
public void AddInformationMessages(string[] informationMessages)
|
||||
{
|
||||
InformationMessages = informationMessages;
|
||||
}
|
||||
|
||||
public static implicit operator
|
||||
ResultContract(bool result) => new ResultContract(result);
|
||||
|
||||
public static implicit operator ResultContract((ErrorType type, string message) result)
|
||||
{
|
||||
var res = new ResultContract(false);
|
||||
res.SetErrorMessage(new ErrorMessage(result.message, result.type));
|
||||
return res;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class ResultContract<TData> : ResultContract
|
||||
{
|
||||
protected ResultContract(TData? data) : base(true)
|
||||
{
|
||||
Data = data;
|
||||
}
|
||||
|
||||
public TData? Data { get; set; }
|
||||
|
||||
public static implicit operator
|
||||
ResultContract<TData>(TData data) => new ResultContract<TData>(data);
|
||||
|
||||
public static implicit operator
|
||||
ResultContract<TData>((ErrorType type, string message) result)
|
||||
{
|
||||
var res = new ResultContract<TData>(default!);
|
||||
res.SetErrorMessage(new ErrorMessage(result.message, result.type));
|
||||
return res;
|
||||
}
|
||||
}
|
||||
160
src/Framework/Framework.DataType/String.cs
Normal file
160
src/Framework/Framework.DataType/String.cs
Normal file
@ -0,0 +1,160 @@
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Framework.DataType;
|
||||
|
||||
public static class String
|
||||
{
|
||||
static String()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public static string GenerateSlug(this string phrase)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(phrase))
|
||||
return string.Empty;
|
||||
|
||||
var slug = phrase.Trim().ToLowerInvariant();
|
||||
|
||||
slug = Regex.Replace(slug, @"[\s]+", "-"); // شامل نیمفاصله فارسی (U+200C)
|
||||
|
||||
slug = Regex.Replace(slug, @"[^ء-یa-z0-9\-]", "");
|
||||
|
||||
slug = Regex.Replace(slug, @"-+", "-");
|
||||
|
||||
slug = slug.Trim('-');
|
||||
|
||||
var nanoTimeStr = DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString();
|
||||
var suffix = nanoTimeStr[^5..];
|
||||
|
||||
return $"{slug}-{suffix}";
|
||||
}
|
||||
|
||||
public static bool IsValidNationalCode(this string nationalCode)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(nationalCode) || nationalCode.Length != 10)
|
||||
return false;
|
||||
|
||||
if (!nationalCode.All(char.IsDigit))
|
||||
return false;
|
||||
|
||||
int checksum = 0;
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
checksum += (int)char.GetNumericValue(nationalCode[i]) * (10 - i);
|
||||
}
|
||||
int remainder = checksum % 11;
|
||||
int controlDigit = (int)char.GetNumericValue(nationalCode[9]);
|
||||
|
||||
return (remainder < 2 && controlDigit == remainder) || (remainder >= 2 && controlDigit == 11 - remainder);
|
||||
}
|
||||
|
||||
public static bool IsValidPostalCode(this string postalCode)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(postalCode) || postalCode.Length != 10)
|
||||
return false;
|
||||
|
||||
if (!postalCode.All(char.IsDigit))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static bool IsValidEmail(this string email)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(email))
|
||||
return false;
|
||||
|
||||
var emailRegex = @"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$";
|
||||
|
||||
return Regex.IsMatch(email, emailRegex);
|
||||
}
|
||||
|
||||
public static string? Fix(this string? value)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value: value))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
value =
|
||||
value.Trim();
|
||||
|
||||
while (value.Contains(value: " "))
|
||||
{
|
||||
value = value.Replace
|
||||
(oldValue: " ", newValue: " ");
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
public static bool IsValidMobile(this string? mobile)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(mobile) == true)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var mobileRegex = @"^09\d{9}$";
|
||||
|
||||
return Regex.IsMatch(mobile, mobileRegex);
|
||||
}
|
||||
|
||||
public static bool IsValidPassword(this string password)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(password) || password.Length < 8)
|
||||
return false;
|
||||
|
||||
var passwordRegex = @"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&#])[A-Za-z\d@$!%*?&#]{8,}$";
|
||||
return Regex.IsMatch(password, passwordRegex);
|
||||
}
|
||||
|
||||
public static string? ConvertDigitsToUnicode(this object? value)
|
||||
{
|
||||
if (value is null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var valueString =
|
||||
value.ToString();
|
||||
|
||||
if (valueString is null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var currentUICultureName =
|
||||
System.Threading.Thread.CurrentThread
|
||||
.CurrentUICulture.Parent.Name.ToUpper();
|
||||
|
||||
switch (currentUICultureName)
|
||||
{
|
||||
case "FA":
|
||||
case "AR":
|
||||
{
|
||||
valueString =
|
||||
valueString
|
||||
.Replace(oldChar: '0', newChar: '۰')
|
||||
.Replace(oldChar: '1', newChar: '۱')
|
||||
.Replace(oldChar: '2', newChar: '۲')
|
||||
.Replace(oldChar: '3', newChar: '۳')
|
||||
.Replace(oldChar: '4', newChar: '۴')
|
||||
.Replace(oldChar: '5', newChar: '۵')
|
||||
.Replace(oldChar: '6', newChar: '۶')
|
||||
.Replace(oldChar: '7', newChar: '۷')
|
||||
.Replace(oldChar: '8', newChar: '۸')
|
||||
.Replace(oldChar: '9', newChar: '۹')
|
||||
;
|
||||
|
||||
return valueString;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return valueString;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
src/Persistence/Persistence/DatabaseContext.cs
Normal file
16
src/Persistence/Persistence/DatabaseContext.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using Domain.Aggregates.Users;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Persistence;
|
||||
|
||||
public class DatabaseContext: DbContext
|
||||
{
|
||||
public DatabaseContext(DbContextOptions options) : base(options)
|
||||
{
|
||||
Database.EnsureCreated();
|
||||
}
|
||||
|
||||
|
||||
public DbSet<User> Users { get; set; }
|
||||
|
||||
}
|
||||
18
src/Persistence/Persistence/Persistence.csproj
Normal file
18
src/Persistence/Persistence/Persistence.csproj
Normal file
@ -0,0 +1,18 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.4" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Core\Domain\Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@ -0,0 +1,45 @@
|
||||
using Domain.Aggregates.Users;
|
||||
using Domain.Aggregates.Users.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Persistence.Repositories.Aggregates.Users;
|
||||
|
||||
public class UserRepository
|
||||
(DatabaseContext databaseContext) : IUserRepository
|
||||
{
|
||||
public async Task AddAsync(User user)
|
||||
{
|
||||
await databaseContext.AddAsync(user);
|
||||
}
|
||||
|
||||
public async Task<List<User>> GetAllAsync()
|
||||
{
|
||||
var users =
|
||||
await databaseContext.Users
|
||||
.Where(x => x.IsDeleted == false)
|
||||
.ToListAsync();
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
public async Task<User?> GetAsync(Guid userId)
|
||||
{
|
||||
var user =
|
||||
await databaseContext.Users
|
||||
.Where(x => x.IsDeleted == false)
|
||||
.Where(x => x.Id == userId)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public void Remove(User user)
|
||||
{
|
||||
user.Delete();
|
||||
}
|
||||
|
||||
public async Task SaveChangesAsync()
|
||||
{
|
||||
await databaseContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
63
src/Presentation/Server/Infrastructure/BasePageModel.cs
Normal file
63
src/Presentation/Server/Infrastructure/BasePageModel.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using Server.Infrastructure.Messages;
|
||||
|
||||
namespace Server.Infrastructure;
|
||||
|
||||
public abstract class BasePageModel :
|
||||
Microsoft.AspNetCore.Mvc.RazorPages.PageModel, IMessageHandler
|
||||
{
|
||||
public BasePageModel() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public bool AddPageError(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.PageError, message: message);
|
||||
}
|
||||
|
||||
public bool AddPageWarning(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.PageWarning, message: message);
|
||||
}
|
||||
|
||||
public bool AddPageSuccess(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.PageSuccess, message: message);
|
||||
}
|
||||
|
||||
public bool AddToastError(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.ToastError, message: message);
|
||||
}
|
||||
|
||||
public bool AddToastWarning(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.ToastWarning, message: message);
|
||||
}
|
||||
|
||||
public bool AddToastSuccess(string? message)
|
||||
{
|
||||
return AddMessage
|
||||
(type: MessageType.ToastSuccess, message: message);
|
||||
}
|
||||
|
||||
public bool AddMessage(MessageType type, string? message)
|
||||
{
|
||||
return Utility.AddMessage
|
||||
(tempData: TempData, type: type, message: message);
|
||||
}
|
||||
|
||||
protected string SetReturnUrl(string? returnUrl)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value: returnUrl))
|
||||
{
|
||||
returnUrl = "./Index";
|
||||
}
|
||||
|
||||
return returnUrl;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using Server.Infrastructure.Settings;
|
||||
|
||||
namespace Server.Infrastructure.Extensions.ServiceCollections;
|
||||
|
||||
public static class ConfigurationExtensions
|
||||
{
|
||||
public static WebApplicationBuilder AddConfiguration(this WebApplicationBuilder builder)
|
||||
{
|
||||
builder.Services.Configure<ApplicationSettings>
|
||||
(builder.Configuration.GetSection(key: ApplicationSettings.KeyName))
|
||||
.AddSingleton
|
||||
(implementationFactory: serviceType =>
|
||||
{
|
||||
var result =
|
||||
serviceType.GetRequiredService
|
||||
<IOptions<ApplicationSettings>>().Value;
|
||||
|
||||
return result;
|
||||
});
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
407
src/Presentation/Server/Infrastructure/HtmlHelpers.cs
Normal file
407
src/Presentation/Server/Infrastructure/HtmlHelpers.cs
Normal file
@ -0,0 +1,407 @@
|
||||
namespace Server.Infrastructure;
|
||||
|
||||
public static class HtmlHelpers
|
||||
{
|
||||
static HtmlHelpers()
|
||||
{
|
||||
}
|
||||
|
||||
public static string DefaultValue
|
||||
{
|
||||
get
|
||||
{
|
||||
//return null;
|
||||
//return string.Empty;
|
||||
return "-----";
|
||||
}
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayInteger
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, long? value)
|
||||
{
|
||||
if (value.HasValue == false)
|
||||
{
|
||||
return html.Raw(value: DefaultValue);
|
||||
}
|
||||
|
||||
var result =
|
||||
value.Value.ToString(format: "#,##0");
|
||||
|
||||
//result =
|
||||
// Convert.DigitsToUnicode(value: result);
|
||||
|
||||
return html.Raw(value: result);
|
||||
}
|
||||
|
||||
//public static Microsoft.AspNetCore.Html
|
||||
// .IHtmlContent Ub_DisplayRowNumberWithTd
|
||||
// (this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, long? value)
|
||||
//{
|
||||
// var td =
|
||||
// new Microsoft.AspNetCore.Mvc
|
||||
// .Rendering.TagBuilder(tagName: "td");
|
||||
|
||||
// td.AddCssClass(value: "text-center");
|
||||
|
||||
// var innerHtml =
|
||||
// Ub_DisplayInteger(html: html, value: value);
|
||||
|
||||
// td.InnerHtml.AppendHtml(content: innerHtml);
|
||||
|
||||
// return td;
|
||||
//}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayStringWithTd
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, string? value)
|
||||
{
|
||||
var td =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "td");
|
||||
|
||||
td.AddCssClass("align-middle text-center");
|
||||
|
||||
td.InnerHtml.Append(value!);
|
||||
|
||||
return td;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayStringWithTh
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, string? value)
|
||||
{
|
||||
var td =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "th");
|
||||
|
||||
td.AddCssClass("align-middle text-center");
|
||||
|
||||
td.InnerHtml.Append(value!);
|
||||
|
||||
return td;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayBoolean
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, bool? value)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass("d-flex justify-content-center align-items-center");
|
||||
|
||||
var input =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "input");
|
||||
|
||||
input.AddCssClass("form-check-input m-0");
|
||||
|
||||
input.Attributes.Add
|
||||
(key: "type", value: "checkbox");
|
||||
|
||||
input.Attributes.Add
|
||||
(key: "disabled", value: "disabled");
|
||||
|
||||
if (value.HasValue && value.Value)
|
||||
{
|
||||
input.Attributes.Add
|
||||
(key: "checked", value: "checked");
|
||||
}
|
||||
|
||||
div.InnerHtml.AppendHtml(content: input);
|
||||
|
||||
return div;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayBooleanWithTd
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, bool? value)
|
||||
{
|
||||
var td =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "td");
|
||||
|
||||
td.AddCssClass("align-middle text-center");
|
||||
|
||||
var innerHtml =
|
||||
html.Ub_DisplayBoolean(value: value);
|
||||
|
||||
td.InnerHtml.AppendHtml(content: innerHtml);
|
||||
|
||||
return td;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayIntegerWithTd
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, long? value)
|
||||
{
|
||||
var td =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "td");
|
||||
|
||||
td.Attributes.Add
|
||||
(key: "dir", value: "ltr");
|
||||
|
||||
var innerHtml =
|
||||
html.Ub_DisplayInteger(value: value);
|
||||
|
||||
td.AddCssClass("align-middle text-center");
|
||||
|
||||
td.InnerHtml.AppendHtml(content: innerHtml);
|
||||
|
||||
return td;
|
||||
}
|
||||
|
||||
//public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayDateTime
|
||||
// (this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, System.DateTime? value)
|
||||
//{
|
||||
// if (value.HasValue == false)
|
||||
// {
|
||||
// return html.Raw(value: DefaultValue);
|
||||
// }
|
||||
|
||||
// var result =
|
||||
// value.Value.ToString
|
||||
// (format: "yyyy/MM/dd - HH:mm:ss");
|
||||
|
||||
// result =
|
||||
// Convert.DigitsToUnicode(value: result);
|
||||
|
||||
// return html.Raw(value: result);
|
||||
//}
|
||||
|
||||
//public static Microsoft.AspNetCore.Html.IHtmlContent Ub_DisplayDateTimeWithTd
|
||||
// (this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, System.DateTime? value)
|
||||
//{
|
||||
// var td =
|
||||
// new Microsoft.AspNetCore.Mvc
|
||||
// .Rendering.TagBuilder(tagName: "td");
|
||||
|
||||
// td.Attributes.Add
|
||||
// (key: "dir", value: "ltr");
|
||||
|
||||
// var innerHtml =
|
||||
// Ub_DisplayDateTime(html: html, value: value);
|
||||
|
||||
// td.InnerHtml.AppendHtml(content: innerHtml);
|
||||
|
||||
// return td;
|
||||
//}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetLinkCaptionForList
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconList();
|
||||
|
||||
var span =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "span");
|
||||
|
||||
span.AddCssClass(value: "mx-1");
|
||||
|
||||
span.InnerHtml.Append(unencoded: "[");
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.AppendHtml(content: icon);
|
||||
span.InnerHtml.Append(unencoded: Resources.ButtonCaptions.BackToList);
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.Append(unencoded: "]");
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetLinkCaptionForDetails
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconDetails();
|
||||
|
||||
var span =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "span");
|
||||
|
||||
span.AddCssClass(value: "mx-1");
|
||||
|
||||
span.InnerHtml.Append(unencoded: "[");
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.AppendHtml(content: icon);
|
||||
span.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Details);
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.Append(unencoded: "]");
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetLinkCaptionForCreate
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconCreate();
|
||||
|
||||
var span =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "span");
|
||||
|
||||
//span.AddCssClass(value: "mx-1");
|
||||
|
||||
//span.InnerHtml.Append(unencoded: "[");
|
||||
//span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.AppendHtml(content: icon);
|
||||
span.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Create);
|
||||
//span.InnerHtml.Append(unencoded: " ");
|
||||
//span.InnerHtml.Append(unencoded: "]");
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetLinkCaptionForUpdate
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconUpdate();
|
||||
|
||||
var span =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "span");
|
||||
|
||||
span.AddCssClass(value: "mx-1");
|
||||
|
||||
span.InnerHtml.Append(unencoded: "[");
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.AppendHtml(content: icon);
|
||||
span.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Update);
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.Append(unencoded: "]");
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetLinkCaptionForDelete
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconDelete();
|
||||
|
||||
var span =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "span");
|
||||
|
||||
span.AddCssClass(value: "mx-1");
|
||||
|
||||
span.InnerHtml.Append(unencoded: "[");
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.AppendHtml(content: icon);
|
||||
span.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Delete);
|
||||
span.InnerHtml.Append(unencoded: " ");
|
||||
span.InnerHtml.Append(unencoded: "]");
|
||||
|
||||
return span;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetIconDetails
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconDetails();
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent Ub_GetIconCreate
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconCreate();
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent DtatGetIconUpdate
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconUpdate();
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
public static Microsoft.AspNetCore.Html.IHtmlContent DtatGetIconDelete
|
||||
(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html)
|
||||
{
|
||||
if (html is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(html));
|
||||
}
|
||||
|
||||
var icon =
|
||||
TagHelpers.Utility.GetIconDelete();
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
//------------------ Custom's
|
||||
|
||||
//public static Microsoft.AspNetCore.Html.IHtmlContent TextClickTo(this Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper html, string action, string iconClass, string to)
|
||||
//{
|
||||
// if (html is null)
|
||||
// {
|
||||
// throw new System
|
||||
// .ArgumentNullException(paramName: nameof(html));
|
||||
// }
|
||||
|
||||
// var p =
|
||||
// new Microsoft.AspNetCore.Mvc
|
||||
// .Rendering.TagBuilder(tagName: "p");
|
||||
|
||||
// p.AddCssClass("d-flex align-items-center fw-light");
|
||||
|
||||
// var i = $"<i class=\"flex-center border rounded fs-4 mx-2 p-1 {iconClass}\"></i>";
|
||||
|
||||
// var format = Resources.Messages.Information.ClickToThe;
|
||||
|
||||
// p.InnerHtml.AppendHtml(string.Format(format, i, action, to));
|
||||
|
||||
// return p;
|
||||
//}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
namespace Server.Infrastructure.Messages;
|
||||
|
||||
public interface IMessageHandler
|
||||
{
|
||||
bool AddPageError(string? message);
|
||||
|
||||
bool AddPageWarning(string? message);
|
||||
|
||||
bool AddPageSuccess(string? message);
|
||||
|
||||
|
||||
|
||||
bool AddToastError(string? message);
|
||||
|
||||
bool AddToastWarning(string? message);
|
||||
|
||||
bool AddToastSuccess(string? message);
|
||||
|
||||
|
||||
|
||||
bool AddMessage(MessageType type, string? message);
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
namespace Server.Infrastructure.Messages;
|
||||
|
||||
public enum MessageType : byte
|
||||
{
|
||||
PageError,
|
||||
PageWarning,
|
||||
PageSuccess,
|
||||
|
||||
ToastError,
|
||||
ToastWarning,
|
||||
ToastSuccess,
|
||||
}
|
||||
60
src/Presentation/Server/Infrastructure/Messages/Utility.cs
Normal file
60
src/Presentation/Server/Infrastructure/Messages/Utility.cs
Normal file
@ -0,0 +1,60 @@
|
||||
namespace Server.Infrastructure.Messages;
|
||||
|
||||
|
||||
public static class Utility
|
||||
{
|
||||
static Utility()
|
||||
{
|
||||
}
|
||||
|
||||
public static bool AddMessage
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataDictionary tempData,
|
||||
MessageType type, string? message)
|
||||
{
|
||||
message =
|
||||
Framework.DataType.String.Fix(message);
|
||||
|
||||
if (message == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
// به دلایل خیلی زیادی، کد ذیل به صورتی که ملاحظه میکنید
|
||||
// نوشته شده است، لذا در آن هیچگونه تغییری اعمال نکنید
|
||||
// **************************************************
|
||||
System.Collections.Generic.List<string>? list;
|
||||
|
||||
var tempDataItems =
|
||||
(tempData[key: type.ToString()] as
|
||||
System.Collections.Generic.IList<string>);
|
||||
|
||||
if (tempDataItems == null)
|
||||
{
|
||||
list = new System.Collections.Generic.List<string>();
|
||||
}
|
||||
else
|
||||
{
|
||||
list =
|
||||
tempDataItems as
|
||||
System.Collections.Generic.List<string>;
|
||||
|
||||
if (list == null)
|
||||
{
|
||||
list = tempDataItems.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
tempData[key: type.ToString()] = list;
|
||||
// **************************************************
|
||||
|
||||
if (list.Contains(item: message))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
list.Add(item: message);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
namespace Server.Infrastructure.Settings;
|
||||
|
||||
public class ApplicationSettings : object
|
||||
{
|
||||
public static readonly string KeyName = nameof(ApplicationSettings);
|
||||
|
||||
public ApplicationSettings() : base()
|
||||
{
|
||||
ToastSettings =
|
||||
new ToastSettings();
|
||||
|
||||
CultureSettings =
|
||||
new CultureSettings();
|
||||
}
|
||||
|
||||
// **********
|
||||
public string? Version { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public string? MasterPassword { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public string[]? ActivationKeys { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public ToastSettings ToastSettings { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public CultureSettings CultureSettings { get; set; }
|
||||
// **********
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
namespace Server.Infrastructure.Settings;
|
||||
|
||||
public class CultureSettings
|
||||
{
|
||||
public CultureSettings()
|
||||
{
|
||||
DefaultCulture = new CultureData()
|
||||
{
|
||||
Name = "فارسی - ایران",
|
||||
Culture = "fa-IR",
|
||||
};
|
||||
|
||||
SupportedCulture =
|
||||
new List<CultureData>();
|
||||
}
|
||||
|
||||
|
||||
// **********
|
||||
public CultureData DefaultCulture { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public List<CultureData> SupportedCulture { get; set; }
|
||||
// **********
|
||||
|
||||
public class CultureData
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Culture { get; set; }
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
namespace Server.Infrastructure.Settings
|
||||
{
|
||||
public class ToastSettings : object
|
||||
{
|
||||
public ToastSettings() : base()
|
||||
{
|
||||
DelayStep = 1000;
|
||||
InitialDelay = 4000;
|
||||
|
||||
Style =
|
||||
"top-25 end-0 p-3 opacity-50";
|
||||
}
|
||||
|
||||
// **********
|
||||
public string Style { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public int DelayStep { get; set; }
|
||||
// **********
|
||||
|
||||
// **********
|
||||
public int InitialDelay { get; set; }
|
||||
// **********
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "button-create",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonCreateTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ButtonCreateTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconCreate();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "submit");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-primary");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Create);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "button-delete",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonDeleteTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ButtonDeleteTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconDelete();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "submit");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-danger");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Delete);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "button-reset",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonResetTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ButtonResetTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconReset();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "reset");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-secondary");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Reset);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "button-save",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonSaveTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ButtonSaveTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconUpdate();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "submit");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-primary");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Save);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "button-send",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonSendTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ButtonSendTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconSend();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "submit");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-primary");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Resources.ButtonCaptions.Send);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,49 @@
|
||||
namespace Server.Infrastructure.TagHelpers.Buttons;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "uni-button",
|
||||
ParentTag = "section-form-buttons",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ButtonSubmitCustomLabel :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public string Label { get; set; }
|
||||
public ButtonSubmitCustomLabel() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var icon =
|
||||
Utility.GetIconUpdate();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "button");
|
||||
|
||||
body.Attributes.Add
|
||||
(key: "type", value: "submit");
|
||||
|
||||
body.AddCssClass(value: "btn");
|
||||
body.AddCssClass(value: "btn-primary");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: icon);
|
||||
body.InnerHtml.Append(unencoded: Label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,176 @@
|
||||
//using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
//namespace Infrastructure.TagHelpers.CheckThemOut;
|
||||
|
||||
//[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
// (tag: Constants.HtmlTag.TableData,
|
||||
// Attributes = "page-information-view-model")]
|
||||
//public class PagerTagHelper : Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
//{
|
||||
// #region Constructor(s)
|
||||
//#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
// public PagerTagHelper
|
||||
//#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||
// (Microsoft.AspNetCore.Mvc.Routing.IUrlHelperFactory urlHelperFactory) : base()
|
||||
// {
|
||||
// PageAction = "./Index";
|
||||
|
||||
// UrlHelperFactory = urlHelperFactory;
|
||||
// }
|
||||
// #endregion /Constructor(s)
|
||||
|
||||
// #region Property(ies)
|
||||
// public string PageClass { get; set; }
|
||||
|
||||
// public string? PageAction { get; set; }
|
||||
|
||||
// public string PageDefaultClass { get; set; }
|
||||
|
||||
// public string PageSelectedClass { get; set; }
|
||||
|
||||
// public bool PageClassesEnabled { get; set; }
|
||||
|
||||
// [Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
// [Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
// public Microsoft.AspNetCore.Mvc.Rendering.ViewContext ViewContext { get; set; }
|
||||
|
||||
// public ViewModels.Shared.PaginationViewModel PageInformationViewModel { get; set; }
|
||||
|
||||
// protected Microsoft.AspNetCore.Mvc.Routing.IUrlHelperFactory UrlHelperFactory { get; }
|
||||
// #endregion /Property(ies)
|
||||
|
||||
// #region Process
|
||||
// // Development in progress...
|
||||
// public override
|
||||
// void
|
||||
// Process
|
||||
// (Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
// Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
// {
|
||||
// var urlHelper =
|
||||
// UrlHelperFactory.GetUrlHelper
|
||||
// (context: ViewContext);
|
||||
|
||||
// var result =
|
||||
// new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder
|
||||
// (tagName: Constants.HtmlTag.TableData);
|
||||
|
||||
// var ulTag =
|
||||
// new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder
|
||||
// (tagName: Constants.HtmlTag.Unorderedlist);
|
||||
|
||||
// ulTag.AddCssClass(value: "pagination");
|
||||
|
||||
// // **************************************************
|
||||
// var liTag = BuildListItemTag();
|
||||
|
||||
// var aTag =
|
||||
// BuildAnchorTag(urlHelper: urlHelper,
|
||||
// caption: Resources.ButtonCaptions.Previous,
|
||||
// pageNumber: PageInformationViewModel.PageNumber - 1);
|
||||
|
||||
// if (PageInformationViewModel.PageNumber <= 1)
|
||||
// {
|
||||
// aTag.AddCssClass(value: Constants.CssClass.Disabled);
|
||||
// }
|
||||
// // **************************************************
|
||||
|
||||
|
||||
// // **************************************************
|
||||
// liTag.InnerHtml.AppendHtml(content: aTag);
|
||||
|
||||
// ulTag.InnerHtml.AppendHtml(content: liTag);
|
||||
// // **************************************************
|
||||
|
||||
// for (int index = 1; index <= PageInformationViewModel.PageCount; index++)
|
||||
// {
|
||||
// if (index == PageInformationViewModel.PageNumber ||
|
||||
// index == PageInformationViewModel.PageNumber - 1 ||
|
||||
// index == PageInformationViewModel.PageNumber + 1)
|
||||
// {
|
||||
// liTag =
|
||||
// BuildListItemTag();
|
||||
|
||||
// aTag = BuildAnchorTag
|
||||
// (pageNumber: index,
|
||||
// urlHelper: urlHelper, caption: index.ToString());
|
||||
|
||||
// liTag.InnerHtml.AppendHtml(content: aTag);
|
||||
|
||||
// ulTag.InnerHtml.AppendHtml(content: liTag);
|
||||
// }
|
||||
// }
|
||||
|
||||
// // **************************************************
|
||||
// liTag = BuildListItemTag();
|
||||
|
||||
// aTag = BuildAnchorTag
|
||||
// (urlHelper: urlHelper,
|
||||
// caption: Resources.ButtonCaptions.Next,
|
||||
// pageNumber: PageInformationViewModel.PageNumber + 1);
|
||||
|
||||
// if (PageInformationViewModel.PageNumber >= PageInformationViewModel.PageCount)
|
||||
// {
|
||||
// aTag.AddCssClass(value: Constants.CssClass.Disabled);
|
||||
// }
|
||||
// // **************************************************
|
||||
|
||||
// // **************************************************
|
||||
// liTag.InnerHtml.AppendHtml(content: aTag);
|
||||
// ulTag.InnerHtml.AppendHtml(content: liTag);
|
||||
// // **************************************************
|
||||
|
||||
// result.InnerHtml.AppendHtml(content: ulTag);
|
||||
|
||||
// output.Content.AppendHtml(htmlContent: result.InnerHtml);
|
||||
// }
|
||||
// #endregion /Process
|
||||
|
||||
// #region Build List Item Tag
|
||||
// private static Microsoft.AspNetCore.Mvc.Rendering.TagBuilder BuildListItemTag()
|
||||
// {
|
||||
// var tag =
|
||||
// new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder
|
||||
// (tagName: Constants.HtmlTag.ListItem);
|
||||
|
||||
// tag.AddCssClass(value: "page-item");
|
||||
|
||||
// return tag;
|
||||
// }
|
||||
// #endregion /Build List Item Tag
|
||||
|
||||
// #region Build Anchor Tag
|
||||
// private
|
||||
// Microsoft.AspNetCore.Mvc.Rendering.TagBuilder
|
||||
// BuildAnchorTag
|
||||
// (string caption, int pageNumber, IUrlHelper urlHelper)
|
||||
// {
|
||||
// var tag =
|
||||
// new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder
|
||||
// (tagName: Constants.HtmlTag.Anchor);
|
||||
|
||||
// tag.Attributes["href"] =
|
||||
// // .Action -> using Microsoft.AspNetCore.Mvc
|
||||
// urlHelper.Action
|
||||
// (action: PageAction,
|
||||
// values: new { PageNumber = pageNumber, PageInformationViewModel.PageSize });
|
||||
|
||||
// if (PageClassesEnabled)
|
||||
// {
|
||||
// var style =
|
||||
// pageNumber ==
|
||||
// PageInformationViewModel.PageNumber ?
|
||||
// PageSelectedClass : PageDefaultClass;
|
||||
|
||||
// var cssClass =
|
||||
// $"{PageClass} {style}";
|
||||
|
||||
// tag.AddCssClass(value: cssClass);
|
||||
// }
|
||||
|
||||
// tag.InnerHtml.Append(unencoded: caption);
|
||||
|
||||
// return tag;
|
||||
// }
|
||||
// #endregion /Build Anchor Tag
|
||||
//}
|
||||
@ -0,0 +1,5 @@
|
||||
https://bigfont.ca/taghelper-structure/
|
||||
https://www.yogihosting.com/aspnet-core-custom-tag-helpers/
|
||||
https://wesleycabus.be/writing-a-custom-taghelper-in-aspnet-5
|
||||
https://riptutorial.com/asp-net-core/example/11152/custom-tag-helper
|
||||
https://stackoverflow.com/questions/51904629/how-to-create-custom-tag-helper-containing-other-tag-helpers
|
||||
@ -0,0 +1,106 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.FullCheckBox,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class FullCheckBoxTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public FullCheckBoxTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
if (ViewContext is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(ViewContext));
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var innerDiv =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
innerDiv.AddCssClass(value: "form-check");
|
||||
|
||||
div.InnerHtml.AppendHtml(content: innerDiv);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var checkBox =
|
||||
await
|
||||
Utility.GenerateCheckBoxAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
innerDiv.InnerHtml.AppendHtml(encoded: checkBox);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var label =
|
||||
await
|
||||
Utility.GenerateLabelAsync(generator: Generator,
|
||||
viewContext: ViewContext, @for: For, cssClass: "form-check-label");
|
||||
|
||||
innerDiv.InnerHtml.AppendHtml(encoded: label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
|
||||
//private async System.Threading.Tasks.Task<string> CreateLabelElementAsync()
|
||||
//{
|
||||
// var tagBuilder =
|
||||
// Generator.GenerateLabel
|
||||
// (viewContext: ViewContext,
|
||||
// modelExplorer: For.ModelExplorer, expression: For.Name, labelText: null,
|
||||
// htmlAttributes: new { @class = });
|
||||
|
||||
// var writer =
|
||||
// new System.IO.StringWriter();
|
||||
|
||||
// tagBuilder.WriteTo(writer: writer,
|
||||
// encoder: Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
// var result =
|
||||
// writer.ToString();
|
||||
|
||||
// await writer.DisposeAsync();
|
||||
|
||||
// return result;
|
||||
//}
|
||||
}
|
||||
@ -0,0 +1,106 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.FullInput,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class FullInputTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public FullInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(For)}' property is null ");
|
||||
}
|
||||
|
||||
if (ViewContext is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(ViewContext)}' property is null ");
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var label =
|
||||
await
|
||||
Utility.GenerateLabelAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
string? dirString = null;
|
||||
|
||||
var dirAttribute =
|
||||
output.Attributes["dir"];
|
||||
|
||||
if (dirAttribute is not null)
|
||||
{
|
||||
var dirValue =
|
||||
dirAttribute.Value;
|
||||
|
||||
if (dirValue is not null)
|
||||
{
|
||||
dirString =
|
||||
dirValue.ToString()?
|
||||
.Replace(oldValue: "{", newValue: string.Empty)
|
||||
.Replace(oldValue: "}", newValue: string.Empty);
|
||||
}
|
||||
}
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBox =
|
||||
await
|
||||
Utility.GenerateTextBoxAsync(generator: Generator,
|
||||
viewContext: ViewContext, @for: For, dir: dirString);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: textBox);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var validationMessage =
|
||||
await
|
||||
Utility.GenerateValidationMessageAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: validationMessage);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.FullPasswordInput,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class FullPasswordInputTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public FullPasswordInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
if (ViewContext is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(ViewContext));
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var label =
|
||||
await
|
||||
Utility.GenerateLabelAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBox =
|
||||
await
|
||||
Utility.GeneratePasswordTextBoxAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: textBox);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var validationMessage =
|
||||
await
|
||||
Utility.GenerateValidationMessageAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: validationMessage);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,98 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.FullSelect,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class FullSelectTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
|
||||
{
|
||||
public FullSelectTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-items")]
|
||||
public IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>? Items { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-option-label")]
|
||||
public string? OptionLabel { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(For)}' property is null ");
|
||||
}
|
||||
|
||||
if (Items is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(Items)}' property is null ");
|
||||
}
|
||||
|
||||
if (ViewContext is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(ViewContext)}' property is null ");
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var label =
|
||||
await
|
||||
Utility.GenerateLabelAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var select =
|
||||
await
|
||||
Utility.GenerateSelectAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For, selectList: Items);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: select);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var validationMessage =
|
||||
await
|
||||
Utility.GenerateValidationMessageAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: validationMessage);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,83 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.FullTextArea,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class FullTextAreaTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public FullTextAreaTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
if (ViewContext is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(ViewContext));
|
||||
}
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var label =
|
||||
await
|
||||
Utility.GenerateLabelAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: label);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBox =
|
||||
await
|
||||
Utility.GenerateTextAreaAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: textBox);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var validationMessage =
|
||||
await
|
||||
Utility.GenerateValidationMessageAsync
|
||||
(generator: Generator, viewContext: ViewContext, @for: For);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: validationMessage);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,179 @@
|
||||
using Framework.DataType;
|
||||
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
public class ModelExpressionConverter : object
|
||||
{
|
||||
public ModelExpressionConverter
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression modelExpression)
|
||||
{
|
||||
IsLeftToRight = false;
|
||||
HasBeenConverted = false;
|
||||
ModelExpression = modelExpression;
|
||||
|
||||
if (modelExpression.ModelExplorer.ModelType.IsEnum)
|
||||
{
|
||||
ConvertLong();
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (modelExpression.ModelExplorer.ModelType)
|
||||
{
|
||||
case Type typeGuid when typeGuid == typeof(Guid):
|
||||
{
|
||||
ConvertGuid();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Type typeInt when typeInt == typeof(int):
|
||||
case Type typeByte when typeByte == typeof(byte):
|
||||
case Type typeLong when typeLong == typeof(long):
|
||||
{
|
||||
ConvertLong();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Type typeDateTime when typeDateTime == typeof(DateTime):
|
||||
{
|
||||
ConvertDateTime();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case Type typeDateTimeOffset when typeDateTimeOffset == typeof(DateTimeOffset):
|
||||
case Type typeDateTimeOffsetOrNull when typeDateTimeOffsetOrNull == typeof(DateTimeOffset?):
|
||||
{
|
||||
ConvertDateTimeOffset();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string? Value { get; protected set; }
|
||||
|
||||
public bool IsLeftToRight { get; protected set; }
|
||||
|
||||
public bool HasBeenConverted { get; protected set; }
|
||||
|
||||
protected Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression ModelExpression { get; }
|
||||
|
||||
protected void ConvertGuid()
|
||||
{
|
||||
object value =
|
||||
ModelExpression.Model;
|
||||
|
||||
IsLeftToRight = true;
|
||||
HasBeenConverted = true;
|
||||
|
||||
if (value is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
Value = value.ToString();
|
||||
}
|
||||
|
||||
protected void ConvertLong()
|
||||
{
|
||||
object value =
|
||||
ModelExpression.Model;
|
||||
|
||||
IsLeftToRight = true;
|
||||
HasBeenConverted = true;
|
||||
|
||||
if (value is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
var valueInteget =
|
||||
Convert.ToInt64(value: value);
|
||||
|
||||
var result =
|
||||
valueInteget.ToString
|
||||
(format: Constants.Format.Integer);
|
||||
|
||||
result = result
|
||||
.ConvertDigitsToUnicode();
|
||||
|
||||
if (result is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
Value = result;
|
||||
}
|
||||
|
||||
protected void ConvertDateTime()
|
||||
{
|
||||
object value =
|
||||
ModelExpression.Model;
|
||||
|
||||
IsLeftToRight = true;
|
||||
HasBeenConverted = true;
|
||||
|
||||
if (value is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
var valueDateTime =
|
||||
(DateTime)value;
|
||||
|
||||
var result =
|
||||
valueDateTime.ToString
|
||||
(format: Constants.Format.DateTime);
|
||||
|
||||
result = result
|
||||
.ConvertDigitsToUnicode();
|
||||
|
||||
if (result is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
Value = result;
|
||||
}
|
||||
|
||||
protected void ConvertDateTimeOffset()
|
||||
{
|
||||
object value =
|
||||
ModelExpression.Model;
|
||||
|
||||
IsLeftToRight = true;
|
||||
HasBeenConverted = true;
|
||||
|
||||
if (value is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
var valueDateTime =
|
||||
(DateTimeOffset)value;
|
||||
|
||||
var result =
|
||||
valueDateTime.DateTime.ToString
|
||||
(format: Constants.Format.DateTime);
|
||||
|
||||
result = result
|
||||
.ConvertDigitsToUnicode();
|
||||
|
||||
if (result is null)
|
||||
{
|
||||
Value = Constants.Format.NullValue;
|
||||
return;
|
||||
}
|
||||
|
||||
Value = result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,142 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.ReadOnlyCheckBox,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ReadOnlyCheckBoxTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ReadOnlyCheckBoxTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var innerDiv =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
innerDiv.AddCssClass(value: "form-check");
|
||||
|
||||
div.InnerHtml.AppendHtml(content: innerDiv);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBoxElement =
|
||||
await
|
||||
CreateCheckBoxElementAsync();
|
||||
|
||||
innerDiv.InnerHtml.AppendHtml(encoded: textBoxElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var labelElement =
|
||||
await
|
||||
CreateLabelElementAsync();
|
||||
|
||||
innerDiv.InnerHtml.AppendHtml(encoded: labelElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
|
||||
private async Task<string> CreateLabelElementAsync()
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
var tagBuilder =
|
||||
Generator.GenerateLabel
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer, expression: For.Name, labelText: null,
|
||||
htmlAttributes: new { @class = "form-check-label" });
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer,
|
||||
encoder: Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private async Task<string> CreateCheckBoxElementAsync()
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tagBuilder;
|
||||
|
||||
bool? isChecked = null;
|
||||
|
||||
if (For.Model is not null)
|
||||
{
|
||||
isChecked =
|
||||
Convert
|
||||
.ToBoolean(value: For.Model);
|
||||
}
|
||||
|
||||
tagBuilder =
|
||||
Generator.GenerateCheckBox
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer,
|
||||
expression: For.Name, isChecked: isChecked, htmlAttributes: null);
|
||||
|
||||
tagBuilder.AddCssClass(value: "form-check-input");
|
||||
|
||||
tagBuilder.Attributes.Add(key: "disabled", value: null);
|
||||
//tagBuilder.Attributes.Add(key: "disabled", value: "disabled");
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer,
|
||||
encoder: Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,180 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
/// <summary>
|
||||
/// https://stackoverflow.com/questions/51904629/how-to-create-custom-tag-helper-containing-other-tag-helpers
|
||||
/// https://stackoverflow.com/questions/47547844/tag-helper-embedded-in-another-tag-helpers-code-doesnt-render
|
||||
/// https://stackoverflow.com/questions/46681692/combine-taghelper-statements
|
||||
/// </summary>
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.ReadOnlyInput,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ReadOnlyInputTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ReadOnlyInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var labelElement =
|
||||
await
|
||||
CreateLabelElementAsync();
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: labelElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
string? dirString = null;
|
||||
|
||||
var dirAttribute =
|
||||
output.Attributes["dir"];
|
||||
|
||||
if (dirAttribute is not null)
|
||||
{
|
||||
var dirValue =
|
||||
dirAttribute.Value;
|
||||
|
||||
if (dirValue is not null)
|
||||
{
|
||||
dirString =
|
||||
dirValue.ToString()?
|
||||
.Replace(oldValue: "{", newValue: string.Empty)
|
||||
.Replace(oldValue: "}", newValue: string.Empty);
|
||||
}
|
||||
}
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBoxElement =
|
||||
await
|
||||
CreateTextBoxElementAsync(dir: dirString);
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: textBoxElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
|
||||
private async Task<string> CreateLabelElementAsync()
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
var tagBuilder =
|
||||
Generator.GenerateLabel
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer, expression: For.Name, labelText: null,
|
||||
htmlAttributes: new { @class = "form-label" });
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer, encoder: Microsoft
|
||||
.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private async Task<string> CreateTextBoxElementAsync(string? dir = null)
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new Exception
|
||||
(message: $"'{nameof(For)}' property is null ");
|
||||
}
|
||||
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tagBuilder;
|
||||
|
||||
var converter =
|
||||
new ModelExpressionConverter(modelExpression: For);
|
||||
|
||||
if (converter.HasBeenConverted)
|
||||
{
|
||||
tagBuilder =
|
||||
Generator.GenerateTextBox
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer,
|
||||
expression: For.Name, value: converter.Value,
|
||||
format: null, htmlAttributes: null);
|
||||
}
|
||||
else
|
||||
{
|
||||
tagBuilder =
|
||||
Generator.GenerateTextBox
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer,
|
||||
expression: For.Name, value: For.Model,
|
||||
format: null, htmlAttributes: null);
|
||||
}
|
||||
|
||||
tagBuilder.AddCssClass(value: "form-control");
|
||||
|
||||
tagBuilder.Attributes.Add(key: "disabled", value: null);
|
||||
//tagBuilder.Attributes.Add(key: "disabled", value: "disabled");
|
||||
//tagBuilder.Attributes.Add(key: "readonly", value: null);
|
||||
//tagBuilder.Attributes.Add(key: "readonly", value: "readonly");
|
||||
|
||||
if (converter.IsLeftToRight)
|
||||
{
|
||||
tagBuilder.AddCssClass(value: "ltr");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value: dir) == false)
|
||||
{
|
||||
tagBuilder.Attributes.Add(key: "dir", value: dir);
|
||||
}
|
||||
}
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer, encoder: Microsoft
|
||||
.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,125 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.ReadOnlyTextArea,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class ReadOnlyTextAreaTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public ReadOnlyTextAreaTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base()
|
||||
{
|
||||
Generator = generator;
|
||||
}
|
||||
|
||||
private Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator Generator { get; }
|
||||
|
||||
[Microsoft.AspNetCore.Mvc.ViewFeatures.ViewContext]
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeNotBound]
|
||||
public Microsoft.AspNetCore.Mvc.Rendering.ViewContext? ViewContext { get; set; }
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeName(name: "asp-for")]
|
||||
public Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExpression? For { get; set; }
|
||||
|
||||
public override async Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "mb-3");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var labelElement =
|
||||
await
|
||||
CreateLabelElementAsync();
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: labelElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var textBoxElement =
|
||||
await
|
||||
CreateTextAreaElementAsync();
|
||||
|
||||
div.InnerHtml.AppendHtml(encoded: textBoxElement);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: div);
|
||||
// **************************************************
|
||||
}
|
||||
|
||||
private async Task<string> CreateLabelElementAsync()
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
var tagBuilder =
|
||||
Generator.GenerateLabel
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer, expression: For.Name, labelText: null,
|
||||
htmlAttributes: new { @class = "form-label" });
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer,
|
||||
encoder: Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private async Task<string> CreateTextAreaElementAsync()
|
||||
{
|
||||
if (For is null)
|
||||
{
|
||||
throw new ArgumentNullException(paramName: nameof(For));
|
||||
}
|
||||
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagBuilder tagBuilder;
|
||||
|
||||
tagBuilder =
|
||||
Generator.GenerateTextArea
|
||||
(viewContext: ViewContext,
|
||||
modelExplorer: For.ModelExplorer,
|
||||
expression: For.Name, rows: 3, columns: 60, htmlAttributes: null);
|
||||
|
||||
tagBuilder.AddCssClass(value: "form-control");
|
||||
|
||||
tagBuilder.Attributes.Add(key: "disabled", value: null);
|
||||
//tagBuilder.Attributes.Add(key: "disabled", value: "disabled");
|
||||
//tagBuilder.Attributes.Add(key: "readonly", value: null);
|
||||
//tagBuilder.Attributes.Add(key: "readonly", value: "readonly");
|
||||
|
||||
var writer =
|
||||
new StringWriter();
|
||||
|
||||
tagBuilder.WriteTo(writer: writer,
|
||||
encoder: Microsoft.AspNetCore.Razor.TagHelpers.NullHtmlEncoder.Default);
|
||||
|
||||
var result =
|
||||
writer.ToString();
|
||||
|
||||
await writer.DisposeAsync();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form-buttons",
|
||||
ParentTag = "section-form",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormButtonsTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormButtonsTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
body.AddCssClass(value: "mb-3");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "input",
|
||||
ParentTag = "section-form-check")]
|
||||
public class SectionFormCheckInputTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper
|
||||
{
|
||||
public SectionFormCheckInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-check-input", output: output);
|
||||
|
||||
//output.TagName = "input";
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "label",
|
||||
ParentTag = "section-form-check")]
|
||||
public class SectionFormCheckLabelTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper
|
||||
{
|
||||
public SectionFormCheckLabelTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-check-label", output: output);
|
||||
|
||||
//output.TagName = "label";
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,54 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form-check",
|
||||
ParentTag = "fieldset",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormCheckTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormCheckTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var div =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
div.AddCssClass(value: "form-check");
|
||||
|
||||
div.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
body.AddCssClass(value: "mb-3");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: div);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "input",
|
||||
ParentTag = "section-form-field")]
|
||||
public class SectionFormFieldInputTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper
|
||||
{
|
||||
public SectionFormFieldInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-control", output: output);
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "label",
|
||||
ParentTag = "section-form-field")]
|
||||
public class SectionFormFieldLabelTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper
|
||||
{
|
||||
public SectionFormFieldLabelTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-label", output: output);
|
||||
|
||||
//output.TagName = "label";
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
namespace Server.Infrastructure.TagHelpers
|
||||
{
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "select",
|
||||
ParentTag = "section-form-field")]
|
||||
public class SectionFormFieldSelectTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper
|
||||
{
|
||||
public SectionFormFieldSelectTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-select", output: output);
|
||||
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form-field",
|
||||
ParentTag = "fieldset",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormFieldTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormFieldTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "div");
|
||||
|
||||
body.AddCssClass(value: "mb-3");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "textarea",
|
||||
ParentTag = "section-form-field")]
|
||||
public class SectionFormFieldTextArea :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper
|
||||
{
|
||||
public SectionFormFieldTextArea
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-control", output: output);
|
||||
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "tinymce", output: output);
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,25 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "span",
|
||||
ParentTag = "section-form-field")]
|
||||
public class SectionFormFieldValidationMessageTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.ValidationMessageTagHelper
|
||||
{
|
||||
public SectionFormFieldValidationMessageTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "text-danger", output: output);
|
||||
|
||||
//output.TagName = "span";
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "a",
|
||||
ParentTag = "section-form-footer",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormFooterLinkTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormFooterLinkTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
output.Attributes.SetAttribute
|
||||
(name: "class", value: "text-decoration-none");
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form-footer",
|
||||
ParentTag = "section-form",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormFooterTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormFooterTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var horizontalRule =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "hr");
|
||||
|
||||
horizontalRule.TagRenderMode =
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagRenderMode.SelfClosing;
|
||||
|
||||
horizontalRule.AddCssClass(value: "mt-4");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
body.AddCssClass(value: "mb-3");
|
||||
body.AddCssClass(value: "text-center");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.PreElement.AppendHtml(htmlContent: horizontalRule);
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form-header",
|
||||
ParentTag = "fieldset",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormHeaderTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormHeaderTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var horizontalRule =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "hr")
|
||||
{
|
||||
TagRenderMode =
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagRenderMode.SelfClosing,
|
||||
};
|
||||
|
||||
horizontalRule.AddCssClass(value: "mt-4");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "legend");
|
||||
|
||||
body.AddCssClass(value: "text-center");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
// **************************************************
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
output.PostElement.AppendHtml(htmlContent: horizontalRule);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-form",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionFormTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionFormTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divCol =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divCol.AddCssClass(value: "col");
|
||||
//divCol.AddCssClass(value: "bg-light");
|
||||
divCol.AddCssClass(value: "rounded-3");
|
||||
divCol.AddCssClass(value: "shadow-lg");
|
||||
divCol.AddCssClass(value: "border border-2");
|
||||
|
||||
divCol.AddCssClass(value: "col-12 p-3");
|
||||
divCol.AddCssClass(value: "col-md-8 offset-md-2 p-md-4");
|
||||
//divCol.AddCssClass(value: "col-lg-6 offset-lg-3 p-lg-5");
|
||||
|
||||
divCol.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divRow =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divRow.AddCssClass(value: "row");
|
||||
divRow.AddCssClass(value: "my-0");
|
||||
divRow.AddCssClass(value: "my-sm-1");
|
||||
divRow.AddCssClass(value: "my-md-3");
|
||||
//divRow.AddCssClass(value: "my-lg-5");
|
||||
|
||||
divRow.InnerHtml.AppendHtml(content: divCol);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: divRow);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,23 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "a",
|
||||
ParentTag = "section-page-actions",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionPageActionsLink :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionPageActionsLink() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Process
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
output.Attributes.SetAttribute
|
||||
(name: "class", value: "btn btn-primary");
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-page-actions",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionPageActionsTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionPageActionsTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divCol =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divCol.AddCssClass(value: "col");
|
||||
|
||||
divCol.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divRow =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divRow.AddCssClass(value: "row");
|
||||
divRow.AddCssClass(value: "mb-3");
|
||||
|
||||
divRow.InnerHtml.AppendHtml(content: divCol);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: divRow);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,65 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-page-header",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionPageHeaderTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionPageHeaderTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
//public override void Process
|
||||
// (Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
// Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
//{
|
||||
// base.Process(context, output);
|
||||
//}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var horizontalRule =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "hr")
|
||||
{
|
||||
TagRenderMode =
|
||||
Microsoft.AspNetCore.Mvc.Rendering.TagRenderMode.SelfClosing,
|
||||
};
|
||||
|
||||
horizontalRule.AddCssClass(value: "mt-4");
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var body =
|
||||
new Microsoft.AspNetCore.Mvc
|
||||
.Rendering.TagBuilder(tagName: "h3");
|
||||
|
||||
body.AddCssClass(value: "mt-3");
|
||||
body.AddCssClass(value: "mb-3");
|
||||
body.AddCssClass(value: "text-center");
|
||||
|
||||
body.InnerHtml.AppendHtml(content: originalContents);
|
||||
//body.InnerHtml.AppendHtml(content: horizontalRule);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: body);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,52 @@
|
||||
namespace Server.Infrastructure.TagHelpers;
|
||||
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers.HtmlTargetElement
|
||||
(tag: "section-table",
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.NormalOrSelfClosing)]
|
||||
public class SectionTableTagHelper :
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelper
|
||||
{
|
||||
public SectionTableTagHelper() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public async override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
// **************************************************
|
||||
var originalContents =
|
||||
await
|
||||
output.GetChildContentAsync();
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divCol =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divCol.AddCssClass(value: "col");
|
||||
divCol.AddCssClass(value: "table-responsive");
|
||||
|
||||
divCol.InnerHtml.AppendHtml(content: originalContents);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
var divRow =
|
||||
new Microsoft.AspNetCore.Mvc.Rendering.TagBuilder("div");
|
||||
|
||||
divRow.AddCssClass(value: "row");
|
||||
|
||||
divRow.InnerHtml.AppendHtml(content: divCol);
|
||||
// **************************************************
|
||||
|
||||
// **************************************************
|
||||
output.TagName = null;
|
||||
|
||||
output.TagMode =
|
||||
Microsoft.AspNetCore.Razor
|
||||
.TagHelpers.TagMode.StartTagAndEndTag;
|
||||
|
||||
output.Content.SetHtmlContent(htmlContent: divRow);
|
||||
// **************************************************
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
namespace Server.Infrastructure.TagHelpers
|
||||
{
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.Input,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class SimpleInputTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper
|
||||
{
|
||||
public SimpleInputTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator: generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-control", output: output);
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
namespace Server.Infrastructure.TagHelpers
|
||||
{
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.Label,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class SimpleLabelTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.LabelTagHelper
|
||||
{
|
||||
public SimpleLabelTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-label", output: output);
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
namespace Server.Infrastructure.TagHelpers
|
||||
{
|
||||
[Microsoft.AspNetCore.Razor.TagHelpers
|
||||
.HtmlTargetElement(tag: Constants.TagHelper.TextArea,
|
||||
TagStructure = Microsoft.AspNetCore.Razor.TagHelpers.TagStructure.WithoutEndTag)]
|
||||
public class SimpleTextAreaTagHelper :
|
||||
Microsoft.AspNetCore.Mvc.TagHelpers.TextAreaTagHelper
|
||||
{
|
||||
public SimpleTextAreaTagHelper
|
||||
(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) : base(generator: generator)
|
||||
{
|
||||
}
|
||||
|
||||
public override Task ProcessAsync
|
||||
(Microsoft.AspNetCore.Razor.TagHelpers.TagHelperContext context,
|
||||
Microsoft.AspNetCore.Razor.TagHelpers.TagHelperOutput output)
|
||||
{
|
||||
Utility.CreateOrMergeAttribute
|
||||
(name: "class", content: "form-control", output: output);
|
||||
|
||||
return base.ProcessAsync(context, output);
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user