Infrastructure

This commit is contained in:
2026-04-22 20:51:02 +04:30
parent c64c3dd9be
commit 64ee78e320
199 changed files with 7428 additions and 1027 deletions
@@ -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>
</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>
<ProjectReference Include="..\VichVich.BuildingBlocks.Domain\Vizhvizh.BuildingBlocks.Domain.csproj" />
</ItemGroup>
+2
View File
@@ -11,6 +11,8 @@ public abstract class Entity<T>
CreateOn = DateTime.Now;
}
public T Id { get; protected set; }
public byte[] RowVersion { get; private set; }
public DateTime CreateOn { get; init ; }
private List<IDomainEvent> _domainEvents;
@@ -1,10 +1,12 @@
namespace Vizhvizh.BuildingBlocks.Domain;
public interface IRepositoryBase<TDomain, TId>
where TDomain : Entity<TId> where TId : ITypeIdValueBase
public interface IRepositoryBase<T, TId>
where T : Entity<TId> where TId : ITypeIdValueBase
{
Task CreateAsync(TDomain entity, CancellationToken cancellationToken = default);
Task UpdateAsync(TDomain entity, CancellationToken cancellationToken = default);
Task DeleteAsync(TId id, CancellationToken cancellationToken = default);
Task<TDomain> GetByIdAsync(TId id, CancellationToken cancellationToken = default);
Task AddAsync(T entity, CancellationToken cancellationToken);
Task UpdateAsync(T entity, CancellationToken cancellationToken);
Task DeleteAsync(TId id, CancellationToken cancellationToken);
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}";
}
}
@@ -6,14 +6,7 @@
<Nullable>enable</Nullable>
</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>
<ProjectReference Include="..\VichVich.BuildingBlocks.Application\Vizhvizh.BuildingBlocks.Application.csproj" />
@@ -11,7 +11,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\VichVich.BuildingBlocks.Application\Vizhvizh.BuildingBlocks.Application.csproj" />
<ProjectReference Include="..\Vichvich.Shared.Application\Vizhvizh.Shared.Application.csproj" />
<ProjectReference Include="..\Vichvich.Shop.Domain\Vizhvizh.Shop.Domain.csproj" />
</ItemGroup>
@@ -4,6 +4,6 @@ using Vizhvizh.BuildingBlocks.Domain;
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;
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;
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.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
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.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)
.HasField("_title")
@@ -39,6 +38,24 @@ internal class CategoryConfiguration : IEntityTypeConfiguration<Category>
.HasConversion(x => x.Value, x => Domain.Products.ValuesObjects.CategoryPath.CreateNew(x))
.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))?
.SetPropertyAccessMode(PropertyAccessMode.Field);
builder.Metadata.FindNavigation(nameof(Category.CategoryVariantUnits))?
@@ -1,18 +1,17 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
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.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)
.HasField("_variantUnitId")
@@ -1,17 +1,17 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Shops.Entities;
using Vizhvizh.Shop.Domain.Shops.TypeIds;
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.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))?
.SetPropertyAccessMode(PropertyAccessMode.Field);
@@ -1,18 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Members.Entities;
using Vizhvizh.Shop.Domain.Members.TypeIds;
using Vizhvizh.Shop.Domain.Members.ValuesObjects;
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.HasKey(x => x.Id);
builder.Property(x => x.Id)
.ValueGeneratedOnAdd();
builder.Property(x => x.PhoneNumber)
.HasField("_phoneNumber");
@@ -2,19 +2,19 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System.Drawing;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
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.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 =>
{
@@ -1,19 +1,19 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
using Vizhvizh.Shop.Domain.Products.ValuesObjects;
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.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 =>
{
@@ -2,19 +2,18 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shared.Domain.ValueObjects;
using Vizhvizh.Shop.Domain.Users.Entities;
using Vizhvizh.Shop.Domain.Users.TypeIds;
using Vizhvizh.Shop.Domain.Users.ValueObjects;
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.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)
.HasField("_title");
@@ -1,18 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Users.Entities;
using Vizhvizh.Shop.Domain.Users.TypeIds;
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.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)
.HasField("_title");
@@ -1,19 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Users.Entities;
using Vizhvizh.Shop.Domain.Users.TypeIds;
using Vizhvizh.Shop.Domain.Users.ValueObjects;
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.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)
.HasConversion(x=>x.Value, x=> AccessLevel.CreateNew((AccessLevelEnum)x));
@@ -1,19 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Shops.Entities;
using Vizhvizh.Shop.Domain.Shops.TypeIds;
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
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.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)
.HasField("_title");
@@ -1,19 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Shops.Entities;
using Vizhvizh.Shop.Domain.Shops.TypeIds;
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
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.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)
.HasField("_ownerId");
@@ -1,19 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Sliders.Entities;
using Vizhvizh.Shop.Domain.Sliders.TypeIds;
using Vizhvizh.Shop.Domain.Sliders.ValuesObjects;
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.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)
.HasField("_title");
@@ -2,18 +2,17 @@
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Newtonsoft.Json;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
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.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)
.HasField("_title");
@@ -1,17 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
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.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)
.HasField("_title");
@@ -1,18 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Users.Entities;
using Vizhvizh.Shop.Domain.Users.TypeIds;
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.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 =>
//{
@@ -1,17 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
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.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)
.HasField("_title");
@@ -1,17 +1,17 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Vizhvizh.Shop.Domain.Products.Entities;
using Vizhvizh.Shop.Domain.Products.TypeIds;
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.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)
.HasColumnType("INT")
@@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Abstractions;
using Vizhvizh.BuildingBlocks.Domain;
using Vizhvizh.Shared.Domain.ValueObjects;
using Vizhvizh.Shared.Infrastructure.EF.Configurations.Converters;
using Vizhvizh.Shop.Domain.Members.TypeIds;
@@ -36,15 +37,7 @@ internal class ShopDbContext : DbContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(Assemblies.Infrastructure, FindConfigurations);
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
var createOnProperty = entityType.FindProperty("CreateOn");
if (createOnProperty != null && createOnProperty.ClrType == typeof(DateTime))
{
createOnProperty.SetDefaultValueSql("GETDATE()");
}
}
modelBuilder.AddHiLoSequences();
}
public bool FindConfigurations(Type type)
=> 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,10 +1,11 @@
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.Infrastructure.EF;
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)
=> await context.Shops.AddAsync(shop, cancellationToken);
@@ -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.TypeIds;
using Vizhvizh.Shop.Infrastructure.EF;
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
View File
@@ -15,6 +15,7 @@ using Vizhvizh.Shop.Infrastructure.Repositories;
using Vizhvizh.BuildingBlocks.Infrastructure.SelectBuilders;
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
using Vizhvizh.Shop.Domain.Sliders.Repositories;
using Vizhvizh.BuildingBlocks.Infrastructure.Lifetimes;
namespace Vizhvizh.Shop.Infrastructure;
@@ -36,6 +37,7 @@ public class ShopStartup
services.AddScoped<IExecutor, Executor>();
services.Scan(scan => scan.
FromAssemblies(Assemblies.Application, Assemblies.Infrastructure)
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
.AsImplementedInterfaces()
.WithScopedLifetime()
@@ -47,7 +49,19 @@ public class ShopStartup
.WithScopedLifetime()
.AddClasses(classes => classes.AssignableTo(typeof(ICommandHandler<>)), publicOnly: false)
.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.AddScoped(sa =>
@@ -71,10 +85,5 @@ public class ShopStartup
services.AddScoped<ISqlDialect, SqlServerDialect>();
services.AddScoped<ISqlSelectBuilder, SqlSelectBuilder>();
#region Repositories
services.AddScoped<IShopRepository, ShopRepository>();
services.AddScoped<ISliderRepository, SliderRepository>();
#endregion
}
}
@@ -19,7 +19,6 @@
<ItemGroup>
<ProjectReference Include="..\Vichvich.Shared.Infrastructure\Vizhvizh.Shared.Infrastructure.csproj" />
<ProjectReference Include="..\Vichvich.Shop.Application\Vizhvizh.Shop.Application.csproj" />
<ProjectReference Include="..\Vichvich.Shop.Domain\Vizhvizh.Shop.Domain.csproj" />
</ItemGroup>
</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);
}
}
}
+33
View File
@@ -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"
}
}
}
+12
View File
@@ -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": "*"
}
@@ -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();
}
}
@@ -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);
}
}
@@ -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; }
}
@@ -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>
@@ -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>
@@ -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>
@@ -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>
@@ -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