init: initial commit
This commit is contained in:
+370
@@ -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/
|
||||||
Binary file not shown.
Binary file not shown.
@@ -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()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace Constants;
|
||||||
|
|
||||||
|
public class BasketConstants
|
||||||
|
{
|
||||||
|
public const string BASKET = "basketId";
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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}";
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Constants;
|
||||||
|
|
||||||
|
public static class MaxValue
|
||||||
|
{
|
||||||
|
static MaxValue()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public const int Ordering = 100_000;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
namespace Constants;
|
||||||
|
|
||||||
|
public static class MinLength
|
||||||
|
{
|
||||||
|
static MinLength()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public const int CellPhoneNumber = 13;
|
||||||
|
public const int CellPhoneNumberVerificationKey = 6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Constants;
|
||||||
|
|
||||||
|
public static class MinValue
|
||||||
|
{
|
||||||
|
static MinValue()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public const int Ordering = 1;
|
||||||
|
}
|
||||||
@@ -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()@:%_\+.~#?&//=]*)";
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||||
@@ -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
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
+24
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
// **************************************************
|
||||||
|
}
|
||||||
|
}
|
||||||
+26
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
+25
@@ -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