- Alterado namespace para `Download_Faturas.Tests` e adicionados cabeçalhos de copyright. - Refatoração para uso de recursos modernos do C# (ex.: inicializações simplificadas, métodos estáticos). - Adicionados comentários XML e arquivo `stylecop.json` para padronização. - Melhorias em testes de integração, incluindo ajustes na lógica de comparação e manipulação de CSV. - Refatoração das classes `Fatura` e `FaturaOld` para encapsulamento e redução de duplicação. - Adicionado suporte a conversores JSON personalizados (`DefaultDateTimeConverter`, `FloatArrayOrSingleConverter`). - Melhorias no arquivo `Program.cs` com novos métodos auxiliares e tratamento de erros. - Adicionadas classes auxiliares para manipulação de PDFs (`PDFSplitter`, `CustomPdfSplitter`). - Ajustes nos arquivos de projeto para geração de documentação XML e inclusão do `StyleCop.Analyzers`. - Correções em valores de consumo e demanda nos arquivos CSV. - Melhor tratamento de erros e mensagens de log para facilitar o diagnóstico.
55 lines
2.2 KiB
C#
55 lines
2.2 KiB
C#
// <copyright file="DefaultDateTimeConverter.cs" company="Smart Energia">
|
|
// Copyright (c) Smart Energia. All rights reserved.
|
|
// </copyright>
|
|
namespace Download_Faturas
|
|
{
|
|
using System;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
|
|
/// <summary>
|
|
/// Custom JSON converter for DateTime to handle default values.
|
|
/// </summary>
|
|
public class DefaultDateTimeConverter : JsonConverter<DateTime>
|
|
{
|
|
/// <summary>
|
|
/// Reads and converts the JSON to DateTime, returning DateTime.MinValue for invalid or empty strings.
|
|
/// </summary>
|
|
/// <param name="reader">The Utf8JsonReader instance to read JSON tokens from.</param>
|
|
/// <param name="typeToConvert">The target type to convert to (expected DateTime).</param>
|
|
/// <param name="options">The serializer options that may affect parsing behavior.</param>
|
|
/// <returns>The parsed DateTime value, or DateTime.MinValue when the input is null, empty, or invalid.</returns>
|
|
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
|
{
|
|
if (reader.TokenType == JsonTokenType.String)
|
|
{
|
|
string? str = reader.GetString();
|
|
|
|
if (string.IsNullOrWhiteSpace(str))
|
|
{
|
|
return DateTime.MinValue;
|
|
}
|
|
|
|
if (DateTime.TryParse(str, out var date))
|
|
{
|
|
return date;
|
|
}
|
|
}
|
|
|
|
return DateTime.MinValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Writes the DateTime value as a string in JSON.
|
|
/// </summary>
|
|
/// <param name="writer">The Utf8JsonWriter instance to write JSON tokens to.</param>
|
|
/// <param name="value">The DateTime value to write.</param>
|
|
/// <param name="options">The serializer options that may affect writing behavior.</param>
|
|
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
|
|
{
|
|
// Write DateTime in round-trip ISO 8601 format so JSON consumers can parse it reliably.
|
|
writer.WriteStringValue(value.ToString("o"));
|
|
}
|
|
}
|
|
}
|