Example #1
0
        private bool AlugueresSobrepostos(Aluguer aluguer1, Aluguer aluguer2)
        {
            //Coincidência num dos extremos do intervalo
            if (aluguer1.Inicio == aluguer2.Inicio || aluguer1.Fim == aluguer2.Fim)
            {
                return(true);
            }

            //aluguer1 tem início dentro do período do aluguer2
            if (aluguer1.Inicio > aluguer2.Inicio && aluguer1.Inicio < aluguer2.Fim)
            {
                return(true);
            }

            //aluguer1 termina dentro do período do aluguer2
            if (aluguer1.Fim > aluguer2.Inicio && aluguer1.Fim < aluguer2.Fim)
            {
                return(true);
            }

            //O período do aluguer1 engloba completamente o período do aluguer2
            if (aluguer1.Inicio < aluguer2.Inicio && aluguer1.Fim > aluguer2.Fim)
            {
                return(true);
            }

            return(false);
        }
Example #2
0
        public async Task <IActionResult> Edit(int id, [Bind("AluguerId,CarroId,UserId,LocalDeEntrega,LocalDeRecolha,DataInicio,DataFim")] Aluguer aluguer)
        {
            if (id != aluguer.AluguerId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(aluguer);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AluguerExists(aluguer.AluguerId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CarroId"] = new SelectList(_context.Carro, "CarroId", "Modelo", aluguer.CarroId);
            ViewData["UserId"]  = new SelectList(_context.Users, "Id", "Nome", aluguer.UserId);
            return(View(aluguer));
        }
Example #3
0
        public static void AlugarShow(UtilizadorComum utilizador, Movie4ALL movie4ALL)
        {
            MenuGeral.MostrarShows(utilizador.Id, movie4ALL.Shows);
            var show = MenuGeral.ConsultaShow(movie4ALL.Shows);

            if (show == null)
            {
                Console.WriteLine("Show inexistente");
                return;
            }
            Aluguer aluguer = new Aluguer {
                ShowAlugado = show
            };

            aluguer.Valor   = ConsultaPrecario(movie4ALL.Precos, aluguer).PeriodoDias *ConsultaPrecario(movie4ALL.Precos, aluguer).Preco;
            aluguer.DataFim = DateTime.Now.AddDays(ConsultaPrecario(movie4ALL.Precos, aluguer).PeriodoDias);
            if (show.TipoShow == "serie")
            { //O valor do Aluguer é referente ao valor * período * num episodios
                aluguer.DataFim = DateTime.Now.AddDays(MenuGeral.NumEpisodios(show));
                aluguer.Valor   = aluguer.Valor * MenuGeral.NumEpisodios(show);
            }

            utilizador.Alugueres.Add(aluguer);
            Console.WriteLine($"O Alguer de {aluguer.ShowAlugado.Titulo} expira em {aluguer.DataFim}");
            Console.WriteLine($"Tem um valor de {aluguer.Valor}");
            aluguer.IdAluguer = utilizador.Alugueres.LastIndexOf(aluguer); //Id que é incrementado com o valor do indíce da Lista onde se encontra
        }
Example #4
0
        public async Task EditPost_ReturnsNotFoundResult_WhenIdDoesntMatchAluguerId()
        {
            var     controller = new AlugueresController(_context);
            Aluguer aluguer    = _context.Aluguer.FirstOrDefault(a => a.AluguerId == 1);

            var result = await controller.Edit(2, aluguer);

            Assert.IsType <NotFoundResult>(result);
        }
Example #5
0
        private bool VerificaAluguerTerminado(Aluguer aluguer)
        {
            var dataAtual = DateTime.Today;

            if (dataAtual > aluguer.Fim)
            {
                return(true);
            }

            return(false);
        }
Example #6
0
        private bool VerificaAluguerRejeitado(Aluguer aluguer)
        {
            var dataAtual = DateTime.Today;

            if (dataAtual > aluguer.Inicio)
            {
                return(true);
            }

            return(false);
        }
Example #7
0
        public async Task <IActionResult> Edit(int id)
        {
            Aluguer aluguer = await _aluguerRepositorio.ObterPeloId(id);

            if (aluguer == null)
            {
                return(NotFound());
            }
            ViewData["MesId"] = new SelectList(await _mesRepositorio.ObterTodos(), "MesId", "Nome", aluguer.MesId);
            return(View(aluguer));
        }
Example #8
0
        private void BT_inserirAluguer_Click(object sender, EventArgs e)
        {
            Cliente clienteSelecionado = LIST_clientes.SelectedItem as Cliente;

            CarroAluguer carroAluguerSelecionado = LIST_carros.SelectedItem as CarroAluguer;

            Aluguer aluguer = new Aluguer();


            DialogResult guardar = MessageBox.Show("Tem a certeza que pertende efectuar o aluguer deste carro ? ", "SALVAR", MessageBoxButtons.YesNo);

            if (guardar == DialogResult.Yes)
            {
                if (carroAluguerSelecionado.Estado == "INDISPONIVEL")
                {
                    MessageBox.Show("O carro que pertende alugar já se encontra alugado!", "INDISPONIVEL");
                }
                else
                {
                    if (!ValidarTextBox(tb_kms, tb_valor))
                    {
                        return;
                    }

                    if (!decimal.TryParse(tb_valor.Text.Replace('.', ','), out decimal valor))
                    {
                        tb_valor.Text = string.Empty;
                        tb_valor.Focus();
                        MessageBox.Show("Introduza um Valor!");
                        return;
                    }

                    carroAluguerSelecionado.Estado = "INDISPONIVEL";
                    aluguer.DataInicio             = Convert.ToDateTime(dateTimePicker_data_inicio.Text);
                    aluguer.DataFim      = Convert.ToDateTime(dateTimePicker_data_fim.Text);
                    aluguer.Valor        = valor;
                    aluguer.Kms          = Convert.ToInt32(tb_kms.Text);
                    aluguer.Cliente      = clienteSelecionado;
                    aluguer.CarroAluguer = carroAluguerSelecionado;

                    MdGesStand.Alugueres.Add(aluguer);

                    MdGesStand.SaveChanges();

                    limpar_textBox_aluguer();

                    atualizar_listCarro();
                    atualizar_listAluguer();

                    MessageBox.Show("Aluguer inserido com sucesso!", "SUCESSO");
                }
            }
        }
Example #9
0
        public async Task <IActionResult> Create([Bind("AluguerId,CarroId,UserId,LocalDeEntrega,LocalDeRecolha,DataInicio,DataFim")] Aluguer aluguer)
        {
            if (ModelState.IsValid)
            {
                _context.Add(aluguer);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CarroId"] = new SelectList(_context.Carro, "CarroId", "Modelo", aluguer.CarroId);
            ViewData["UserId"]  = new SelectList(_context.Users, "Id", "Nome", aluguer.UserId);
            return(View(aluguer));
        }
Example #10
0
        public async Task EditPost_ReturnsRedirectToActionResult_WhenAluguerIsUpdated()
        {
            var     controller = new AlugueresController(_context);
            Aluguer aluguer    = _context.Aluguer.FirstOrDefault(a => a.AluguerId == 1);

            aluguer.LocalDeEntrega += "N";

            var result = await controller.Edit(1, aluguer);

            Assert.IsType <RedirectToActionResult>(result);
            Aluguer aluguerUpdated = _context.Aluguer.FirstOrDefault(a => a.AluguerId == 1);

            Assert.Equal(aluguer.LocalDeEntrega, aluguerUpdated.LocalDeEntrega);
        }
Example #11
0
        public async Task <IActionResult> Edit(int id, [Bind("AluguerId,Valor,MesId,Ano")] Aluguer aluguer)
        {
            if (id != aluguer.AluguerId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                await _aluguerRepositorio.Atualizar(aluguer);

                TempData["Atualizacao"] = $"Aluguer do mês {aluguer.MesId} ano {aluguer.Ano} atualizado";
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MesId"] = new SelectList(await _mesRepositorio.ObterTodos(), "MesId", "Nome", aluguer.MesId);
            return(View(aluguer));
        }
Example #12
0
        private void BT_removerAluguer_Click(object sender, EventArgs e)
        {
            Aluguer aluguer = LIST_alugueres.SelectedItem as Aluguer;

            DialogResult remover = MessageBox.Show("Tem a certeza que remover remover este aluguer? ", "REMOVER", MessageBoxButtons.YesNo);

            if (remover == DialogResult.Yes)
            {
                aluguer.CarroAluguer.Estado = "DISPONIVEL";
                MdGesStand.Alugueres.Remove(aluguer);


                MdGesStand.SaveChanges();
                atualizar_listAluguer();
                atualizar_listCarro();

                MessageBox.Show("Aluguer removido com sucesso!", "SUCESSO");
            }
        }
Example #13
0
        public async Task <IActionResult> Create([Bind("AluguerId,Valor,MesId,Ano")] Aluguer aluguer)
        {
            if (ModelState.IsValid)
            {
                // verificar se o aluguer já nao está registado
                if (!_aluguerRepositorio.AluguerJaExiste(aluguer.MesId, aluguer.Ano))
                { // se nao nenhum erro, regista o novo aluguer
                    await _aluguerRepositorio.Inserir(aluguer);

                    IEnumerable <Utilizador> utilizadores = await _utilizadorRepositorio.ObterTodos();

                    Pagamento        pagamento;
                    List <Pagamento> pagamentos = new List <Pagamento>();

                    // percorrer a lista de utilizadores para obter o ID de cada um e ir adicionando ao pagamento
                    foreach (Utilizador u in utilizadores)
                    {
                        pagamento = new Pagamento
                        {
                            AluguerId     = aluguer.AluguerId,
                            UtilizadorId  = u.Id,
                            DataPagamento = null, // null porque o pagamento nao foi efetuado
                            Status        = StatusPagamento.Pendente
                        };

                        pagamentos.Add(pagamento); // add pagamento á lista de pagamentos
                    }

                    await _pagamentoRepositorio.Inserir(pagamentos); // save na BD

                    TempData["NovoRegisto"] = $"O aluguer de valor {aluguer.Valor} € do mês {aluguer.MesId} ano {aluguer.Ano} adicionado";
                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    ModelState.AddModelError("", "Aluguer já existe");
                    ViewData["MesId"] = new SelectList(await _mesRepositorio.ObterTodos(), "MesId", "Nome", aluguer.MesId);
                    return(View(aluguer));
                }
            }
            ViewData["MesId"] = new SelectList(await _mesRepositorio.ObterTodos(), "MesId", "Nome", aluguer.MesId);
            return(View(aluguer));
        }
Example #14
0
        //Rejeitar os alugueres pendentes que estejam sobrepostos com o aluguer recentemente aceite
        private void RejeitaAlugueres(Aluguer aluguer, int veiculoId)
        {
            var veiculo = _context.Veiculos
                          .Include(v => v.Alugueres)
                          .Single(v => v.Id == veiculoId);

            foreach (var item in veiculo.Alugueres)
            {
                if (item.AluguerState_id == AluguerState.Pendente)
                {
                    if (AlugueresSobrepostos(aluguer, item))
                    {
                        item.AluguerState_id = AluguerState.Rejeitado;
                    }
                }
            }

            _context.SaveChanges();
        }
Example #15
0
        public ActionResult Edit(Aluguer aluguer)
        {
            if (!ModelState.IsValid)
            {
                return(View(aluguer));
            }

            var aluguerInDb = _context.Alugueres.Include(a => a.Veiculo).Single(a => a.Id == aluguer.Id);

            if (aluguer.Inicio != aluguerInDb.Inicio || aluguer.Fim != aluguerInDb.Fim)
            {
                if (VeiculoDisponivel(aluguerInDb.Veiculo, aluguer.Inicio, aluguer.Fim, aluguer.Id))
                {
                    aluguerInDb.Inicio          = aluguer.Inicio;
                    aluguerInDb.Fim             = aluguer.Fim;
                    aluguerInDb.AluguerState_id = AluguerState.Pendente;

                    _context.SaveChanges();
                }
            }

            return(RedirectToAction("Details", new { id = aluguerInDb.Id }));
        }
Example #16
0
        public async Task EditPost_ReturnsViewResult_WhenModelStateIsInValid()
        {
            var     controller = new AlugueresController(_context);
            Aluguer aluguer    = _context.Aluguer.FirstOrDefault(a => a.AluguerId == 1);

            controller.ModelState.AddModelError("Erro", "Erro adicionado para teste");

            var result = await controller.Edit(1, aluguer);

            Assert.IsType <ViewResult>(result);

            // Estes testes deveriam estar separados em diferentes métodos de teste!
            var viewdata1 = controller.ViewData["CarroId"];

            Assert.NotNull(viewdata1);
            Assert.IsType <SelectList>(viewdata1);
            Assert.True((viewdata1 as SelectList).Count() > 0);

            var viewdata2 = controller.ViewData["UserId"];

            Assert.NotNull(viewdata2);
            Assert.IsType <SelectList>(viewdata2);
            Assert.True((viewdata2 as SelectList).Count() > 0);
        }
Example #17
0
        public async Task <IActionResult> EfetuarPagamento(int id)
        {
            Pagamento pagamento = await _pagamentoRepositorio.ObterPeloId(id);

            pagamento.DataPagamento = DateTime.Now.Date;
            pagamento.Status        = StatusPagamento.Pago;
            await _pagamentoRepositorio.Atualizar(pagamento);

            Aluguer aluguer = await _aluguerRepositorio.ObterPeloId(pagamento.AluguerId);

            HistoricoRecursos hr = new HistoricoRecursos
            {
                Valor = aluguer.Valor,
                MesId = aluguer.MesId,
                Dia   = DateTime.Now.Day,
                Ano   = aluguer.Ano,
                Tipo  = Tipos.Entrada
            };

            await _historicoRecursosRepositorio.Inserir(hr);

            TempData["NovoRegisto"] = $"Pagamento no valor de {pagamento.Aluguer.Valor} realizado";
            return(RedirectToAction(nameof(Index)));
        }
Example #18
0
        public ActionResult Create(CreateAluguerViewModel viewModel)
        {
            var veiculo = _context.Veiculos.Include(v => v.User)
                          .Include(v => v.Alugueres)
                          .Include(v => v.Categoria)
                          .Include(v => v.Combustivel)
                          .Single(v => v.Id == viewModel.VeiculoId);

            if (!ModelState.IsValid)
            {
                viewModel.Inicio  = DateTime.Today;
                viewModel.Fim     = DateTime.Today;
                viewModel.Veiculo = veiculo;

                return(View(viewModel));
            }


            if (!VeiculoDisponivel(veiculo, viewModel.Inicio, viewModel.Fim))
            {
                ModelState.AddModelError("Fim", @"O veículo não está disponível no período indicado.");

                viewModel.Inicio  = DateTime.Today;
                viewModel.Fim     = DateTime.Today;
                viewModel.Veiculo = veiculo;

                return(View(viewModel));
            }

            //try
            //{


            var cliente = _context.Users.Single(c =>
                                                string.Compare(c.Id, viewModel.ClienteId, StringComparison.Ordinal) == 0);
            //var veiculo = _context.Veiculos.Single(v => v.Id == viewModel.VeiculoId);

            var aluguer = new Aluguer
            {
                VeiculoId       = viewModel.VeiculoId,
                Veiculo         = veiculo,
                ClienteId       = viewModel.ClienteId,
                Cliente         = cliente,
                Inicio          = viewModel.Inicio,
                Fim             = viewModel.Fim,
                AluguerState_id = AluguerState.Pendente
            };

            _context.Alugueres.Add(aluguer);

            _context.SaveChanges();
            //}
            //catch (DbEntityValidationException e)
            //{
            //    foreach (var eve in e.EntityValidationErrors)
            //    {
            //        Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            //            eve.Entry.Entity.GetType().Name, eve.Entry.State);
            //        foreach (var ve in eve.ValidationErrors)
            //        {
            //            Debug.WriteLine("- Property: \"{0}\", Value: \"{1}\", Error: \"{2}\"",
            //                ve.PropertyName,
            //                eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName),
            //                ve.ErrorMessage);
            //        }
            //    }
            //    throw;
            //}

            return(RedirectToAction("Details", new { id = aluguer.Id }));
        }
Example #19
0
        public ApplicationDbContextFixture2()
        {
            var connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseSqlite(connection)
                          .Options;

            DbContext = new ApplicationDbContext(options);


            DbContext.Database.EnsureCreated();

            // Adicionar Marcas para testes
            DbContext.Marca.AddRange(
                new Marca {
                Designacao = "Ferrary"
            },
                new Marca {
                Designacao = "Porsche"
            },
                new Marca {
                Designacao = "BMW"
            });
            DbContext.SaveChanges();

            DbContext.Carro.AddRange(
                new Carro {
                MarcaId = (DbContext.Marca.First(m => m.Designacao.Contains("Ferrary"))).MarcaId, Modelo = "TestaRossa", NumeroDePortas = 2, TipoDeCaixa = "Manual"
            },
                new Carro {
                MarcaId = (DbContext.Marca.First(m => m.Designacao.Contains("Porsche"))).MarcaId, Modelo = "911 Carrera", NumeroDePortas = 2, TipoDeCaixa = "Manual"
            });
            DbContext.SaveChanges();

            // neste caso não é necessário usar o UserManager ou o RoleManager
            DbContext.Users.AddRange(
                new Cliente {
                Id = Guid.NewGuid().ToString(), Nome = "admin", UserName = "******", Email = "*****@*****.**"
            },
                new Cliente {
                Id = Guid.NewGuid().ToString(), Nome = "joao", UserName = "******", Email = "*****@*****.**"
            },
                new Cliente {
                Id = Guid.NewGuid().ToString(), Nome = "ana", UserName = "******", Email = "*****@*****.**"
            });
            DbContext.SaveChanges();

            Carro   carro1   = DbContext.Carro.FirstOrDefault();
            Carro   carro2   = DbContext.Carro.FirstOrDefault(c => c.CarroId == 2);
            Cliente cliente1 = DbContext.Users.FirstOrDefault(u => u.Nome == "joao");
            Cliente cliente2 = DbContext.Users.FirstOrDefault(u => u.Nome == "ana");

            var aluguer1 = new Aluguer
            {
                Carro      = carro1,
                CarroId    = carro1.CarroId,
                Cliente    = cliente1,
                UserId     = cliente1.Id,
                DataInicio = DateTime.Now,
                DataFim    = DateTime.Now.AddDays(7),
            };
            var aluguer2 = new Aluguer
            {
                Carro      = carro2,
                CarroId    = carro2.CarroId,
                Cliente    = cliente2,
                UserId     = cliente2.Id,
                DataInicio = DateTime.Now,
                DataFim    = DateTime.Now.AddDays(2),
            };
            var aluguer3 = new Aluguer
            {
                Carro      = carro2,
                CarroId    = carro2.CarroId,
                Cliente    = cliente2,
                UserId     = cliente2.Id,
                DataInicio = DateTime.Now.AddDays(7),
                DataFim    = DateTime.Now.AddDays(2),
            };

            DbContext.Aluguer.AddRange(aluguer1, aluguer2, aluguer3);
            DbContext.SaveChanges();
        }
Example #20
0
        private void BT_exportar_Click(object sender, EventArgs e)
        {
            DialogResult exportar = MessageBox.Show("Tem a certeza que pertende exportar os dados selecionados ? ", "EXPORTAR", MessageBoxButtons.YesNo);

            if (exportar == DialogResult.Yes)
            {
                if (LIST_clientes.SelectedIndex == -1 || LIST_carros.SelectedIndex == -1 || LIST_alugueres.SelectedIndex == -1)
                {
                    MessageBox.Show("Para Exporta será necssario selecionar um cliente e um respetivo aluguer");
                    return;
                }
                else
                {
                    Cliente clienteSelecionado = LIST_clientes.SelectedItem as Cliente;
                    Aluguer aluguerSelecionado = LIST_alugueres.SelectedItem as Aluguer;

                    string linha = "***************************************************************";


                    saveFileDialogFicheiroTexto.Filter   = "Arquivo de Texto (.txt)|.txt";
                    saveFileDialogFicheiroTexto.FileName = "(ALUGUER)" + clienteSelecionado.Nome + "" + aluguerSelecionado.CarroAluguer.Matricula + ".txt";

                    if (saveFileDialogFicheiroTexto.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }

                    StreamWriter ficheiro = new StreamWriter(saveFileDialogFicheiroTexto.FileName, false);

                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine("          <<  FATURA ALUGUER  >>");
                    ficheiro.WriteLine(linha);

                    ficheiro.WriteLine("# CLIENTE #");
                    ficheiro.WriteLine("Cliente: " + clienteSelecionado.Nome);
                    ficheiro.WriteLine("Nif: " + clienteSelecionado.NIF);
                    ficheiro.WriteLine("Contacto: " + clienteSelecionado.Contacto);
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);

                    ficheiro.WriteLine("# CARRO #");
                    ficheiro.WriteLine("---> Marca: " + aluguerSelecionado.CarroAluguer.Marca);
                    ficheiro.WriteLine("---> Modelo: " + aluguerSelecionado.CarroAluguer.Modelo);
                    ficheiro.WriteLine("---> Matrícula: " + aluguerSelecionado.CarroAluguer.Matricula);
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);

                    ficheiro.WriteLine("# Aluguer #");
                    ficheiro.WriteLine("---> Data da entrega: " + aluguerSelecionado.DataInicio.ToString("MM/dd/yyyy"));
                    ficheiro.WriteLine("---> Data de devolução: " + aluguerSelecionado.DataFim.ToString("MM/dd/yyyy"));
                    ficheiro.WriteLine("---> KMS: " + aluguerSelecionado.Kms);
                    ficheiro.WriteLine(string.Empty);
                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(string.Empty);


                    ficheiro.WriteLine(" Valor: " + aluguerSelecionado.Valor + "€");

                    ficheiro.WriteLine(aluguerSelecionado.Valor + "€");

                    ficheiro.WriteLine(linha);
                    ficheiro.WriteLine(" [ Data de Emissão: " + DateTime.Now.ToString() + " ]");
                    ficheiro.WriteLine(linha);

                    ficheiro.Close();
                    MessageBox.Show("Dados exportados com Sucesso !", "SUCESSO");
                }
            }
        }
Example #21
0
 private static Precario ConsultaPrecario(List <Precario> precarios, Aluguer aluguer)
 {
     return(precarios.LastOrDefault(p => p.TipoShow == aluguer.ShowAlugado.TipoShow));
 }