using EonaCat.gRPC.Core.Interfaces.Services; using EonaCat.gRPC.Proto; using EonaCat.Mapper; namespace EonaCat.gRPC.Api.Services; public class UserHandler : IProtoUserService { private readonly IUserService _userService; public UserHandler(IUserService userService) { _userService = userService; } public async ValueTask> Create(UserCreateRequest userCreateRequest) { var user = CustomMapper.Map(userCreateRequest); var response = await _userService.CreateUser(user); return BaseResponse.Created(response.ToString()); } public async Task?>> GetAsync() { var users = await _userService.GetAsync(); var mapped = CustomMapper.Map, List>(users.ToList()); return BaseResponse?>.Ok(mapped); } public async Task> GetByIdAsync(string id) { if (string.IsNullOrEmpty(id) || !long.TryParse(id, out _)) return BaseResponse.Failed(null, message: "Invalid ID: It is either empty or not a valid long."); var user = await _userService.GetAsync(Convert.ToInt64(id)); var mapped = CustomMapper.Map(user); return BaseResponse.Ok(mapped); } }