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!