first commit
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||
using Vizhvizh.Shared.Domain.ValueObjects;
|
||||
using Vizhvizh.Shop.ApplicationContract.Commands;
|
||||
using Vizhvizh.Shop.Domain.Shops.Repositories;
|
||||
using Vizhvizh.Shop.Domain.Shops.TypeIds;
|
||||
using Vizhvizh.Shop.Domain.Shops.ValuesObjects;
|
||||
|
||||
namespace Vizhvizh.Shop.Application.CommandHandlers.Shops;
|
||||
|
||||
public class CreateShopCommandHandler(IShopRepository shopRepository) : ICommandHandler<CreateShopCommand, ShopId>
|
||||
{
|
||||
public async Task<ShopId> Handle(CreateShopCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
var location = ShopLocation.CreateNew(request.ShopLocation.Latitude, request.ShopLocation.Longitude,
|
||||
request.ShopLocation.ProvinceId, request.ShopLocation.CityId, request.ShopLocation.Address, request.ShopLocation.PostalCode);
|
||||
|
||||
var shop = Domain.Shops.Entities.Shop.CreateNew(request.OwnerId, request.Title,
|
||||
location,TelephoneVO.CreateNew(request.Telephone), request.Description);
|
||||
|
||||
await shopRepository.AddAsync(shop, cancellationToken);
|
||||
|
||||
return shop.Id;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||
using Vizhvizh.Shop.ApplicationContract.Commands;
|
||||
using Vizhvizh.Shop.Domain.Shops.Repositories;
|
||||
|
||||
namespace Vizhvizh.Shop.Application.CommandHandlers.Shops;
|
||||
|
||||
public class SetTitleShopCommandHandler(IShopRepository shopRepository) : ICommandHandler<SetTitleShopCommand>
|
||||
{
|
||||
public async Task Handle(SetTitleShopCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
var shop = await shopRepository.FindByIdAsync(request.ShopId, cancellationToken);
|
||||
shop.SetTitle(request.Title);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using Vizhvizh.BuildingBlocks.Application.Configuration.Commnad;
|
||||
using Vizhvizh.Shop.ApplicationContract.Commands;
|
||||
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
||||
using Vizhvizh.Shop.Domain.Sliders.Repositories;
|
||||
using Vizhvizh.Shop.Domain.Sliders.ValuesObjects;
|
||||
|
||||
namespace Vizhvizh.Shop.Application.CommandHandlers.Sliders;
|
||||
|
||||
public class CreateSliderCommandHandler(ISliderRepository sliderRepository) : ICommandHandler<CreateSliderCommand>
|
||||
{
|
||||
public async Task Handle(CreateSliderCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
var slider = Slider.CreateNew(request.Title, SliderImage.CreateNew(request.ImageUrl),
|
||||
SliderUrl.CreateNew(request.LinkUrl), new SliderKey(request.SliderKeyType, request.SliderKey));
|
||||
|
||||
await sliderRepository.AddAsync(slider, cancellationToken);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Vizhvizh.BuildingBlocks.Application.Contract;
|
||||
using Vizhvizh.BuildingBlocks.Domain.Contract;
|
||||
|
||||
namespace Vizhvizh.Shop.Application;
|
||||
|
||||
public interface IShopModule
|
||||
{
|
||||
Task<TResult> ExecuteCommandAsync<TResult>(ICommand<TResult> command,CancellationToken cancellationToken);
|
||||
|
||||
Task ExecuteCommandAsync(ICommand command, CancellationToken cancellationToken);
|
||||
|
||||
Task<TResult> ExecuteQueryAsync<TResult>(IQuery<TResult> query, CancellationToken cancellationToken);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using Dapper;
|
||||
using Vizhvizh.BuildingBlocks.Application.Configuration.Query;
|
||||
using Vizhvizh.BuildingBlocks.Application.Data;
|
||||
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
||||
using Vizhvizh.Shop.ApplicationContract.DTOs;
|
||||
using Vizhvizh.Shop.ApplicationContract.Queries;
|
||||
|
||||
namespace Vizhvizh.Shop.Application.QueryHandlers.Shops;
|
||||
|
||||
public class GetShopByIdQueryHandler(ISqlConnectionFactory connectionFactory, ISqlSelectBuilder sqlSelectBuilder) : IQueryHandler<GetShopByIdQuery, ShopDTO?>
|
||||
{
|
||||
public async Task<ShopDTO?> Handle(GetShopByIdQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
var connection = connectionFactory.GetOpenConnection();
|
||||
|
||||
var (sql, parameters) = sqlSelectBuilder
|
||||
.From("Shop.Shops")
|
||||
.Select<Domain.Shops.Entities.Shop, ShopDTO>(
|
||||
(d => d.Id, dto => dto.Id),
|
||||
(d => d.OwnerId, dto => dto.OwnerId),
|
||||
(d => d.Title, dto => dto.Title),
|
||||
(d => d.Description, dto => dto.Description),
|
||||
(d => d.Email, dto => dto.Email),
|
||||
(d => d.Telephone, dto => dto.Telephone),
|
||||
(d => d.Logo, dto => dto.Logo)
|
||||
)
|
||||
.Where<ShopDTO>(s => s.Id, request.ShopId)
|
||||
.Build();
|
||||
|
||||
var result = await connection.QueryFirstOrDefaultAsync<ShopDTO>(sql, parameters);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Dapper;
|
||||
using Vizhvizh.BuildingBlocks.Application.Configuration.Query;
|
||||
using Vizhvizh.BuildingBlocks.Application.Data;
|
||||
using Vizhvizh.BuildingBlocks.Application.SelectBuilders;
|
||||
using Vizhvizh.Shop.ApplicationContract.DTOs;
|
||||
using Vizhvizh.Shop.ApplicationContract.Queries;
|
||||
using Vizhvizh.Shop.Domain.Sliders.Entities;
|
||||
|
||||
namespace Vizhvizh.Shop.Application.QueryHandlers.Sliders;
|
||||
|
||||
public class GetSlidersByKeyQueryHandler(ISqlConnectionFactory sqlConnectionFactory, ISqlSelectBuilder sqlSelectBuilder)
|
||||
: IQueryHandler<GetSlidersByKeyQuery, IEnumerable<SliderDTO>>
|
||||
{
|
||||
public async Task<IEnumerable<SliderDTO>> Handle(GetSlidersByKeyQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
var connection = sqlConnectionFactory.GetOpenConnection();
|
||||
|
||||
var (sql, parameters) = sqlSelectBuilder.From("Shop.Sliders")
|
||||
.Select<Slider, SliderDTO>(
|
||||
(d => d.Title, dto => dto.Title),
|
||||
(d => d.Image, dto => dto.Image),
|
||||
(d => d.Url, dto => dto.LinkUrl)
|
||||
)
|
||||
.Pagination<Slider>(request.PageNumber, request.PageSize, x => x.CreateOn, false)
|
||||
.Where<Slider>(x => x.Key, request.Key)
|
||||
.Build();
|
||||
|
||||
var result = await connection.QueryAsync<SliderDTO>(sql, parameters);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.1.72" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Vichvich.Shop.ApplicationContract\Vizhvizh.Shop.ApplicationContract.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user