Complete FrontOffice BFF to CMS Migration

- Migrated all 9 services from FrontOffice.BFF to CMS architecture
- Enhanced user.proto with 7 additional Customer API endpoints:
  * UpdateCustomerProfile, GetCustomerProfile
  * ChangeCustomerPassword with validation
  * GetCustomerReferrals with commission stats
  * UploadCustomerAvatar with file validation
  * GetCustomerSettings, UpdateCustomerSettings
- All services now support Customer endpoints with /Customer/ prefix
- Mock implementations with realistic Persian data
- Fixed namespace conflicts and compilation issues
- Comprehensive testing completed for all endpoints
- Services migrated: Categories, City, UserCarts, Products, UserWallet,
  Transaction, UserOrder, Package, User (enhanced)
This commit is contained in:
masoodafar-web
2026-01-30 08:53:09 +03:30
parent 96daf899c7
commit 658d076bdf
170 changed files with 3770 additions and 4364 deletions
@@ -0,0 +1,48 @@
using CMSMicroservice.Protobuf.Protos.Health;
using CMSMicroservice.Application.HealthCQ.Queries.GetSystemHealth;
using MediatR;
using Mapster;
using Grpc.Core;
using Google.Protobuf.WellKnownTypes;
using System.Linq;
namespace CMSMicroservice.WebApi.Services;
public class HealthService : HealthContract.HealthContractBase
{
private readonly IMediator _mediator;
public HealthService(IMediator mediator)
{
_mediator = mediator;
}
public override async Task<GetSystemHealthResponse> GetSystemHealth(Empty request, ServerCallContext context)
{
var query = new GetSystemHealthQuery();
var result = await _mediator.Send(query, context.CancellationToken);
return result.Adapt<GetSystemHealthResponse>();
}
public override async Task<GetServiceHealthResponse> GetServiceHealth(GetServiceHealthRequest request, ServerCallContext context)
{
// For now, just return system health filtered by service name
var systemHealthQuery = new GetSystemHealthQuery();
var systemHealth = await _mediator.Send(systemHealthQuery, context.CancellationToken);
var service = systemHealth.Services.FirstOrDefault(s =>
s.ServiceName.Equals(request.ServiceName, StringComparison.OrdinalIgnoreCase));
if (service == null)
{
throw new ArgumentException($"Service '{request.ServiceName}' not found");
}
return new GetServiceHealthResponse
{
Service = service.Adapt<ServiceHealthModel>(),
CheckedAt = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.UtcNow)
};
}
}