Magma.Extensions.Application 8.0.2

dotnet add package Magma.Extensions.Application --version 8.0.2
                    
NuGet\Install-Package Magma.Extensions.Application -Version 8.0.2
                    
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="Magma.Extensions.Application" Version="8.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Magma.Extensions.Application" Version="8.0.2" />
                    
Directory.Packages.props
<PackageReference Include="Magma.Extensions.Application" />
                    
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 Magma.Extensions.Application --version 8.0.2
                    
#r "nuget: Magma.Extensions.Application, 8.0.2"
                    
#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 Magma.Extensions.Application@8.0.2
                    
#: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=Magma.Extensions.Application&version=8.0.2
                    
Install as a Cake Addin
#tool nuget:?package=Magma.Extensions.Application&version=8.0.2
                    
Install as a Cake Tool

Magma.Extensions.Application - Magma Digital

Facilitadores para a camada de aplicação dos projetos de backend da Magma Digital

Extension Methods

SetDefaultFilters

Percorre as propriedades de uma classe (Query) e gera os filtros (cláusula where do sql) automáticamente para os atributos informados.

Por padrão o nome da propriedade na classe é considerado como nome do campo da tabela da base de dados e o operador padrão de comparação é o IGUAL (=).

Pelos Attributes descritos abaixo, é possível alterar o tipo padrão da busca.

SetQuickSearchFilters

Percorre as propriedades de uma classe (Query) com o attribute QuickSearch e realiza a consulta do tipo OR LIKE... (vide atribute Quicksearch abaixo)

OrderByField

Por padrão, toda Query que retorna uma lista paginada deve herdar da classe QueryRequestBase .

O método OrderByField considera as propriedades da classe QueryRequestBase (SortField e SortOrder) que são enviadas pelo frontend para realizar a ordenação automaticamente.

Attributes Reconhecidos

DefaultProperty (classe)

Deve ser incluído na classe para informar qual a propriedade padrão desta classe. Caso um formulário ou outro componente de frontend utilize este campo, será gerado automaticamente com ele preenchido

ex:

[DefaultProperty("Nome")]
public class Usuario
{
    public int Id { get; set; }
    public string Nome { get; set; }
}

DisableCustomFilter (propriedade)

Utilizar caso deseje que o filtro automático (método SetDefaultFilters) não considere este campo em sua classe de Query. No exemplo abaixo ao chamar o método SetDefaultFilters, a consulta filtrará somente pelo Nome, desconsiderando o campo NomeAbreviado

public class UsuarioObterQuery
{
    public string Nome { get; set; }
    
    [DisableCustomFilter]
    public int NomeAbreviado { get; set; }
}

OperatorFilter (propriedade)

Deve ser utilzado caso o operador desejado não seja o padrão que é IGUAL (=).

Valores possíveis:

  • Equal
  • NotEqual
  • GreaterThan,
  • GreaterOrEqualThan,
  • LessThan,
  • LessOrEqualThan,
  • Contains

ex:

public class UsuarioObterQuery
{
    [OperatorFilter(Operator.Contains)]
    public string Nome { get; set; }
    
    [DisableCustomFilter]
    public int NomeAbreviado { get; set; }    
}

FieldFilter (propriedade)

Deve ser utilizado caso o nome do campo no filtro desejado seja diferente do nome da propriedade

public class PedidosCotacaoObterQuery : QueryRequestBase, IRequest<PaginatedList<PedidoCotacaoVm>>
{   
    public int? UsuarioId { get; set; }
    public int? Id { get; set; }
    public string Solicitacao { get; set; }
    public string NumeroRequisicao { get; set; }
    public string TituloPdc { get; set; }

    [OperatorFilter(Operator.GreaterOrEqualThan)]
    [FieldFilter("DataLimiteResposta.Value.Date")]
    public DateTime? DataLimiteRespostaInicio { get; set; }
    
}

QuickSearch (propriedade)

Deve ser incluído em todas as propriedades de sua classe em que a "Pesquisa rápida" deverá considerar.

No exemplo abaixo a consulta será gerada da seguinte forma: where (Nome like '%@parametro%' or NomeResponsavel like '%@parametro%')

public class PacienteObterQuery
{   
    [QuickSearch] 
    public string Nome { get; set; }
    
    [QuickSearch]
    public string NomeResponsavel { get; set; } 
}

VisibleByDefault (propriedade)

Deve ser incluído em todas as propriedades que serão exibidas nas telas de listagem por padrão.

No exemplo abaixo caso o usuário não configure a exibição, a tela de listagem exibirá por padrão os campos Id e Nome. A data de nascimento estará na lista de colunas caso o usuário deseje incluir.

public class Pessoa
{
    [VisibleByDefault]
    public int Id { get; set; }
    [VisibleByDefault]
    public string Nome { get; set; }
    public DateTime DataNascimento { get; set; }
}

HideOnListView (propriedade)

As propriedades que possuem este atributo não são exibidas na listagem de colunas para exibição ao usuário final.

Ex: utilizar caso deseje retornar campos para lógica de interface, porém nunca serão exibidos ao usuário final.

ColumnKeyFilter (propriedade)

Utilizar caso a propriedade que deseja filtrar tenha um nome diferente da propriedade exibida na grid.

No exemplo abaixo irá exibir para o usuário a propriedade GrupoProcedimentoDescricao, porém caso ele filtre por esta coluna será enviado GrupoProcedimentoId

public class ProcedimentoDto
{    
    public int Id { get; set; }

    [ColumnKeyFilter("GrupoProcedimentoId")]
    public string GrupoProcedimentoDescricao { get; set; }
}

FieldFilterType (propriedade)

Caso o filtro no cabeçalho da grid não seja por text (input text), este attribute pode ser passado.

Possíveis valores:

  • input - filtro padrão por texto informado
  • select - filtro baseado em uma lista suspensa

No exemplo abaixo o grupo de procedimentos será uma lista suspensa no filtro ao invés de um filtro por texto

[DefaultProperty("descricao")]
public class ProcedimentoDto
{
	[VisibleByDefault, Sortable]
	public Int32? Id { get; set; }

	[Description("Descrição"), VisibleByDefault, Sortable]
	public String Descricao { get; set; }

    [Description("Tempo Atendimento")]
    [VisibleByDefault, HideCustomFilter, Sortable]
    public Int32? TempoAtendimento { get; set; }

	[Description("VRPO"), VisibleByDefault, HideCustomFilter, Sortable]
	public Decimal? Vrpo { get; set; }

	[HideOnListView]
	public Int32 GrupoProcedimentoId { get; set; }

	[Description("Grupo de Procedimento")]
	[FieldFilterType(FieldType.Select)]
	[ColumnKeyFilter("grupoProcedimentoId")]
    [VisibleByDefault, Sortable]
    public string GrupoProcedimentoDescricao { get; set; }
}

DateFormatAttribute (propriedade)

Usado para exibir na magma grid uma data com um formato específico. Será exibido um '| date: {format}' no frontend

public class PessoaDto
{
    public int Id { get; set; }
    public string Nome { get; set; }

    [DateFormat("dd/MM/yyyy")]
    public string DataNascimento { get; set; }
}

CurrencyAttribute (propriedade)

Usado para exibir na magma grid uma valor com formato moeda. Será exibido um '| currency: {currencyCode}' no frontend

public class ProdutoDto
{
    public int Id { get; set; }
    public string Nome { get; set; }

    [Currency("BRL")]
    public string Preco { get; set; }
}

MaskAttribute (propriedade)

Utilizado para exibir o campo com máscara. Os padrões de mascara devem ser do ngx-mask. Caso o CurrencyAttribute for informado, ele tem prioridade.

Exemplo de utilização para campo moeda (utiliza o currency no pipe e o mask no input do filtro da grid)

public class ProdutoDto
{
    [VisibleByDefault, Sortable, Currency("BRL"), Mask("separator.2", thousandSeparator: ".", leadZero: true)]
    public decimal Valor { get; set; }
}

IgnoreInQueryAttribute (propriedade)

Deve ser incluído em todas as propriedades que não devem ser consideradas nas queries (ex: campos calculados no backend).

No exemplo abaixo a propriedade StatusCor é retornada, porém nunca será considerada nas queries ao banco de dados porque é um campo calculado no backend.

public class ProdutoDto
{
    //...algumas propriedades
    public string Status { get; set; }
    
    [IgnoreInQuery]
    public string StatusCor => Id % 2 == 0 ? "red" : "green";
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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
8.0.2 237 9/8/2025
8.0.1 313 9/8/2025 8.0.1 is deprecated because it has critical bugs.
8.0.0 685 11/1/2024
6.16.0 191 11/1/2024
6.15.0 196 10/30/2024
6.14.0 193 10/22/2024
6.13.0 245 8/23/2024
6.12.0 1,898 2/21/2024
6.11.0 379 12/27/2023
6.10.0 270 12/1/2023
6.9.0 196 12/1/2023
6.8.0 768 9/27/2023
6.7.0 246 9/20/2023
6.6.0 193 9/20/2023
6.5.0 211 9/19/2023
6.4.0 199 9/19/2023
6.3.0 229 9/15/2023
6.2.0 218 9/1/2023
6.1.0 238 8/31/2023
6.0.1 259 8/23/2023
Loading failed

Renomeando HeaderItem para BackendHeaderItem para evitar conflitos com o frontend