using CMSMicroservice.Protobuf.Protos.UserCarts; using CMSMicroservice.WebApi.Common.Services; namespace CMSMicroservice.WebApi.Services; public class UserCartsService : UserCartsContract.UserCartsContractBase { private readonly IDispatchRequestToCQRS _dispatcher; public UserCartsService(IDispatchRequestToCQRS dispatcher) { _dispatcher = dispatcher; } #region Customer Methods public override async Task AddNewUserCartForCustomer( AddNewUserCartForCustomerRequest request, ServerCallContext context) { // TODO: Map to DiscountShop AddToCart command return new AddNewUserCartForCustomerResponse { Message = "AddNewUserCartForCustomer not implemented yet" }; } public override async Task UpdateUserCartForCustomer( UpdateUserCartForCustomerRequest request, ServerCallContext context) { // TODO: Map to DiscountShop UpdateCartItemCount command return new UpdateUserCartForCustomerResponse { Message = "UpdateUserCartForCustomer not implemented yet" }; } public override async Task RemoveUserCartForCustomer( RemoveUserCartForCustomerRequest request, ServerCallContext context) { // TODO: Map to DiscountShop RemoveFromCart command return new RemoveUserCartForCustomerResponse { Message = "RemoveUserCartForCustomer not implemented yet" }; } public override async Task GetUserCartForCustomer( GetUserCartForCustomerRequest request, ServerCallContext context) { // TODO: Map to DiscountShop GetUserCart query return new GetUserCartForCustomerResponse(); } #endregion #region Admin Methods public override async Task AddNewUserCart( AddNewUserCartRequest request, ServerCallContext context) { throw new RpcException(new Status(StatusCode.Unimplemented, "AddNewUserCart not implemented yet")); } public override async Task UpdateUserCart( UpdateUserCartRequest request, ServerCallContext context) { throw new RpcException(new Status(StatusCode.Unimplemented, "UpdateUserCart not implemented yet")); } public override async Task DeleteUserCart( DeleteUserCartRequest request, ServerCallContext context) { throw new RpcException(new Status(StatusCode.Unimplemented, "DeleteUserCart not implemented yet")); } public override async Task GetUserCart( GetUserCartRequest request, ServerCallContext context) { throw new RpcException(new Status(StatusCode.Unimplemented, "GetUserCart not implemented yet")); } public override async Task GetAllUserCartsByFilter( GetAllUserCartsByFilterRequest request, ServerCallContext context) { throw new RpcException(new Status(StatusCode.Unimplemented, "GetAllUserCartsByFilter not implemented yet")); } #endregion } using CMSMicroservice.Application.UserCartsCQ.Commands.ClearCart; using Grpc.Core; namespace CMSMicroservice.WebApi.Services; public class UserCartsService : UserCartsContract.UserCartsContractBase { private readonly IDispatchRequestToCQRS _dispatchRequestToCQRS; public UserCartsService(IDispatchRequestToCQRS dispatchRequestToCQRS) { _dispatchRequestToCQRS = dispatchRequestToCQRS; } public override async Task CreateNewUserCarts(CreateNewUserCartsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task UpdateUserCarts(UpdateUserCartsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task DeleteUserCarts(DeleteUserCartsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetUserCarts(GetUserCartsRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task GetAllUserCartsByFilter(GetAllUserCartsByFilterRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task ClearCart(ClearCartRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } public override async Task ClearCartForCustomer(ClearCartRequest request, ServerCallContext context) { return await _dispatchRequestToCQRS.Handle(request, context); } // ============= Customer-specific Methods ============= public override async Task AddNewUserCartForCustomer(CreateNewUserCartsRequest request, ServerCallContext context) { // Reuse the existing CreateNewUserCarts logic return await CreateNewUserCarts(request, context); } public override async Task UpdateUserCartForCustomer(UpdateUserCartsRequest request, ServerCallContext context) { // Reuse the existing UpdateUserCarts logic return await UpdateUserCarts(request, context); } public override async Task GetUserCartForCustomer(GetAllUserCartsByFilterRequest request, ServerCallContext context) { // Reuse the existing GetAllUserCartsByFilter logic return await GetAllUserCartsByFilter(request, context); } }