feat: adiciona horario e icone de relogio na pagina de confirmacao

This commit is contained in:
Erik Silva
2026-02-04 19:38:51 -03:00
parent 2424fa9bb6
commit 4e6926f7a6
39 changed files with 4743 additions and 802 deletions

View File

@@ -41,10 +41,13 @@ model Group {
sponsors Sponsor[]
arenas Arena[]
financialEvents FinancialEvent[]
transactions Transaction[]
pixKey String?
pixName String?
status GroupStatus @default(ACTIVE)
showTotalInPublic Boolean @default(true)
votingEnabled Boolean @default(true)
teamConfigs TeamConfig[]
}
enum GroupStatus {
@@ -71,6 +74,9 @@ model Player {
teams TeamPlayer[]
attendances Attendance[]
payments Payment[]
reviews Review[]
matchEvents MatchEvent[]
transactions Transaction[]
@@unique([number, groupId])
}
@@ -95,7 +101,7 @@ model Match {
arena Arena? @relation(fields: [arenaId], references: [id])
maxPlayers Int?
drawSeed String?
status MatchStatus @default(SCHEDULED)
status MatchStatus @default(CONVOCACAO)
groupId String
createdAt DateTime @default(now())
@@ -105,15 +111,36 @@ model Match {
isRecurring Boolean @default(false)
recurrenceInterval String? // 'WEEKLY'
recurrenceEndDate DateTime?
duration Int? @default(60) // Duração em minutos
actualStartTime DateTime?
actualEndTime DateTime?
enableVoting Boolean @default(true)
votingDuration Int @default(72) // Duração da votação em horas (24, 48, 72)
gamificationType String @default("PADRAO") // PADRAO, PAREDAO, OSCAR
events MatchEvent[]
reviews Review[]
}
model Team {
id String @id @default(cuid())
name String
color String
shirtUrl String?
matchId String
match Match @relation(fields: [matchId], references: [id], onDelete: Cascade)
players TeamPlayer[]
matchEvents MatchEvent[]
}
model TeamConfig {
id String @id @default(cuid())
name String
color String @default("#000000")
shirtUrl String?
groupId String
group Group @relation(fields: [groupId], references: [id])
createdAt DateTime @default(now())
}
model TeamPlayer {
@@ -126,8 +153,11 @@ model TeamPlayer {
enum MatchStatus {
SCHEDULED
CONVOCACAO
SORTEIO
LIVE
IN_PROGRESS
COMPLETED
ENCERRAMENTO
CANCELED
}
@@ -207,3 +237,49 @@ enum PaymentStatus {
PAID
WAIVED
}
model MatchEvent {
id String @id @default(cuid())
matchId String
match Match @relation(fields: [matchId], references: [id], onDelete: Cascade)
type String // GOAL, CARD_YELLOW, CARD_RED, etc.
playerId String?
player Player? @relation(fields: [playerId], references: [id])
teamId String?
team Team? @relation(fields: [teamId], references: [id])
minute Int?
createdAt DateTime @default(now())
}
model Review {
id String @id @default(cuid())
matchId String
match Match @relation(fields: [matchId], references: [id], onDelete: Cascade)
playerId String // Atleta que está sendo avaliado
player Player @relation(fields: [playerId], references: [id])
reviewerId String? // Opcional
type String // STAR (Craque), PEREBA, FAIR_PLAY, etc.
createdAt DateTime @default(now())
}
model Transaction {
id String @id @default(cuid())
description String
amount Float
type TransactionType @default(INCOME)
category String? // 'Mensalidade', 'Avulso', 'Sobra', 'Material', 'Quadra', etc.
date DateTime @default(now())
groupId String
group Group @relation(fields: [groupId], references: [id])
playerId String? // Opcional: para vincular a um atleta específico (ex: avulso)
player Player? @relation(fields: [playerId], references: [id])
createdAt DateTime @default(now())
}
enum TransactionType {
INCOME // Entrada
EXPENSE // Saída
}