using TIAM.Entities.Transfers; using TIAM.Entities.Emails; //using TIAM.Entities.TransferDestinations; using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels; namespace TIAMMobileApp.Services { public class WizardProcessor : IWizardProcessor { public ITransferDataService TransferDataService { get; set; } public IUserDataService UserDataService { get; set; } public IClientNoticeSenderService MessageSenderService { get; set; } public WizardProcessor(ITransferDataService transferDataService, IUserDataService userDataService, IClientNoticeSenderService messageSenderService) { this.TransferDataService = transferDataService; this.UserDataService = userDataService; this.MessageSenderService = messageSenderService; } public async Task ProcessWizardAsync(Type type, object data) where TModelType: class { switch (type.Name) { case nameof(TransferDestinationWizardModel): var result = await TransferDataService.CreateTransferDestination((TransferDestination)data); return result as TModelType; case nameof(TransferWizardModel): Console.WriteLine(@"TransferWizardModel"); var transferResult = await TransferDataService.CreateTransfer((TransferWizardModel)data); return transferResult as TModelType; case nameof(MessageWizardModel): TIAM.Entities.Emails.EmailMessage emailMessage = ((MessageWizardModel)data).CopyToEmailMessage(); var messageResult = await MessageSenderService.SendNoticeAsync(emailMessage, 1); return messageResult as TModelType; //case nameof(ServiceProvider): // return null; default: return null; } } public Task ValidateWizardStepAsync(Type type, string fieldName, object fieldValue) { //if type is TransferDestination, then validate the field name //if (type.Name == "TransferDestination") // return await TransferDataService.ValidateDestination(fieldName); //if type is ServiceProvider, then validate the field name //if type is something else, then throw an exception throw new NotImplementedException(); } } }