Feature: Join us api call

This commit is contained in:
Kamigen
2024-03-17 21:03:08 -04:00
parent fca3d26aa7
commit b7ec5a69a9
11 changed files with 46 additions and 53 deletions

View File

@@ -8,7 +8,7 @@ public interface IApplicationDbContext
DbSet<TodoItem> TodoItems { get; } DbSet<TodoItem> TodoItems { get; }
DbSet<FuturCreator> FuturCreators { get; } DbSet<FutureCreator> FutureCreators { get; }
Task<int> SaveChangesAsync(CancellationToken cancellationToken); Task<int> SaveChangesAsync(CancellationToken cancellationToken);
} }

View File

@@ -1,5 +1,4 @@
using System.Reflection; using System.Reflection;
using Hutopy.Application.Common.Behaviours;
namespace Microsoft.Extensions.DependencyInjection; namespace Microsoft.Extensions.DependencyInjection;

View File

@@ -1,9 +1,9 @@
using Hutopy.Application.Common.Interfaces; using Hutopy.Application.Common.Interfaces;
using Hutopy.Domain.Entities; using Hutopy.Domain.Entities;
namespace Hutopy.Application.FuturCreators.Commands.CreateFuturCreator; namespace Hutopy.Application.FutureCreators.Commands;
public record CreateFuturCreatorCommand : IRequest<int> public record CreateFutureCreatorCommand : IRequest<int>
{ {
public required string FirstName { get; init; } public required string FirstName { get; init; }
public required string LastName { get; init; } public required string LastName { get; init; }
@@ -13,7 +13,7 @@ public record CreateFuturCreatorCommand : IRequest<int>
public required string ReasonToJoin { get; init; } public required string ReasonToJoin { get; init; }
} }
public class CreateFuturCreatorCommandHandler : IRequestHandler<CreateFuturCreatorCommand, int> public class CreateFuturCreatorCommandHandler : IRequestHandler<CreateFutureCreatorCommand, int>
{ {
private readonly IApplicationDbContext _context; private readonly IApplicationDbContext _context;
@@ -23,9 +23,9 @@ public class CreateFuturCreatorCommandHandler : IRequestHandler<CreateFuturCreat
_context = context; _context = context;
} }
public async Task<int> Handle(CreateFuturCreatorCommand request, CancellationToken cancellationToken) public async Task<int> Handle(CreateFutureCreatorCommand request, CancellationToken cancellationToken)
{ {
var entity = new FuturCreator() var entity = new FutureCreator
{ {
FirstName = request.FirstName, FirstName = request.FirstName,
LastName = request.LastName, LastName = request.LastName,
@@ -35,7 +35,7 @@ public class CreateFuturCreatorCommandHandler : IRequestHandler<CreateFuturCreat
ReasonToJoin = request.ReasonToJoin, ReasonToJoin = request.ReasonToJoin,
}; };
_context.FuturCreators.Add(entity); _context.FutureCreators.Add(entity);
await _context.SaveChangesAsync(cancellationToken); await _context.SaveChangesAsync(cancellationToken);

View File

@@ -1,11 +0,0 @@
namespace Hutopy.Domain.Entities;
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; }
}

View File

@@ -0,0 +1,11 @@
namespace Hutopy.Domain.Entities;
public class FutureCreator : BaseAuditableEntity
{
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; }
}

View File

@@ -16,7 +16,7 @@ public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplica
public DbSet<TodoItem> TodoItems => Set<TodoItem>(); public DbSet<TodoItem> TodoItems => Set<TodoItem>();
public DbSet<FuturCreator> FuturCreators => Set<FuturCreator>(); public DbSet<FutureCreator> FutureCreators => Set<FutureCreator>();
protected override void OnModelCreating(ModelBuilder builder) protected override void OnModelCreating(ModelBuilder builder)
{ {

View File

@@ -48,7 +48,7 @@ namespace Hutopy.Infrastructure.Data.Migrations
oldMaxLength: 128); oldMaxLength: 128);
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "FuturCreators", name: "FutureCreators",
columns: table => new columns: table => new
{ {
Id = table.Column<int>(type: "int", nullable: false) Id = table.Column<int>(type: "int", nullable: false)
@@ -74,7 +74,7 @@ namespace Hutopy.Infrastructure.Data.Migrations
protected override void Down(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder)
{ {
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "FuturCreators"); name: "FutureCreators");
migrationBuilder.AlterColumn<string>( migrationBuilder.AlterColumn<string>(
name: "Name", name: "Name",

View File

@@ -22,7 +22,7 @@ namespace Hutopy.Infrastructure.Data.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("Hutopy.Domain.Entities.FuturCreator", b => modelBuilder.Entity("Hutopy.Domain.Entities.FutureCreator", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@@ -68,7 +68,7 @@ namespace Hutopy.Infrastructure.Data.Migrations
b.HasKey("Id"); b.HasKey("Id");
b.ToTable("FuturCreator"); b.ToTable("FutureCreator");
}); });
modelBuilder.Entity("Hutopy.Domain.Entities.TodoItem", b => modelBuilder.Entity("Hutopy.Domain.Entities.TodoItem", b =>

View File

@@ -1,18 +0,0 @@
using Hutopy.Application.FuturCreators.Commands.CreateFuturCreator;
namespace Hutopy.Web.Endpoints;
public class FuturCreators : EndpointGroupBase
{
public override void Map(WebApplication app)
{
app.MapGroup(this)
.RequireAuthorization()
.MapPost(CreateFuturCreator);
}
public Task<int> CreateFuturCreator(ISender sender, CreateFuturCreatorCommand command)
{
return sender.Send(command);
}
}

View File

@@ -0,0 +1,17 @@
using Hutopy.Application.FutureCreators.Commands;
namespace Hutopy.Web.Endpoints;
public class JoinUs : EndpointGroupBase
{
public override void Map(WebApplication app)
{
app.MapGroup(this)
.MapPost(CreateFutureCreator);
}
public Task<int> CreateFutureCreator(ISender sender, CreateFutureCreatorCommand command)
{
return sender.Send(command);
}
}

View File

@@ -6,18 +6,18 @@
"version": "1.0.0" "version": "1.0.0"
}, },
"paths": { "paths": {
"/api/FuturCreators": { "/api/JoinUs": {
"post": { "post": {
"tags": [ "tags": [
"FuturCreators" "JoinUs"
], ],
"operationId": "CreateFuturCreator", "operationId": "CreateFutureCreator",
"requestBody": { "requestBody": {
"x-name": "command", "x-name": "command",
"content": { "content": {
"application/json": { "application/json": {
"schema": { "schema": {
"$ref": "#/components/schemas/CreateFuturCreatorCommand" "$ref": "#/components/schemas/CreateFutureCreatorCommand"
} }
} }
}, },
@@ -36,12 +36,7 @@
} }
} }
} }
}, }
"security": [
{
"JWT": []
}
]
} }
}, },
"/api/TodoItems": { "/api/TodoItems": {
@@ -795,7 +790,7 @@
}, },
"components": { "components": {
"schemas": { "schemas": {
"CreateFuturCreatorCommand": { "CreateFutureCreatorCommand": {
"type": "object", "type": "object",
"additionalProperties": false, "additionalProperties": false,
"properties": { "properties": {