示例#1
0
        public ActionResult ObterCliente(string documento)
        {
            if (string.IsNullOrEmpty(documento))
            {
                return(RetornarErro("Informe o CPF ou CNPJ do Cliente"));
            }

            var dados = _clientesRepositorio.ObterClientePorDocumento(documento.ApenasNumeros());

            if (dados == null)
            {
                return(RetornarErro($"Nenhum Cliente encontrado com o documento {documento}"));
            }

            return(Json(dados, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Agendar([Bind(Include = "MotivoId, DataPrevista, CpfCnpj, NovaViagemId, ItensCargaSolta")] AgendamentoCargaSoltaViewModel viewModel)
        {
            var agendamento = new Agendamento(
                viewModel.MotivoId,
                viewModel.DataPrevista.ToDateTime(),
                viewModel.CpfCnpj,
                viewModel.NovaViagemId,
                TipoAgendamento.CargaSolta,
                User.ObterDespachanteId());

            agendamento.AdicionarItensCargaSolta(viewModel.ItensCargaSolta);

            if (!Validar(agendamento))
            {
                return(RetornarErros());
            }

            var clienteBusca = _clientesRepositorio
                               .ObterClientePorDocumento(viewModel.CpfCnpj.ApenasNumeros());

            if (clienteBusca == null)
            {
                throw new Exception($"Nenhum Cliente foi encontrado com o documento {viewModel.CpfCnpj}");
            }

            agendamento.SetarCliente(clienteBusca.Id);
            agendamento.Status = StatusPosicionamento.NaoIniciado;

            try
            {
                var protocolo = _agendamentoRepositorio.GravarPosicionamentoCargaSolta(agendamento);

                viewModel.ItensCargaSoltaAgendados = _agendamentoRepositorio
                                                     .ObterItensCargaSoltaAgendamento(protocolo).ToList();

                viewModel.ProtocoloUnificado = protocolo;

                return(PartialView("_Concluido", viewModel));
            }
            catch (Exception ex)
            {
                throw new Exception($"Falha ao Gravar o Agendamento {ex.Message}");
            }
        }
示例#3
0
        public ActionResult Agendar([Bind(Include = "MotivoId, DataPrevista, CpfCnpj, NovaViagemId, ConteineresSelecionados")] AgendamentoConteinerViewModel viewModel)
        {
            var agendamento = new Agendamento(
                viewModel.MotivoId,
                viewModel.DataPrevista.ToDateTime(),
                viewModel.CpfCnpj,
                viewModel.NovaViagemId,
                TipoAgendamento.Conteiner,
                User.ObterDespachanteId());

            agendamento.AdicionarConteineres(viewModel.ConteineresSelecionados);

            if (!Validar(agendamento))
            {
                return(RetornarErros());
            }

            var clienteBusca = _clientesRepositorio
                               .ObterClientePorDocumento(viewModel.CpfCnpj.ApenasNumeros());

            if (clienteBusca == null)
            {
                throw new Exception($"Nenhum Cliente foi encontrado com o documento {viewModel.CpfCnpj}");
            }

            agendamento.SetarCliente(clienteBusca.Id);
            agendamento.Status = StatusPosicionamento.NaoIniciado;

            try
            {
                foreach (var cntr in viewModel.ConteineresSelecionados)
                {
                    var posicionamentoBusca = _agendamentoRepositorio.ExistePosicionamento(viewModel.MotivoId, viewModel.DataPrevista.ToDateTime(), cntr);

                    if (posicionamentoBusca != null)
                    {
                        if (posicionamentoBusca != null)
                        {
                            ModelState.AddModelError(string.Empty, $"Já existe um Agendamento para a Unidade {posicionamentoBusca.Sigla} na Data {viewModel.DataPrevista} para {posicionamentoBusca.Motivo}");
                        }
                    }
                }

                if (ModelState.Values.SelectMany(v => v.Errors).Any())
                {
                    return(RetornarErros());
                }

                var protocolo = _agendamentoRepositorio.GravarPosicionamentoCntr(agendamento);

                viewModel.ConteineresAgendados = _agendamentoRepositorio
                                                 .ObterConteineresAgendamento(protocolo).ToList();

                viewModel.ProtocoloUnificado = protocolo;

                return(PartialView("_Concluido", viewModel));
            }
            catch (Exception ex)
            {
                throw new Exception($"Falha ao Gravar o Agendamento {ex.Message}");
            }
        }