using FrameworkDAL.DTO.EIPConversation; using GB5Shared.DTO.Framework.Login; using Microsoft.Extensions.Logging; using System; using System.Threading; using System.Threading.Tasks; namespace FrameworkBLL.EIPConversation.EIPHandlers.EIPEngine.ActionHandler { public class ValidationActionHandler : IEIPActionHandler { // Mandatory interface property public string ActionCode => "VALIDATE_INPUT"; private readonly ILogger _logger; public ValidationActionHandler(ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public bool CanHandle(string actionCode) { return string.Equals(actionCode, ActionCode, StringComparison.OrdinalIgnoreCase); } public Task HandleAsync( EIPActionContextDTO context, LoginDTO loginDTO, CancellationToken cancellationToken) { try { if (context?.Payload == null) throw new ArgumentNullException(nameof(context.Payload), "Payload cannot be null"); if (!context.Payload.ContainsKey("PhoneNumber") || string.IsNullOrWhiteSpace(context.Payload["PhoneNumber"]?.ToString())) throw new Exception("PhoneNumber is required"); _logger.LogInformation("Validation successful for PhoneNumber={PhoneNumber}", context.Payload["PhoneNumber"]); return Task.FromResult(new EIPActionResultDTO { IsSuccess = true, Message = "Validation successful" }); } catch (Exception ex) { _logger.LogError(ex, "Validation failed"); return Task.FromResult(new EIPActionResultDTO { IsSuccess = false, Message = ex.Message, ErrorMessage = ex.ToString() }); } } } }