using Singer_Hexdive.Exceptions; using Singer_Hexdive.Interfaces.ServiceInterfaces; using Singer_Hexdive.Models.IOs; namespace Singer_Hexdive.Services.FunctionHandlers { public class MerchantManager { private readonly Dictionary>> _functionHandler; public MerchantManager(BaseMerchantService merchantService) { _functionHandler = new() { {"PostM_PersonalDetails", merchantService.PostM_PersonalDetails } }; } public async Task> Execute(ApiRequest request) { if (!_functionHandler.TryGetValue(request.FunctionName, out var handler)) { return new ApiResponse { StatusCode = 404, Message = $"Function '{request.FunctionName}' not found.", Data = null }; } try { var results = await handler(request.Payload); return new ApiResponse { StatusCode = 200, Message = "success", Data = results }; } catch (NotfoundException ex) { return new ApiResponse { StatusCode = 404, Message = ex.Message, Data = null }; } catch (InvalidOperationException ex) { return new ApiResponse { StatusCode = 400, Message = ex.Message, Data = null }; } catch (ArgumentException ex) { return new ApiResponse { StatusCode = 500, Message = ex.Message, Data = null }; } } } }