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); }
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)); }
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 }
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); }
private bool VerificaAluguerTerminado(Aluguer aluguer) { var dataAtual = DateTime.Today; if (dataAtual > aluguer.Fim) { return(true); } return(false); }
private bool VerificaAluguerRejeitado(Aluguer aluguer) { var dataAtual = DateTime.Today; if (dataAtual > aluguer.Inicio) { return(true); } return(false); }
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)); }
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"); } } }
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)); }
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); }
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)); }
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"); } }
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)); }
//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(); }
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 })); }
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); }
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))); }
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 })); }
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(); }
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"); } } }
private static Precario ConsultaPrecario(List <Precario> precarios, Aluguer aluguer) { return(precarios.LastOrDefault(p => p.TipoShow == aluguer.ShowAlugado.TipoShow)); }