FlowStepsChain.NetCore 1.0.5

dotnet add package FlowStepsChain.NetCore --version 1.0.5
                    
NuGet\Install-Package FlowStepsChain.NetCore -Version 1.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FlowStepsChain.NetCore" Version="1.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlowStepsChain.NetCore" Version="1.0.5" />
                    
Directory.Packages.props
<PackageReference Include="FlowStepsChain.NetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FlowStepsChain.NetCore --version 1.0.5
                    
#r "nuget: FlowStepsChain.NetCore, 1.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FlowStepsChain.NetCore@1.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FlowStepsChain.NetCore&version=1.0.5
                    
Install as a Cake Addin
#tool nuget:?package=FlowStepsChain.NetCore&version=1.0.5
                    
Install as a Cake Tool

FlowStepChain

FlowStepChain é uma biblioteca para o ASP.NET Core que simplifica o gerenciamento e a execução de sequências de funções em suas Controllers. Com o FlowStepChain, você pode facilmente configurar várias etapas a serem executadas em sequência, tratando erros e retornando resultados de maneira consistente.

Características

  • Definição simples e encadeada de etapas a serem executadas em sequência.
  • Suporte a funções síncronas e assíncronas.
  • Verificação opcional e automática da validade do ModelState antes da execução das etapas.
  • Configuração de redirecionamento personalizado para erros e tratamento de exceções.
  • Flexibilidade para retornar resultados em IActionResult, ViewModel ou Razor Pages.
  • Facilita a reutilização e a manutenção do código em suas Controllers.

Instalação

Para instalar o FlowStepChain, adicione-o como uma dependência do seu projeto ASP.NET Core usando o NuGet ou o gerenciador de pacotes de sua preferência.

Exemplo de uso


public class MyController : Controller {     

	[HttpPost("create")]
	public async Task<IActionResult> Exemplo1([FromBody] UserResponse model)
	{         
		return await this.FlowStep()
                               .AddStepAsync(userCommandService.UserValidate)
                               .AddStepAsync(userCommandService.UserCreate)
                               .AddStep(userServices.MapearParaViewModel)
                               .ExecuteViewAsync<UserResponse>(this, model);
					  
	} 

   public async Task<IActionResult> Exemplo2(UserResponse model) => await this.FlowStep()
                               .AddStepAsync(userServices.ValidarModel)
                               .AddStepAsync(userServices.CriarRegistro)
                               .AddStep(userServices.MapearParaViewModel)
                               .ExecuteViewAsync<UserResponse>(this, model);
}

Exemplo de uso ExecuteViewAsync

O ExecuteViewAsync irá processar a sequência e irá retornar uma View ou Redirecionar para uma página de Erro

    return await this.FlowStep()
                                .AddStepAsync(userCommandService.UserValidate)
                                .AddStepAsync(userCommandService.UserCreate)
                                .AddStep(userServices.MapearParaViewModel)
                                .ExecuteViewAsync<UserResponse>(this, model);

Exemplo de uso ExecuteResultAsync

O ExecuteResultAsync irá processar a sequência e irá retornar um objeto

    var objResult = await this.FlowStep()
                            .AddStepAsync(userCommandService.UserValidate)
                            .AddStepAsync(userCommandService.UserCreate)
                            .ExecuteResultAsync<UserResponse>(model);

Exemplo de uso ExecuteTypedAsync

O ExecuteTypedAsync irá processar a sequência e irá retornar dois retornos (bool, object)

    var objResult = await this.FlowStep()
                            .AddStepAsync(userCommandService.UserValidate)
                            .AddStepAsync(userCommandService.UserCreate)
                            .ExecuteTypedAsync<UserResponse>(model);

	// objResult.Item1 to tipo bool
    // objResult.Item2 do tipo class

Mapper ToMap

O mapper serve para mapear 2 objetos semelhantes de forma simples abaixo segue os 2 exemplos de como utilizar

 var obj1 = new DataDTO();
 var obj2 = new DataDTO();

 No exemplo a classe obj1 irá passar todos os valores para a classe obj2

 Através de uma extensão
    obj1.ToMap(obj2);
 Acesso direto ao Mapper
    Mapper.ToMap(obj1, obj2);

Mapper GetChanges

O GetChanges irá retornar uma lista dos campos que sofreram alterações com as propriedades Field, OldValue e CurrentValeu

    Acesso direto ao Mapper
    var resultDiff = Mapper.GetChanges(obj1, obj2);
    Através de uma extensão
    var resultDiff = obj1.GetChanges(obj2);

Documentação

Para obter informações detalhadas sobre como configurar e usar o FlowStepChain, consulte a documentação e os exemplos disponíveis no repositório do projeto.

Licença

FlowStepChain é distribuído sob a licença MIT.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.5 4,777 5/12/2023
1.0.4 305 4/19/2023
1.0.3 288 4/18/2023
1.0.2 282 4/17/2023
1.0.1 283 4/17/2023
1.0.0 290 4/17/2023