Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Desafio estacionamento. #101

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 51 additions & 13 deletions DesafioFundamentos/Models/Estacionamento.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using System.Text.RegularExpressions;

namespace DesafioFundamentos.Models
{
public class Estacionamento
Expand All @@ -17,36 +19,63 @@ 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 = "";

while (placa != "0")
{
placa = Console.ReadLine();
if (placa == "0")
break;
placa = placa.Trim().Replace("-", "").ToUpper();
if (ValidarPlaca(placa))
{
veiculos.Add(placa);
break;
}
}
bool ValidarPlaca(string placa)
{
if (veiculos.Any(x => x == placa))
{
Console.WriteLine("Placa já inclusa, digite uma nova placa, ou '0' para voltar.");
return false;
}
Regex regex = new Regex(@"^[A-Z]{3}[0-9]{4}$|^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$");
if (!regex.IsMatch(placa))
{
Console.WriteLine("Placa inválida, digite novamente a placa correta, ou '0' para voltar.");
return false;
}
return true;
}
}
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();
placa = placa.Trim().Replace("-", "").ToUpper();

// Verifica se o veículo existe
if (veiculos.Any(x => x.ToUpper() == placa.ToUpper()))
if (veiculos.Any(x => x == placa))
{
Console.WriteLine("Digite a quantidade de horas que o veículo permaneceu estacionado:");

// 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;
int horas = Convert.ToInt32(Console.ReadLine());
decimal valorTotal = precoInicial + (precoPorHora * horas);

// TODO: Remover a placa digitada da lista de veículos
// *IMPLEMENTE AQUI*
// TODO: Remover a placa digitada da lista de veículos
veiculos.Remove(placa);

Console.WriteLine($"O veículo {placa} foi removido e o preço total foi de: R$ {valorTotal}");
Console.WriteLine($"O veículo {FormatarPlaca(placa)} foi removido e o preço total foi de: R$ {valorTotal.ToString("F2")}");
}
else
{
Console.WriteLine("Desculpe, esse veículo não está estacionado aqui. Confira se digitou a placa corretamente");
}
}
}

public void ListarVeiculos()
Expand All @@ -56,12 +85,21 @@ 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(FormatarPlaca(veiculo));
}
else
{
Console.WriteLine("Não há veículos estacionados.");
}
}
}
public string FormatarPlaca(string placa)
{
// TODO: caso for uma placa normal coloca hifen,se não "espaço"
if (Char.IsDigit(placa[4]))
return $"{placa.Substring(0, 3)}-{placa.Substring(3, 4)}";
else
return $"{placa.Substring(0, 3)} {placa.Substring(3, 4)}";
}
}
}