public ActionResult Atualizar(int?id) { if (id == null) { return(RedirectToAction(nameof(Index))); } var motoristaBusca = _motoristaRepositorio.ObterMotoristaPorId(id.Value); if (motoristaBusca == null) { return(RegistroNaoEncontrado()); } if (motoristaBusca.TransportadoraId != User.ObterTransportadoraId()) { return(RedirectToAction(nameof(Index))); } var viewModel = new MotoristaViewModel { Id = motoristaBusca.Id, Nome = motoristaBusca.Nome, CNH = motoristaBusca.CNH, ValidadeCNH = motoristaBusca.ValidadeCNH, RG = motoristaBusca.RG, CPF = motoristaBusca.CPF, Celular = motoristaBusca.Celular, Nextel = motoristaBusca.Nextel, MOP = motoristaBusca.MOP, UltimaAlteracao = motoristaBusca.UltimaAlteracao.DataHoraFormatada() }; return(View(viewModel)); }
public ActionResult Cadastrar([Bind(Include = "MotoristaId, VeiculoId, CTE, PeriodoId, RecintoSelecionadoTRA, RecintoSelecionadoDEPOT, Quantidade, TipoOperacao, TipoAgendamento, IMO, Excesso")] AgendamentoViewModel viewModel) { try { var agendamento = new Agendamento( viewModel.MotoristaId, viewModel.VeiculoId, viewModel.CTE, User.ObterTransportadoraId(), viewModel.PeriodoId, viewModel.RecintoSelecionadoTRA, viewModel.RecintoSelecionadoDEPOT, viewModel.TipoOperacao, viewModel.TipoAgendamento, viewModel.Quantidade, viewModel.IMO, viewModel.Excesso, User.ObterId()); if (!Validar(agendamento)) { return(RetornarErros()); } var totalAgendado = 0; var totalEstoque = 0; if (viewModel.TipoAgendamento == TipoAgendamento.TRA) { totalEstoque = _recintoRepositorio .ObterTotalEstoqueTRA(viewModel.RecintoSelecionadoTRA); totalAgendado = _agendamentoRepositorio .ObterTotalAgendadoTRA(viewModel.RecintoSelecionadoTRA); } else { totalEstoque = _recintoRepositorio .ObterTotalEstoqueDEPOT(viewModel.RecintoSelecionadoDEPOT); totalAgendado = _agendamentoRepositorio .ObterTotalAgendadoDEPOT(viewModel.RecintoSelecionadoDEPOT); } if (viewModel.Quantidade > (totalEstoque - totalAgendado)) { throw new Exception("A quantidade informada ultrapassa o total disponível para este Recinto"); } var periodoBusca = _agendamentoRepositorio.ObterPeriodoPorId(viewModel.PeriodoId); if (periodoBusca == null) { throw new Exception("Período não encontrado"); } var existeAgendamento = _agendamentoRepositorio .ObterAgendamentosPorPeriodoEVeiculo(User.ObterTransportadoraId(), viewModel.PeriodoId, viewModel.VeiculoId, viewModel.TipoAgendamento) .Any(); // if (existeAgendamento) // throw new Exception("Já existe um agendamento para o mesmo veículo e período"); var motoristaBusca = _motoristaRepositorio.ObterMotoristaPorId(viewModel.MotoristaId); if (motoristaBusca == null) { throw new Exception("Motorista não encontrado ou excluído"); } if (motoristaBusca.Inativo) { throw new Exception("Motorista bloqueado no Terminal"); } ValidarBDCCMotorista(motoristaBusca); var veiculoBusca = _veiculoRepositorio.ObterVeiculoPorId(viewModel.VeiculoId); if (veiculoBusca == null) { throw new Exception("Veículo não encontrado ou excluído"); } ValidarBDCCVeiculo(veiculoBusca); if (!ModelState.IsValid) { return(RetornarErros()); } agendamento.Id = viewModel.TipoAgendamento == TipoAgendamento.TRA ? _agendamentoRepositorio.CadastrarAgendamentoTRA(agendamento) : _agendamentoRepositorio.CadastrarAgendamentoDEPOT(agendamento); return(JavaScript($"window.location = '{Url.Action(nameof(Concluido), new { agendamento.Id, tipoAgendamento = viewModel.TipoAgendamento })}'")); } catch (Exception ex) { return(RetornarErro(ex.Message)); } }