コード例 #1
0
        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));
        }
コード例 #2
0
        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));
            }
        }