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;
|
||||
public record CreateNewTransactionsCommand : IRequest<CreateNewTransactionsResponseDto>
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.TransactionsCQ.Commands.UpdateTransactions;
|
||||
public record UpdateTransactionsCommand : IRequest<Unit>
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetAllTransactionsByFilter;
|
||||
public record GetAllTransactionsByFilterQuery : IRequest<GetAllTransactionsByFilterResponseDto>
|
||||
{
|
||||
|
||||
@@ -18,26 +18,11 @@ public class GetAllTransactionsByFilterQueryHandler : IRequestHandler<GetAllTran
|
||||
{
|
||||
query = query
|
||||
.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.CallbackUrl == null || x.CallbackUrl.Contains(request.Filter.CallbackUrl))
|
||||
.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.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.PaymentStatus == null || x.PaymentStatus== request.Filter.PaymentStatus)
|
||||
.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.OrderId == null || x.OrderId==request.Filter.OrderId)
|
||||
.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;
|
||||
public class GetAllTransactionsByFilterResponseDto
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.TransactionsCQ.Queries.GetTransactions;
|
||||
public class GetTransactionsResponseDto
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.UserOrderCQ.Commands.CreateNewUserOrder;
|
||||
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);
|
||||
|
||||
var entity = request.Adapt<UserOrder>();
|
||||
entity.Price = package.Price;
|
||||
entity.Amount = package.Price;
|
||||
await _context.UserOrders.AddAsync(entity, cancellationToken);
|
||||
entity.AddDomainEvent(new CreateNewUserOrderEvent(entity));
|
||||
await _context.SaveChangesAsync(cancellationToken);
|
||||
|
||||
@@ -18,30 +18,77 @@ public class
|
||||
{
|
||||
var user = await _context.Users
|
||||
.Include(i => i.UserAddresss)
|
||||
.Include(i => i.UserWallets)
|
||||
.ThenInclude(i => i.UserWalletChangeLogs)
|
||||
.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()
|
||||
|
||||
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,
|
||||
PaymentMethod = PaymentMethod.Wallet,
|
||||
PaymentDate =DateTime.Now,
|
||||
PaymentDate = DateTime.Now,
|
||||
UserId = request.UserId,
|
||||
UserAddressId = user.UserAddresss.First(f=>f.IsDefault).Id
|
||||
}, cancellationToken);
|
||||
UserAddressId = user.UserAddresss.First(f => f.IsDefault).Id,
|
||||
TransactionId = newTransaction.Id
|
||||
};
|
||||
await _context.UserOrders.AddAsync(newOrder, cancellationToken);
|
||||
await _context.SaveChangesAsync(cancellationToken);
|
||||
|
||||
await _context.FactorDetailss.AddRangeAsync(user.UserCartss.Select(s => new FactorDetails()
|
||||
{
|
||||
ProductId = s.ProductId,
|
||||
Count = s.Count,
|
||||
UnitPrice = s.Product.Price,
|
||||
|
||||
OrderId = newOrder.Id
|
||||
}), 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;
|
||||
public record UpdateUserOrderCommand : IRequest<Unit>
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetAllUserOrderByFilter;
|
||||
public record GetAllUserOrderByFilterQuery : IRequest<GetAllUserOrderByFilterResponseDto>
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ public class GetAllUserOrderByFilterQueryHandler : IRequestHandler<GetAllUserOrd
|
||||
{
|
||||
query = query
|
||||
.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.TransactionId == null || x.TransactionId == request.Filter.TransactionId)
|
||||
.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;
|
||||
public class GetAllUserOrderByFilterResponseDto
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Application.UserOrderCQ.Queries.GetUserOrder;
|
||||
public class GetUserOrderResponseDto
|
||||
{
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Domain.Entities;
|
||||
//آدرس کاربر
|
||||
public class Transactions : BaseAuditableEntity
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
using CMSMicroservice.Domain.Enums;
|
||||
|
||||
namespace CMSMicroservice.Domain.Entities;
|
||||
//سفارش کاربر
|
||||
public class UserOrder : BaseAuditableEntity
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>0.0.124</Version>
|
||||
<Version>0.0.125</Version>
|
||||
<DebugType>None</DebugType>
|
||||
<DebugSymbols>False</DebugSymbols>
|
||||
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
|
||||
|
||||
Reference in New Issue
Block a user