Skip to content

Commit

Permalink
feat: 547
Browse files Browse the repository at this point in the history
Gestione Filtri.  Related work items: #547
  • Loading branch information
mg-dgsspa committed Jan 24, 2025
1 parent 0dcde57 commit 39020f6
Show file tree
Hide file tree
Showing 45 changed files with 929 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence.Builder;

internal static class RelTestataSQLBuilder
{
{
private static string _sqlAnni = @"
SELECT distinct(year)
FROM [pfd].[RelTestata]
";

private static string _sqlMesi = @"
SELECT distinct(month)
FROM [pfd].[RelTestata]
";

private static string _sqlDistinctTipologiaFatturaPagoPA = @"
SELECT TipologiaFattura
Expand Down Expand Up @@ -149,4 +158,22 @@ public static string OrderByDistinctTipologiaFattura()
{
return " ORDER BY ordine ";
}

public static string SelectAnni()
{
return _sqlAnni;
}

public static string SelectMesi()
{
return _sqlMesi;
}

public static string OrderByMonth = " order by month desc";

public static string OrderByYear= " order by year desc";

public static string GroupByOrderByYear = " group by year, internal_organization_id, contract_id order by year desc";

public static string GroupByMonthByYear = " group by year, month, internal_organization_id, contract_id order by month desc";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Data;
using System.Dynamic;
using PortaleFatture.BE.Infrastructure.Common.Persistence;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence.Builder;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

public class RelAnniQueryByIdEntePersistence(RelAnniByIdEnteQuery command) : DapperBase, IQuery<IEnumerable<string>?>
{
private readonly RelAnniByIdEnteQuery _command = command;
private static readonly string _sql = RelTestataSQLBuilder.SelectAnni();
private static readonly string _orderBy = RelTestataSQLBuilder.GroupByOrderByYear;
public async Task<IEnumerable<string>?> Execute(IDbConnection? connection, string schema, IDbTransaction? transaction, CancellationToken cancellationToken = default)
{
var authInfo = _command.AuthenticationInfo;
dynamic parameters = new ExpandoObject();

var where = " WHERE internal_organization_id=@IdEnte ";
parameters.IdEnte = authInfo.IdEnte;

return await ((IDatabase)this).SelectAsync<string>(
connection!, _sql + where + _orderBy, parameters, transaction);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Data;
using PortaleFatture.BE.Infrastructure.Common.Persistence;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence.Builder;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

public class RelAnniQueryPersistence(RelAnniQuery command) : DapperBase, IQuery<IEnumerable<string>?>
{
private readonly RelAnniQuery _command = command;
private static readonly string _sql = RelTestataSQLBuilder.SelectAnni();
private static readonly string _orderBy = RelTestataSQLBuilder.OrderByYear;
public async Task<IEnumerable<string>?> Execute(IDbConnection? connection, string schema, IDbTransaction? transaction, CancellationToken cancellationToken = default)
{

return await ((IDatabase)this).SelectAsync<string>(
connection!, _sql + _orderBy, _command, transaction);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Data;
using System.Dynamic;
using PortaleFatture.BE.Infrastructure.Common.Persistence;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence.Builder;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

public class RelMesiByIdEnteQueryPersistence(RelMesiByIdEnteQuery command) : DapperBase, IQuery<IEnumerable<string>?>
{
private readonly RelMesiByIdEnteQuery _command = command;
private static readonly string _sql = RelTestataSQLBuilder.SelectMesi();
private static readonly string _orderBy = RelTestataSQLBuilder.GroupByMonthByYear;
public async Task<IEnumerable<string>?> Execute(IDbConnection? connection, string schema, IDbTransaction? transaction, CancellationToken cancellationToken = default)
{
var authInfo = _command.AuthenticationInfo;
dynamic parameters = new ExpandoObject();
var where = " WHERE year=@anno ";
parameters.Anno = _command.Anno;
where += " AND internal_organization_id=@IdEnte ";
parameters.IdEnte = authInfo.IdEnte;
return await ((IDatabase)this).SelectAsync<string>(
connection!, _sql + where + _orderBy, parameters, transaction);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
using System.Data;
using System.Dynamic;
using PortaleFatture.BE.Infrastructure.Common.Persistence;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence.Builder;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

public class RelMesiQueryPersistence(RelMesiQuery command) : DapperBase, IQuery<IEnumerable<string>?>
{
private readonly RelMesiQuery _command = command;
private static readonly string _sql = RelTestataSQLBuilder.SelectMesi();
private static readonly string _orderBy = RelTestataSQLBuilder.OrderByMonth;
public async Task<IEnumerable<string>?> Execute(IDbConnection? connection, string schema, IDbTransaction? transaction, CancellationToken cancellationToken = default)
{
dynamic parameters = new ExpandoObject();
var where = string.Empty;
if (!string.IsNullOrEmpty(_command.Anno))
{
where += " WHERE year=@anno ";
parameters.Anno = _command.Anno;
}

return await ((IDatabase)this).SelectAsync<string>(
connection!, _sql + where + _orderBy, parameters, transaction);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
public class RelAnniByIdEnteQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;
public string? IdContratto { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
public class RelAnniQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;

public class RelMesiByIdEnteQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;

public string? Anno { get; set; }

public string? IdContratto { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;

public class RelMesiQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;

public string? Anno { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using MediatR;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using PortaleFatture.BE.Core.Resources;
using PortaleFatture.BE.Infrastructure.Common.Persistence.Schemas;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.QueryHandlers;

public class RelAnniByIdEnteHandler(
IFattureDbContextFactory factory,
IStringLocalizer<Localization> localizer,
ILogger<RelAnniByIdEnteHandler> logger) : IRequestHandler<RelAnniByIdEnteQuery, IEnumerable<string>?>
{
private readonly IFattureDbContextFactory _factory = factory;
private readonly ILogger<RelAnniByIdEnteHandler> _logger = logger;
private readonly IStringLocalizer<Localization> _localizer = localizer;
public async Task<IEnumerable<string>?> Handle(RelAnniByIdEnteQuery request, CancellationToken ct)
{
using var rs = await _factory.Create(cancellationToken: ct);
return await rs.Query(new RelAnniQueryByIdEntePersistence(request), ct);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using MediatR;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using PortaleFatture.BE.Core.Resources;
using PortaleFatture.BE.Infrastructure.Common.Persistence.Schemas;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.QueryHandlers;

public class RelAnniHandler(
IFattureDbContextFactory factory,
IStringLocalizer<Localization> localizer,
ILogger<RelAnniHandler> logger) : IRequestHandler<RelAnniQuery, IEnumerable<string>?>
{
private readonly IFattureDbContextFactory _factory = factory;
private readonly ILogger<RelAnniHandler> _logger = logger;
private readonly IStringLocalizer<Localization> _localizer = localizer;
public async Task<IEnumerable<string>?> Handle(RelAnniQuery request, CancellationToken ct)
{
using var rs = await _factory.Create(cancellationToken: ct);
return await rs.Query(new RelAnniQueryPersistence(request), ct);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using MediatR;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using PortaleFatture.BE.Core.Resources;
using PortaleFatture.BE.Infrastructure.Common.Persistence.Schemas;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.QueryHandlers;

public class RelMesiByIdEnteHandler(
IFattureDbContextFactory factory,
IStringLocalizer<Localization> localizer,
ILogger<RelMesiByIdEnteHandler> logger) : IRequestHandler<RelMesiByIdEnteQuery, IEnumerable<string>?>
{
private readonly IFattureDbContextFactory _factory = factory;
private readonly ILogger<RelMesiByIdEnteHandler> _logger = logger;
private readonly IStringLocalizer<Localization> _localizer = localizer;
public async Task<IEnumerable<string>?> Handle(RelMesiByIdEnteQuery request, CancellationToken ct)
{
using var rs = await _factory.Create(cancellationToken: ct);
return await rs.Query(new RelMesiByIdEnteQueryPersistence(request), ct);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using MediatR;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using PortaleFatture.BE.Core.Resources;
using PortaleFatture.BE.Infrastructure.Common.Persistence.Schemas;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries;
using PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.Queries.Persistence;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.DatiRel.QueryHandlers;

public class RelMesiHandler(
IFattureDbContextFactory factory,
IStringLocalizer<Localization> localizer,
ILogger<RelMesiHandler> logger) : IRequestHandler<RelMesiQuery, IEnumerable<string>?>
{
private readonly IFattureDbContextFactory _factory = factory;
private readonly ILogger<RelMesiHandler> _logger = logger;
private readonly IStringLocalizer<Localization> _localizer = localizer;
public async Task<IEnumerable<string>?> Handle(RelMesiQuery request, CancellationToken ct)
{
using var rs = await _factory.Create(cancellationToken: ct);
return await rs.Query(new RelMesiQueryPersistence(request), ct);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.Fatture.Queries;


public class FattureAnniQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.Fatture.Queries;

public class FattureMesiQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;

public string? Anno { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using MediatR;
using PortaleFatture.BE.Core.Auth;

namespace PortaleFatture.BE.Infrastructure.Common.SEND.Fatture.Queries;

public class FattureTipologiaAnniMeseQuery(IAuthenticationInfo authenticationInfo) : IRequest<IEnumerable<string>?>
{
public IAuthenticationInfo AuthenticationInfo { get; internal set; } = authenticationInfo;

public int? Anno { get; set; }
public int? Mese { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -316,10 +316,47 @@ [pfd].[FattureTestata] FT
INNER JOIN pfw.FatturaTestataConfig ftc ON ftc.FkTipologiaFattura = FT.FkTipologiaFattura AND ftc.FKIdTipoContratto = c.FkIdTipoContratto
where FT.AnnoRiferimento = @AnnoRiferimento
and FT.MeseRiferimento = @MeseRiferimento
and FT.FkTipologiaFattura IN @TipologiaFattura
[condition_tipologiafattura]
and FT.FkIdEnte <> '4a4149af-172e-4950-9cc8-63ccc9a6d865' --esclusione pagopa
ORDER BY FT.FkTipologiaFattura, FT.Progressivo
FOR JSON PATH, INCLUDE_NULL_VALUES )";

private static string _sqlAnni = @"
SELECT
distinct AnnoRiferimento
FROM [pfd].[FattureTestata]
";

private static string _sqlMesi = @"
SELECT
distinct MeseRiferimento
FROM [pfd].[FattureTestata]
";

private static string _sqlSelectTipologiaFatturaAnnoMese = @"
SELECT
distinct FkTipologiaFattura,
CASE
WHEN [FkTipologiaFattura] = 'ANTICIPO' THEN 1
WHEN [FkTipologiaFattura] = 'ACCONTO' THEN 2
WHEN [FkTipologiaFattura] = 'PRIMO SALDO' THEN 3
WHEN [FkTipologiaFattura] = 'SECONDO SALDO' THEN 4
WHEN [FkTipologiaFattura] = 'VAR. SEMESTRALE' THEN 5
ELSE 6
END AS ordine
FROM [pfd].[FattureTestata]
where AnnoRiferimento=@anno and MeseRiferimento=@mese
";

public static string OrderByYear()
{
return " ORDER BY AnnoRiferimento desc";
}
public static string OrderByMonth()
{
return " ORDER BY MeseRiferimento desc";
}

public static string SelectStored()
{
return _sqlStored;
Expand Down Expand Up @@ -362,5 +399,18 @@ public static string SelectViewByIdEnte()
{
return _sqlViewByIdEnte;
}
public static string SelectAnni()
{
return _sqlAnni;
}

public static string SelectMesi()
{
return _sqlMesi;
}

public static string SelectTipologiaFatturaAnnoMese()
{
return _sqlSelectTipologiaFatturaAnnoMese;
}
}
Loading

0 comments on commit 39020f6

Please sign in to comment.