public void Salvar(object sender, EventArgs args)
        {
            try{
                //Recebendo o cliente selecionado e pegando apenas o id dele
                String[] idCliente = selectCliente.SelectedItem.ToString().Split("-");
                int      clienteId = Convert.ToInt32(idCliente[0]);

                //Recebendo os filmes selecionados e pegando apenas o id deles
                List <int> listaDeFilmes = new List <int>();
                foreach (object o in listaFilmes.SelectedItems)
                {
                    String[] filmeId = o.ToString().Split("-");
                    listaDeFilmes.Add(Convert.ToInt32(filmeId[0]));
                }

                ControllerLocacao.AddLocacao(clienteId, listaDeFilmes.ToArray());
                MessageBox.Show(
                    "Dados inseridos com sucesso!",
                    "Informação",
                    MessageBoxButtons.OK);
                this.parent.Show();
                this.Close();
            }catch (Exception) {
                MessageBox.Show(
                    "Preencher os dados corretamente",
                    "Informação",
                    MessageBoxButtons.OK);
            }
        }
        private static void VerificaOpcaoConfirmacao(int opcaoConfirmacaoLocacao)
        {
            if (opcaoConfirmacaoLocacao == 1)
            {
                Console.Clear();

                ControllerLocacao.ConcluiLocacao(_idInformado, _cpfInformado);

                UtilitariosGlobais.ApresentaMensagemSucesso("Locação realizada com sucesso!");

                TelaMenuLocacaoNew.ApresentaTela();
            }
            else if (opcaoConfirmacaoLocacao == 2)
            {
                Console.Clear();

                UtilitariosGlobais.ApresentaMensagemSucesso(" Locação cancelada!");

                TelaMenuLocacaoNew.ApresentaTela();
            }
            else
            {
                Console.SetCursorPosition(81, 0);
                UtilitariosGlobais.ApresentaMensagemErro(" Opção inválida!");

                ApresentaConfirmacao();
            }
        }
 public void InitializeComponent()
 {
     this.Text        = "Listar Filmes";
     this.Size        = new Size(470, 500);
     this.TablePadrao = new TablePadrao(this.Width, this.Height - 100);
     String[] coluns = { "ID", "Cliente", "Valor pago", "Data Locado", "Data de Devolução" };
     this.listagemLocacao = new Listners(coluns, 430, 400);
     String[] aux;
     try{
         IEnumerable funcQuery = from locacoes in ControllerLocacao.GetLocacoes() select locacoes;
         foreach (Locacao locacao in funcQuery)
         {
             ListViewItem locacao1 = new ListViewItem(locacao.LocacaoId.ToString());
             Cliente      cliente  = ControllerCliente.GetCliente(locacao.ClienteId);
             locacao1.SubItems.Add(cliente.Nome.ToString());
             locacao1.SubItems.Add("R$: " + locacao.ValorTotal.ToString());
             aux = locacao.DataLocacao.ToString().Split(" ", 2);
             locacao1.SubItems.Add(aux[0]);
             aux = ControllerLocacao.CalculaData(locacao).ToString().Split(" ", 2);
             locacao1.SubItems.Add(aux[0]);
             listagemLocacao.Items.AddRange(new ListViewItem[] { locacao1 });
         }
     }catch (Exception) {
         ListViewItem locacao1 = new ListViewItem("Nenhum filme encontrado");
         listagemLocacao.Items.AddRange(new ListViewItem[] { locacao1 });
     }
     this.buttonVoltar = new ButtonsVoltar(this.Width / 2, this.TablePadrao.Height, this, this.parent);
     this.TablePadrao.Controls.Add(listagemLocacao);
     this.Controls.Add(TablePadrao);
     this.Controls.Add(buttonVoltar);
 }
        internal static void ListaTodas()
        {
            UtilitariosGlobais.ApresentaCabecalhoAzulEscuro(" LISTAR TODAS AS LOCAÇÕES");

            ControllerLocacao.ListaTodos();

            ConfirmaFimVisualizacaoListagem();
        }
        internal static void ListaIrregulares()
        {
            UtilitariosGlobais.ApresentaCabecalhoAzulEscuro(" LISTAR LOCAÇÕES IRREGULARES");

            ControllerLocacao.ListaIrregulares();

            ConfirmaFimVisualizacaoListagem();
        }
        internal static void ListaInativas()
        {
            UtilitariosGlobais.ApresentaCabecalhoAzulEscuro(" LISTAR LOCAÇÕES INATIVAS");

            ControllerLocacao.ListaInativas();

            ConfirmaFimVisualizacaoListagem();
        }
        private static void RecebeIdLocacao()
        {
            Console.SetCursorPosition(0, 3);
            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.Write(" [ID da locação]: ");
            int.TryParse(Console.ReadLine(), out _idInformado);
            Console.ResetColor();

            bool resultadoValidacaoId = ControllerLocacao.ValidaIdLocacao(_idInformado);

            Console.WriteLine();

            VerificaResultadoIdLocacao(resultadoValidacaoId);
        }
        public override string ToString()
        {
            string retorno = $"Id Locação: {LocacaoId}\n" +
                             $"Valor pago R$: {ControllerLocacao.CalcularPrecoFinal(this)} \n" +
                             $"Data Locado: {DataLocacao} \n" +
                             $"Data de Devolução: {ControllerLocacao.CalculaData(this)} \n" +
                             "Filmes: ";

            List <Filme> filmes = GetFilmes(this.LocacaoId);

            filmes.ForEach(
                filme => retorno += $"\n{filme.Nome}"
                );
            return(retorno);
        }
        public void AdicionarFilme(int filmeId, Locacao locacao)
        {
            //toda vez que eu for adicionar um filme preciso relacionar agora a classe relacional indicando o
            //filme e a locação correspondente
            var          db           = new Context();
            FilmeLocacao filmeLocacao = new FilmeLocacao()
            {
                FilmeId   = filmeId,
                LocacaoId = LocacaoId
            };

            db.FilmesLocacoes.Add(filmeLocacao);
            this.ValorTotal = ControllerLocacao.CalcularPrecoFinal(locacao);
            db.Locacoes.Update(locacao);
            db.SaveChanges();
            ControllerFilme.FilmeLocado(filmeId);
        }
        private static void VerificaQuantidadeDisponivelFilme()
        {
            int quantidadeDisponivelFilme = ControllerLocacao.VerificaQuantidadeDisponivelFilme(_idInformado);

            if (quantidadeDisponivelFilme > 0)
            {
                RecebeCpfCliente();
            }
            else
            {
                Console.Clear();

                UtilitariosGlobais.ApresentaMensagemErro(" Filme Indisponível para locação!");

                TelaMenuLocacaoNew.ApresentaTela();
            }
        }
        private static void VerificaStatusFilme()
        {
            bool resultadoVerificacaoStatusFilme = ControllerLocacao.VerificaStatusFilme(_idInformado);

            if (resultadoVerificacaoStatusFilme == true)
            {
                VerificaQuantidadeDisponivelFilme();
            }
            else
            {
                Console.Clear();

                UtilitariosGlobais.ApresentaMensagemErro(" Filme Indisponível para locação!");

                TelaMenuLocacaoNew.ApresentaTela();
            }
        }
        private static void VerificaStatusCliente()
        {
            bool resultadoVerificacaoStatusCliente = ControllerLocacao.VerificaStatusCliente(_cpfInformado);

            if (resultadoVerificacaoStatusCliente == true)
            {
                ApresentaConfirmacao();
            }
            else
            {
                Console.Clear();

                UtilitariosGlobais.ApresentaMensagemErro(" Cliente inativo!");

                TelaMenuLocacaoNew.ApresentaTela();
            }
        }
        internal static void ConsultaCpf()
        {
            TelaComTitulo.GeraTela(" CONSULTAR LOCAÇÕES POR CPF", 80, 4, 0, 1);

            string cpfInformado;

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.SetCursorPosition(1, 2);
            Console.Write("\n [CPF do cliente]: ");
            cpfInformado = Console.ReadLine();
            Console.ResetColor();

            Console.WriteLine("\n");

            ControllerLocacao.ConsultaCpf(cpfInformado);

            ConfirmaFimVisualizacaoListagem();
        }
        internal static void ConsultaId()
        {
            TelaComTitulo.GeraTela(" CONSULTAR LOCAÇÃO POR ID", 80, 4, 0, 1);

            int idInformado;

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.SetCursorPosition(1, 2);
            Console.Write("\n [ID do filme]: ");
            int.TryParse(Console.ReadLine(), out idInformado);
            Console.ResetColor();

            Console.WriteLine("\n");

            ControllerLocacao.ConsultaId(idInformado);

            ConfirmaFimVisualizacaoListagem();
        }
        private static void VerificaOpcaoAplicacaoMulta(int opcaoConfirmacaoAplicarMulta)
        {
            if (opcaoConfirmacaoAplicarMulta == 1)
            {
                ControllerLocacao.AplicaMulta(_idInformado);
            }
            else if (opcaoConfirmacaoAplicarMulta == 2)
            {
                ExibeValoresAhPagar();
            }
            else
            {
                Console.SetCursorPosition(81, 0);
                UtilitariosGlobais.ApresentaMensagemErro(" Opção inválida!");

                ApresentaOpcoesAplicacaoMulta();
            }
        }
 public static void AddTodasLocacoes()
 {
     ControllerLocacao.AddTodasLocacoes();
 }