#27 get last receipt, get minimalUser, get my user

This commit is contained in:
Dominic Villemure
2024-05-12 16:40:24 -04:00
parent 3f20563850
commit 5161e3a91a
17 changed files with 216 additions and 24 deletions

View File

@@ -6,6 +6,6 @@ namespace Hutopy.Application.Common.Interfaces;
public interface IStripeService
{
public Task<string> CreateCheckoutSession(int amount, string currency);
public Task<string> CreateCheckoutSession(int amount, string creatorId, string currency);
public Result ValidateTransaction(ConfirmStripeTransactionCommand request);
}

View File

@@ -56,15 +56,15 @@ public class ConfirmStripeTransactionCommandHandler(
if (stripeConfirmation.Succeeded)
{
lastTransaction.IsConfirmed = true;
lastTransaction.Paid = request.Data.Object.Paid;
lastTransaction.StripeChargeId = request.Data.Object.Id;
lastTransaction.StripeEventId = request.Id;
lastTransaction.StripeReceiptUrl = request.Data.Object.Receipt_url;
lastTransaction.StripePaymentIntent = request.Data.Object.Payment_intent;
lastTransaction.StripePaymentMethod = request.Data.Object.Payment_method;
lastTransaction.StripeBillingDetailEmail = request.Data.Object.Billing_details.Email;
lastTransaction.StripeBillingDetailName = request.Data.Object.Billing_details.Name;
}
lastTransaction.Paid = request.Data.Object.Paid;
lastTransaction.StripeChargeId = request.Data.Object.Id;
lastTransaction.StripeEventId = request.Id;
lastTransaction.StripeReceiptUrl = request.Data.Object.Receipt_url;
lastTransaction.StripePaymentIntent = request.Data.Object.Payment_intent;
lastTransaction.StripePaymentMethod = request.Data.Object.Payment_method;
lastTransaction.StripeBillingDetailEmail = request.Data.Object.Billing_details.Email;
lastTransaction.StripeBillingDetailName = request.Data.Object.Billing_details.Name;
await dbContext.SaveChangesAsync(cancellationToken);

View File

@@ -18,7 +18,7 @@ public class CreateSessionCheckoutCommandHandler(
{
public async Task<string> Handle(CreateSessionCheckoutCommand request, CancellationToken cancellationToken)
{
var stripeSecret = await stripeService.CreateCheckoutSession(request.Amount, request.Currency);
var stripeSecret = await stripeService.CreateCheckoutSession(request.Amount, request.CreatorId, request.Currency);
// ReSharper disable once PossibleLossOfFraction
decimal priceInDollars = (request.Amount / 100);

View File

@@ -0,0 +1,29 @@
using Hutopy.Application.Common.Interfaces;
namespace Hutopy.Application.Stripe.Queries;
public record GetMyLastReceiptQuery : IRequest<MyLastReceiptDto>
{
public string Email { get; set; } = string.Empty;
public string CreatorId { get; set; } = string.Empty;
};
public class GetMyLastReceiptQueryHandler(
IApplicationDbContext dbContext
)
: IRequestHandler<GetMyLastReceiptQuery, MyLastReceiptDto>
{
public async Task<MyLastReceiptDto> Handle(GetMyLastReceiptQuery request, CancellationToken cancellationToken)
{
var lastTransaction = await dbContext.UserTransactions.OrderBy(x => x.Created)
.LastOrDefaultAsync(x => x.ApplicationUserId == request.CreatorId && x.StripeBillingDetailEmail == request.Email,
cancellationToken);
var receiptUrl = new MyLastReceiptDto
{
ReceiptUrl = lastTransaction?.StripeReceiptUrl ?? "",
};
return receiptUrl;
}
}

View File

@@ -0,0 +1,6 @@
namespace Hutopy.Application.Stripe.Queries;
public class MyLastReceiptDto
{
public string ReceiptUrl { get; set; }
}

View File

@@ -18,12 +18,11 @@ public class GetCurrentUserQueryHandler(
var currentUserId = new Guid(identityUser?.Id ?? "");
var transactions = await context.UserTransactions
.Where(x => x.Id == currentUserId)
.Where(x => x.ApplicationUserId == currentUserId.ToString())
.OrderBy(x => x.LastModified)
.ProjectTo<UserTransactionDto>(mapper.ConfigurationProvider)
.ToListAsync(cancellationToken);
var user = new UserDto()
{
Id = currentUserId,

View File

@@ -7,6 +7,7 @@ public class UserDto
public required string FirstName { get; init; }
public required string LastName { get; init; }
public string UserName { get; init; } = String.Empty;
public List<UserTransactionDto> UserTransactions { get; init; } = [];
}

View File

@@ -0,0 +1,28 @@
using Hutopy.Domain.Interfaces;
namespace Hutopy.Application.Users.Queries.GetMinimalUser;
public record GetMinimalUserQuery : IRequest<MinimalUserDto>
{
public string UserId { get; set; } = string.Empty;
};
public class GetMinimalUserQueryHandler(
IUserService userService
)
: IRequestHandler<GetMinimalUserQuery, MinimalUserDto>
{
public async Task<MinimalUserDto> Handle(GetMinimalUserQuery request, CancellationToken cancellationToken)
{
var identityUser = await userService.FindUserByIdAsync(request.UserId);
var user = new MinimalUserDto()
{
FirstName = identityUser?.FirstName ?? "",
LastName = identityUser?.LastName ?? "",
UserName = identityUser?.UserName ?? ""
};
return user;
}
}

View File

@@ -0,0 +1,8 @@
namespace Hutopy.Application.Users.Queries.GetMinimalUser;
public class MinimalUserDto
{
public required string FirstName { get; init; }
public required string LastName { get; init; }
public string UserName { get; init; } = String.Empty;
}