chore: -refatorei informações de data
feat: -novas estilizações para consultas de meses anteriores
This commit is contained in:
parent
a4063f9187
commit
3a46ad74d3
70
Program.cs
70
Program.cs
@ -1,4 +1,6 @@
|
||||
using System.Data.Common;
|
||||
using System;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Data.Common;
|
||||
using System.Globalization;
|
||||
using System.Numerics;
|
||||
using Npgsql;
|
||||
@ -10,7 +12,8 @@ class Program
|
||||
static bool _stop = false;
|
||||
static bool _isAuthenticated = false;
|
||||
static readonly string _connectionString = "Server=192.168.10.248;Port=5432;Database=pipefy_move_cards;User Id=postgres;Password=gds21;";
|
||||
static DateTime date = DateTime.Now;
|
||||
static readonly DateTime dateToday = DateTime.Today;
|
||||
static DateTime date = dateToday;
|
||||
static DateTime firstDayOfMonth = new(date.Year, date.Month, 1);
|
||||
static DateTime lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddSeconds(-1);
|
||||
static string firstDayOfMonthStr = firstDayOfMonth.ToString("yyyy-MM-dd HH\\:mm\\:sszz", new System.Globalization.CultureInfo("pt-BR"));
|
||||
@ -84,22 +87,14 @@ class Program
|
||||
{
|
||||
if (System.Text.RegularExpressions.Regex.IsMatch(monthString, @"^\d{4}$"))
|
||||
{
|
||||
if (DateTime.TryParseExact(monthString[2..] + "/" + monthString[..2],
|
||||
"MM/yy",
|
||||
CultureInfo.InvariantCulture,
|
||||
DateTimeStyles.None,
|
||||
out date))
|
||||
if (!DateTime.TryParseExact(monthString[2..] + "/" + monthString[..2], "MM/yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
|
||||
{
|
||||
//valid date
|
||||
}
|
||||
else
|
||||
{
|
||||
date = DateTime.Now;
|
||||
date = dateToday;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
date = DateTime.Now;
|
||||
date = dateToday;
|
||||
}
|
||||
firstDayOfMonth = new DateTime(date.Year, date.Month, 1);
|
||||
lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddSeconds(-1);
|
||||
@ -119,7 +114,7 @@ class Program
|
||||
var userRecords = ObterRegistrosUsuario(userId, nome);
|
||||
var (count, countA, countR, countC) = ContarRegistros(userRecords);
|
||||
|
||||
var format = ObterFormatoCor(count);
|
||||
var format = ObterFormatoCor(count, userRecords.Select(x => x.MovedAt.Date).Distinct().Count());
|
||||
|
||||
tableContLigacoes.AddRow(nome, userId.ToString(), $"{format} {count} [/]");
|
||||
tableContReunioes.AddRow(nome, userId.ToString(), $"[yellow] {countA:#;-#;} [/]", $"[green] {countR:#;-#;} [/]", $"[red] {countC:#;-#;} [/]");
|
||||
@ -167,7 +162,7 @@ class Program
|
||||
var table = new Table().Border(TableBorder.Rounded).Alignment(Justify.Center);
|
||||
table.AddColumn(new TableColumn("[green]Nome[/]").Centered());
|
||||
table.AddColumn(new TableColumn("[green]UserID[/]").Centered());
|
||||
table.AddColumn(new TableColumn("[green]Registros Hoje[/]").Centered());
|
||||
table.AddColumn(new TableColumn("[green]Registros " + (date != dateToday ? "no mês" : "Hoje") + "[/]").Centered());
|
||||
return table;
|
||||
}
|
||||
static Table CriarTabelaReunioes()
|
||||
@ -246,30 +241,37 @@ class Program
|
||||
}
|
||||
static (int count, int countA, int countR, int countC) ContarRegistros(List<Record> userRecords)
|
||||
{
|
||||
int count = userRecords.Count(x => x.MovedAt > DateTime.Today && x.FieldID is not null);
|
||||
DateTime dateCheckStart = date;
|
||||
DateTime dateCheckEnd = date.AddDays(1).AddSeconds(-1);
|
||||
|
||||
if (dateCheckStart != dateToday)
|
||||
{
|
||||
dateCheckStart = new DateTime(date.Year, date.Month, 1);
|
||||
dateCheckEnd = dateCheckStart.AddMonths(1).AddSeconds(-1);
|
||||
}
|
||||
|
||||
int count = userRecords.Count(x => x.MovedAt > dateCheckStart && x.MovedAt <= dateCheckEnd && x.FieldID is not null);
|
||||
int countR = userRecords.Count(x => (x.Acao ?? "").StartsWith("Realizou"));
|
||||
int countA = userRecords.Count(x => (x.Acao ?? "").StartsWith("Agendou"));
|
||||
int countC = userRecords.Count(x => (x.Acao ?? "").EndsWith("cancelada"));
|
||||
return (count, countA, countR, countC);
|
||||
}
|
||||
static string ObterFormatoCor(int count)
|
||||
static string ObterFormatoCor(int count, int days)
|
||||
{
|
||||
var format = "";
|
||||
switch (count)
|
||||
days = days == 0 ? 1 : days; // Evita divisão por zero
|
||||
string? format = count switch
|
||||
{
|
||||
case int n when (n < 20):
|
||||
format = "[red]";
|
||||
break;
|
||||
case int n when (n >= 20 && n < 40):
|
||||
format = "[yellow]";
|
||||
break;
|
||||
case int n when (n >= 40 && n < 60):
|
||||
format = "[blue]";
|
||||
break;
|
||||
case int n when (n >= 60):
|
||||
format = "[white on green bold]";
|
||||
break;
|
||||
}
|
||||
int n when n < 20 && date == dateToday => "[red]",
|
||||
int n when n >= 20 && n < 40 && date == dateToday => "[yellow]",
|
||||
int n when n >= 40 && n < 60 && date == dateToday => "[blue]",
|
||||
int n when n >= 60 && date == dateToday => "[white on green bold]",
|
||||
int n when n / days < 20 && date != dateToday => "[red]Média em " + days + " dias: " + n / days + " | Total: ",
|
||||
int n when n / days >= 20 && n / days < 40 && date != dateToday => "[yellow]Média em " + days + " dias: " + n / days + " | Total: ",
|
||||
int n when n / days >= 40 && n / days < 60 && date != dateToday => "[blue]Média em " + days + " dias: " + n / days + " | Total: ",
|
||||
int n when n / days >= 60 && date != dateToday => "[white on green bold]Média em " + days + " dias: " + n / days + " | Total: ",
|
||||
_ => "[white]",
|
||||
};
|
||||
|
||||
return format;
|
||||
}
|
||||
static void AguardarEntrada()
|
||||
@ -290,16 +292,12 @@ class Program
|
||||
{
|
||||
// Quando chegar a zero, exibe a mensagem de atualização automática
|
||||
AnsiConsole.MarkupLine("\r[red]Atualização automática agora![/]");
|
||||
Thread.Sleep(1000);
|
||||
break;
|
||||
}
|
||||
|
||||
// Monta o texto de “Próxima atualização em MM:SS”
|
||||
AnsiConsole.Markup($"\r[blue]Próxima atualização em {remaining.Minutes:00}:{remaining.Seconds:00}[/]");
|
||||
|
||||
// Pequena pausa de 1 segundo
|
||||
Thread.Sleep(1000);
|
||||
|
||||
// Se o usuário apertar qualquer tecla…
|
||||
if (Console.KeyAvailable)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user