public Reserva(Funcionario funcionario, Sala sala, DateTime data, Horario horario, LinkedList <object> itens) : base(itens)
 {
     Id          = ProximoId;
     Funcionario = funcionario;
     Sala        = sala;
     Data        = data;
     Horario     = horario;
     Lista.AddLast(this);
     itens.AddLast(this);
 }
        private bool Disponivel(Sala sala, DateTime data, Horario horario)
        {
            var reservaExistente = Lista.Where(x => x.Sala == sala && x.Data == data && x.Horario == horario).Count();

            return(reservaExistente == 0);
        }
        private void PesquisarDisponibilidadeSubMenu()
        {
            string subTitulo = "Verificar Disponibilidade de Reserva";
            string instrucao = "Digite as informações solicitadas";
            string informado = string.Empty;
            bool   navegando = false;

            Ler = false;
            Sala     sala    = null;
            DateTime data    = new DateTime();
            Horario  horario = null;

            do
            {
                TopoMenu(this, subTitulo, instrucao, new List <string> {
                }, ref navegando);
                if (Voltou || Saiu)
                {
                    break;
                }                             ///SETA ESQUERDA

                if (sala != null)
                {
                    Campo("Sala"); Mostrar(sala.Nome);
                }
                else
                {
                    Campo("Sala"); sala = EscolhaSala();
                }

                if (sala.Id != 0)
                {
                    if (data.Year != 0001)
                    {
                        Campo("Data"); Mostrar(data.ToString());
                    }
                    else
                    {
                        Campo("Data"); data = NovaDataSubMenu(out informado);
                    }
                }

                if (sala != null && data.Year != 0001)
                {
                    if (horario != null)
                    {
                        Campo("Horário"); Mostrar(horario.Descricao);
                    }
                    else
                    {
                        Campo("Horário"); horario = EscolhaHorarioSubMenu();
                    }
                    if (!string.IsNullOrEmpty(informado))
                    {
                        Aviso(informado); Console.ReadKey(false);
                    }
                }

                if (sala != null && data.Year != 0001 && horario != null)
                {
                    Resultado(Disponivel(sala, data, horario), "Reserva disponível", "Reserva não disponível!");
                }
                Acao = Console.ReadKey(false);
            }while (!Saiu);
        }
        private bool CadastroSubMenu()
        {
            string subTitulo         = "Cadastro de Reservas";
            string instrucao         = "";
            string informado         = string.Empty;
            bool   reservaDisponivel = false;
            bool   navegando         = false;

            Ler = true;
            Reserva     reserva;
            Funcionario funcionario = null;
            Sala        sala        = null;
            DateTime    data        = new DateTime();
            Horario     horario     = null;

            do
            {
                TopoMenu(this, subTitulo, instrucao, new List <string> {
                }, ref navegando);
                if (Voltou || Saiu)
                {
                    break;
                }                             ///SETA ESQUERDA

                if (funcionario != null)
                {
                    Campo("Funcionário"); Mostrar(funcionario.Nome);
                }
                else
                {
                    funcionario = EscolhaFuncionarioSubMenu(); continue;
                }

                if (funcionario != null)
                {
                    if (sala != null)
                    {
                        Campo("Sala"); Mostrar(sala.Nome);
                    }
                    else
                    {
                        sala = EscolhaSala(); continue;
                    }
                }

                if (funcionario != null && sala != null)
                {
                    if (data.Year != 0001)
                    {
                        Campo("Data"); Mostrar(data.ToString());
                    }
                    else
                    {
                        data = NovaDataSubMenu(out informado);
                    }
                    if (!string.IsNullOrEmpty(informado))
                    {
                        Aviso(informado); Console.ReadKey(false);
                    }
                }

                if (funcionario != null && sala != null && data.Year != 0001)
                {
                    if (horario != null)
                    {
                        Campo("Horário"); Mostrar(horario.Descricao);
                    }
                    else
                    {
                        horario = EscolhaHorarioSubMenu();
                    }
                    reservaDisponivel = Disponivel(sala, data, horario);
                }
                if (funcionario != null && sala != null && data.Year != 0001 && horario != null)
                {
                    Resultado(reservaDisponivel, "Reserva realizada com sucesso!", "Reserva indisponível! Não realizada!");
                    if (reservaDisponivel)
                    {
                        reserva     = new Reserva(funcionario, sala, data, horario, Itens);
                        funcionario = null; sala = null; horario = null; data = new DateTime();
                        return(true);
                    }
                    else
                    {
                        break;
                    }
                }
                Acao = Console.ReadKey(false);
            }while (!Saiu);
            return(false);
        }