public async Task <IActionResult> Realizar(FormularioPrincipalViewModel model) { if (ModelState.IsValid) { var cliente = await clienteRepositorio.BuscarClientePorEmail(model.Email); if (cliente == null) { cliente = new Cliente(model.Email); } var controleDeValor = await controleDeValorRepositorio.BuscarControleDeValor(); var solicitacao = new Solicitacao(model.TipoDeSolicitacao, Models.Configuration.Data.ConverterData(model.PrevisaoDeEntrega), model.Destino, model.Origem, model.ApostilaDeHaia); if (!string.IsNullOrWhiteSpace(model.Documentos)) { var documentos = model.Documentos.Split(','); foreach (var documento in documentos) { var id = Guid.Parse(documento); var documentoEmBanco = await documentoRepositorio.BuscarDocumento(id); solicitacao.AdicionarDocumento(documentoEmBanco); solicitacao.CalcularSolicitacao(controleDeValor); } } else { solicitacao.RealizarSemDocumento(model.QuantidadeDeCaracteres, controleDeValor); } if (solicitacao.PodeSerSalva()) { solicitacao.DefinirCliente(cliente); await solicitacaoRepositorio.Adicionar(solicitacao); } return(RedirectToAction("Finalizar", new { id = solicitacao.Id })); } CarregarViewBags(); return(View(model)); }
public AbrirUmaSolicitacaoResposta AbrirUmaSolicitacao(AbrirUmaSolicitacaoRequisicao requisicao) { var resposta = new AbrirUmaSolicitacaoResposta(); try { var tipoDaSolicitacao = _tipoDaSolicitacaoRepositorio.ObterPor(requisicao.CodigoDoTipoDaSolicitacao); var responsavel = _pessoaRepositorio.ObterPor(requisicao.CodigoDoResponsavel); var programa = _programaRepositorio.ObterPor(requisicao.CodigoDoPrograma); var solicitacao = _solicitacaoServico.RealizarAbertura(tipoDaSolicitacao, responsavel, requisicao.Protocolo, requisicao.Descricao, programa); _solicitacaoRepositorio.Adicionar(solicitacao); _unitOfWork.Commit(); resposta.Solicitacao = solicitacao; resposta.Sucesso = true; } catch (RegraException regraException) { resposta.Erros = regraException.Erros; } return(resposta); }