From 78605ec840b0c8e330bca44b6f3adb14c143b77f Mon Sep 17 00:00:00 2001 From: Dominic Villemure Date: Sat, 16 Mar 2024 14:05:54 -0400 Subject: [PATCH] Started FuturCreator --- .../Interfaces/IApplicationDbContext.cs | 2 + .../Commands/CreateFuturCreator.cs | 43 +++++++++++++++++++ src/Domain/Entities/FuturCreator.cs | 9 ++++ .../Data/ApplicationDbContext.cs | 3 ++ 4 files changed, 57 insertions(+) create mode 100644 src/Application/FuturCreator/Commands/CreateFuturCreator.cs create mode 100644 src/Domain/Entities/FuturCreator.cs diff --git a/src/Application/Common/Interfaces/IApplicationDbContext.cs b/src/Application/Common/Interfaces/IApplicationDbContext.cs index 5b7e5d9..c393783 100644 --- a/src/Application/Common/Interfaces/IApplicationDbContext.cs +++ b/src/Application/Common/Interfaces/IApplicationDbContext.cs @@ -8,5 +8,7 @@ public interface IApplicationDbContext DbSet TodoItems { get; } + DbSet FuturCreator { get; } + Task SaveChangesAsync(CancellationToken cancellationToken); } diff --git a/src/Application/FuturCreator/Commands/CreateFuturCreator.cs b/src/Application/FuturCreator/Commands/CreateFuturCreator.cs new file mode 100644 index 0000000..82db619 --- /dev/null +++ b/src/Application/FuturCreator/Commands/CreateFuturCreator.cs @@ -0,0 +1,43 @@ +using Hutopy.Application.Common.Interfaces; + +namespace Hutopy.Application.TodoItems.Commands.CreateFuturCreator; + +public record CreateFuturCreatorCommand : IRequest +{ + public required string FirstName { get; init; } + public required string LastName { get; init; } + public required string EmailAddress { get; init; } + public required string PhoneNumber { get; init; } + public required string SocialNetworkAccount { get; init; } + public required string ReasonToJoin { get; init; } +} + +public class CreateFuturCreatorCommandHandler : IRequestHandler +{ + private readonly IApplicationDbContext _context; + + + public CreateFuturCreatorCommandHandler(IApplicationDbContext context) + { + _context = context; + } + + public async Task Handle(CreateFuturCreatorCommand request, CancellationToken cancellationToken) + { + var entity = new FuturCreator() + { + FirstName = request.FirstName, + LastName = request.LastName, + EmailAddress = request.EmailAddress, + PhoneNumber = request.PhoneNumber, + SocialNetworkAccount = request.SocialNetworkAccount, + ReasonToJoin = request.ReasonToJoin, + }; + + _context.FuturCreator.Add(entity); + + await _context.SaveChangesAsync(cancellationToken); + + return entity.Id; + } +} diff --git a/src/Domain/Entities/FuturCreator.cs b/src/Domain/Entities/FuturCreator.cs new file mode 100644 index 0000000..4b405a5 --- /dev/null +++ b/src/Domain/Entities/FuturCreator.cs @@ -0,0 +1,9 @@ +public class FuturCreator : BaseAuditableEntity +{ + public required string FirstName { get; set; } + public required string LastName { get; set; } + public required string EmailAddress { get; set; } + public required string PhoneNumber { get; set; } + public required string SocialNetworkAccount { get; set; } + public required string ReasonToJoin { get; set; } +} \ No newline at end of file diff --git a/src/Infrastructure/Data/ApplicationDbContext.cs b/src/Infrastructure/Data/ApplicationDbContext.cs index 721bf1b..0071352 100644 --- a/src/Infrastructure/Data/ApplicationDbContext.cs +++ b/src/Infrastructure/Data/ApplicationDbContext.cs @@ -2,6 +2,7 @@ using Hutopy.Application.Common.Interfaces; using Hutopy.Domain.Entities; using Hutopy.Infrastructure.Identity; +using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; @@ -15,6 +16,8 @@ public class ApplicationDbContext : IdentityDbContext, IApplica public DbSet TodoItems => Set(); + public DbSet FuturCreator => Set(); + protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder);