feat : add ver 0.10.16.23 , complete coperate slae system

release
Amir Hossein Khademi 2024-02-24 23:08:02 +03:30
parent 6ac4024ea9
commit 07982e63ad
16 changed files with 1964 additions and 28 deletions

View File

@ -1 +1 @@
0.9.16.23
0.10.16.23

View File

@ -16,6 +16,10 @@ public class DiscountController : ICarterModule
.WithDisplayName("GetDiscount")
.HasApiVersion(1.0);
group.MapGet("corporate", GetCorporateDiscountAsync)
.WithDisplayName("GetDiscount")
.HasApiVersion(1.0);
group.MapPost("", Post)
.HasApiVersion(1.0);
@ -26,26 +30,30 @@ public class DiscountController : ICarterModule
.HasApiVersion(1.0);
}
private async Task<IResult> GetCorporateDiscountAsync([FromQuery] Guid? corporateUserId, [FromServices] IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(
new CreateSaleCooperationDiscount(CorporateUserId: corporateUserId ?? default), cancellationToken));
// GET:Get All Entity
public async Task<IResult> GetAllAsync([FromQuery] int page, IMediator mediator,
private async Task<IResult> GetAllAsync([FromQuery] int page, IMediator mediator,
CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(new GetDiscountsQuery(page), cancellationToken));
// GET:Get An Entity By Id
public async Task<IResult> GetAsync(Guid id, IMediator mediator, CancellationToken cancellationToken)
private async Task<IResult> GetAsync(Guid id, IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(new GetDiscountQuery(id), cancellationToken));
// POST:Create Entity
public async Task<IResult> Post([FromBody] CreateDiscountCommand request, IMediator mediator,
private async Task<IResult> Post([FromBody] CreateDiscountCommand request, IMediator mediator,
CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(request, cancellationToken));
// PUT:Update Entity
public async Task<IResult> Put([FromBody] UpdateDiscountCommand request, IMediator mediator,
private async Task<IResult> Put([FromBody] UpdateDiscountCommand request, IMediator mediator,
CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(request, cancellationToken));
// DELETE:Delete Entity
public async Task<IResult> Delete(Guid id, IMediator mediator, CancellationToken cancellationToken)
private async Task<IResult> Delete(Guid id, IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(new DeleteDiscountCommand(id), cancellationToken));
}

View File

@ -6,8 +6,8 @@
<ImplicitUsings>enable</ImplicitUsings>
<InvariantGlobalization>true</InvariantGlobalization>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<AssemblyVersion>0.9.16.23</AssemblyVersion>
<FileVersion>0.9.16.23</FileVersion>
<AssemblyVersion>0.10.16.23</AssemblyVersion>
<FileVersion>0.10.16.23</FileVersion>
</PropertyGroup>
<ItemGroup>

View File

@ -9,6 +9,7 @@ DiscountType Type,
int Count,
DateTime StartDate,
DateTime ExpireDate,
bool IsImmortal,
long PriceFloor,
bool HasPriceFloor,
long PriceCeiling,
@ -20,7 +21,8 @@ bool IsSpecialOffer,
Guid ProductId,
Guid CategoryId) : IRequest<DiscountLDto>;
public sealed record UpdateDiscountCommand(Guid Id,
public sealed record UpdateDiscountCommand(
Guid Id,
string Code,
int DiscountPercent,
long DiscountAmount,
@ -30,6 +32,7 @@ public sealed record UpdateDiscountCommand(Guid Id,
int Count,
DateTime StartDate,
DateTime ExpireDate,
bool IsImmortal,
long PriceFloor,
bool HasPriceFloor,
long PriceCeiling,
@ -41,6 +44,8 @@ public sealed record UpdateDiscountCommand(Guid Id,
Guid ProductId,
Guid CategoryId) : IRequest<bool>;
public sealed record CreateSaleCooperationDiscount(Guid CorporateUserId) : IRequest<string>;
public sealed record DeleteDiscountCommand(Guid Id) : IRequest<bool>;
public sealed record CalculateOrderDiscountCommand(string DiscountCode,Order Order) : IRequest<double>;

View File

@ -11,6 +11,7 @@ public class DiscountLDto : BaseDto<DiscountLDto,Discount>
public int Count { get; set; }
public DateTime StartDate { get; set; }
public DateTime ExpireDate { get; set; }
public bool Immortal { get; set; }
public long PriceFloor { get; set; }
public bool HasPriceFloor { get; set; }
public long PriceCeiling { get; set; }

View File

@ -9,9 +9,9 @@ public partial class CategoryDiscount : Discount
}
public CategoryDiscount(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer, Guid categoryId)
public CategoryDiscount(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count,bool immortal, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer, Guid categoryId)
: base(code, discountPercent, discountAmount, hasCode, amountType, type, count, startDate, expireDate, priceFloor, hasPriceFloor, priceCeiling, hasPriceCeiling, isInfinity, useCount,
isForInvitation, isSpecialOffer)
isForInvitation, isSpecialOffer, immortal)
{
CategoryId = categoryId;
}

View File

@ -2,7 +2,7 @@
public partial class Discount
{
public static Discount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer)
public static Discount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count,bool immortal, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer)
{
return new Discount(code,
discountPercent,
@ -20,18 +20,25 @@ public partial class Discount
isInfinity,
useCount,
isForInvitation,
isSpecialOffer);
isSpecialOffer,
immortal);
}
public bool IsExpired()
=> ExpireDate.Date < DateTime.Today.Date;
=> !Immortal && ExpireDate.Date < DateTime.Today.Date;
public void SetCorporate(Guid userId)
{
IsForSaleCooperation = true;
CorporateUserId = userId;
}
}
public partial class ProductDiscount
{
public static ProductDiscount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation ,bool isSpecialOffer, Guid productId)
public static ProductDiscount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, bool immortal, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation ,bool isSpecialOffer, Guid productId)
{
return new ProductDiscount(code, discountPercent, discountAmount, hasCode, amountType, type, count, startDate,
return new ProductDiscount(code, discountPercent, discountAmount, hasCode, amountType, type, count,immortal, startDate,
expireDate, priceFloor, hasPriceFloor, priceCeiling, hasPriceCeiling, isInfinity, useCount,
isForInvitation, isSpecialOffer, productId);
}
@ -39,9 +46,9 @@ public partial class ProductDiscount
public partial class CategoryDiscount
{
public static CategoryDiscount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation, bool isSpecialOffer, Guid categoryId)
public static CategoryDiscount Create(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, bool immortal, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation, bool isSpecialOffer, Guid categoryId)
{
return new CategoryDiscount(code, discountPercent, discountAmount, hasCode, amountType, type, count, startDate,
return new CategoryDiscount(code, discountPercent, discountAmount, hasCode, amountType, type, count,immortal, startDate,
expireDate, priceFloor, hasPriceFloor, priceCeiling, hasPriceCeiling, isInfinity, useCount,
isForInvitation,isSpecialOffer, categoryId);
}

View File

@ -28,7 +28,8 @@ public partial class Discount : ApiEntity
bool isInfinity,
long useCount,
bool isForInvitation,
bool isSpecialOffer)
bool isSpecialOffer,
bool immortal)
{
Code = code;
DiscountPercent = discountPercent;
@ -47,6 +48,7 @@ public partial class Discount : ApiEntity
UseCount = useCount;
IsForInvitation = isForInvitation;
IsSpecialOffer = isSpecialOffer;
Immortal = immortal;
}
public string Code { get; internal set; } = string.Empty;
public int DiscountPercent { get; internal set; }
@ -57,6 +59,7 @@ public partial class Discount : ApiEntity
public int Count { get; internal set; }
public DateTime StartDate { get; internal set; }
public DateTime ExpireDate { get; internal set; }
public bool Immortal { get; internal set; }
public long PriceFloor { get; internal set; }
public bool HasPriceFloor { get; internal set; }
public long PriceCeiling { get; internal set; }
@ -65,6 +68,11 @@ public partial class Discount : ApiEntity
public long UseCount { get; internal set; }
public bool IsSpecialOffer { get; internal set; }
public bool IsForInvitation { get; internal set; }
public bool IsForSaleCooperation { get; internal set; }
public Guid? CorporateUserId { get; internal set; }
public ApplicationUser? CorporateUser { get; internal set; }
public List<Order> Orders { get; internal set; } = new();
}

View File

@ -7,8 +7,8 @@ public partial class ProductDiscount : Discount
}
public ProductDiscount(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer,Guid productId)
: base(code, discountPercent, discountAmount, hasCode, amountType, type, count, startDate, expireDate, priceFloor, hasPriceFloor, priceCeiling, hasPriceCeiling, isInfinity, useCount, isForInvitation, isSpecialOffer)
public ProductDiscount(string code, int discountPercent, long discountAmount, bool hasCode, DiscountAmountType amountType, DiscountType type, int count, bool immortal, DateTime startDate, DateTime expireDate, long priceFloor, bool hasPriceFloor, long priceCeiling, bool hasPriceCeiling, bool isInfinity, long useCount, bool isForInvitation,bool isSpecialOffer,Guid productId)
: base(code, discountPercent, discountAmount, hasCode, amountType, type, count, startDate, expireDate, priceFloor, hasPriceFloor, priceCeiling, hasPriceCeiling, isInfinity, useCount, isForInvitation, isSpecialOffer, immortal)
{
ProductId = productId;
}

View File

@ -21,6 +21,7 @@ namespace NetinaShop.Domain.Mappers
Count = p1.Count,
StartDate = p1.StartDate,
ExpireDate = p1.ExpireDate,
Immortal = p1.Immortal,
PriceFloor = p1.PriceFloor,
HasPriceFloor = p1.HasPriceFloor,
PriceCeiling = p1.PriceCeiling,
@ -50,6 +51,7 @@ namespace NetinaShop.Domain.Mappers
result.Count = p2.Count;
result.StartDate = p2.StartDate;
result.ExpireDate = p2.ExpireDate;
result.Immortal = p2.Immortal;
result.PriceFloor = p2.PriceFloor;
result.HasPriceFloor = p2.HasPriceFloor;
result.PriceCeiling = p2.PriceCeiling;
@ -74,6 +76,7 @@ namespace NetinaShop.Domain.Mappers
Count = p4.Count,
StartDate = p4.StartDate,
ExpireDate = p4.ExpireDate,
Immortal = p4.Immortal,
PriceFloor = p4.PriceFloor,
HasPriceFloor = p4.HasPriceFloor,
PriceCeiling = p4.PriceCeiling,
@ -98,6 +101,7 @@ namespace NetinaShop.Domain.Mappers
Count = p5.Count,
StartDate = p5.StartDate,
ExpireDate = p5.ExpireDate,
Immortal = p5.Immortal,
PriceFloor = p5.PriceFloor,
HasPriceFloor = p5.HasPriceFloor,
PriceCeiling = p5.PriceCeiling,
@ -127,6 +131,7 @@ namespace NetinaShop.Domain.Mappers
result.Count = p6.Count;
result.StartDate = p6.StartDate;
result.ExpireDate = p6.ExpireDate;
result.Immortal = p6.Immortal;
result.PriceFloor = p6.PriceFloor;
result.HasPriceFloor = p6.HasPriceFloor;
result.PriceCeiling = p6.PriceCeiling;
@ -151,6 +156,7 @@ namespace NetinaShop.Domain.Mappers
Count = p8.Count,
StartDate = p8.StartDate,
ExpireDate = p8.ExpireDate,
Immortal = p8.Immortal,
PriceFloor = p8.PriceFloor,
HasPriceFloor = p8.HasPriceFloor,
PriceCeiling = p8.PriceCeiling,

View File

@ -13,12 +13,12 @@ public class CreateDiscountCommandHandler : IRequestHandler<CreateDiscountComman
switch (request.Type)
{
case DiscountType.All:
var ent = Discount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode, request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor, request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount, request.IsForInvitation,request.IsSpecialOffer);
var ent = Discount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode, request.AmountType, request.Type, request.Count,request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor, request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount, request.IsForInvitation,request.IsSpecialOffer);
_repositoryWrapper.SetRepository<Discount>().Add(ent);
break;
case DiscountType.Category:
var catDis = CategoryDiscount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode,
request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor,
request.AmountType, request.Type, request.Count,request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
request.IsForInvitation,request.IsSpecialOffer, request.CategoryId);
_repositoryWrapper.SetRepository<CategoryDiscount>().Add(catDis);
@ -26,14 +26,14 @@ public class CreateDiscountCommandHandler : IRequestHandler<CreateDiscountComman
case DiscountType.Product:
var productDis = ProductDiscount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode,
request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor,
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
request.IsForInvitation, request.IsSpecialOffer,request.ProductId);
_repositoryWrapper.SetRepository<ProductDiscount>().Add(productDis);
break;
default:
var def = Discount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode,
request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor,
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
request.IsForInvitation,request.IsSpecialOffer);
_repositoryWrapper.SetRepository<Discount>().Add(def);

View File

@ -0,0 +1,50 @@
using Microsoft.EntityFrameworkCore;
namespace NetinaShop.Repository.Handlers.Discounts;
public class CreateSaleCooperationDiscountHandler : IRequestHandler<CreateSaleCooperationDiscount,string>
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly IRepositoryWrapper _repositoryWrapper;
private readonly ICurrentUserService _currentUserService;
public CreateSaleCooperationDiscountHandler(UserManager<ApplicationUser> userManager,IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService)
{
_userManager = userManager;
_repositoryWrapper = repositoryWrapper;
_currentUserService = currentUserService;
}
public async Task<string> Handle(CreateSaleCooperationDiscount request, CancellationToken cancellationToken)
{
var userId = request.CorporateUserId;
if (userId == default)
{
if (_currentUserService.UserId == null)
throw new AppException("User id is null");
if (!Guid.TryParse(_currentUserService.UserId, out userId))
throw new AppException("User id is wrong");
}
var user = await _userManager.FindByIdAsync(request.CorporateUserId.ToString());
if (user == null)
throw new AppException("User not found", ApiResultStatusCode.NotFound);
var foundedDiscount = await _repositoryWrapper.SetRepository<Discount>()
.TableNoTracking
.FirstOrDefaultAsync(d => d.IsForSaleCooperation && d.CorporateUserId == userId, cancellationToken);
if (foundedDiscount == null)
{
var code = StringExtensions.GetId();
foundedDiscount = Discount.Create(code, 10, 0, true,
DiscountAmountType.Percent, DiscountType.All, 0, true, DateTime.Today, DateTime.Today.AddYears(10), 0,
false, 0, false, true, 0, false, false);
foundedDiscount.SetCorporate(userId);
_repositoryWrapper.SetRepository<Discount>().Add(foundedDiscount);
await _repositoryWrapper.SaveChangesAsync(cancellationToken);
return foundedDiscount.Code;
}
else
return foundedDiscount.Code;
}
}

View File

@ -18,7 +18,7 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
var ent = await _repositoryWrapper.SetRepository<Discount>().TableNoTracking.FirstOrDefaultAsync(d=>d.Id==request.Id,cancellationToken);
if (ent == null)
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
var newEnt = Discount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode, request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor, request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount, request.IsForInvitation, request.IsSpecialOffer);
var newEnt = Discount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode, request.AmountType, request.Type, request.Count,request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor, request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount, request.IsForInvitation, request.IsSpecialOffer);
newEnt.Id = ent.Id;
newEnt.CreatedAt = ent.CreatedAt;
newEnt.CreatedBy = ent.CreatedBy;
@ -30,7 +30,7 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
var catDis = CategoryDiscount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode,
request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor,
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
request.IsForInvitation,request.IsSpecialOffer, request.CategoryId);
catDis.Id = catEnt.Id;
@ -45,7 +45,7 @@ public class UpdateDiscountCommandHandler : IRequestHandler<UpdateDiscountComman
throw new AppException("Discount not found", ApiResultStatusCode.NotFound);
var productDis = ProductDiscount.Create(request.Code, request.DiscountPercent, request.DiscountAmount, request.HasCode,
request.AmountType, request.Type, request.Count, request.StartDate, request.ExpireDate, request.PriceFloor,
request.AmountType, request.Type, request.Count, request.IsImmortal, request.StartDate, request.ExpireDate, request.PriceFloor,
request.HasPriceFloor, request.PriceCeiling, request.HasPriceCeiling, request.IsInfinity, request.UseCount,
request.IsForInvitation, request.IsSpecialOffer, request.ProductId);
productDis.Id = productEnt.Id;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,82 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace NetinaShop.Repository.Migrations
{
/// <inheritdoc />
public partial class EditDiscountAddCorporate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "CorporateUserId",
schema: "public",
table: "Discounts",
type: "uuid",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "Immortal",
schema: "public",
table: "Discounts",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.AddColumn<bool>(
name: "IsForSaleCooperation",
schema: "public",
table: "Discounts",
type: "boolean",
nullable: false,
defaultValue: false);
migrationBuilder.CreateIndex(
name: "IX_Discounts_CorporateUserId",
schema: "public",
table: "Discounts",
column: "CorporateUserId");
migrationBuilder.AddForeignKey(
name: "FK_Discounts_Users_CorporateUserId",
schema: "public",
table: "Discounts",
column: "CorporateUserId",
principalSchema: "public",
principalTable: "Users",
principalColumn: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Discounts_Users_CorporateUserId",
schema: "public",
table: "Discounts");
migrationBuilder.DropIndex(
name: "IX_Discounts_CorporateUserId",
schema: "public",
table: "Discounts");
migrationBuilder.DropColumn(
name: "CorporateUserId",
schema: "public",
table: "Discounts");
migrationBuilder.DropColumn(
name: "Immortal",
schema: "public",
table: "Discounts");
migrationBuilder.DropColumn(
name: "IsForSaleCooperation",
schema: "public",
table: "Discounts");
}
}
}

View File

@ -360,6 +360,9 @@ namespace NetinaShop.Repository.Migrations
.IsRequired()
.HasColumnType("text");
b.Property<Guid?>("CorporateUserId")
.HasColumnType("uuid");
b.Property<int>("Count")
.HasColumnType("integer");
@ -392,9 +395,15 @@ namespace NetinaShop.Repository.Migrations
b.Property<bool>("HasPriceFloor")
.HasColumnType("boolean");
b.Property<bool>("Immortal")
.HasColumnType("boolean");
b.Property<bool>("IsForInvitation")
.HasColumnType("boolean");
b.Property<bool>("IsForSaleCooperation")
.HasColumnType("boolean");
b.Property<bool>("IsInfinity")
.HasColumnType("boolean");
@ -433,6 +442,8 @@ namespace NetinaShop.Repository.Migrations
b.HasKey("Id");
b.HasIndex("CorporateUserId");
b.ToTable("Discounts", "public");
b.HasDiscriminator<string>("Discriminator").HasValue("Discount");
@ -1461,6 +1472,15 @@ namespace NetinaShop.Repository.Migrations
b.Navigation("Category");
});
modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.Discount", b =>
{
b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "CorporateUser")
.WithMany()
.HasForeignKey("CorporateUserId");
b.Navigation("CorporateUser");
});
modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.Order", b =>
{
b.HasOne("NetinaShop.Domain.Entities.Discounts.Discount", null)