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
<PackageReference Include="Magma.Extensions.Application" Version="8.0.2" />
<PackageVersion Include="Magma.Extensions.Application" Version="8.0.2" />
<PackageReference Include="Magma.Extensions.Application" />
paket add Magma.Extensions.Application --version 8.0.2
#r "nuget: Magma.Extensions.Application, 8.0.2"
#:package Magma.Extensions.Application@8.0.2
#addin nuget:?package=Magma.Extensions.Application&version=8.0.2
#tool nuget:?package=Magma.Extensions.Application&version=8.0.2
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 | Versions 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. |
-
net8.0
- AutoMapper (>= 13.0.1)
- ClosedXML (>= 0.104.1)
- Microsoft.EntityFrameworkCore.DynamicLinq (>= 8.4.8)
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.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 |
Renomeando HeaderItem para BackendHeaderItem para evitar conflitos com o frontend