Infrastructure
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
using FluentValidation.Results;
|
||||||
|
|
||||||
|
namespace Vizhvizh.BuildingBlocks.Application.Exceptions;
|
||||||
|
|
||||||
|
public class CommandValidationException : Exception
|
||||||
|
{
|
||||||
|
public CommandValidationException(List<ValidationFailure> errors)
|
||||||
|
{
|
||||||
|
Errors = errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ValidationFailure> Errors { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using FluentValidation;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Exceptions;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
|
||||||
|
namespace Vizhvizh.BuildingBlocks.Application.Validations;
|
||||||
|
|
||||||
|
public class ValidationCommandHandlerDecorator<TCommand> : ICommandHandler<TCommand>
|
||||||
|
where TCommand : ICommand
|
||||||
|
{
|
||||||
|
private readonly ICommandHandler<TCommand> _decorated;
|
||||||
|
private readonly IEnumerable<IValidator<TCommand>> _validators;
|
||||||
|
|
||||||
|
public ValidationCommandHandlerDecorator(
|
||||||
|
ICommandHandler<TCommand> decorated,
|
||||||
|
IEnumerable<IValidator<TCommand>> validators)
|
||||||
|
{
|
||||||
|
_decorated = decorated;
|
||||||
|
_validators = validators;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Handle(TCommand command, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (_validators.Any())
|
||||||
|
{
|
||||||
|
var context = new ValidationContext<TCommand>(command);
|
||||||
|
var validationResults = await Task.WhenAll(
|
||||||
|
_validators.Select(v => v.ValidateAsync(context, cancellationToken)));
|
||||||
|
|
||||||
|
var failures = validationResults
|
||||||
|
.SelectMany(r => r.Errors)
|
||||||
|
.Where(f => f != null)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (failures.Any())
|
||||||
|
{
|
||||||
|
throw new CommandValidationException(failures);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await _decorated.Handle(command, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// اگر Command شما خروجی دارد (ICommandHandler<TCommand, TResult>)
|
||||||
|
public class ValidationCommandHandlerDecorator<TCommand, TResult> : ICommandHandler<TCommand, TResult>
|
||||||
|
where TCommand : ICommand<TResult>
|
||||||
|
{
|
||||||
|
private readonly ICommandHandler<TCommand, TResult> _decorated;
|
||||||
|
private readonly IEnumerable<IValidator<TCommand>> _validators;
|
||||||
|
|
||||||
|
public ValidationCommandHandlerDecorator(
|
||||||
|
ICommandHandler<TCommand, TResult> decorated,
|
||||||
|
IEnumerable<IValidator<TCommand>> validators)
|
||||||
|
{
|
||||||
|
_decorated = decorated;
|
||||||
|
_validators = validators;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<TResult> Handle(TCommand command, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
if (_validators.Any())
|
||||||
|
{
|
||||||
|
var context = new ValidationContext<TCommand>(command);
|
||||||
|
var validationResults = await Task.WhenAll(
|
||||||
|
_validators.Select(v => v.ValidateAsync(context, cancellationToken)));
|
||||||
|
|
||||||
|
var failures = validationResults
|
||||||
|
.SelectMany(r => r.Errors)
|
||||||
|
.Where(f => f != null)
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
if (failures.Any())
|
||||||
|
{
|
||||||
|
throw new CommandValidationException(failures);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return await _decorated.Handle(command, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,16 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="FluentValidation" Version="12.1.1" />
|
||||||
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.25" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.25" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.25" />
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
<PackageReference Include="Scrutor" Version="6.1.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\VichVich.BuildingBlocks.Domain\Vizhvizh.BuildingBlocks.Domain.csproj" />
|
<ProjectReference Include="..\VichVich.BuildingBlocks.Domain\Vizhvizh.BuildingBlocks.Domain.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ public abstract class Entity<T>
|
|||||||
CreateOn = DateTime.Now;
|
CreateOn = DateTime.Now;
|
||||||
}
|
}
|
||||||
public T Id { get; protected set; }
|
public T Id { get; protected set; }
|
||||||
|
public byte[] RowVersion { get; private set; }
|
||||||
|
|
||||||
public DateTime CreateOn { get; init ; }
|
public DateTime CreateOn { get; init ; }
|
||||||
private List<IDomainEvent> _domainEvents;
|
private List<IDomainEvent> _domainEvents;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
namespace Vizhvizh.BuildingBlocks.Domain;
|
namespace Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
|
||||||
public interface IRepositoryBase<TDomain, TId>
|
public interface IRepositoryBase<T, TId>
|
||||||
where TDomain : Entity<TId> where TId : ITypeIdValueBase
|
where T : Entity<TId> where TId : ITypeIdValueBase
|
||||||
{
|
{
|
||||||
Task CreateAsync(TDomain entity, CancellationToken cancellationToken = default);
|
Task AddAsync(T entity, CancellationToken cancellationToken);
|
||||||
Task UpdateAsync(TDomain entity, CancellationToken cancellationToken = default);
|
Task UpdateAsync(T entity, CancellationToken cancellationToken);
|
||||||
Task DeleteAsync(TId id, CancellationToken cancellationToken = default);
|
Task DeleteAsync(TId id, CancellationToken cancellationToken);
|
||||||
Task<TDomain> GetByIdAsync(TId id, CancellationToken cancellationToken = default);
|
Task DeleteAsync(T entity, CancellationToken cancellationToken);
|
||||||
|
Task<T?> FindByIdAsync(TId id, CancellationToken cancellationToken);
|
||||||
|
IQueryable<T> GetQueryAsNoTracking();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
|
||||||
|
public class BaseEntityConfiguration<T, TId, TIdType> : IEntityTypeConfiguration<T>
|
||||||
|
where T : Entity<TId>
|
||||||
|
where TId : TypedIdValueBase<TIdType>
|
||||||
|
{
|
||||||
|
public virtual void Configure(EntityTypeBuilder<T> builder)
|
||||||
|
{
|
||||||
|
// تنظیمات Id
|
||||||
|
ConfigureId(builder);
|
||||||
|
|
||||||
|
// تنظیمات RowVersion
|
||||||
|
ConfigureRowVersion(builder);
|
||||||
|
|
||||||
|
// تنظیمات CreateOn (اگر وجود داشته باشد)
|
||||||
|
ConfigureCreateOn(builder);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConfigureId(EntityTypeBuilder<T> builder)
|
||||||
|
{
|
||||||
|
builder.HasKey(x => x.Id);
|
||||||
|
|
||||||
|
if (typeof(TIdType) == typeof(int) || typeof(TIdType) == typeof(long))
|
||||||
|
{
|
||||||
|
// ❌ مشکل: اینجا نمیتوانیم به نام جدول دسترسی داشته باشیم
|
||||||
|
// builder.UseHiLo($"Sequence_{typeof(T).Name}")
|
||||||
|
|
||||||
|
// ✅ راهحل: در اینجا فقط تنظیمات Id را انجام بده، Hi-Lo را بعداً اعمال کن
|
||||||
|
builder.Property(x => x.Id)
|
||||||
|
.HasConversion(
|
||||||
|
id => id.Value,
|
||||||
|
value => (TId)Activator.CreateInstance(typeof(TId), value)!)
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
|
||||||
|
// ❌ UseHiLo را اینجا نزنید، چون هنوز نام جدول مشخص نیست
|
||||||
|
}
|
||||||
|
else if (typeof(TIdType) == typeof(Guid))
|
||||||
|
{
|
||||||
|
builder.Property(x => x.Id)
|
||||||
|
.HasConversion(
|
||||||
|
id => id.Value,
|
||||||
|
value => (TId)Activator.CreateInstance(typeof(TId), value)!)
|
||||||
|
.HasDefaultValueSql("NEWSEQUENTIALID()")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
}
|
||||||
|
else if (typeof(TIdType) == typeof(string))
|
||||||
|
{
|
||||||
|
builder.Property(x => x.Id)
|
||||||
|
.HasConversion(
|
||||||
|
id => id.Value,
|
||||||
|
value => (TId)Activator.CreateInstance(typeof(TId), value)!)
|
||||||
|
.HasMaxLength(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ConfigureRowVersion(EntityTypeBuilder<T> builder)
|
||||||
|
{
|
||||||
|
// بررسی وجود خاصیت RowVersion با Reflection
|
||||||
|
var hasRowVersion = typeof(T).GetProperty("RowVersion") != null;
|
||||||
|
|
||||||
|
if (hasRowVersion)
|
||||||
|
{
|
||||||
|
// تنظیم RowVersion به عنوان Concurrency Token
|
||||||
|
builder.Property<byte[]>("RowVersion")
|
||||||
|
.IsRowVersion() // این یک خط همه کارها را میکند
|
||||||
|
.IsConcurrencyToken()
|
||||||
|
.ValueGeneratedOnAddOrUpdate();
|
||||||
|
|
||||||
|
// برای دیتابیسهای مختلف:
|
||||||
|
// builder.Property<byte[]>("RowVersion").HasDefaultValueSql("rowversion");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConfigureCreateOn(EntityTypeBuilder<T> builder)
|
||||||
|
{
|
||||||
|
// تنظیم CreateOn (اگر وجود داشته باشد)
|
||||||
|
var hasCreateOn = typeof(T).GetProperty("CreateOn") != null;
|
||||||
|
|
||||||
|
if (hasCreateOn)
|
||||||
|
{
|
||||||
|
builder.Property<DateTime>("CreateOn")
|
||||||
|
.HasDefaultValueSql("GETDATE()") // SQL Server
|
||||||
|
// برای PostgreSQL: .HasDefaultValueSql("CURRENT_TIMESTAMP")
|
||||||
|
// برای MySQL: .HasDefaultValueSql("CURRENT_TIMESTAMP")
|
||||||
|
.ValueGeneratedOnAdd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
namespace Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
|
||||||
|
public interface IScopeDependency
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
namespace Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
|
||||||
|
public interface ISingletonDependency
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
namespace Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
|
||||||
|
public interface ITransientDependency
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
|
||||||
|
public static class ModelBuilderExtensions
|
||||||
|
{
|
||||||
|
public static void AddHiLoSequences(this ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
var entityTypes = modelBuilder.Model.GetEntityTypes();
|
||||||
|
|
||||||
|
foreach (var entityType in entityTypes)
|
||||||
|
{
|
||||||
|
var primaryKey = entityType.FindPrimaryKey();
|
||||||
|
if (primaryKey == null) continue;
|
||||||
|
|
||||||
|
var keyProperty = primaryKey.Properties.FirstOrDefault();
|
||||||
|
if (keyProperty == null) continue;
|
||||||
|
|
||||||
|
// ✅ استخراج نوع واقعی از TypedIdValueBase
|
||||||
|
var actualKeyType = GetUnderlyingKeyType(keyProperty.ClrType);
|
||||||
|
|
||||||
|
// فقط برای int و long
|
||||||
|
if (actualKeyType == typeof(int) || actualKeyType == typeof(long))
|
||||||
|
{
|
||||||
|
var tableName = entityType.GetTableName();
|
||||||
|
var sequenceName = GetSequenceName(tableName ?? entityType.Name);
|
||||||
|
var schema = entityType.GetSchema();
|
||||||
|
|
||||||
|
if (actualKeyType == typeof(int))
|
||||||
|
{
|
||||||
|
modelBuilder.HasSequence<int>(sequenceName, schema)
|
||||||
|
.StartsAt(1)
|
||||||
|
.IncrementsBy(1);
|
||||||
|
}
|
||||||
|
else if (actualKeyType == typeof(long))
|
||||||
|
{
|
||||||
|
modelBuilder.HasSequence<long>(sequenceName, schema)
|
||||||
|
.StartsAt(1)
|
||||||
|
.IncrementsBy(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
keyProperty.SetHiLoSequenceName(sequenceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//public static void UseHiLoForEntities(this ModelBuilder modelBuilder)
|
||||||
|
//{
|
||||||
|
// var entityTypes = modelBuilder.Model.GetEntityTypes();
|
||||||
|
|
||||||
|
// foreach (var entityType in entityTypes)
|
||||||
|
// {
|
||||||
|
// var primaryKey = entityType.FindPrimaryKey();
|
||||||
|
// if (primaryKey == null) continue;
|
||||||
|
|
||||||
|
// var keyProperty = primaryKey.Properties.FirstOrDefault();
|
||||||
|
// if (keyProperty == null) continue;
|
||||||
|
|
||||||
|
// // ✅ از همان متد استفاده کنید
|
||||||
|
// var actualKeyType = GetUnderlyingKeyType(keyProperty.ClrType);
|
||||||
|
|
||||||
|
// if (actualKeyType == typeof(int) || actualKeyType == typeof(long))
|
||||||
|
// {
|
||||||
|
// var tableName = entityType.GetTableName();
|
||||||
|
// var sequenceName = GetSequenceName(tableName ?? entityType.Name);
|
||||||
|
|
||||||
|
// // تنظیم Hi-Lo روی Property
|
||||||
|
// keyProperty.SetHiLoSequenceName(sequenceName);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// استخراج نوع اصلی از TypedIdValueBase
|
||||||
|
/// پشتیبانی از:
|
||||||
|
/// - TypedIdValueBase<int>
|
||||||
|
/// - TypedIdValueBase<long>
|
||||||
|
/// - CategoryId : TypedIdValueBase<long>
|
||||||
|
/// </summary>
|
||||||
|
private static Type GetUnderlyingKeyType(Type keyType)
|
||||||
|
{
|
||||||
|
// حالت 1: خود keyType از نوع TypedIdValueBase<T> باشد
|
||||||
|
if (keyType.IsGenericType &&
|
||||||
|
keyType.GetGenericTypeDefinition() == typeof(TypedIdValueBase<>))
|
||||||
|
{
|
||||||
|
return keyType.GetGenericArguments()[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// حالت 2: keyType از TypedIdValueBase<T> ارثبری کرده باشد
|
||||||
|
var baseType = keyType.BaseType;
|
||||||
|
while (baseType != null && baseType != typeof(object))
|
||||||
|
{
|
||||||
|
if (baseType.IsGenericType &&
|
||||||
|
baseType.GetGenericTypeDefinition() == typeof(TypedIdValueBase<>))
|
||||||
|
{
|
||||||
|
return baseType.GetGenericArguments()[0];
|
||||||
|
}
|
||||||
|
baseType = baseType.BaseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
// حالت 3: خود keyType int یا long باشد
|
||||||
|
if (keyType == typeof(int) || keyType == typeof(long) ||
|
||||||
|
keyType == typeof(int?) || keyType == typeof(long?))
|
||||||
|
{
|
||||||
|
return Nullable.GetUnderlyingType(keyType) ?? keyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
// حالت 4: نوع دیگر (مثلاً Guid, string)
|
||||||
|
return keyType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetSequenceName(string tableName)
|
||||||
|
{
|
||||||
|
return $"Sequence_{tableName}";
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-8
@@ -6,14 +6,7 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.25" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.25" />
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.25" />
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
|
||||||
<PackageReference Include="Scrutor" Version="6.1.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\VichVich.BuildingBlocks.Application\Vizhvizh.BuildingBlocks.Application.csproj" />
|
<ProjectReference Include="..\VichVich.BuildingBlocks.Application\Vizhvizh.BuildingBlocks.Application.csproj" />
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\VichVich.BuildingBlocks.Application\Vizhvizh.BuildingBlocks.Application.csproj" />
|
|
||||||
<ProjectReference Include="..\Vichvich.Shared.Application\Vizhvizh.Shared.Application.csproj" />
|
<ProjectReference Include="..\Vichvich.Shared.Application\Vizhvizh.Shared.Application.csproj" />
|
||||||
<ProjectReference Include="..\Vichvich.Shop.Domain\Vizhvizh.Shop.Domain.csproj" />
|
<ProjectReference Include="..\Vichvich.Shop.Domain\Vizhvizh.Shop.Domain.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -4,6 +4,6 @@ using Vizhvizh.BuildingBlocks.Domain;
|
|||||||
|
|
||||||
namespace Vizhvizh.Shop.Domain.Products.Repositories;
|
namespace Vizhvizh.Shop.Domain.Products.Repositories;
|
||||||
|
|
||||||
public interface IProductRepository : IRepositoryBase<Product,ProductId>
|
public interface IProductRepository
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Domain.Shops.Repositories;
|
namespace Vizhvizh.Shop.Domain.Shops.Repositories;
|
||||||
|
|
||||||
public interface IShopRepository
|
public interface IShopRepository : IRepositoryBase<Entities.Shop, ShopId>
|
||||||
{
|
{
|
||||||
Task AddAsync(Entities.Shop shop, CancellationToken cancellationToken);
|
|
||||||
Task<Entities.Shop?> FindByIdAsync(ShopId id, CancellationToken cancellationToken);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
|
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Domain.Sliders.Repositories;
|
namespace Vizhvizh.Shop.Domain.Sliders.Repositories;
|
||||||
|
|
||||||
public interface ISliderRepository
|
public interface ISliderRepository : IRepositoryBase<Slider,SliderId>
|
||||||
{
|
{
|
||||||
Task AddAsync(Slider slider, CancellationToken cancellationToken);
|
|
||||||
Task GetByIdAsync(SliderId id,CancellationToken cancellationToken);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class CategoryConfiguration : IEntityTypeConfiguration<Category>
|
internal class CategoryConfiguration : BaseEntityConfiguration<Category,CategoryId ,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Category> builder)
|
public override void Configure(EntityTypeBuilder<Category> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Categories", schema: "Shop");
|
builder.ToTable("Categories", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.CategoryId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title")
|
.HasField("_title")
|
||||||
@@ -39,6 +38,24 @@ internal class CategoryConfiguration : IEntityTypeConfiguration<Category>
|
|||||||
.HasConversion(x => x.Value, x => Domain.Products.ValuesObjects.CategoryPath.CreateNew(x))
|
.HasConversion(x => x.Value, x => Domain.Products.ValuesObjects.CategoryPath.CreateNew(x))
|
||||||
.HasColumnType("HIERARCHYID");
|
.HasColumnType("HIERARCHYID");
|
||||||
|
|
||||||
|
|
||||||
|
// ایندکس برای Path با نوع HIERARCHYID
|
||||||
|
builder.HasIndex(x => x.Path)
|
||||||
|
.HasDatabaseName("IX_Categories_Path")
|
||||||
|
.IsClustered(false); // معمولاً برای HierarchyId بهتر است non-clustered باشد
|
||||||
|
|
||||||
|
// رابطه خودارجاع برای ParentId
|
||||||
|
builder.HasOne<Category>()
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey(x => x.ParentId)
|
||||||
|
.HasConstraintName("FK_Categories_ParentId")
|
||||||
|
.OnDelete(DeleteBehavior.Restrict)
|
||||||
|
.IsRequired(false);
|
||||||
|
|
||||||
|
// ایندکس برای ParentId جهت بهبود performance در کوئریهای سلسله مراتبی
|
||||||
|
builder.HasIndex(x => x.ParentId)
|
||||||
|
.HasDatabaseName("IX_Categories_ParentId");
|
||||||
|
|
||||||
builder.Metadata.FindNavigation(nameof(Category.Products))?
|
builder.Metadata.FindNavigation(nameof(Category.Products))?
|
||||||
.SetPropertyAccessMode(PropertyAccessMode.Field);
|
.SetPropertyAccessMode(PropertyAccessMode.Field);
|
||||||
builder.Metadata.FindNavigation(nameof(Category.CategoryVariantUnits))?
|
builder.Metadata.FindNavigation(nameof(Category.CategoryVariantUnits))?
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class CategoryVariantUnitConfiguration : IEntityTypeConfiguration<CategoryVariantUnit>
|
internal class CategoryVariantUnitConfiguration : BaseEntityConfiguration<CategoryVariantUnit, CategoryVariantUnitId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<CategoryVariantUnit> builder)
|
public override void Configure(EntityTypeBuilder<CategoryVariantUnit> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("CategoryVariantUnit", schema: "Shop");
|
builder.ToTable("CategoryVariantUnit", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.CategoryVariantUnitId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.VariantUnitId)
|
builder.Property(x => x.VariantUnitId)
|
||||||
.HasField("_variantUnitId")
|
.HasField("_variantUnitId")
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Shops.Entities;
|
using Vizhvizh.Shop.Domain.Shops.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class ManagementConfiguration : IEntityTypeConfiguration<Management>
|
internal class ManagementConfiguration : BaseEntityConfiguration<Management, ShopId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Management> builder)
|
public override void Configure(EntityTypeBuilder<Management> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Managements", schema: "Shop");
|
builder.ToTable("Managements", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Shops.TypeIds.ShopId(x));
|
|
||||||
|
|
||||||
builder.Metadata.FindNavigation(nameof(Management.Shop))?
|
builder.Metadata.FindNavigation(nameof(Management.Shop))?
|
||||||
.SetPropertyAccessMode(PropertyAccessMode.Field);
|
.SetPropertyAccessMode(PropertyAccessMode.Field);
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Members.Entities;
|
using Vizhvizh.Shop.Domain.Members.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Members.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Members.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Members.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class MemberConfiguration : IEntityTypeConfiguration<Member>
|
internal class MemberConfiguration : BaseEntityConfiguration<Member,MemberId , long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Member> builder)
|
public override void Configure(EntityTypeBuilder<Member> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Members", schema: "Shop");
|
builder.ToTable("Members", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.PhoneNumber)
|
builder.Property(x => x.PhoneNumber)
|
||||||
.HasField("_phoneNumber");
|
.HasField("_phoneNumber");
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class ProductConfiguration : IEntityTypeConfiguration<Product>
|
internal class ProductConfiguration : BaseEntityConfiguration<Product,ProductId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Product> builder)
|
|
||||||
|
public override void Configure(EntityTypeBuilder<Product> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Products", schema: "Shop");
|
builder.ToTable("Products", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.ProductId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.OwnsOne(x => x.ProductCondition, sa =>
|
builder.OwnsOne(x => x.ProductCondition, sa =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class ProductVariantConfiguration : IEntityTypeConfiguration<ProductVariant>
|
internal class ProductVariantConfiguration : BaseEntityConfiguration<ProductVariant,ProductVariantId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<ProductVariant> builder)
|
public override void Configure(EntityTypeBuilder<ProductVariant> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("ProductVariants", schema: "Shop");
|
builder.ToTable("ProductVariants", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.ProductVariantId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.OwnsOne(x => x.Score, sa =>
|
builder.OwnsOne(x => x.Score, sa =>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,19 +2,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shared.Domain.ValueObjects;
|
using Vizhvizh.Shared.Domain.ValueObjects;
|
||||||
using Vizhvizh.Shop.Domain.Users.Entities;
|
using Vizhvizh.Shop.Domain.Users.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Users.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Users.ValueObjects;
|
using Vizhvizh.Shop.Domain.Users.ValueObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
public class ResourceConfiguration : IEntityTypeConfiguration<Resource>
|
public class ResourceConfiguration : BaseEntityConfiguration<Resource, ResourceId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Resource> builder)
|
public override void Configure(EntityTypeBuilder<Resource> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
builder.ToTable("Resources", schema: "Shop");
|
builder.ToTable("Resources", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Users.TypeIds.ResourceId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
@@ -23,10 +22,10 @@ public class ResourceConfiguration : IEntityTypeConfiguration<Resource>
|
|||||||
builder.Property(x => x.ModuleName)
|
builder.Property(x => x.ModuleName)
|
||||||
.HasField("_moduleName")
|
.HasField("_moduleName")
|
||||||
.HasColumnType("int")
|
.HasColumnType("int")
|
||||||
.HasConversion(x=> (int)x.Value, x=> ModuleNameVO.CreateNew((ModuleNamesEnum)x));
|
.HasConversion(x => (int)x.Value, x => ModuleNameVO.CreateNew((ModuleNamesEnum)x));
|
||||||
|
|
||||||
builder.Property(x => x.ResourceKey)
|
builder.Property(x => x.ResourceKey)
|
||||||
.HasConversion(x=>x.Value, x=> ResourceKey.CreateNew(x))
|
.HasConversion(x => x.Value, x => ResourceKey.CreateNew(x))
|
||||||
.HasField("_resourceKey");
|
.HasField("_resourceKey");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Users.Entities;
|
using Vizhvizh.Shop.Domain.Users.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Users.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
public class RoleConfiguration : IEntityTypeConfiguration<Role>
|
public class RoleConfiguration : BaseEntityConfiguration<Role,RoleId,int>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Role> builder)
|
public override void Configure(EntityTypeBuilder<Role> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Roles", schema: "Shop");
|
builder.ToTable("Roles", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Users.TypeIds.RoleId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Users.Entities;
|
using Vizhvizh.Shop.Domain.Users.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Users.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Users.ValueObjects;
|
using Vizhvizh.Shop.Domain.Users.ValueObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
public class RoleResourceConfiguration : IEntityTypeConfiguration<RoleResource>
|
public class RoleResourceConfiguration : BaseEntityConfiguration<RoleResource,RoleResourceId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<RoleResource> builder)
|
public override void Configure(EntityTypeBuilder<RoleResource> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("RoleResources", schema: "Shop");
|
builder.ToTable("RoleResources", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Users.TypeIds.RoleResourceId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x=>x.AccessLevel)
|
builder.Property(x=>x.AccessLevel)
|
||||||
.HasConversion(x=>x.Value, x=> AccessLevel.CreateNew((AccessLevelEnum)x));
|
.HasConversion(x=>x.Value, x=> AccessLevel.CreateNew((AccessLevelEnum)x));
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Shops.Entities;
|
using Vizhvizh.Shop.Domain.Shops.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class ShippingMethodConfiguration : IEntityTypeConfiguration<ShippingMethod>
|
internal class ShippingMethodConfiguration : BaseEntityConfiguration<ShippingMethod,ShippingMethodId ,byte>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<ShippingMethod> builder)
|
public override void Configure(EntityTypeBuilder<ShippingMethod> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("ShippingMethods", schema: "Shop");
|
builder.ToTable("ShippingMethods", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Shops.TypeIds.ShippingMethodId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Shops.Entities;
|
using Vizhvizh.Shop.Domain.Shops.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
public class ShopConfiguration : IEntityTypeConfiguration<Domain.Shops.Entities.Shop>
|
public class ShopConfiguration : BaseEntityConfiguration<Domain.Shops.Entities.Shop, ShopId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Domain.Shops.Entities.Shop> builder)
|
public override void Configure(EntityTypeBuilder<Domain.Shops.Entities.Shop> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
builder.ToTable("Shops", schema: "Shop");
|
builder.ToTable("Shops", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Shops.TypeIds.ShopId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.OwnerId)
|
builder.Property(x => x.OwnerId)
|
||||||
.HasField("_ownerId");
|
.HasField("_ownerId");
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.ValuesObjects;
|
using Vizhvizh.Shop.Domain.Sliders.ValuesObjects;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class SliderConfiguration : IEntityTypeConfiguration<Slider>
|
internal class SliderConfiguration : BaseEntityConfiguration<Slider,SliderId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Slider> builder)
|
public override void Configure(EntityTypeBuilder<Slider> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Sliders", schema: "Shop");
|
builder.ToTable("Sliders", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Sliders.TypeIds.SliderId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -2,18 +2,17 @@
|
|||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class SpecificationsConfiguration : IEntityTypeConfiguration<Specifications>
|
internal class SpecificationsConfiguration : BaseEntityConfiguration<Specifications,SpecificationsId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Specifications> builder)
|
public override void Configure(EntityTypeBuilder<Specifications> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("ProductSpecifications", schema: "Shop");
|
builder.ToTable("ProductSpecifications", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x=>x.Value, x=> new Domain.Products.TypeIds.SpecificationsId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class UnitConfiguration : IEntityTypeConfiguration<Unit>
|
internal class UnitConfiguration : BaseEntityConfiguration<Unit, UnitId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Unit> builder)
|
public override void Configure(EntityTypeBuilder<Unit> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Units", schema: "Shop");
|
builder.ToTable("Units", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.UnitId(x));
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Users.Entities;
|
using Vizhvizh.Shop.Domain.Users.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Users.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
public class UserConfiguration : IEntityTypeConfiguration<User>
|
public class UserConfiguration : BaseEntityConfiguration<User,UserId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<User> builder)
|
public override void Configure(EntityTypeBuilder<User> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Users", schema: "Shop");
|
builder.ToTable("Users", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Users.TypeIds.UserId(x))
|
|
||||||
.ValueGeneratedOnAdd();
|
|
||||||
|
|
||||||
//builder.OwnsOne(x => x.NationalCode, sa =>
|
//builder.OwnsOne(x => x.NationalCode, sa =>
|
||||||
//{
|
//{
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class VariantConfiguration : IEntityTypeConfiguration<Variant>
|
internal class VariantConfiguration : BaseEntityConfiguration<Variant,VariantId, long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<Variant> builder)
|
public override void Configure(EntityTypeBuilder<Variant> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("Variants", schema: "Shop");
|
builder.ToTable("Variants", schema: "Shop");
|
||||||
builder.HasKey(x => x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.VariantId(x));
|
|
||||||
|
|
||||||
builder.Property(x => x.Title)
|
builder.Property(x => x.Title)
|
||||||
.HasField("_title");
|
.HasField("_title");
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||||
using Vizhvizh.Shop.Domain.Products.Entities;
|
using Vizhvizh.Shop.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.Shop.Domain.Products.TypeIds;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
namespace Vizhvizh.Shop.Infrastructure.EF.Configurations;
|
||||||
|
|
||||||
internal class VariantUnitConfiguration : IEntityTypeConfiguration<VariantUnit>
|
internal class VariantUnitConfiguration : BaseEntityConfiguration<VariantUnit,VariantUnitId,long>
|
||||||
{
|
{
|
||||||
public void Configure(EntityTypeBuilder<VariantUnit> builder)
|
public override void Configure(EntityTypeBuilder<VariantUnit> builder)
|
||||||
{
|
{
|
||||||
|
base.Configure(builder);
|
||||||
|
|
||||||
builder.ToTable("VariantUnits", schema: "Shop");
|
builder.ToTable("VariantUnits", schema: "Shop");
|
||||||
builder.HasKey(x=>x.Id);
|
|
||||||
builder.Property(x => x.Id)
|
|
||||||
.HasConversion(x => x.Value, x => new Domain.Products.TypeIds.VariantUnitId(x));
|
|
||||||
|
|
||||||
builder.Property(x => x.VariantUnitType)
|
builder.Property(x => x.VariantUnitType)
|
||||||
.HasColumnType("INT")
|
.HasColumnType("INT")
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.IdentityModel.Abstractions;
|
using Microsoft.IdentityModel.Abstractions;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
using Vizhvizh.Shared.Domain.ValueObjects;
|
using Vizhvizh.Shared.Domain.ValueObjects;
|
||||||
using Vizhvizh.Shared.Infrastructure.EF.Configurations.Converters;
|
using Vizhvizh.Shared.Infrastructure.EF.Configurations.Converters;
|
||||||
using Vizhvizh.Shop.Domain.Members.TypeIds;
|
using Vizhvizh.Shop.Domain.Members.TypeIds;
|
||||||
@@ -36,15 +37,7 @@ internal class ShopDbContext : DbContext
|
|||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
modelBuilder.ApplyConfigurationsFromAssembly(Assemblies.Infrastructure, FindConfigurations);
|
modelBuilder.ApplyConfigurationsFromAssembly(Assemblies.Infrastructure, FindConfigurations);
|
||||||
|
modelBuilder.AddHiLoSequences();
|
||||||
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
|
|
||||||
{
|
|
||||||
var createOnProperty = entityType.FindProperty("CreateOn");
|
|
||||||
if (createOnProperty != null && createOnProperty.ClrType == typeof(DateTime))
|
|
||||||
{
|
|
||||||
createOnProperty.SetDefaultValueSql("GETDATE()");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public bool FindConfigurations(Type type)
|
public bool FindConfigurations(Type type)
|
||||||
=> type?.FullName?.Contains("Configurations") ?? false;
|
=> type?.FullName?.Contains("Configurations") ?? false;
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Vizhvizh.Shop.Infrastructure.Exceptions;
|
||||||
|
|
||||||
|
public class EntityNotFoundException : Exception
|
||||||
|
{
|
||||||
|
public EntityNotFoundException()
|
||||||
|
: base("entity not found")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,15 +1,16 @@
|
|||||||
using Vizhvizh.Shop.Domain.Shops.Repositories;
|
using Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
using Vizhvizh.Shop.Domain.Shops.Repositories;
|
||||||
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||||
using Vizhvizh.Shop.Infrastructure.EF;
|
using Vizhvizh.Shop.Infrastructure.EF;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.Repositories
|
namespace Vizhvizh.Shop.Infrastructure.Repositories
|
||||||
{
|
{
|
||||||
internal class ShopRepository(ShopDbContext context) : IShopRepository
|
internal class ShopRepository(ShopDbContext context) : RepositoryBase<Domain.Shops.Entities.Shop, ShopId>(context), IShopRepository, IScopeDependency
|
||||||
{
|
{
|
||||||
public async Task AddAsync(Domain.Shops.Entities.Shop shop, CancellationToken cancellationToken)
|
public async Task AddAsync(Domain.Shops.Entities.Shop shop, CancellationToken cancellationToken)
|
||||||
=> await context.Shops.AddAsync(shop, cancellationToken);
|
=> await context.Shops.AddAsync(shop, cancellationToken);
|
||||||
|
|
||||||
public async Task<Domain.Shops.Entities.Shop?> FindByIdAsync(ShopId id, CancellationToken cancellationToken)
|
public async Task<Domain.Shops.Entities.Shop?> FindByIdAsync(ShopId id, CancellationToken cancellationToken)
|
||||||
=> await context.Shops.FindAsync(id,cancellationToken).ConfigureAwait(false);
|
=> await context.Shops.FindAsync(id, cancellationToken).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,12 @@
|
|||||||
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
using Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.Repositories;
|
using Vizhvizh.Shop.Domain.Sliders.Repositories;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
|
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
|
||||||
|
using Vizhvizh.Shop.Infrastructure.EF;
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure.Repositories;
|
namespace Vizhvizh.Shop.Infrastructure.Repositories;
|
||||||
|
|
||||||
public class SliderRepository : ISliderRepository
|
internal class SliderRepository(ShopDbContext context) : RepositoryBase<Slider, SliderId>(context), ISliderRepository, IScopeDependency
|
||||||
{
|
{
|
||||||
public Task AddAsync(Slider slider, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task GetByIdAsync(SliderId id, CancellationToken cancellationToken)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain;
|
||||||
|
using Vizhvizh.Shop.Infrastructure.EF;
|
||||||
|
using Vizhvizh.Shop.Infrastructure.Exceptions;
|
||||||
|
|
||||||
|
namespace Vizhvizh.Shop.Infrastructure;
|
||||||
|
|
||||||
|
internal class RepositoryBase<T, TId> : IRepositoryBase<T, TId>
|
||||||
|
where T : Entity<TId> where TId : ITypeIdValueBase
|
||||||
|
{
|
||||||
|
private readonly ShopDbContext _shopDbContext;
|
||||||
|
|
||||||
|
public RepositoryBase(ShopDbContext shopDbContext)
|
||||||
|
{
|
||||||
|
this._shopDbContext = shopDbContext;
|
||||||
|
}
|
||||||
|
public async Task AddAsync(T entity, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await _shopDbContext.AddAsync(entity, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DeleteAsync(TId id, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var entity = await FindByIdAsync(id, cancellationToken);
|
||||||
|
if (entity == null)
|
||||||
|
throw new EntityNotFoundException();
|
||||||
|
|
||||||
|
_shopDbContext.Remove(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task DeleteAsync(T entity, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_shopDbContext.Remove(entity);
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<T?> FindByIdAsync(TId id, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var entity = _shopDbContext.Set<T>();
|
||||||
|
return await entity.FindAsync(id, cancellationToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IQueryable<T> GetQueryAsNoTracking()
|
||||||
|
=> _shopDbContext.Set<T>().AsNoTracking();
|
||||||
|
|
||||||
|
public Task UpdateAsync(T entity, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_shopDbContext.Update(entity);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ using Vizhvizh.Shop.Infrastructure.Repositories;
|
|||||||
using Vizhvizh.BuildingBlocks.Infrastructure.SelectBuilders;
|
using Vizhvizh.BuildingBlocks.Infrastructure.SelectBuilders;
|
||||||
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
||||||
using Vizhvizh.Shop.Domain.Sliders.Repositories;
|
using Vizhvizh.Shop.Domain.Sliders.Repositories;
|
||||||
|
using Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
|
||||||
|
|
||||||
|
|
||||||
namespace Vizhvizh.Shop.Infrastructure;
|
namespace Vizhvizh.Shop.Infrastructure;
|
||||||
@@ -36,6 +37,7 @@ public class ShopStartup
|
|||||||
services.AddScoped<IExecutor, Executor>();
|
services.AddScoped<IExecutor, Executor>();
|
||||||
services.Scan(scan => scan.
|
services.Scan(scan => scan.
|
||||||
FromAssemblies(Assemblies.Application, Assemblies.Infrastructure)
|
FromAssemblies(Assemblies.Application, Assemblies.Infrastructure)
|
||||||
|
|
||||||
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
|
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
|
||||||
.AsImplementedInterfaces()
|
.AsImplementedInterfaces()
|
||||||
.WithScopedLifetime()
|
.WithScopedLifetime()
|
||||||
@@ -47,7 +49,19 @@ public class ShopStartup
|
|||||||
.WithScopedLifetime()
|
.WithScopedLifetime()
|
||||||
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
|
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
|
||||||
.AsImplementedInterfaces()
|
.AsImplementedInterfaces()
|
||||||
.WithScopedLifetime());
|
.WithScopedLifetime()
|
||||||
|
|
||||||
|
.AddClasses(classes => classes.AssignableTo(typeof(ISingletonDependency)), publicOnly: false)
|
||||||
|
.AsImplementedInterfaces()
|
||||||
|
.WithSingletonLifetime()
|
||||||
|
.AddClasses(classes => classes.AssignableTo(typeof(IScopeDependency)), publicOnly: false)
|
||||||
|
.AsImplementedInterfaces()
|
||||||
|
.WithScopedLifetime()
|
||||||
|
.AddClasses(classes => classes.AssignableTo(typeof(ITransientDependency)), publicOnly: false)
|
||||||
|
.AsImplementedInterfaces()
|
||||||
|
.WithTransientLifetime()
|
||||||
|
|
||||||
|
);
|
||||||
services.Decorate(typeof(ICommandHandler<>), typeof(UnitOfWorkCommandHandlerDecorator<>));
|
services.Decorate(typeof(ICommandHandler<>), typeof(UnitOfWorkCommandHandlerDecorator<>));
|
||||||
services.Decorate(typeof(ICommandHandler<,>), typeof(UnitOfWorkCommandHandlerDecorator<,>));
|
services.Decorate(typeof(ICommandHandler<,>), typeof(UnitOfWorkCommandHandlerDecorator<,>));
|
||||||
services.AddScoped(sa =>
|
services.AddScoped(sa =>
|
||||||
@@ -71,10 +85,5 @@ public class ShopStartup
|
|||||||
|
|
||||||
services.AddScoped<ISqlDialect, SqlServerDialect>();
|
services.AddScoped<ISqlDialect, SqlServerDialect>();
|
||||||
services.AddScoped<ISqlSelectBuilder, SqlSelectBuilder>();
|
services.AddScoped<ISqlSelectBuilder, SqlSelectBuilder>();
|
||||||
|
|
||||||
#region Repositories
|
|
||||||
services.AddScoped<IShopRepository, ShopRepository>();
|
|
||||||
services.AddScoped<ISliderRepository, SliderRepository>();
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Vichvich.Shared.Infrastructure\Vizhvizh.Shared.Infrastructure.csproj" />
|
<ProjectReference Include="..\Vichvich.Shared.Infrastructure\Vizhvizh.Shared.Infrastructure.csproj" />
|
||||||
<ProjectReference Include="..\Vichvich.Shop.Application\Vizhvizh.Shop.Application.csproj" />
|
<ProjectReference Include="..\Vichvich.Shop.Application\Vizhvizh.Shop.Application.csproj" />
|
||||||
<ProjectReference Include="..\Vichvich.Shop.Domain\Vizhvizh.Shop.Domain.csproj" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Contract;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Api.Configurations
|
||||||
|
{
|
||||||
|
public class ExecutionContextAccessor : IExecutionContextAccessor
|
||||||
|
{
|
||||||
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||||
|
|
||||||
|
public ExecutionContextAccessor(IHttpContextAccessor httpContextAccessor)
|
||||||
|
{
|
||||||
|
_httpContextAccessor = httpContextAccessor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Guid UserId
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_httpContextAccessor
|
||||||
|
.HttpContext?
|
||||||
|
.User?
|
||||||
|
.Claims?
|
||||||
|
.SingleOrDefault(x => x.Type == "sub")?
|
||||||
|
.Value != null)
|
||||||
|
{
|
||||||
|
return Guid.Parse(_httpContextAccessor.HttpContext.User.Claims.Single(
|
||||||
|
x => x.Type == "sub").Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ApplicationException("User context is not available");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public bool IsAvailable => _httpContextAccessor.HttpContext != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Vizhvizh.BuildingBlocks.Infrastructure;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Api.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
public class ProductController(IExecutor executor) : ControllerBase
|
||||||
|
{
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<ActionResult> Create([FromBody] CreateProductCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await executor.Execute(request, cancellationToken);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Vizhvizh.BuildingBlocks.Infrastructure;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Api.Controllers
|
||||||
|
{
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
public class ShopController(IExecutor executor) : ControllerBase
|
||||||
|
{
|
||||||
|
[HttpGet]
|
||||||
|
public async Task<ActionResult<ShopDTO?>> GetById([FromQuery] long shopId, CancellationToken cancellationToken)
|
||||||
|
=> Ok(await executor.Execute(new GetShopByIdQuery(shopId), cancellationToken));
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<ActionResult> Create([FromBody] CreateShopCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await executor.Execute(request, cancellationToken);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Vizhvizh.BuildingBlocks.Infrastructure;
|
||||||
|
using Vizhvizh.GoldGallery.Api.RequestModels;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.ValuesObjects;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Api.Controllers
|
||||||
|
{
|
||||||
|
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
|
||||||
|
public class SliderController(IExecutor executor) : ControllerBase
|
||||||
|
{
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<ActionResult> AddMainSlider([FromBody] CreateSliderRequestModel request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await executor.Execute(new CreateSliderCommand(request.Title, request.ImageUrl, request.LinkUrl, SliderKeyType.Main, null), cancellationToken);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<ActionResult> AddShopSlider([FromHeader] long shopId, [FromBody] CreateSliderRequestModel request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await executor.Execute(new CreateSliderCommand(request.Title, request.ImageUrl, request.LinkUrl, SliderKeyType.Shop, shopId.ToString()), cancellationToken);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<ActionResult> AddCategorySlider([FromHeader] long categoryId, [FromBody] CreateSliderRequestModel request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await executor.Execute(new CreateSliderCommand(request.Title, request.ImageUrl, request.LinkUrl, SliderKeyType.Category, categoryId.ToString()), cancellationToken);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public async Task<ActionResult<IEnumerable<SliderDTO>>> GetByKey([FromQuery] GetSlidersByKeyQuery request,CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var result = await executor.Execute(request,cancellationToken);
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.Api.Configurations;
|
||||||
|
using Vizhvizh.GoldGallery.Infrastructure;
|
||||||
|
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Add services to the container.
|
||||||
|
|
||||||
|
|
||||||
|
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
||||||
|
builder.Services.AddSingleton<IExecutionContextAccessor, ExecutionContextAccessor>();
|
||||||
|
|
||||||
|
GoldGalleryStartup.Initialize(builder.Services, builder.Configuration.GetConnectionString("GoldGallery")!);
|
||||||
|
|
||||||
|
builder.Services.AddControllers();
|
||||||
|
builder.Services.AddSwaggerGen();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline.
|
||||||
|
app.UseSwagger();
|
||||||
|
app.UseSwaggerUI(opt =>
|
||||||
|
{
|
||||||
|
opt.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
|
||||||
|
});
|
||||||
|
|
||||||
|
//app.UseHttpsRedirection();
|
||||||
|
|
||||||
|
app.UseAuthorization();
|
||||||
|
|
||||||
|
app.MapControllers();
|
||||||
|
|
||||||
|
app.Run();
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||||
|
"iisSettings": {
|
||||||
|
"windowsAuthentication": false,
|
||||||
|
"anonymousAuthentication": true,
|
||||||
|
"iisExpress": {
|
||||||
|
"applicationUrl": "http://localhost:46206",
|
||||||
|
"sslPort": 44384
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"http": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "weatherforecast",
|
||||||
|
"applicationUrl": "http://localhost:5210",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "weatherforecast",
|
||||||
|
"applicationUrl": "https://localhost:7209;http://localhost:5210",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"IIS Express": {
|
||||||
|
"commandName": "IISExpress",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "weatherforecast",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Vizhvizh.GoldGallery.Api.RequestModels;
|
||||||
|
|
||||||
|
public record CreateSliderRequestModel(string Title,string ImageUrl, string LinkUrl);
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<InvariantGlobalization>false</InvariantGlobalization>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.25">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.5" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Vizhvizh.GoldGallery.Infrastructure\Vizhvizh.GoldGallery.Infrastructure.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
@Vizhvizh.GoldGallery.Api_HostAddress = http://localhost:5210
|
||||||
|
|
||||||
|
GET {{Vizhvizh.GoldGallery.Api_HostAddress}}/weatherforecast/
|
||||||
|
Accept: application/json
|
||||||
|
|
||||||
|
###
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"GoldGallery": "Data Source=.;Initial Catalog=Vizhvizh.GoldGallery;Integrated Security=True;Trusted_Connection=True; MultipleActiveResultSets=true;TrustServerCertificate=True;"
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Products.Repositories;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers.Categories;
|
||||||
|
|
||||||
|
public class CreateCategoryCommandHandler(ICategoryRepository categoryRepository) : ICommandHandler<CreateCategoryCommand>
|
||||||
|
{
|
||||||
|
public Task Handle(CreateCategoryCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
//var category = Category.CreateNew(request.Title,
|
||||||
|
// request.Description,
|
||||||
|
// request.Image)
|
||||||
|
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
}
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
using FluentValidation;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Products.Entities;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Products.Repositories;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Resource.Products;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers.Products;
|
||||||
|
|
||||||
|
public class CreateProductCommandHandler(IProductRepository productRepository,
|
||||||
|
ICategoryRepository categoryRepository) : ICommandHandler<CreateProductCommand>
|
||||||
|
{
|
||||||
|
public async Task Handle(CreateProductCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var category = (await categoryRepository.FindByIdAsync(request.CategoryId, cancellationToken))!;
|
||||||
|
var specifications = request.ProductSpecifications.Select(x => Specifications.CreateNew(x.Title, x.Values)).ToList();
|
||||||
|
var productVariantImage = request.ProductVariants.Select(x => x.Gallery).ToList();
|
||||||
|
var productVariants = request.ProductVariants.Select(x => ProductVariant.CreateNew(x.Quantity, x.Weight, x.Gallery)).ToList();
|
||||||
|
|
||||||
|
var product = Product.CreateNew(request.Title, request.Description,
|
||||||
|
request.ProductCondition, category, specifications, productVariants, request.Image, request.File3D, request.CraftsmanshipFee);
|
||||||
|
|
||||||
|
await productRepository.AddAsync(product, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CreateProductCommandValidator : AbstractValidator<CreateProductCommand>
|
||||||
|
{
|
||||||
|
public CreateProductCommandValidator(ICategoryRepository categoryRepository)
|
||||||
|
{
|
||||||
|
RuleFor(x => x.CategoryId)
|
||||||
|
.MustAsync(async (id, cancellation) =>
|
||||||
|
{
|
||||||
|
return await categoryRepository.GetQueryAsNoTracking().AnyAsync(x => x.Id == id);
|
||||||
|
}).WithMessage(m => string.Format(ValidationResources.NotFoundCategoryById, m.CategoryId));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.Shared.Domain.ValueObjects;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.Repositories;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.TypeIds;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.ValuesObjects;
|
||||||
|
using FluentValidation;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers.Shops;
|
||||||
|
|
||||||
|
public class CreateShopCommandHandler(IShopRepository shopRepository) : ICommandHandler<CreateShopCommand>
|
||||||
|
{
|
||||||
|
public async Task Handle(CreateShopCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var location = ShopLocation.CreateNew(request.ShopLocation.Latitude, request.ShopLocation.Longitude,
|
||||||
|
request.ShopLocation.ProvinceId, request.ShopLocation.CityId, request.ShopLocation.Address, request.ShopLocation.PostalCode);
|
||||||
|
|
||||||
|
var businessLicense = ShopBusinessLicense.CreateNew(request.ShopBusinessLicenseImage, request.ShopBusinessLicenseCode);
|
||||||
|
|
||||||
|
var shop = Domain.Shops.Entities.Shop.CreateNew(request.OwnerId, request.Title,
|
||||||
|
location, TelephoneVO.CreateNew(request.Telephone), businessLicense, request.Description);
|
||||||
|
|
||||||
|
await shopRepository.AddAsync(shop, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CreateShopCommandValidator : AbstractValidator<CreateShopCommand>
|
||||||
|
{
|
||||||
|
public CreateShopCommandValidator()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.Repositories;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers.Shops;
|
||||||
|
|
||||||
|
public class SetTitleShopCommandHandler(IShopRepository shopRepository) : ICommandHandler<SetTitleShopCommand>
|
||||||
|
{
|
||||||
|
public async Task Handle(SetTitleShopCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var shop = await shopRepository.FindByIdAsync(request.ShopId, cancellationToken);
|
||||||
|
shop.SetTitle(request.Title);
|
||||||
|
}
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.Entities;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.Repositories;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.ValuesObjects;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers.Sliders;
|
||||||
|
|
||||||
|
public class CreateSliderCommandHandler(ISliderRepository sliderRepository) : ICommandHandler<CreateSliderCommand>
|
||||||
|
{
|
||||||
|
public async Task Handle(CreateSliderCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var slider = Slider.CreateNew(request.Title, SliderImage.CreateNew(request.ImageUrl),
|
||||||
|
SliderUrl.CreateNew(request.LinkUrl), new SliderKey(request.SliderKeyType, request.SliderKey));
|
||||||
|
|
||||||
|
await sliderRepository.AddAsync(slider, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using FluentValidation;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.CommandHandlers
|
||||||
|
{
|
||||||
|
public class TestCommandHandler : ICommandHandler<TestCommand, Guid>
|
||||||
|
{
|
||||||
|
public Task<Guid> Handle(TestCommand request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestCommandValidator : AbstractValidator<TestCommand>
|
||||||
|
{
|
||||||
|
public TestCommandValidator()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Application.Contract;
|
||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application;
|
||||||
|
|
||||||
|
public interface IGoldGalleryModule
|
||||||
|
{
|
||||||
|
Task<TResult> ExecuteCommandAsync<TResult>(ICommand<TResult> command,CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
Task ExecuteCommandAsync(ICommand command, CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
Task<TResult> ExecuteQueryAsync<TResult>(IQuery<TResult> query, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
using Dapper;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Query;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Data;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.QueryHandlers.Shops;
|
||||||
|
|
||||||
|
public class GetShopByIdQueryHandler(ISqlConnectionFactory connectionFactory, ISqlSelectBuilder sqlSelectBuilder) : IQueryHandler<GetShopByIdQuery, ShopDTO?>
|
||||||
|
{
|
||||||
|
public async Task<ShopDTO?> Handle(GetShopByIdQuery request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var connection = connectionFactory.GetOpenConnection();
|
||||||
|
|
||||||
|
var (sql, parameters) = sqlSelectBuilder
|
||||||
|
.From("Shop.Shops")
|
||||||
|
.Select<Domain.Shops.Entities.Shop, ShopDTO>(
|
||||||
|
(d => d.Id, dto => dto.Id),
|
||||||
|
(d => d.OwnerId, dto => dto.OwnerId),
|
||||||
|
(d => d.Title, dto => dto.Title),
|
||||||
|
(d => d.Description, dto => dto.Description),
|
||||||
|
(d => d.Email, dto => dto.Email),
|
||||||
|
(d => d.Telephone, dto => dto.Telephone),
|
||||||
|
(d => d.Logo, dto => dto.Logo)
|
||||||
|
)
|
||||||
|
.Where<ShopDTO>(s => s.Id, request.ShopId)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
var result = await connection.QueryFirstOrDefaultAsync<ShopDTO>(sql, parameters);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using Dapper;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Configuration.Query;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.Data;
|
||||||
|
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.Entities;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.Application.QueryHandlers.Sliders;
|
||||||
|
|
||||||
|
public class GetSlidersByKeyQueryHandler(ISqlConnectionFactory sqlConnectionFactory, ISqlSelectBuilder sqlSelectBuilder)
|
||||||
|
: IQueryHandler<GetSlidersByKeyQuery, IEnumerable<SliderDTO>>
|
||||||
|
{
|
||||||
|
public async Task<IEnumerable<SliderDTO>> Handle(GetSlidersByKeyQuery request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var connection = sqlConnectionFactory.GetOpenConnection();
|
||||||
|
|
||||||
|
var (sql, parameters) = sqlSelectBuilder.From("Shop.Sliders")
|
||||||
|
.Select<Slider, SliderDTO>(
|
||||||
|
(d => d.Title, dto => dto.Title),
|
||||||
|
(d => d.Image, dto => dto.Image),
|
||||||
|
(d => d.Url, dto => dto.LinkUrl)
|
||||||
|
)
|
||||||
|
.Pagination<Slider>(request.PageNumber, request.PageSize, x => x.CreateOn, false)
|
||||||
|
.Where<Slider>(x => x.Key, request.Key)
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
var result = await connection.QueryAsync<SliderDTO>(sql, parameters);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Dapper" Version="2.1.72" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Vizhvizh.GoldGallery.ApplicationContract\Vizhvizh.GoldGallery.ApplicationContract.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
public record CreateCategoryCommand(string Title, string Description, string Image, long? ParentId) : CommandBase;
|
||||||
|
public record UpdateCategoryCommand(long CategoryId, string Title, string Description, string Image, long? ParentId) : CommandBase;
|
||||||
|
public record DeleteCategoryCommand(long CategoryId) : CommandBase;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.Models.Products;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Products.ValuesObjects;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
public record CreateProductCommand(long ShopId, long CategoryId, string Title, string Description, string Image, decimal CraftsmanshipFee,
|
||||||
|
ProductConditionEnum ProductCondition, string? File3D, List<CreateProductModel.SpecificationsModel> ProductSpecifications,
|
||||||
|
List<CreateProductModel.ProductVariant> ProductVariants) : CommandBase;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.TypeIds;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.ValuesObjects;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
public record CreateShopCommand(long OwnerId, string Title,string Telephone,string ShopBusinessLicenseImage,string ShopBusinessLicenseCode,
|
||||||
|
string Description, string Email, ShopLocation ShopLocation) : CommandBase;
|
||||||
|
public record SetTitleShopCommand(long ShopId,string Title) : CommandBase;
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Sliders.ValuesObjects;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Commands;
|
||||||
|
|
||||||
|
public record CreateSliderCommand(string Title, string ImageUrl,string LinkUrl, SliderKeyType SliderKeyType, string? SliderKey) : CommandBase;
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Commands
|
||||||
|
{
|
||||||
|
public record TestCommand() : CommandBase<Guid>;
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
|
||||||
|
public class ShopDTO
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public long OwnerId{ get; set; }
|
||||||
|
public string Title { get; set; } = null!;
|
||||||
|
public string? Description{ get; set; }
|
||||||
|
public string? Email { get; set; }
|
||||||
|
public string Telephone { get; set; } = null!;
|
||||||
|
public string Logo{ get; set; } = null!;
|
||||||
|
public ShopLocationDTO ShopLocation { get; set; } = null!;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
|
||||||
|
public record ShopLocationDTO(double Latitude,double Longitude,int ProvinceId, int CityId,string Address, string PostalCode)
|
||||||
|
{
|
||||||
|
public static implicit operator ShopLocationDTO(string address)
|
||||||
|
=> JsonConvert.DeserializeObject<ShopLocationDTO>(address)!;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
|
||||||
|
public record SliderDTO(string Title, string Image,string LinkUrl);
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Models.Products;
|
||||||
|
|
||||||
|
public class CreateProductModel
|
||||||
|
{
|
||||||
|
public record SpecificationsModel(string Title, List<string> Values);
|
||||||
|
public record ProductVariant(double Quantity, decimal Weight, List<string> Gallery);
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
|
||||||
|
public class PaginationQuery
|
||||||
|
{
|
||||||
|
public int PageNumber { get; set; }
|
||||||
|
public int PageSize { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
using Vizhvizh.GoldGallery.Domain.Shops.TypeIds;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
|
||||||
|
public record GetShopByIdQuery(long ShopId) : IQuery<ShopDTO?>;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||||
|
using Vizhvizh.GoldGallery.ApplicationContract.DTOs;
|
||||||
|
|
||||||
|
namespace Vizhvizh.GoldGallery.ApplicationContract.Queries;
|
||||||
|
|
||||||
|
public class GetSlidersByKeyQuery : PaginationQuery, IQuery<IEnumerable<SliderDTO>>
|
||||||
|
{
|
||||||
|
public string Key { get; set; }
|
||||||
|
}
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Vichvich.Shared.Application\Vizhvizh.Shared.Application.csproj" />
|
||||||
|
<ProjectReference Include="..\Vizhvizh.GoldGallery.Domain\Vizhvizh.GoldGallery.Domain.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Members {
|
||||||
|
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 EntityResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal EntityResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Members.EntityResources", typeof(EntityResources).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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?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>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Members {
|
||||||
|
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 ExceptionResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ExceptionResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Members.ExceptionResources", typeof(ExceptionResources).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 نام یا نام خانوادگی نمیتواند خالی باشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string MemberFullNameNullOrEmptyException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MemberFullNameNullOrEmptyException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="MemberFullNameNullOrEmptyException" xml:space="preserve">
|
||||||
|
<value>نام یا نام خانوادگی نمیتواند خالی باشد</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Members {
|
||||||
|
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 ValueObjectResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ValueObjectResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Members.ValueObjectResources", typeof(ValueObjectResources).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 نام و نام خانوادگی.
|
||||||
|
/// </summary>
|
||||||
|
public static string MemberFullName {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MemberFullName", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="MemberFullName" xml:space="preserve">
|
||||||
|
<value>نام و نام خانوادگی</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Products {
|
||||||
|
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 EntityResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal EntityResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Products.EntityResources", typeof(EntityResources).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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 1.3
|
||||||
|
|
||||||
|
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">1.3</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1">this is my long string</data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
[base64 mime encoded serialized .NET Framework object]
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||||
|
</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.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:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<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" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</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>1.3</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
+99
@@ -0,0 +1,99 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Products {
|
||||||
|
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 ExceptionResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ExceptionResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Products.ExceptionResources", typeof(ExceptionResources).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 اجرت نمیتواند منفی باشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string CraftsmanshipFeeCannotBeNegativeException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("CraftsmanshipFeeCannotBeNegativeException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to وزن طلا باید بزرگتر از {0} گرم باشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string GoldWeightMustGreaterThanException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("GoldWeightMustGreaterThanException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to اجرت نامعتبر میباشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string InvalidCraftsmanshipFeeException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InvalidCraftsmanshipFeeException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to مقدار {0} برای ویژگی با نوع {1} معتبر نمیباشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string InvalidProductVariantValueException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InvalidProductVariantValueException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
<?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="CraftsmanshipFeeCannotBeNegativeException" xml:space="preserve">
|
||||||
|
<value>اجرت نمیتواند منفی باشد</value>
|
||||||
|
</data>
|
||||||
|
<data name="GoldWeightMustGreaterThanException" xml:space="preserve">
|
||||||
|
<value>وزن طلا باید بزرگتر از {0} گرم باشد</value>
|
||||||
|
</data>
|
||||||
|
<data name="InvalidCraftsmanshipFeeException" xml:space="preserve">
|
||||||
|
<value>اجرت نامعتبر میباشد</value>
|
||||||
|
</data>
|
||||||
|
<data name="InvalidProductVariantValueException" xml:space="preserve">
|
||||||
|
<value>مقدار {0} برای ویژگی با نوع {1} معتبر نمیباشد</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Products {
|
||||||
|
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 ValidationResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ValidationResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Products.ValidationResources", typeof(ValidationResources).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} یافت نشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string NotFoundCategoryById {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("NotFoundCategoryById", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="NotFoundCategoryById" xml:space="preserve">
|
||||||
|
<value>دستهبندی با شناسه {0} یافت نشد</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
+90
@@ -0,0 +1,90 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Products {
|
||||||
|
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 ValueObjectResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ValueObjectResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Products.ValueObjectResources", typeof(ValueObjectResources).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 نو.
|
||||||
|
/// </summary>
|
||||||
|
public static string ProductConditionEnum_BrandNew {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ProductConditionEnum_BrandNew", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to در حد نو.
|
||||||
|
/// </summary>
|
||||||
|
public static string ProductConditionEnum_LikeNew {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ProductConditionEnum_LikeNew", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to کارکرده.
|
||||||
|
/// </summary>
|
||||||
|
public static string ProductConditionEnum_Used {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ProductConditionEnum_Used", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
<?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="ProductConditionEnum_BrandNew" xml:space="preserve">
|
||||||
|
<value>نو</value>
|
||||||
|
</data>
|
||||||
|
<data name="ProductConditionEnum_LikeNew" xml:space="preserve">
|
||||||
|
<value>در حد نو</value>
|
||||||
|
</data>
|
||||||
|
<data name="ProductConditionEnum_Used" xml:space="preserve">
|
||||||
|
<value>کارکرده</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Shops {
|
||||||
|
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 EntityResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal EntityResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Shops.EntityResources", typeof(EntityResources).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 مدیریت فروشگاه.
|
||||||
|
/// </summary>
|
||||||
|
public static string Management {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Management", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to عضو.
|
||||||
|
/// </summary>
|
||||||
|
public static string Member {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Member", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to نوع ارسال مرسوله.
|
||||||
|
/// </summary>
|
||||||
|
public static string ShippingMethod {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ShippingMethod", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to فروشگاه.
|
||||||
|
/// </summary>
|
||||||
|
public static string Shop {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Shop", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
<?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="Management" xml:space="preserve">
|
||||||
|
<value>مدیریت فروشگاه</value>
|
||||||
|
</data>
|
||||||
|
<data name="Member" xml:space="preserve">
|
||||||
|
<value>عضو</value>
|
||||||
|
</data>
|
||||||
|
<data name="ShippingMethod" xml:space="preserve">
|
||||||
|
<value>نوع ارسال مرسوله</value>
|
||||||
|
</data>
|
||||||
|
<data name="Shop" xml:space="preserve">
|
||||||
|
<value>فروشگاه</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Shops {
|
||||||
|
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 ExceptionResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ExceptionResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Shops.ExceptionResources", typeof(ExceptionResources).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 آدرس اینترنتی اسلایدر نمیتواند خالی باشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string IsNullOrEmptySliderUrlException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("IsNullOrEmptySliderUrlException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="IsNullOrEmptySliderUrlException" xml:space="preserve">
|
||||||
|
<value>آدرس اینترنتی اسلایدر نمیتواند خالی باشد</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Shops {
|
||||||
|
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 ValueObjectResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ValueObjectResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Shops.ValueObjectResources", typeof(ValueObjectResources).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 نام و نام خانوادگی.
|
||||||
|
/// </summary>
|
||||||
|
public static string MemberFullName {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MemberFullName", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to لوکیشین فروشگاه.
|
||||||
|
/// </summary>
|
||||||
|
public static string ShopLocation {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ShopLocation", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
<?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="MemberFullName" xml:space="preserve">
|
||||||
|
<value>نام و نام خانوادگی</value>
|
||||||
|
</data>
|
||||||
|
<data name="ShopLocation" xml:space="preserve">
|
||||||
|
<value>لوکیشین فروشگاه</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Users {
|
||||||
|
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 EntityResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal EntityResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Users.EntityResources", typeof(EntityResources).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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 1.3
|
||||||
|
|
||||||
|
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">1.3</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1">this is my long string</data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
[base64 mime encoded serialized .NET Framework object]
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||||
|
</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.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:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<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" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
</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>1.3</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Users {
|
||||||
|
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 ExceptionResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ExceptionResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Users.ExceptionResources", typeof(ExceptionResources).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 کد ملی معتبر نمی باشد.
|
||||||
|
/// </summary>
|
||||||
|
public static string InvalidNationalCodeException {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InvalidNationalCodeException", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
<?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="InvalidNationalCodeException" xml:space="preserve">
|
||||||
|
<value>کد ملی معتبر نمی باشد</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <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 Vizhvizh.GoldGallery.Domain.Resource.Users {
|
||||||
|
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 ValueObjectResources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal ValueObjectResources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <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("Vizhvizh.GoldGallery.Domain.Resource.Users.ValueObjectResources", typeof(ValueObjectResources).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 خواندن.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccessLevelEnum_Read {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccessLevelEnum_Read", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to خواندن/نوشتن.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccessLevelEnum_ReadWrite {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccessLevelEnum_ReadWrite", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to نوشتن.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccessLevelEnum_Write {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccessLevelEnum_Write", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
<?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="AccessLevelEnum_Read" xml:space="preserve">
|
||||||
|
<value>خواندن</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccessLevelEnum_ReadWrite" xml:space="preserve">
|
||||||
|
<value>خواندن/نوشتن</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccessLevelEnum_Write" xml:space="preserve">
|
||||||
|
<value>نوشتن</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Members\EntityResources.Designer.cs">
|
||||||
|
<DependentUpon>EntityResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Members\ExceptionResources.Designer.cs">
|
||||||
|
<DependentUpon>ExceptionResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Members\ValueObjectResources.Designer.cs">
|
||||||
|
<DependentUpon>ValueObjectResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Products\EntityResources.Designer.cs">
|
||||||
|
<DependentUpon>EntityResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Products\ExceptionResources.Designer.cs">
|
||||||
|
<DependentUpon>ExceptionResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Products\ValidationResources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>ValidationResources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Products\ValueObjectResources.Designer.cs">
|
||||||
|
<DependentUpon>ValueObjectResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Shops\EntityResources.Designer.cs">
|
||||||
|
<DependentUpon>EntityResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Shops\ExceptionResources.Designer.cs">
|
||||||
|
<DependentUpon>ExceptionResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Shops\ValueObjectResources.Designer.cs">
|
||||||
|
<DependentUpon>ValueObjectResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Users\EntityResources.Designer.cs">
|
||||||
|
<DependentUpon>EntityResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Users\ExceptionResources.Designer.cs">
|
||||||
|
<DependentUpon>ExceptionResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
<Compile Update="Users\ValueObjectResources.Designer.cs">
|
||||||
|
<DependentUpon>ValueObjectResources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Members\EntityResources.resx">
|
||||||
|
<LastGenOutput>EntityResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Members\ExceptionResources.resx">
|
||||||
|
<LastGenOutput>ExceptionResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Members\ValueObjectResources.resx">
|
||||||
|
<LastGenOutput>ValueObjectResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Products\EntityResources.resx">
|
||||||
|
<LastGenOutput>EntityResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Products\ExceptionResources.resx">
|
||||||
|
<LastGenOutput>ExceptionResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Products\ValidationResources.resx">
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>ValidationResources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Products\ValueObjectResources.resx">
|
||||||
|
<LastGenOutput>ValueObjectResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Shops\EntityResources.resx">
|
||||||
|
<LastGenOutput>EntityResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Shops\ExceptionResources.resx">
|
||||||
|
<LastGenOutput>ExceptionResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Shops\ValueObjectResources.resx">
|
||||||
|
<LastGenOutput>ValueObjectResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Users\EntityResources.resx">
|
||||||
|
<LastGenOutput>EntityResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Users\ExceptionResources.resx">
|
||||||
|
<LastGenOutput>ExceptionResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="Users\ValueObjectResources.resx">
|
||||||
|
<LastGenOutput>ValueObjectResources.Designer.cs</LastGenOutput>
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user