From ac5a88eeee157da86861b48bd64de96c3aaed8f1 Mon Sep 17 00:00:00 2001 From: Samuel Augusto De Lima Souza EXTERNO <10402963@edp.com.br> Date: Sat, 12 Oct 2024 11:15:40 -0300 Subject: [PATCH] finalizado desafio sistema hospedagem --- Models/Reserva.cs | 51 +++++++++++++++++++++++++++-------------------- Program.cs | 16 +++++++++++---- 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/Models/Reserva.cs b/Models/Reserva.cs index d5b17c82..cb9c2439 100644 --- a/Models/Reserva.cs +++ b/Models/Reserva.cs @@ -6,26 +6,40 @@ public class Reserva public Suite Suite { get; set; } public int DiasReservados { get; set; } - public Reserva() { } + public Reserva() + { + Hospedes = new List(); + } - public Reserva(int diasReservados) + public Reserva(int diasReservados) : this() { DiasReservados = diasReservados; } public void CadastrarHospedes(List hospedes) { - // TODO: Verificar se a capacidade é maior ou igual ao número de hóspedes sendo recebido - // *IMPLEMENTE AQUI* - if (true) + if (Suite is null) + { + throw new Exception("A suite ainda não foi implementada!"); + } + + int capacidadeSuite = Suite.Capacidade; + int qtdHospedesJaCadastrados = Hospedes.Count; + int qtdHospedesParaCadastradar = hospedes.Count; + + if (qtdHospedesJaCadastrados == capacidadeSuite) { - Hospedes = hospedes; + throw new Exception("A suite não suporta mais hospedes!"); } - else + + int totalHospedes = qtdHospedesJaCadastrados + qtdHospedesParaCadastradar; + + if (totalHospedes > capacidadeSuite) { - // TODO: Retornar uma exception caso a capacidade seja menor que o número de hóspedes recebido - // *IMPLEMENTE AQUI* + throw new Exception("A suite não suporta todos os hospedes desejados!"); } + + Hospedes.AddRange(hospedes); } public void CadastrarSuite(Suite suite) @@ -35,23 +49,16 @@ public void CadastrarSuite(Suite suite) public int ObterQuantidadeHospedes() { - // TODO: Retorna a quantidade de hóspedes (propriedade Hospedes) - // *IMPLEMENTE AQUI* - return 0; + return Hospedes.Count; } - public decimal CalcularValorDiaria() + public decimal CalcularValorHospedagem() { - // TODO: Retorna o valor da diária - // Cálculo: DiasReservados X Suite.ValorDiaria - // *IMPLEMENTE AQUI* - decimal valor = 0; - - // Regra: Caso os dias reservados forem maior ou igual a 10, conceder um desconto de 10% - // *IMPLEMENTE AQUI* - if (true) + decimal valor = (DiasReservados * Suite.ValorDiaria); + + if (DiasReservados >= 10) { - valor = 0; + valor = (valor * 0.90m); } return valor; diff --git a/Program.cs b/Program.cs index c53e89b9..8d5f7f29 100644 --- a/Program.cs +++ b/Program.cs @@ -1,5 +1,5 @@ -using System.Text; -using DesafioProjetoHospedagem.Models; +using DesafioProjetoHospedagem.Models; +using System.Text; Console.OutputEncoding = Encoding.UTF8; @@ -18,8 +18,16 @@ // Cria uma nova reserva, passando a suíte e os hóspedes Reserva reserva = new Reserva(diasReservados: 5); reserva.CadastrarSuite(suite); -reserva.CadastrarHospedes(hospedes); + +try +{ + reserva.CadastrarHospedes(hospedes); +} +catch (Exception ex) +{ + Console.WriteLine($"Não foi possível realizar a operação: {ex.Message}"); +} // Exibe a quantidade de hóspedes e o valor da diária Console.WriteLine($"Hóspedes: {reserva.ObterQuantidadeHospedes()}"); -Console.WriteLine($"Valor diária: {reserva.CalcularValorDiaria()}"); \ No newline at end of file +Console.WriteLine($"Valor diária: {suite.ValorDiaria} | Qtd dias: {reserva.DiasReservados} | Valor hospedagem: {reserva.CalcularValorHospedagem()}"); \ No newline at end of file