mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-04-05 18:09:04 +00:00
Add create brewery to brewery repository
This commit is contained in:
@@ -1,20 +1,15 @@
|
|||||||
using API.Core;
|
using API.Core;
|
||||||
using API.Core.Authentication;
|
using API.Core.Authentication;
|
||||||
using API.Core.Contracts.Common;
|
|
||||||
using Domain.Exceptions;
|
|
||||||
using FluentValidation;
|
using FluentValidation;
|
||||||
using FluentValidation.AspNetCore;
|
using FluentValidation.AspNetCore;
|
||||||
using Infrastructure.Email;
|
using Infrastructure.Email;
|
||||||
using Infrastructure.Email.Templates;
|
|
||||||
using Infrastructure.Email.Templates.Rendering;
|
using Infrastructure.Email.Templates.Rendering;
|
||||||
using Infrastructure.Jwt;
|
using Infrastructure.Jwt;
|
||||||
using Infrastructure.PasswordHashing;
|
using Infrastructure.PasswordHashing;
|
||||||
using Infrastructure.Repository.Auth;
|
using Infrastructure.Repository.Auth;
|
||||||
using Infrastructure.Repository.Sql;
|
using Infrastructure.Repository.Sql;
|
||||||
using Infrastructure.Repository.UserAccount;
|
using Infrastructure.Repository.UserAccount;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Infrastructure.Repository.Breweries;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.AspNetCore.Mvc.Filters;
|
|
||||||
using Service.Auth;
|
using Service.Auth;
|
||||||
using Service.Emails;
|
using Service.Emails;
|
||||||
using Service.UserManagement.User;
|
using Service.UserManagement.User;
|
||||||
@@ -55,6 +50,7 @@ builder.Services.AddSingleton<
|
|||||||
|
|
||||||
builder.Services.AddScoped<IUserAccountRepository, UserAccountRepository>();
|
builder.Services.AddScoped<IUserAccountRepository, UserAccountRepository>();
|
||||||
builder.Services.AddScoped<IAuthRepository, AuthRepository>();
|
builder.Services.AddScoped<IAuthRepository, AuthRepository>();
|
||||||
|
builder.Services.AddScoped<IBreweryRepository, BreweryRepository>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IUserService, UserService>();
|
builder.Services.AddScoped<IUserService, UserService>();
|
||||||
builder.Services.AddScoped<ILoginService, LoginService>();
|
builder.Services.AddScoped<ILoginService, LoginService>();
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ AS
|
|||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON;
|
SET NOCOUNT ON;
|
||||||
SET XACT_ABORT ON;
|
SET XACT_ABORT ON;
|
||||||
|
|
||||||
IF @BreweryName IS NULL
|
IF @BreweryName IS NULL
|
||||||
THROW 50001, 'Brewery name cannot be null.', 1;
|
THROW 50001, 'Brewery name cannot be null.', 1;
|
||||||
|
|
||||||
@@ -20,13 +20,13 @@ BEGIN
|
|||||||
THROW 50002, 'Brewery description cannot be null.', 1;
|
THROW 50002, 'Brewery description cannot be null.', 1;
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT 1
|
IF NOT EXISTS (SELECT 1
|
||||||
FROM dbo.UserAccount
|
FROM dbo.UserAccount
|
||||||
WHERE UserAccountID = @PostedByID)
|
WHERE UserAccountID = @PostedByID)
|
||||||
THROW 50404, 'User not found.', 1;
|
THROW 50404, 'User not found.', 1;
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT 1
|
IF NOT EXISTS (SELECT 1
|
||||||
FROM dbo.City
|
FROM dbo.City
|
||||||
WHERE CityID = @CityID)
|
WHERE CityID = @CityID)
|
||||||
THROW 50404, 'City not found.', 1;
|
THROW 50404, 'City not found.', 1;
|
||||||
|
|
||||||
DECLARE @NewBreweryID UNIQUEIDENTIFIER = NEWID();
|
DECLARE @NewBreweryID UNIQUEIDENTIFIER = NEWID();
|
||||||
@@ -35,11 +35,13 @@ BEGIN
|
|||||||
|
|
||||||
INSERT INTO dbo.BreweryPost
|
INSERT INTO dbo.BreweryPost
|
||||||
(BreweryPostID, BreweryName, Description, PostedByID)
|
(BreweryPostID, BreweryName, Description, PostedByID)
|
||||||
VALUES (@NewBreweryID, @BreweryName, @Description, @PostedByID);
|
VALUES
|
||||||
|
(@NewBreweryID, @BreweryName, @Description, @PostedByID);
|
||||||
|
|
||||||
INSERT INTO dbo.BreweryPostLocation
|
INSERT INTO dbo.BreweryPostLocation
|
||||||
(@NewBreweryID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates)
|
(BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates)
|
||||||
VALUES (@NewBreweryID, @CityID, @AddressLine1, @AddressLine2, @PostalCode, @Coordinates);
|
VALUES
|
||||||
|
(@NewBreweryID, @CityID, @AddressLine1, @AddressLine2, @PostalCode, @Coordinates);
|
||||||
|
|
||||||
COMMIT TRANSACTION;
|
COMMIT TRANSACTION;
|
||||||
END
|
END
|
||||||
|
|||||||
12
src/Core/Domain/Domain.Entities/Entities/BreweryPost.cs
Normal file
12
src/Core/Domain/Domain.Entities/Entities/BreweryPost.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
namespace Domain.Entities;
|
||||||
|
|
||||||
|
public class BreweryPost
|
||||||
|
{
|
||||||
|
public Guid BreweryPostId { get; set; }
|
||||||
|
public Guid PostedById { get; set; }
|
||||||
|
public string BreweryName { get; set; } = string.Empty;
|
||||||
|
public string Description { get; set; } = string.Empty;
|
||||||
|
public DateTime CreatedAt { get; set; }
|
||||||
|
public DateTime? UpdatedAt { get; set; }
|
||||||
|
public byte[]? Timer { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
namespace Domain.Entities;
|
||||||
|
|
||||||
|
public class BreweryPostLocation
|
||||||
|
{
|
||||||
|
public Guid BreweryPostLocationId { get; set; }
|
||||||
|
public Guid BreweryPostId { get; set; }
|
||||||
|
public string AddressLine1 { get; set; } = string.Empty;
|
||||||
|
public string? AddressLine2 { get; set; }
|
||||||
|
public string PostalCode { get; set; } = string.Empty;
|
||||||
|
public Guid CityId { get; set; }
|
||||||
|
public byte[]? Coordinates { get; set; }
|
||||||
|
public byte[]? Timer { get; set; }
|
||||||
|
}
|
||||||
@@ -7,6 +7,6 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MailKit" Version="4.9.0" />
|
<PackageReference Include="MailKit" Version="4.15.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
using System.Data.Common;
|
||||||
|
using Domain.Entities;
|
||||||
|
using Infrastructure.Repository.Sql;
|
||||||
|
|
||||||
|
namespace Infrastructure.Repository.Breweries;
|
||||||
|
|
||||||
|
public interface IBreweryRepository
|
||||||
|
{
|
||||||
|
Task<BreweryPost?> GetByIdAsync(Guid id);
|
||||||
|
Task<IEnumerable<BreweryPost>> GetAllAsync(int? limit, int? offset);
|
||||||
|
Task UpdateAsync(BreweryPost brewery);
|
||||||
|
Task DeleteAsync(Guid id);
|
||||||
|
Task CreateAsync(BreweryPost brewery);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class BreweryRepository(ISqlConnectionFactory connectionFactory)
|
||||||
|
: Repository<BreweryPost>(connectionFactory),
|
||||||
|
IBreweryRepository
|
||||||
|
{
|
||||||
|
private static ISqlConnectionFactory? _connectionFactory;
|
||||||
|
|
||||||
|
public Task<BreweryPost?> GetByIdAsync(Guid id)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<IEnumerable<BreweryPost>> GetAllAsync(int? limit, int? offset)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task UpdateAsync(BreweryPost brewery)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task DeleteAsync(Guid id)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CreateAsync(BreweryPost brewery, BreweryPostLocation location)
|
||||||
|
{
|
||||||
|
await using var connection = await CreateConnection();
|
||||||
|
await using var command = connection.CreateCommand();
|
||||||
|
|
||||||
|
command.CommandText = "USP_CreateBreweryPost";
|
||||||
|
command.CommandType = System.Data.CommandType.StoredProcedure;
|
||||||
|
|
||||||
|
AddParameter(command, "@BreweryName", brewery.BreweryName);
|
||||||
|
AddParameter(command, "@Description", brewery.Description);
|
||||||
|
AddParameter(command, "@PostedByID", brewery.PostedById);
|
||||||
|
AddParameter(command, "@CityID", location.CityId);
|
||||||
|
AddParameter(command, "@AddressLine1", location.AddressLine1);
|
||||||
|
AddParameter(command, "@AddressLine2", location.AddressLine2);
|
||||||
|
AddParameter(command, "@PostalCode", location.PostalCode);
|
||||||
|
AddParameter(command, "@Coordinates", location.Coordinates);
|
||||||
|
await command.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override BreweryPost MapToEntity(DbDataReader reader)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddParameter(
|
||||||
|
DbCommand command,
|
||||||
|
string name,
|
||||||
|
object? value
|
||||||
|
)
|
||||||
|
{
|
||||||
|
var p = command.CreateParameter();
|
||||||
|
p.ParameterName = name;
|
||||||
|
p.Value = value ?? DBNull.Value;
|
||||||
|
command.Parameters.Add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task CreateAsync(BreweryPost brewery)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user