update
This commit is contained in:
5230
docs/model.ndm2
5230
docs/model.ndm2
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Application.TransactionsCQ.Commands.CreateNewTransactions;
|
namespace CMSMicroservice.Application.TransactionsCQ.Commands.CreateNewTransactions;
|
||||||
public record CreateNewTransactionsCommand : IRequest<CreateNewTransactionsResponseDto>
|
public record CreateNewTransactionsCommand : IRequest<CreateNewTransactionsResponseDto>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Application.TransactionsCQ.Commands.UpdateTransactions;
|
namespace CMSMicroservice.Application.TransactionsCQ.Commands.UpdateTransactions;
|
||||||
public record UpdateTransactionsCommand : IRequest<Unit>
|
public record UpdateTransactionsCommand : IRequest<Unit>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||||
public record GetAllTransactionsByFilterQuery : IRequest<GetAllTransactionsByFilterResponseDto>
|
public record GetAllTransactionsByFilterQuery : IRequest<GetAllTransactionsByFilterResponseDto>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,26 +18,11 @@ public class GetAllTransactionsByFilterQueryHandler : IRequestHandler<GetAllTran
|
|||||||
{
|
{
|
||||||
query = query
|
query = query
|
||||||
.Where(x => request.Filter.Id == null || x.Id == request.Filter.Id)
|
.Where(x => request.Filter.Id == null || x.Id == request.Filter.Id)
|
||||||
.Where(x => request.Filter.MerchantId == null || x.MerchantId.Contains(request.Filter.MerchantId))
|
|
||||||
.Where(x => request.Filter.Amount == null || x.Amount == request.Filter.Amount)
|
.Where(x => request.Filter.Amount == null || x.Amount == request.Filter.Amount)
|
||||||
.Where(x => request.Filter.CallbackUrl == null || x.CallbackUrl.Contains(request.Filter.CallbackUrl))
|
|
||||||
.Where(x => request.Filter.Description == null || x.Description.Contains(request.Filter.Description))
|
.Where(x => request.Filter.Description == null || x.Description.Contains(request.Filter.Description))
|
||||||
.Where(x => request.Filter.Mobile == null || x.Mobile.Contains(request.Filter.Mobile))
|
.Where(x => request.Filter.PaymentStatus == null || x.PaymentStatus== request.Filter.PaymentStatus)
|
||||||
.Where(x => request.Filter.Email == null || x.Email.Contains(request.Filter.Email))
|
|
||||||
.Where(x => request.Filter.RequestStatusCode == null || x.RequestStatusCode == request.Filter.RequestStatusCode)
|
|
||||||
.Where(x => request.Filter.RequestStatusMessage == null || x.RequestStatusMessage.Contains(request.Filter.RequestStatusMessage))
|
|
||||||
.Where(x => request.Filter.Authority == null || x.Authority.Contains(request.Filter.Authority))
|
|
||||||
.Where(x => request.Filter.FeeType == null || x.FeeType.Contains(request.Filter.FeeType))
|
|
||||||
.Where(x => request.Filter.Fee == null || x.Fee == request.Filter.Fee)
|
|
||||||
.Where(x => request.Filter.Currency == null || x.Currency == request.Filter.Currency)
|
|
||||||
.Where(x => request.Filter.PaymentStatus == null || x.PaymentStatus == request.Filter.PaymentStatus)
|
|
||||||
.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.VerificationStatusCode == null || x.VerificationStatusCode == request.Filter.VerificationStatusCode)
|
|
||||||
.Where(x => request.Filter.VerificationStatusMessage == null || x.VerificationStatusMessage.Contains(request.Filter.VerificationStatusMessage))
|
|
||||||
.Where(x => request.Filter.CardHash == null || x.CardHash.Contains(request.Filter.CardHash))
|
|
||||||
.Where(x => request.Filter.CardPan == null || x.CardPan.Contains(request.Filter.CardPan))
|
|
||||||
.Where(x => request.Filter.RefId == null || x.RefId.Contains(request.Filter.RefId))
|
.Where(x => request.Filter.RefId == null || x.RefId.Contains(request.Filter.RefId))
|
||||||
.Where(x => request.Filter.OrderId == null || x.OrderId==request.Filter.OrderId)
|
|
||||||
.Where(x => request.Filter.Type == null || x.Type == request.Filter.Type)
|
.Where(x => request.Filter.Type == null || x.Type == request.Filter.Type)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||||
public class GetAllTransactionsByFilterResponseDto
|
public class GetAllTransactionsByFilterResponseDto
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactions;
|
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactions;
|
||||||
public class GetTransactionsResponseDto
|
public class GetTransactionsResponseDto
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ public class CreateNewUserOrderCommandHandler : IRequestHandler<CreateNewUserOrd
|
|||||||
.FirstOrDefaultAsync(x => x.Id == request.PackageId, cancellationToken) ?? throw new NotFoundException(nameof(Package), request.PackageId);
|
.FirstOrDefaultAsync(x => x.Id == request.PackageId, cancellationToken) ?? throw new NotFoundException(nameof(Package), request.PackageId);
|
||||||
|
|
||||||
var entity = request.Adapt<UserOrder>();
|
var entity = request.Adapt<UserOrder>();
|
||||||
entity.Price = package.Price;
|
entity.Amount = package.Price;
|
||||||
await _context.UserOrders.AddAsync(entity, cancellationToken);
|
await _context.UserOrders.AddAsync(entity, cancellationToken);
|
||||||
entity.AddDomainEvent(new CreateNewUserOrderEvent(entity));
|
entity.AddDomainEvent(new CreateNewUserOrderEvent(entity));
|
||||||
await _context.SaveChangesAsync(cancellationToken);
|
await _context.SaveChangesAsync(cancellationToken);
|
||||||
|
|||||||
@@ -18,30 +18,77 @@ public class
|
|||||||
{
|
{
|
||||||
var user = await _context.Users
|
var user = await _context.Users
|
||||||
.Include(i => i.UserAddresss)
|
.Include(i => i.UserAddresss)
|
||||||
|
.Include(i => i.UserWallets)
|
||||||
|
.ThenInclude(i => i.UserWalletChangeLogs)
|
||||||
.Include(i => i.UserCartss)
|
.Include(i => i.UserCartss)
|
||||||
.ThenInclude(i => i.Product)
|
.ThenInclude(i => i.Product)
|
||||||
.FirstOrDefaultAsync(w => w.Id == request.UserId, cancellationToken: cancellationToken);
|
.FirstOrDefaultAsync(w => w.Id == request.UserId, cancellationToken: cancellationToken);
|
||||||
if (user.UserCartss.Count == 0)
|
if (user.UserCartss.Count == 0)
|
||||||
throw new NotFoundException("UserCart", request.UserId);
|
throw new NotFoundException("UserCart", request.UserId);
|
||||||
|
|
||||||
if (user.UserCartss.Sum(s => s.Count * s.Product.Price) != request.TotalAmount)
|
if (user.UserCartss.Sum(s => s.Count * s.Product.Price) != request.TotalAmount)
|
||||||
throw new Exception("مبلغ سفارش با مجموع سبد خرید مطابقت ندارد.");
|
throw new Exception("مبلغ سفارش با مجموع سبد خرید مطابقت ندارد.");
|
||||||
|
|
||||||
await _context.UserOrders.AddAsync(new UserOrder()
|
|
||||||
|
var userWallet = user.UserWallets.FirstOrDefault();
|
||||||
|
if (userWallet == null)
|
||||||
|
throw new Exception("کیف پول کاربر یافت نشد.");
|
||||||
|
|
||||||
|
|
||||||
|
var newTransaction = new Transactions()
|
||||||
{
|
{
|
||||||
Price = request.TotalAmount,
|
Amount = request.TotalAmount,
|
||||||
|
Description = "خرید از فروشگاه",
|
||||||
|
PaymentStatus = PaymentStatus.Success,
|
||||||
|
PaymentDate = DateTime.Now,
|
||||||
|
Type = TransactionType.Buy,
|
||||||
|
RefId = "localwallet-" + Guid.NewGuid().ToString()
|
||||||
|
};
|
||||||
|
await _context.Transactionss.AddAsync(newTransaction, cancellationToken);
|
||||||
|
await _context.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
|
var newWalletLog = new UserWalletChangeLog()
|
||||||
|
{
|
||||||
|
CurrentBalance = userWallet.Balance,
|
||||||
|
ChangeValue = -1*request.TotalAmount,
|
||||||
|
IsIncrease = false,
|
||||||
|
RefrenceId = newTransaction.Id
|
||||||
|
};
|
||||||
|
userWallet.Balance -= request.TotalAmount;
|
||||||
|
|
||||||
|
await _context.UserWalletChangeLogs.AddAsync(newWalletLog, cancellationToken);
|
||||||
|
await _context.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
|
var newOrder = new UserOrder()
|
||||||
|
{
|
||||||
|
Amount = request.TotalAmount,
|
||||||
PaymentStatus = PaymentStatus.Success,
|
PaymentStatus = PaymentStatus.Success,
|
||||||
PaymentMethod = PaymentMethod.Wallet,
|
PaymentMethod = PaymentMethod.Wallet,
|
||||||
PaymentDate =DateTime.Now,
|
PaymentDate = DateTime.Now,
|
||||||
UserId = request.UserId,
|
UserId = request.UserId,
|
||||||
UserAddressId = user.UserAddresss.First(f=>f.IsDefault).Id
|
UserAddressId = user.UserAddresss.First(f => f.IsDefault).Id,
|
||||||
}, cancellationToken);
|
TransactionId = newTransaction.Id
|
||||||
|
};
|
||||||
|
await _context.UserOrders.AddAsync(newOrder, cancellationToken);
|
||||||
|
await _context.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
await _context.FactorDetailss.AddRangeAsync(user.UserCartss.Select(s => new FactorDetails()
|
await _context.FactorDetailss.AddRangeAsync(user.UserCartss.Select(s => new FactorDetails()
|
||||||
{
|
{
|
||||||
ProductId = s.ProductId,
|
ProductId = s.ProductId,
|
||||||
Count = s.Count,
|
Count = s.Count,
|
||||||
UnitPrice = s.Product.Price,
|
UnitPrice = s.Product.Price,
|
||||||
|
OrderId = newOrder.Id
|
||||||
}), cancellationToken);
|
}), cancellationToken);
|
||||||
return new SubmitShopBuyOrderResponseDto();
|
user.UserCartss.Clear();
|
||||||
|
await _context.SaveChangesAsync(cancellationToken);
|
||||||
|
return new SubmitShopBuyOrderResponseDto()
|
||||||
|
{
|
||||||
|
Id = newOrder.Id,
|
||||||
|
PaymentMethod = newOrder.PaymentMethod,
|
||||||
|
PaymentStatus = newOrder.PaymentStatus,
|
||||||
|
TotalAmount = newOrder.Amount,
|
||||||
|
UserAddressText = user.UserAddresss.First(f => f.IsDefault).Address,
|
||||||
|
Created = newOrder.PaymentDate
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class GetAllUserOrderByFilterQueryHandler : IRequestHandler<GetAllUserOrd
|
|||||||
{
|
{
|
||||||
query = query
|
query = query
|
||||||
.Where(x => request.Filter.Id == null || x.Id == request.Filter.Id)
|
.Where(x => request.Filter.Id == null || x.Id == request.Filter.Id)
|
||||||
.Where(x => request.Filter.Price == null || x.Price == request.Filter.Price)
|
.Where(x => request.Filter.Amount == null || x.Amount == request.Filter.Amount)
|
||||||
.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.Value.GetHashCode())
|
.Where(x => request.Filter.PaymentStatus == null || x.PaymentStatus.GetHashCode() == request.Filter.PaymentStatus.Value.GetHashCode())
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Domain.Entities;
|
namespace CMSMicroservice.Domain.Entities;
|
||||||
//آدرس کاربر
|
//آدرس کاربر
|
||||||
public class Transactions : BaseAuditableEntity
|
public class Transactions : BaseAuditableEntity
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using CMSMicroservice.Domain.Enums;
|
||||||
|
|
||||||
namespace CMSMicroservice.Domain.Entities;
|
namespace CMSMicroservice.Domain.Entities;
|
||||||
//سفارش کاربر
|
//سفارش کاربر
|
||||||
public class UserOrder : BaseAuditableEntity
|
public class UserOrder : BaseAuditableEntity
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<TargetFramework>net9.0</TargetFramework>
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<Version>0.0.124</Version>
|
<Version>0.0.125</Version>
|
||||||
<DebugType>None</DebugType>
|
<DebugType>None</DebugType>
|
||||||
<DebugSymbols>False</DebugSymbols>
|
<DebugSymbols>False</DebugSymbols>
|
||||||
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
|
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
|
||||||
|
|||||||
Reference in New Issue
Block a user