This commit is contained in:
masoodafar-web
2025-11-24 22:55:14 +03:30
parent 56478c79c2
commit 6cd0a45336
14 changed files with 2957 additions and 7566 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@ public class UserOrderProfile : IRegister
{ {
void IRegister.Register(TypeAdapterConfig config) void IRegister.Register(TypeAdapterConfig config)
{ {
//config.NewConfig<Source,Destination>() // config.NewConfig<Source,Destination>()
// .Map(dest => dest.FullName, src => $"{src.Firstname} {src.Lastname}"); // .Map(dest => dest.FullName, src => $"{src.Firstname} {src.Lastname}");
} }
} }

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Commands.CreateNewUserOrder; namespace CMSMicroservice.Application.UserOrderCQ.Commands.CreateNewUserOrder;
public record CreateNewUserOrderCommand : IRequest<CreateNewUserOrderResponseDto> public record CreateNewUserOrderCommand : IRequest<CreateNewUserOrderResponseDto>
{ {

View File

@@ -1,6 +1,10 @@
using CMSMicroservice.Domain.Enums;
using CMSMicroservice.Domain.Events; using CMSMicroservice.Domain.Events;
namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder; namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder;
public class SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrderCommand, SubmitShopBuyOrderResponseDto>
public class
SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrderCommand, SubmitShopBuyOrderResponseDto>
{ {
private readonly IApplicationDbContext _context; private readonly IApplicationDbContext _context;
@@ -9,9 +13,35 @@ public class SubmitShopBuyOrderCommandHandler : IRequestHandler<SubmitShopBuyOrd
_context = context; _context = context;
} }
public async Task<SubmitShopBuyOrderResponseDto> Handle(SubmitShopBuyOrderCommand request, CancellationToken cancellationToken) public async Task<SubmitShopBuyOrderResponseDto> Handle(SubmitShopBuyOrderCommand request,
CancellationToken cancellationToken)
{ {
//TODO: Implement your business logic var user = await _context.Users
.Include(i => i.UserAddresss)
.Include(i => i.UserCartss)
.ThenInclude(i => i.Product)
.FirstOrDefaultAsync(w => w.Id == request.UserId, cancellationToken: cancellationToken);
if (user.UserCartss.Count == 0)
throw new NotFoundException("UserCart", request.UserId);
if (user.UserCartss.Sum(s => s.Count * s.Product.Price) != request.TotalAmount)
throw new Exception("مبلغ سفارش با مجموع سبد خرید مطابقت ندارد.");
await _context.UserOrders.AddAsync(new UserOrder()
{
Price = request.TotalAmount,
PaymentStatus = PaymentStatus.Success,
PaymentMethod = PaymentMethod.Wallet,
PaymentDate =DateTime.Now,
UserId = request.UserId,
UserAddressId = user.UserAddresss.First(f=>f.IsDefault).Id
}, cancellationToken);
await _context.FactorDetailss.AddRangeAsync(user.UserCartss.Select(s => new FactorDetails()
{
ProductId = s.ProductId,
Count = s.Count,
UnitPrice = s.Product.Price,
}), cancellationToken);
return new SubmitShopBuyOrderResponseDto(); return new SubmitShopBuyOrderResponseDto();
} }
} }

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder; namespace CMSMicroservice.Application.UserOrderCQ.Commands.SubmitShopBuyOrder;
public class SubmitShopBuyOrderResponseDto public class SubmitShopBuyOrderResponseDto
{ {

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Commands.UpdateUserOrder; namespace CMSMicroservice.Application.UserOrderCQ.Commands.UpdateUserOrder;
public record UpdateUserOrderCommand : IRequest<Unit> public record UpdateUserOrderCommand : IRequest<Unit>
{ {

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter; namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter;
public record GetAllUserOrderByFilterQuery : IRequest<GetAllUserOrderByFilterResponseDto> public record GetAllUserOrderByFilterQuery : IRequest<GetAllUserOrderByFilterResponseDto>
{ {

View File

@@ -21,7 +21,7 @@ public class GetAllUserOrderByFilterQueryHandler : IRequestHandler<GetAllUserOrd
.Where(x => request.Filter.Price == null || x.Price == request.Filter.Price) .Where(x => request.Filter.Price == null || x.Price == request.Filter.Price)
.Where(x => request.Filter.PackageId == null || x.PackageId == request.Filter.PackageId) .Where(x => request.Filter.PackageId == null || x.PackageId == request.Filter.PackageId)
.Where(x => request.Filter.TransactionId == null || x.TransactionId == request.Filter.TransactionId) .Where(x => request.Filter.TransactionId == null || x.TransactionId == request.Filter.TransactionId)
.Where(x => request.Filter.PaymentStatus == null || x.PaymentStatus.GetHashCode() == request.Filter.PaymentStatus) .Where(x => request.Filter.PaymentStatus == null || x.PaymentStatus.GetHashCode() == request.Filter.PaymentStatus.Value.GetHashCode())
.Where(x => request.Filter.PaymentDate == null || x.PaymentDate == request.Filter.PaymentDate) .Where(x => request.Filter.PaymentDate == null || x.PaymentDate == request.Filter.PaymentDate)
.Where(x => request.Filter.UserId == null || x.UserId == request.Filter.UserId) .Where(x => request.Filter.UserId == null || x.UserId == request.Filter.UserId)
.Where(x => request.Filter.UserAddressId == null || x.UserAddressId == request.Filter.UserAddressId) .Where(x => request.Filter.UserAddressId == null || x.UserAddressId == request.Filter.UserAddressId)

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter; namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter;
public class GetAllUserOrderByFilterResponseDto public class GetAllUserOrderByFilterResponseDto
{ {

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetUserOrder; namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetUserOrder;
public class GetUserOrderResponseDto public class GetUserOrderResponseDto
{ {

View File

@@ -1,3 +1,5 @@
using CMSMicroservice.Domain.Enums;
namespace CMSMicroservice.Domain.Entities; namespace CMSMicroservice.Domain.Entities;
//سفارش کاربر //سفارش کاربر
public class UserOrder : BaseAuditableEntity public class UserOrder : BaseAuditableEntity

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace CMSMicroservice.Infrastructure.Persistence.Migrations
{
/// <inheritdoc />
public partial class u09 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<int>(
name: "PaymentMethod",
schema: "CMS",
table: "UserOrders",
type: "int",
nullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "PaymentMethod",
schema: "CMS",
table: "UserOrders");
}
}
}

View File

@@ -912,6 +912,9 @@ namespace CMSMicroservice.Infrastructure.Persistence.Migrations
b.Property<DateTime?>("PaymentDate") b.Property<DateTime?>("PaymentDate")
.HasColumnType("datetime2"); .HasColumnType("datetime2");
b.Property<int?>("PaymentMethod")
.HasColumnType("int");
b.Property<int>("PaymentStatus") b.Property<int>("PaymentStatus")
.HasColumnType("int"); .HasColumnType("int");