public async Task <IActionResult> Create([Bind("Telefonema,Alimentacao,DataInicial,ContaId")] RelatorioDiario relatorioDiario) { Conta conta = _context.Conta .Where(c => c.Id == relatorioDiario.ContaId) .Include(c => c.Reserva.Quarto).FirstOrDefault(); if (conta == null) { return(NotFound()); } relatorioDiario.DataFinal = relatorioDiario.DataInicial.AddDays(1); var context = _context.RelatorioDiario .Where(r => r.DataInicial == relatorioDiario.DataInicial && r.Conta.Reserva.Quarto.Numero == conta.Reserva.Quarto.Numero).FirstOrDefault(); if (context == null && DateTime.Compare(relatorioDiario.DataInicial, conta.Reserva.DataEntrada) >= 0 && DateTime.Compare(relatorioDiario.DataInicial, conta.Reserva.DataSaida) < 0) { relatorioDiario.ValorTelefonema = relatorioDiario.Telefonema ? 15 : 0; relatorioDiario.ValorAlimentacao = relatorioDiario.Alimentacao ? 70 : 0; IValor valor; if (!relatorioDiario.Telefonema && !relatorioDiario.Alimentacao) { valor = new Valor1(); } else if (relatorioDiario.Telefonema && !relatorioDiario.Alimentacao) { valor = new Valor2(); } else if (!relatorioDiario.Telefonema && relatorioDiario.Alimentacao) { valor = new Valor3(); } else { valor = new Valor4(); } relatorioDiario.ValorTotal = valor.CalcularValor( conta.Reserva.Quarto.ValorDiaria, relatorioDiario.ValorTelefonema, relatorioDiario.ValorAlimentacao); conta.ValorTotal += relatorioDiario.ValorTotal; _context.Update(conta); _context.Add(relatorioDiario); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index), new { id = conta.Id })); } ViewData["ContaId"] = new SelectList(_context.Conta, "Id", "Id", relatorioDiario.ContaId); return(View(relatorioDiario)); }
public async Task <IActionResult> Edit(int id, [Bind("Id,Telefonema,Alimentacao,ValorTelefonema,ValorAlimentacao,ValorTotal,DataInicial,DataFinal,ContaId")] RelatorioDiario relatorioDiario) { if (id != relatorioDiario.Id) { return(NotFound()); } if (ModelState.IsValid) { try { Conta conta = _context.Conta .Where(c => c.Id == relatorioDiario.ContaId) .Include(c => c.Reserva.Quarto).FirstOrDefault(); if (conta == null) { return(NotFound()); } conta.ValorTotal -= relatorioDiario.ValorTotal; relatorioDiario.ValorTelefonema = relatorioDiario.Telefonema ? 15 : 0; relatorioDiario.ValorAlimentacao = relatorioDiario.Alimentacao ? 70 : 0; IValor valor; if (!relatorioDiario.Telefonema && !relatorioDiario.Alimentacao) { valor = new Valor1(); } else if (relatorioDiario.Telefonema && !relatorioDiario.Alimentacao) { valor = new Valor2(); } else if (!relatorioDiario.Telefonema && relatorioDiario.Alimentacao) { valor = new Valor3(); } else { valor = new Valor4(); } relatorioDiario.ValorTotal = valor.CalcularValor( conta.Reserva.Quarto.ValorDiaria, relatorioDiario.ValorTelefonema, relatorioDiario.ValorAlimentacao); conta.ValorTotal += relatorioDiario.ValorTotal; _context.Update(relatorioDiario); _context.Update(conta); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RelatorioDiarioExists(relatorioDiario.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Details), new { id = relatorioDiario.Id })); } ViewData["ContaId"] = new SelectList(_context.Conta, "Id", "Id", relatorioDiario.ContaId); return(View(relatorioDiario)); }