diff --git a/DesafioFundamentos/Models/Estacionamento.cs b/DesafioFundamentos/Models/Estacionamento.cs index 70ce2c910..f51dac79c 100644 --- a/DesafioFundamentos/Models/Estacionamento.cs +++ b/DesafioFundamentos/Models/Estacionamento.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + namespace DesafioFundamentos.Models { public class Estacionamento @@ -15,8 +17,20 @@ public Estacionamento(decimal precoInicial, decimal precoPorHora) public void AdicionarVeiculo() { // TODO: Pedir para o usuário digitar uma placa (ReadLine) e adicionar na lista "veiculos" - // *IMPLEMENTE AQUI* Console.WriteLine("Digite a placa do veículo para estacionar:"); + string placa = Console.ReadLine(); + + // Verifica se o veículo já está estacionado + if (veiculos.Any(x => x.ToUpper() == placa.ToUpper())) + { + Console.WriteLine("Desculpe, esse veículo já está estacionado aqui."); + } + else + { + // Adiciona a placa na lista de veículos + veiculos.Add(placa); + Console.WriteLine($"O veículo {placa} foi estacionado com sucesso."); + } } public void RemoverVeiculo() @@ -24,23 +38,33 @@ public void RemoverVeiculo() Console.WriteLine("Digite a placa do veículo para remover:"); // Pedir para o usuário digitar a placa e armazenar na variável placa - // *IMPLEMENTE AQUI* - string placa = ""; + string placa = Console.ReadLine().ToUpper(); - // Verifica se o veículo existe - if (veiculos.Any(x => x.ToUpper() == placa.ToUpper())) + if (string.IsNullOrEmpty(placa)) { - Console.WriteLine("Digite a quantidade de horas que o veículo permaneceu estacionado:"); + Console.WriteLine("Placa inválida. Tente novamente."); + return; + } + // Encontra o índice da placa, ignorando maiúsculas e minúsculas + int index = veiculos.FindIndex(v => v.Equals(placa, StringComparison.OrdinalIgnoreCase)); + + // Verifica se o veículo existe + if (index != -1) + { // TODO: Pedir para o usuário digitar a quantidade de horas que o veículo permaneceu estacionado, // TODO: Realizar o seguinte cálculo: "precoInicial + precoPorHora * horas" para a variável valorTotal - // *IMPLEMENTE AQUI* - int horas = 0; - decimal valorTotal = 0; + Console.WriteLine("Digite a quantidade de horas que o veículo permaneceu estacionado:"); + if (!int.TryParse(Console.ReadLine(), out int horas) || horas < 0) + { + Console.WriteLine("Quantidade de horas inválida. Tente novamente."); + return; + } - // TODO: Remover a placa digitada da lista de veículos - // *IMPLEMENTE AQUI* + decimal valorTotal = precoInicial + (precoPorHora * horas); + // TODO: Remover a placa digitada da lista de veículos + veiculos.RemoveAt(index); Console.WriteLine($"O veículo {placa} foi removido e o preço total foi de: R$ {valorTotal}"); } else @@ -56,7 +80,10 @@ public void ListarVeiculos() { Console.WriteLine("Os veículos estacionados são:"); // TODO: Realizar um laço de repetição, exibindo os veículos estacionados - // *IMPLEMENTE AQUI* + foreach (var veiculo in veiculos) + { + Console.WriteLine(veiculo); + } } else { diff --git a/trilha-net-fundamentos-desafio.sln b/trilha-net-fundamentos-desafio.sln new file mode 100644 index 000000000..c30164000 --- /dev/null +++ b/trilha-net-fundamentos-desafio.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DesafioFundamentos", "DesafioFundamentos\DesafioFundamentos.csproj", "{F0885201-43F6-4DC6-8A48-A8F305AF6D21}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F0885201-43F6-4DC6-8A48-A8F305AF6D21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0885201-43F6-4DC6-8A48-A8F305AF6D21}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0885201-43F6-4DC6-8A48-A8F305AF6D21}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0885201-43F6-4DC6-8A48-A8F305AF6D21}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {15FB243E-D5EE-4609-9A9C-54ACB9A7904E} + EndGlobalSection +EndGlobal