TourIAm/TIAMMobileApp/Services/WizardProcessor.cs

61 lines
2.5 KiB
C#

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<TModelType?> ProcessWizardAsync<TModelType>(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<string> 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();
}
}
}