public ActionResult Visualizar(int id)
        {
            var agendamentoBusca = _agendamentoRepositorio
                                   .ObterPosicionamentoPorId(id);

            if (agendamentoBusca == null)
            {
                throw new Exception("Posicionamento não encontrado ou excluído");
            }

            var itemCargaSoltaBusca = _agendamentoRepositorio
                                      .ObterCargaSoltaAgendamento(id);

            var viewModel = new AgendamentoCargaSoltaViewModel
            {
                DataPrevista        = agendamentoBusca.DataPrevista.DataFormatada(),
                Porto               = agendamentoBusca.Porto,
                Navio               = agendamentoBusca.Navio,
                Exportador          = agendamentoBusca.Exportador,
                Reserva             = agendamentoBusca.Reserva,
                Viagem              = agendamentoBusca.Viagem,
                NovaViagemDescricao = agendamentoBusca.NovaViagemDescricao,
                RazaoSocial         = agendamentoBusca.Cliente,
                CpfCnpj             = agendamentoBusca.ClienteCpfCnpj,
                MotivoId            = agendamentoBusca.MotivoId,
                MotivoDescricao     = agendamentoBusca.MotivoDescricao
            };

            viewModel.ItensCargaSoltaAgendados.Add(itemCargaSoltaBusca ?? new CargaSolta());

            return(View(viewModel));
        }
        public ActionResult Agendar()
        {
            var viewModel = new AgendamentoCargaSoltaViewModel();

            PopularPeriodos(viewModel);
            PopularMotivos(viewModel);

            return(View(viewModel));
        }
        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}");
            }
        }
 public void PopularMotivos(AgendamentoCargaSoltaViewModel viewModel)
 {
     viewModel.Motivos = _motivosRepositorio.ObterMotivos().ToList();
 }
 public void PopularPeriodos(AgendamentoCargaSoltaViewModel viewModel)
 {
     viewModel.Periodos = _periodosRepositorio.ObterPeriodos().ToList();
 }