public static void EscreverXl(Models.Solicitacao solicitacao, string siteRoot, Stream destination)
        {
            var strategy = new SolicitacaoWriterStrategy(solicitacao);
            var writer   = new XLWriter(Path.Combine(siteRoot, "Excel/Planilhas/"), strategy);

            writer.WriteAll(destination);
        }
        public static Models.Solicitacao DeterminarSeq(Models.Solicitacao solicitacao, int ano = 0)
        {
            if (ano == 0)
            {
                ano = DateTime.Now.Year;
            }
            var solicitacoes = from s in db.Solicitacoes where s.Ano == ano select s;

            solicitacao.Ano = ano;
            solicitacao.Seq = (solicitacoes.Count() == 0 ? 1 : solicitacoes.Max(s => s.Seq)) + 1;
            return(solicitacao);
        }
        public async Task <ActionResult> NovaSolicitacao(Models.Solicitacao solicitacao)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse());
            }

            solicitacao.Id           = Guid.NewGuid();
            solicitacao.DataCadastro = DateTime.Now;
            solicitacao.Status       = StatusSolicitacao.Pendente;

            return(CustomResponse(await _mediator.EnviarComando(
                                      new RegistrarSolicitacaoCommand(
                                          solicitacao.Id, solicitacao.IdSolicitante, solicitacao.Descricao, solicitacao.CodDepartamento,
                                          solicitacao.Status, solicitacao.DataCadastro))));
        }
        public async Task <ValidationResult> Handle(RegistrarSolicitacaoCommand message, CancellationToken cancellationToken)
        {
            if (!message.EhValido())
            {
                return(message.ValidationResult);
            }

            var solicitacao = new Models.Solicitacao(
                message.Id, message.IdSolicitante, message.CodDepartamento, message.Descricao,
                message.Status, message.DataCadastro, null);

            _solicitacaoRepository.Adicionar(solicitacao);

            solicitacao.AdicionarEvento(new SolicitacaoRegistradoEvent(message.Id, message.IdSolicitante, message.Descricao, message.CodDepartamento));

            return(await PersistirDados(_solicitacaoRepository.UnitOfWork));
        }
        public static Models.Avaliacao CriarAvaliacao(Models.Solicitacao solicitacao)
        {
            var avaliacao = CriarAvaliacao();

            avaliacao.Avaliado    = false;
            avaliacao.DataLimite  = solicitacao.DataSolicitacao.AddDays(DIAS_CORRIDOS_PARA_AVALIAR);
            avaliacao.Solicitacao = solicitacao;

            foreach (var item in solicitacao.Itens)
            {
                avaliacao.ItensAvaliacao.Add(new Models.ItemAvaliacao(item)
                {
                    Avaliacao = avaliacao
                });
            }

            return(avaliacao);
        }
        public static Models.Solicitacao CriarSolicitacao(Models.Solicitacao solicitacao, int ano = 0)
        {
            if (ano == 0)
            {
                ano = DateTime.Now.Year;
            }

            if (solicitacao.DataEntrega == null)
            {
                solicitacao.DataEntrega = DateTime.Now.AddDays(DIAS_ESPERADOS_PARA_ENTREGA).Date;
            }

            //Determinar numero sequencial para inserção no banco
            DeterminarSeq(solicitacao, ano);
            solicitacao.DataSolicitacao = DateTime.Now.Date;

            return(solicitacao);
        }
        public async Task <ActionResult> UpdateSolicitacao(Models.Solicitacao solicitacao)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var solicitacaoExistente = await _solicitacaoRepository.ObterPorId(solicitacao.Id);

            if (solicitacaoExistente == null)
            {
                AdicionarErroProcessamento("Solicitação não localizada.");
                return(CustomResponse());
            }

            var resultado = await _mediator.EnviarComando(
                new AtualizarSolicitacaoCommand(
                    solicitacao.Id, solicitacaoExistente.IdSolicitante, solicitacao.CodDepartamento,
                    solicitacaoExistente.Descricao, solicitacao.Status,
                    solicitacaoExistente.DataCadastro, solicitacao.DataEncerramento));

            return(CustomResponse(resultado));
        }
 public void Atualizar(Models.Solicitacao solicitacao)
 {
     _context.Solicitacoes.Update(solicitacao);
 }
 public void Adicionar(Models.Solicitacao solicitacao)
 {
     _context.Solicitacoes.Add(solicitacao);
 }
        public static Models.Solicitacao CriarSolicitacao()
        {
            var solicitacao = new Models.Solicitacao();

            return(CriarSolicitacao(solicitacao));
        }
 public static Models.Solicitacao CriarSolicitacao()
 {
     var solicitacao = new Models.Solicitacao();
     return CriarSolicitacao(solicitacao);
 }