70 lines
2.8 KiB
C#
70 lines
2.8 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;
|
|
using EmailMessage = TIAM.Entities.Emails.EmailMessage;
|
|
|
|
namespace TIAMWebApp.Client.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):
|
|
EmailMessage emailMessage = ((MessageWizardModel)data).CopyToEmailMessage();
|
|
var messageResult = await MessageSenderService.SendNoticeAsync(emailMessage, 1);
|
|
if (messageResult == "OK")
|
|
{
|
|
return data as TModelType;
|
|
}
|
|
else
|
|
{
|
|
return null;
|
|
}
|
|
|
|
//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();
|
|
}
|
|
}
|
|
}
|