1
resposta

Relacionamento de entidades

Olá, dando seguimento em relação ao cinema, filmes, sessões, eu queria adicionar na entidade sessâo, um horário e um valor. Se a sessão for após as 18 horas, valor do ingresso 25 reais e antes das 18, 15 reais. Como ficaria a sessão com essas regras de negócios e horario ?

1 resposta

Oi, Victor, tudo bem? Na minha visão isso se encaixa como regra de negócio, você dá um desconto dependendo do horário da consulta ao dado.

Eu salvaria um valor-base no meu banco de dados. Se, no momento da consulta, for antes das 18h, você editaria o valor da sessão (sem mexer no banco de dados) e retornaria o valor com desconto. Esse método também permitiria criar regras de negócio mais complexas. Por exemplo, um desconto em dias de semana, acréscimo nos fins de semana, etc.

Session? session = _FindSessionById.Find(id);

if (session == null) {
    return NotFound($"A sessão com ID: {id}, não foi encontrada.");
}

ReadSessionDTO sessionDTO = mapper.Map<ReadSessionDTO>(session);
    
DateTime hour = DateTime.Now.Hour;
double discount = 0.6; // 0.6 é 60%, 15 é 60% de 25

if(hour >= 18) {
    sessionDTO.price = sessionDTO.price * discount;
}
return OK(sessionDTO);

Caso sua consulta ao banco de dados retorne uma coleção de sessões, pode usar um "foreach".

Essa é minha opinião, e seria o que eu faria. A solução pode varia de dev para dev, e do que o cliente pede. De toda forma espero ter conseguindo ajudar!