feat: Add Protobuf definitions for Network Membership service
- Introduced `networkmembership.proto` with RPC methods for retrieving user network tree, statistics, and position. - Implemented HTTP annotations for gRPC transcoding in the service methods. - Added support for Google API annotations in `annotations.proto` and `http.proto`. - Created `ConfigureServices.cs` to register FluentValidation for the Protobuf services. - Updated project file to include necessary dependencies for gRPC and Protobuf.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Queries.GetMyClubMembership;
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.ActivateMyClubMembership;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using ProtoDto = FrontOffice.BFF.ClubMembership.Protobuf.Protos.ClubMembership;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Common.Mappings;
|
||||
|
||||
public class ClubMembershipProfile : IRegister
|
||||
{
|
||||
void IRegister.Register(TypeAdapterConfig config)
|
||||
{
|
||||
// Request -> Command mappings
|
||||
config.NewConfig<ProtoDto.ActivateMyClubMembershipRequest, ActivateMyClubMembershipCommand>()
|
||||
.Map(dest => dest.PackageId, src => src.PackageId)
|
||||
.Map(dest => dest.ActivationCode, src => src.ActivationCode)
|
||||
.Map(dest => dest.DurationMonths, src => src.DurationMonths > 0 ? src.DurationMonths : 12);
|
||||
|
||||
// Response mappings
|
||||
config.NewConfig<GetMyClubMembershipResponseDto, ProtoDto.GetMyClubMembershipResponse>()
|
||||
.Map(dest => dest.UserId, src => src.UserId)
|
||||
.Map(dest => dest.PackageId, src => src.PackageId)
|
||||
.Map(dest => dest.PackageName, src => src.PackageName)
|
||||
.Map(dest => dest.ActivationCode, src => src.ActivationCode)
|
||||
.Map(dest => dest.IsActive, src => src.IsActive)
|
||||
.Map(dest => dest.ActivationDate, src => src.ActivationDate.HasValue
|
||||
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ActivationDate.Value, DateTimeKind.Utc))
|
||||
: null)
|
||||
.Map(dest => dest.ExpirationDate, src => src.ExpirationDate.HasValue
|
||||
? Timestamp.FromDateTime(DateTime.SpecifyKind(src.ExpirationDate.Value, DateTimeKind.Utc))
|
||||
: null)
|
||||
.Map(dest => dest.Status, src => src.Status)
|
||||
.Map(dest => dest.DaysRemaining, src => src.DaysRemaining)
|
||||
.Map(dest => dest.IsTrialPeriod, src => src.IsTrialPeriod);
|
||||
|
||||
config.NewConfig<ActivateMyClubMembershipResponseDto, ProtoDto.ActivateMyClubMembershipResponse>()
|
||||
.Map(dest => dest.Success, src => src.Success)
|
||||
.Map(dest => dest.Message, src => src.Message)
|
||||
.Map(dest => dest.ActivationDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.ActivationDate, DateTimeKind.Utc)))
|
||||
.Map(dest => dest.ExpirationDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.ExpirationDate, DateTimeKind.Utc)))
|
||||
.Map(dest => dest.AmountPaid, src => src.AmountPaid);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyCommissionPayouts;
|
||||
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyWeeklyBalances;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using ProtoDto = FrontOffice.BFF.Commission.Protobuf.Protos.Commission;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Common.Mappings;
|
||||
|
||||
public class CommissionProfile : IRegister
|
||||
{
|
||||
void IRegister.Register(TypeAdapterConfig config)
|
||||
{
|
||||
// Request -> Query mappings
|
||||
config.NewConfig<ProtoDto.GetMyCommissionPayoutsRequest, GetMyCommissionPayoutsQuery>()
|
||||
.Map(dest => dest.PageNumber, src => src.PageNumber)
|
||||
.Map(dest => dest.PageSize, src => src.PageSize)
|
||||
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
|
||||
.Map(dest => dest.Status, src => src.Status);
|
||||
|
||||
config.NewConfig<ProtoDto.GetMyWeeklyBalancesRequest, GetMyWeeklyBalancesQuery>()
|
||||
.Map(dest => dest.PageNumber, src => src.PageNumber)
|
||||
.Map(dest => dest.PageSize, src => src.PageSize)
|
||||
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
|
||||
.Map(dest => dest.OnlyActive, src => src.OnlyActive);
|
||||
|
||||
// Response mappings
|
||||
config.NewConfig<GetMyCommissionPayoutsResponseDto, ProtoDto.GetMyCommissionPayoutsResponse>()
|
||||
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.TotalCount })
|
||||
.Map(dest => dest.Payouts, src => src.Payouts);
|
||||
|
||||
config.NewConfig<CommissionPayoutDto, ProtoDto.CommissionPayoutModel>()
|
||||
.Map(dest => dest.Id, src => src.Id)
|
||||
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
|
||||
.Map(dest => dest.WeekLabel, src => src.WeekLabel)
|
||||
.Map(dest => dest.BalancesEarned, src => src.BalancesEarned)
|
||||
.Map(dest => dest.TotalAmount, src => src.TotalAmount)
|
||||
.Map(dest => dest.AmountFormatted, src => src.AmountFormatted)
|
||||
.Map(dest => dest.Status, src => src.Status)
|
||||
.Map(dest => dest.StatusBadgeColor, src => src.StatusBadgeColor)
|
||||
.Map(dest => dest.CalculatedDate, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.CalculatedDate, DateTimeKind.Utc)))
|
||||
.Map(dest => dest.DatePersian, src => src.DatePersian);
|
||||
|
||||
config.NewConfig<GetMyWeeklyBalancesResponseDto, ProtoDto.GetMyWeeklyBalancesResponse>()
|
||||
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.TotalCount })
|
||||
.Map(dest => dest.Balances, src => src.Balances)
|
||||
.Map(dest => dest.TotalLeftBalances, src => src.TotalLeftBalances)
|
||||
.Map(dest => dest.TotalRightBalances, src => src.TotalRightBalances)
|
||||
.Map(dest => dest.WeakerLeg, src => src.WeakerLeg);
|
||||
|
||||
config.NewConfig<WeeklyBalanceItemDto, ProtoDto.WeeklyBalanceModel>()
|
||||
.Map(dest => dest.Id, src => src.Id)
|
||||
.Map(dest => dest.WeekNumber, src => src.WeekNumber)
|
||||
.Map(dest => dest.LeftLegBalances, src => src.LeftLegBalances)
|
||||
.Map(dest => dest.RightLegBalances, src => src.RightLegBalances)
|
||||
.Map(dest => dest.TotalBalances, src => src.TotalBalances)
|
||||
.Map(dest => dest.WeeklyPoolContribution, src => src.WeeklyPoolContribution)
|
||||
.Map(dest => dest.IsExpired, src => src.IsExpired)
|
||||
.Map(dest => dest.DatePersian, src => src.DatePersian);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetDiscountProducts;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetDiscountCategories;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetMyDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetMyDiscountOrders;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.AddToDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.RemoveFromDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.PlaceDiscountOrder;
|
||||
using ProtoDto = FrontOffice.BFF.DiscountShop.Protobuf.Protos.DiscountShop;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Common.Mappings;
|
||||
|
||||
public class DiscountShopProfile : IRegister
|
||||
{
|
||||
void IRegister.Register(TypeAdapterConfig config)
|
||||
{
|
||||
// Request -> Query/Command mappings
|
||||
config.NewConfig<ProtoDto.GetDiscountProductsRequest, GetDiscountProductsQuery>()
|
||||
.Map(dest => dest.PageNumber, src => src.PageNumber)
|
||||
.Map(dest => dest.PageSize, src => src.PageSize)
|
||||
.Map(dest => dest.SearchTerm, src => src.SearchTerm)
|
||||
.Map(dest => dest.CategoryId, src => src.CategoryId);
|
||||
|
||||
config.NewConfig<ProtoDto.GetDiscountCategoriesRequest, GetDiscountCategoriesQuery>()
|
||||
.Map(dest => dest.ParentCategoryId, src => src.ParentCategoryId)
|
||||
.Map(dest => dest.OnlyActive, src => src.OnlyActive);
|
||||
|
||||
config.NewConfig<ProtoDto.GetMyDiscountOrdersRequest, GetMyDiscountOrdersQuery>()
|
||||
.Map(dest => dest.PageNumber, src => src.PageNumber)
|
||||
.Map(dest => dest.PageSize, src => src.PageSize);
|
||||
|
||||
config.NewConfig<ProtoDto.AddToDiscountCartRequest, AddToDiscountCartCommand>()
|
||||
.Map(dest => dest.ProductId, src => src.ProductId)
|
||||
.Map(dest => dest.Count, src => src.Count);
|
||||
|
||||
config.NewConfig<ProtoDto.RemoveFromDiscountCartRequest, RemoveFromDiscountCartCommand>()
|
||||
.Map(dest => dest.ProductId, src => src.ProductId);
|
||||
|
||||
config.NewConfig<ProtoDto.PlaceDiscountOrderRequest, PlaceDiscountOrderCommand>()
|
||||
.Map(dest => dest.UserAddressId, src => src.UserAddressId)
|
||||
.Map(dest => dest.DiscountBalanceToUse, src => src.DiscountBalanceToUse)
|
||||
.Map(dest => dest.Notes, src => src.Notes);
|
||||
|
||||
// Response mappings
|
||||
config.NewConfig<GetDiscountProductsResponseDto, ProtoDto.GetDiscountProductsResponse>()
|
||||
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.MetaData.TotalCount })
|
||||
.Map(dest => dest.Products, src => src.Products);
|
||||
|
||||
config.NewConfig<DiscountProductDto, ProtoDto.DiscountProductModel>()
|
||||
.Map(dest => dest.Id, src => src.Id)
|
||||
.Map(dest => dest.Title, src => src.Title)
|
||||
.Map(dest => dest.Description, src => src.ShortInformation)
|
||||
.Map(dest => dest.ImagePath, src => src.ImagePath)
|
||||
.Map(dest => dest.OriginalPrice, src => src.Price)
|
||||
.Map(dest => dest.DiscountedPrice, src => src.DiscountedPrice)
|
||||
.Map(dest => dest.DiscountPercent, src => src.MaxDiscountPercent)
|
||||
.Map(dest => dest.RemainingCount, src => src.AvailableCount)
|
||||
.Map(dest => dest.IsAvailable, src => src.IsActive);
|
||||
|
||||
config.NewConfig<GetDiscountCategoriesResponseDto, ProtoDto.GetDiscountCategoriesResponse>()
|
||||
.Map(dest => dest.Categories, src => src.Categories);
|
||||
|
||||
config.NewConfig<DiscountCategoryDto, ProtoDto.DiscountCategoryModel>()
|
||||
.Map(dest => dest.Id, src => src.Id)
|
||||
.Map(dest => dest.Title, src => src.Title)
|
||||
.Map(dest => dest.ParentId, src => src.ParentCategoryId)
|
||||
.Map(dest => dest.IconPath, src => src.ImagePath)
|
||||
.Map(dest => dest.SortOrder, src => src.SortOrder)
|
||||
.Map(dest => dest.Children, src => src.Children);
|
||||
|
||||
config.NewConfig<GetMyDiscountCartResponseDto, ProtoDto.GetMyDiscountCartResponse>()
|
||||
.Map(dest => dest.Items, src => src.Items)
|
||||
.Map(dest => dest.TotalPrice, src => src.TotalPrice)
|
||||
.Map(dest => dest.TotalDiscountAmount, src => src.TotalDiscountAmount);
|
||||
|
||||
config.NewConfig<DiscountCartItemDto, ProtoDto.DiscountCartItemModel>()
|
||||
.Map(dest => dest.ProductId, src => src.ProductId)
|
||||
.Map(dest => dest.ProductTitle, src => src.ProductTitle)
|
||||
.Map(dest => dest.ProductImagePath, src => src.ThumbnailPath)
|
||||
.Map(dest => dest.UnitPrice, src => src.UnitPrice)
|
||||
.Map(dest => dest.Count, src => src.Count)
|
||||
.Map(dest => dest.TotalPrice, src => src.TotalPrice);
|
||||
|
||||
config.NewConfig<GetMyDiscountOrdersResponseDto, ProtoDto.GetMyDiscountOrdersResponse>()
|
||||
.Map(dest => dest.MetaData, src => new ProtoDto.MetaData { TotalCount = src.MetaData.TotalCount })
|
||||
.Map(dest => dest.Orders, src => src.Orders);
|
||||
|
||||
config.NewConfig<DiscountOrderDto, ProtoDto.DiscountOrderModel>()
|
||||
.Map(dest => dest.Id, src => src.Id)
|
||||
.Map(dest => dest.OrderNumber, src => src.OrderNumber)
|
||||
.Map(dest => dest.Status, src => src.Status)
|
||||
.Map(dest => dest.StatusColor, src => src.StatusColor)
|
||||
.Map(dest => dest.TotalAmount, src => src.TotalAmount)
|
||||
.Map(dest => dest.DiscountUsed, src => src.DiscountUsed)
|
||||
.Map(dest => dest.GatewayPaid, src => src.GatewayPaid)
|
||||
.Map(dest => dest.CreatedAtPersian, src => src.CreatedAtPersian);
|
||||
|
||||
config.NewConfig<PlaceDiscountOrderResponseDto, ProtoDto.PlaceDiscountOrderResponse>()
|
||||
.Map(dest => dest.Success, src => src.Success)
|
||||
.Map(dest => dest.Message, src => src.Message)
|
||||
.Map(dest => dest.OrderId, src => src.OrderId)
|
||||
.Map(dest => dest.OrderNumber, src => src.OrderId.ToString())
|
||||
.Map(dest => dest.PaymentUrl, src => src.PaymentUrl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkTree;
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkStatistics;
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkPosition;
|
||||
using Google.Protobuf.WellKnownTypes;
|
||||
using ProtoDto = FrontOffice.BFF.NetworkMembership.Protobuf.Protos.NetworkMembership;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Common.Mappings;
|
||||
|
||||
public class NetworkMembershipProfile : IRegister
|
||||
{
|
||||
void IRegister.Register(TypeAdapterConfig config)
|
||||
{
|
||||
// Request -> Query mappings
|
||||
config.NewConfig<ProtoDto.GetMyNetworkTreeRequest, GetMyNetworkTreeQuery>()
|
||||
.Map(dest => dest.MaxDepth, src => src.MaxDepth > 0 ? src.MaxDepth : 3);
|
||||
|
||||
// Response mappings - Tree
|
||||
config.NewConfig<GetMyNetworkTreeResponseDto, ProtoDto.GetMyNetworkTreeResponse>()
|
||||
.Map(dest => dest.RootNode, src => src.RootNode)
|
||||
.Map(dest => dest.TotalMembers, src => src.TotalMembers)
|
||||
.Map(dest => dest.CurrentDepth, src => src.CurrentDepth);
|
||||
|
||||
config.NewConfig<NetworkNodeDto, ProtoDto.NetworkNodeModel>()
|
||||
.Map(dest => dest.UserId, src => src.UserId)
|
||||
.Map(dest => dest.FullName, src => src.FullName)
|
||||
.Map(dest => dest.Mobile, src => src.Mobile)
|
||||
.Map(dest => dest.Avatar, src => src.Avatar)
|
||||
.Map(dest => dest.Position, src => src.Position)
|
||||
.Map(dest => dest.LeftChild, src => src.LeftChild)
|
||||
.Map(dest => dest.RightChild, src => src.RightChild)
|
||||
.Map(dest => dest.Level, src => src.Level)
|
||||
.Map(dest => dest.HasChildren, src => src.HasChildren);
|
||||
|
||||
// Response mappings - Statistics
|
||||
config.NewConfig<GetMyNetworkStatisticsResponseDto, ProtoDto.GetMyNetworkStatisticsResponse>()
|
||||
.Map(dest => dest.TotalMembers, src => src.TotalMembers)
|
||||
.Map(dest => dest.ActiveMembers, src => src.ActiveMembers)
|
||||
.Map(dest => dest.LeftLegCount, src => src.LeftLegCount)
|
||||
.Map(dest => dest.RightLegCount, src => src.RightLegCount)
|
||||
.Map(dest => dest.LeftPercentage, src => src.LeftPercentage)
|
||||
.Map(dest => dest.RightPercentage, src => src.RightPercentage)
|
||||
.Map(dest => dest.AverageDepth, src => src.AverageDepth)
|
||||
.Map(dest => dest.MaxDepth, src => src.MaxDepth)
|
||||
.Map(dest => dest.WeakerLeg, src => src.WeakerLeg)
|
||||
.Map(dest => dest.MyNetworkLevel, src => src.MyNetworkLevel)
|
||||
.Map(dest => dest.MyNetworkLeg, src => src.MyNetworkLeg)
|
||||
.Map(dest => dest.MyReferralCode, src => src.MyReferralCode)
|
||||
.Map(dest => dest.LastMember, src => src.LastMember);
|
||||
|
||||
config.NewConfig<LastMemberDto, ProtoDto.LastMemberModel>()
|
||||
.Map(dest => dest.UserId, src => src.UserId)
|
||||
.Map(dest => dest.FullName, src => src.FullName)
|
||||
.Map(dest => dest.Position, src => src.Position)
|
||||
.Map(dest => dest.TotalChildren, src => src.TotalChildren);
|
||||
|
||||
// Response mappings - Position
|
||||
config.NewConfig<GetMyNetworkPositionResponseDto, ProtoDto.GetMyNetworkPositionResponse>()
|
||||
.Map(dest => dest.UserId, src => src.UserId)
|
||||
.Map(dest => dest.ParentId, src => src.ParentId)
|
||||
.Map(dest => dest.ParentName, src => src.ParentName)
|
||||
.Map(dest => dest.Position, src => src.Position)
|
||||
.Map(dest => dest.Level, src => src.Level)
|
||||
.Map(dest => dest.ReferralCode, src => src.ReferralCode)
|
||||
.Map(dest => dest.JoinedAt, src => Timestamp.FromDateTime(DateTime.SpecifyKind(src.JoinedAt, DateTimeKind.Utc)))
|
||||
.Map(dest => dest.HasLeftChild, src => src.HasLeftChild)
|
||||
.Map(dest => dest.HasRightChild, src => src.HasRightChild);
|
||||
}
|
||||
}
|
||||
@@ -31,5 +31,9 @@
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.UserAddress.Protobuf\FrontOffice.BFF.UserAddress.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.Package.Protobuf\FrontOffice.BFF.Package.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.UserOrder.Protobuf\FrontOffice.BFF.UserOrder.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.DiscountShop.Protobuf\FrontOffice.BFF.DiscountShop.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.Commission.Protobuf\FrontOffice.BFF.Commission.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.ClubMembership.Protobuf\FrontOffice.BFF.ClubMembership.Protobuf.csproj" />
|
||||
<ProjectReference Include="..\Protobufs\FrontOffice.BFF.NetworkMembership.Protobuf\FrontOffice.BFF.NetworkMembership.Protobuf.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using FrontOffice.BFF.WebApi.Common.Services;
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Queries.GetMyClubMembership;
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.ActivateMyClubMembership;
|
||||
using FrontOffice.BFF.ClubMembership.Protobuf.Protos.ClubMembership;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Services;
|
||||
|
||||
/// <summary>
|
||||
/// سرویس عضویت باشگاه - برای کاربران FrontOffice
|
||||
/// </summary>
|
||||
public class ClubMembershipGrpcService : ClubMembershipContract.ClubMembershipContractBase
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
|
||||
public ClubMembershipGrpcService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت وضعیت عضویت باشگاه کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetMyClubMembershipResponse> GetMyClubMembership(Empty request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyClubMembershipQuery, GetMyClubMembershipResponse>(context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// فعالسازی عضویت باشگاه (پرداخت 56M)
|
||||
/// </summary>
|
||||
public override async Task<ActivateMyClubMembershipResponse> ActivateMyClubMembership(ActivateMyClubMembershipRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<ActivateMyClubMembershipRequest, ActivateMyClubMembershipCommand, ActivateMyClubMembershipResponse>(request, context);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
using FrontOffice.BFF.WebApi.Common.Services;
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Queries.GetMyClubMembership;
|
||||
using FrontOffice.BFF.Application.ClubMembershipCQ.Commands.ActivateMyClubMembership;
|
||||
using MediatR;
|
||||
using System.Threading;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Services;
|
||||
|
||||
@@ -11,19 +13,19 @@ namespace FrontOffice.BFF.WebApi.Services;
|
||||
/// </summary>
|
||||
public class ClubMembershipService
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
private readonly ISender _sender;
|
||||
|
||||
public ClubMembershipService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
public ClubMembershipService(ISender sender)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
_sender = sender;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت وضعیت عضویت باشگاه کاربر جاری
|
||||
/// </summary>
|
||||
public async Task<GetMyClubMembershipResponseDto> GetMyClubMembership(Empty request, ServerCallContext context)
|
||||
public async Task<GetMyClubMembershipResponseDto> GetMyClubMembership(CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyClubMembershipQuery, GetMyClubMembershipResponseDto>(context);
|
||||
return await _sender.Send(new GetMyClubMembershipQuery(), cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -31,8 +33,8 @@ public class ClubMembershipService
|
||||
/// </summary>
|
||||
public async Task<ActivateMyClubMembershipResponseDto> ActivateMyClubMembership(
|
||||
ActivateMyClubMembershipCommand request,
|
||||
ServerCallContext context)
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<ActivateMyClubMembershipCommand, ActivateMyClubMembershipResponseDto>(request, context);
|
||||
return await _sender.Send(request, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
35
src/FrontOffice.BFF.WebApi/Services/CommissionService.cs
Normal file
35
src/FrontOffice.BFF.WebApi/Services/CommissionService.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using FrontOffice.BFF.WebApi.Common.Services;
|
||||
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyCommissionPayouts;
|
||||
using FrontOffice.BFF.Application.CommissionCQ.Queries.GetMyWeeklyBalances;
|
||||
using FrontOffice.BFF.Commission.Protobuf.Protos.Commission;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Services;
|
||||
|
||||
/// <summary>
|
||||
/// سرویس کمیسیون - برای کاربران FrontOffice
|
||||
/// </summary>
|
||||
public class CommissionService : CommissionContract.CommissionContractBase
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
|
||||
public CommissionService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست پرداختهای کمیسیون کاربر
|
||||
/// </summary>
|
||||
public override async Task<GetMyCommissionPayoutsResponse> GetMyCommissionPayouts(GetMyCommissionPayoutsRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyCommissionPayoutsRequest, GetMyCommissionPayoutsQuery, GetMyCommissionPayoutsResponse>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست بالانسهای هفتگی کاربر
|
||||
/// </summary>
|
||||
public override async Task<GetMyWeeklyBalancesResponse> GetMyWeeklyBalances(GetMyWeeklyBalancesRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyWeeklyBalancesRequest, GetMyWeeklyBalancesQuery, GetMyWeeklyBalancesResponse>(request, context);
|
||||
}
|
||||
}
|
||||
80
src/FrontOffice.BFF.WebApi/Services/DiscountShopService.cs
Normal file
80
src/FrontOffice.BFF.WebApi/Services/DiscountShopService.cs
Normal file
@@ -0,0 +1,80 @@
|
||||
using FrontOffice.BFF.WebApi.Common.Services;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetDiscountProducts;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetDiscountCategories;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetMyDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Queries.GetMyDiscountOrders;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.AddToDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.RemoveFromDiscountCart;
|
||||
using FrontOffice.BFF.Application.DiscountShopCQ.Commands.PlaceDiscountOrder;
|
||||
using FrontOffice.BFF.DiscountShop.Protobuf.Protos.DiscountShop;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Services;
|
||||
|
||||
/// <summary>
|
||||
/// سرویس فروشگاه تخفیفی - برای کاربران عضو باشگاه
|
||||
/// </summary>
|
||||
public class DiscountShopService : DiscountShopContract.DiscountShopContractBase
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
|
||||
public DiscountShopService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست محصولات تخفیفی
|
||||
/// </summary>
|
||||
public override async Task<GetDiscountProductsResponse> GetDiscountProducts(GetDiscountProductsRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetDiscountProductsRequest, GetDiscountProductsQuery, GetDiscountProductsResponse>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت دستهبندیهای فروشگاه تخفیفی
|
||||
/// </summary>
|
||||
public override async Task<GetDiscountCategoriesResponse> GetDiscountCategories(GetDiscountCategoriesRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetDiscountCategoriesRequest, GetDiscountCategoriesQuery, GetDiscountCategoriesResponse>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت سبد خرید تخفیفی کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetMyDiscountCartResponse> GetMyDiscountCart(Empty request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyDiscountCartQuery, GetMyDiscountCartResponse>(context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// افزودن محصول به سبد خرید تخفیفی
|
||||
/// </summary>
|
||||
public override async Task<Empty> AddToDiscountCart(AddToDiscountCartRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<AddToDiscountCartRequest, AddToDiscountCartCommand>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// حذف محصول از سبد خرید تخفیفی
|
||||
/// </summary>
|
||||
public override async Task<Empty> RemoveFromDiscountCart(RemoveFromDiscountCartRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<RemoveFromDiscountCartRequest, RemoveFromDiscountCartCommand>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت لیست سفارشات تخفیفی کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetMyDiscountOrdersResponse> GetMyDiscountOrders(GetMyDiscountOrdersRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyDiscountOrdersRequest, GetMyDiscountOrdersQuery, GetMyDiscountOrdersResponse>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ثبت سفارش تخفیفی
|
||||
/// </summary>
|
||||
public override async Task<PlaceDiscountOrderResponse> PlaceDiscountOrder(PlaceDiscountOrderRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<PlaceDiscountOrderRequest, PlaceDiscountOrderCommand, PlaceDiscountOrderResponse>(request, context);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using FrontOffice.BFF.WebApi.Common.Services;
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkTree;
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkStatistics;
|
||||
using FrontOffice.BFF.Application.NetworkMembershipCQ.Queries.GetMyNetworkPosition;
|
||||
using FrontOffice.BFF.NetworkMembership.Protobuf.Protos.NetworkMembership;
|
||||
|
||||
namespace FrontOffice.BFF.WebApi.Services;
|
||||
|
||||
/// <summary>
|
||||
/// سرویس عضویت شبکهای - برای کاربران FrontOffice
|
||||
/// </summary>
|
||||
public class NetworkMembershipService : NetworkMembershipContract.NetworkMembershipContractBase
|
||||
{
|
||||
private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS;
|
||||
|
||||
public NetworkMembershipService(IDispatchRequestToCQRS dispatchRequestToCQRS)
|
||||
{
|
||||
_dispatchRequestToCQRS = dispatchRequestToCQRS;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت درخت شبکه کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetMyNetworkTreeResponse> GetMyNetworkTree(GetMyNetworkTreeRequest request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyNetworkTreeRequest, GetMyNetworkTreeQuery, GetMyNetworkTreeResponse>(request, context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت آمار شبکه کاربر جاری
|
||||
/// </summary>
|
||||
public override async Task<GetMyNetworkStatisticsResponse> GetMyNetworkStatistics(Empty request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyNetworkStatisticsQuery, GetMyNetworkStatisticsResponse>(context);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت موقعیت کاربر در شبکه
|
||||
/// </summary>
|
||||
public override async Task<GetMyNetworkPositionResponse> GetMyNetworkPosition(Empty request, ServerCallContext context)
|
||||
{
|
||||
return await _dispatchRequestToCQRS.Handle<GetMyNetworkPositionQuery, GetMyNetworkPositionResponse>(context);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user