public virtual bool Validate <ValidationAdapterClass>(IOperationAction <T, U, V> operationAction) { IValidation <T> model = operationAction.OperationRequest().OpData().Valid() as IValidation <T>; var validationAdapter = CreateAdapterInstance <ValidationAdapterClass>(model) as IValidation <T>; return(validationAdapter.Valid()); }
public override IOperationAction <T, U, V> CreateInvalidResponse(IOperationAction <T, U, V> action) { // get model errors - ModelDTO.Errors var errors = new List <IError>(); // Add errors IInvalidResponse <IError> invalidResponse = new InvalidResponse <IError>(errors); // create new action with new invalid response return(AddInvalidResponseToAction(action, invalidResponse));; }
public virtual string Return(IOperationAction <T, U, V> operationAction) { if (operationAction.Response().Valid()) { return(operationAction.OperationResponse().DataAsJsonString()); } else { return(operationAction.OperationResponse().InvalidResponse().DataAsJsonString()); // PostModelDTO should be created where it wrapes model and errors } }
public override void Prepare(IOperationAction <T, U, V> operationAction) { logger.LogDebug("begin executing Prepare"); logger.LogDebug("end executing Prepare"); }
public override void Finalize(IOperationAction <T, U, V> operationAction) { logger.LogDebug("begin executing Finalize"); logger.LogDebug("end executing Finalize"); }
public override IOperationAction <T, U, V> Perform(IOperationAction <T, U, V> operationAction) { return(action); }
// can inject as many services as wanted public PostCreateOperationProtocol(/* ICoreApiClient client, */ ILogger logger, IOperationAction <T, U, V> action) : base(logger, action) { }
public async Task <ActionResult <string> > Create([Microsoft.AspNetCore.Mvc.FromBody] PostCreateDTO post) //PostOperationCreateData { await Task.Yield(); /*IOperation<PostCreateDTO, PostModelDTO, Dictionary<string, object>> operation = * new Operation<PostCreateDTO, PostModelDTO, Dictionary<string, object>>(logger); * * operation =*/ operation.Make <PostCreateOperationProtocol <PostCreateDTO, PostModelDTO, Dictionary <string, object> > >(post); // should pass http request IOperationAction <PostCreateDTO, PostModelDTO, Dictionary <string, object> > action = operation.Execute(); return(operation.Return(action)); }
public abstract IOperationAction <T, U, V> Perform(IOperationAction <T, U, V> operationAction);
public IOperationAction <T, U, V> AddInvalidResponseToAction(IOperationAction <T, U, V> operationAction, IInvalidResponse <IError> invalidResponse) { action.OperationResponse().SetInvalidResponse(invalidResponse); return(action); }
public abstract void Prepare(IOperationAction <T, U, V> operationAction);
public abstract void Finalize(IOperationAction <T, U, V> operationAction);
public abstract IOperationAction <T, U, V> CreateInvalidResponse(IOperationAction <T, U, V> action);
public OperationProtocol(ILogger logger, IOperationAction <T, U, V> action) { this.logger = logger; this.action = action; }
private object CreateProtocolInstance <ProtocolClass>(ILogger logger, IOperationAction <T, U, V> operationAction) { return(Activator.CreateInstance(typeof(ProtocolClass), new object[] { logger, operationAction })); }