private async Task EnviarEmail(Int64 pessoaId, Int64 unidadeId) { try { //Obtem os destinatários dos emails var destinatarios = new List <string>(); var servidor = await PessoaQuery.ObterPorChaveAsync(pessoaId); destinatarios.Add(servidor.Result.Email); var unidade = await UnidadeQuery.ObterPessoasAsync(unidadeId); var chefes = unidade.Result.Where(u => u.UnidadeId == unidadeId && u.TipoFuncaoId.HasValue); foreach (var chefe in chefes) { if (!string.IsNullOrEmpty(chefe.Email)) { destinatarios.Add(chefe.Email); } } //Envia os emails EnviarEmail(destinatarios.ToArray()); } catch { } }
private async Task EnviarEmail(Guid pactoTrabalhoId, Int64 pessoaId, Int64 unidadeId) { try { if (Configuration.Value.Notificacoes == null || Configuration.Value.Notificacoes.EnviarEmail) { //Obtem os destinatários dos emails var destinatarios = new List <string>(); var servidor = await PessoaQuery.ObterPorChaveAsync(pessoaId); destinatarios.Add(servidor.Result.Email); var unidade = await UnidadeQuery.ObterPessoasAsync(unidadeId); var chefes = unidade.Result.Where(u => u.UnidadeId == unidadeId && u.TipoFuncaoId.HasValue); foreach (var chefe in chefes) { if (!string.IsNullOrEmpty(chefe.Email)) { destinatarios.Add(chefe.Email); } } //Envia os emails EnviarEmail(pactoTrabalhoId, Configuration.Value.Notificacoes.EmailPactoSolicitacaoAlteracaoPrazo, destinatarios.ToArray()); } } catch { } }
public async Task <IActionResult> Handle(AlterarSituacaoPactoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta o objeto com os dados do catalogo var item = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Obtém os dias não úteis da pessoa var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(item.PessoaId, item.DataInicio, item.DataFim); item.DiasNaoUteis = diasNaoUteis.Result.ToList(); //Alterar a situação da atividade item.AlterarSituacao(request.SituacaoId, request.UsuarioLogadoId.ToString(), request.Observacoes); //Altera o item de catalogo no banco de dados PactoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); //Envia os emails aos envolvidos await EnviarEmail(item.PessoaId, item.UnidadeId); result.Result = true; result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso."); return(result); }
public async Task <IActionResult> Handle(CadastrarPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); request.AssuntosId = request.AssuntosId != null ? request.AssuntosId : new List <Guid>(); request.ObjetosId = request.ObjetosId != null ? request.ObjetosId : new List <Guid>(); //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Obtém os dias não úteis da pessoa var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim); pacto.DiasNaoUteis = diasNaoUteis.Result.ToList(); //Obtem os dados do item var item = await ItemCatalogoRepository.ObterAsync(request.ItemCatalogoId); //Obtém o tempo previsto para o iem de acordo com a forma de execução e com o tipo do item var tempoPrevisto = item.TempoExecucaoPreviamenteDefinido ? pacto.ModalidadeExecucaoId == (int)ModalidadeExecucaoEnum.Presencial ? item.TempoExecucaoPresencial.Value : item.TempoExecucaoRemoto.Value : request.TempoPrevistoPorItem.Value; //Cria a atividade pacto.AdicionarAtividade(item, request.Quantidade, tempoPrevisto, request.Descricao, request.AssuntosId, request.ObjetosId); //Altera o pacto de trabalho no banco de dados PactoTrabalhoRepository.Atualizar(pacto); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso."); return(result); }
//GET: PEGAR TODAS AS PESSOAS public IEnumerable <PessoaModel> Get(PessoaQuery pessoaQuery) { string where = pessoaQuery.Filtrar(); IQueryable <PessoaModel> Pessoas = _context.Pessoas.FromSql(where); return(Pessoas.ToList()); }
public IActionResult GetPessoas(PessoaQuery query) { query = query ?? new PessoaQuery(); try { IEnumerable <PessoaModel> Pessoas = _repository.Get(query); if (Pessoas.Count() > 0) { List <PessoaDTO> PessoaDTO = new List <PessoaDTO>(); foreach (var pessoa in Pessoas) { PessoaDTO.Add(new PessoaDTO() { Cpf = pessoa.Cpf, Email = pessoa.Email, Genero = pessoa.Genero, Nascimento = pessoa.Nascimento, Id = pessoa.Id, Nome = pessoa.Nome, Sobrenome = pessoa.Sobrenome }); } return(Ok(PessoaDTO)); } else { return(NotFound("Nenhuma pessoa encontrada.")); } } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <IActionResult> Handle(CadastrarPactoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <Guid> result = new ApplicationResult <Guid>(request); var dadosPessoa = await PessoaRepository.ObterAsync(request.PessoaId); if (dadosPessoa.PactosTrabalho.Any(p => p.DataFim >= request.DataInicio && p.DataInicio <= request.DataFim)) { result.Validations = new List <string> { "A pessoa já tem um plano de trabalho cadastrado para o período" }; return(result); } //Obtém os dias que não são úteis (feriados, férias, etc) var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(dadosPessoa.PessoaId, request.DataInicio, request.DataFim); //Monta o objeto com os dados do item de catalogo Domain.AggregatesModel.PactoTrabalhoAggregate.PactoTrabalho item = Domain.AggregatesModel.PactoTrabalhoAggregate.PactoTrabalho.Criar( request.PlanoTrabalhoId, request.UnidadeId, request.PessoaId, dadosPessoa.CargaHoraria, request.FormaExecucaoId, request.DataInicio, request.DataFim, request.UsuarioLogadoId.ToString(), diasNaoUteis.Result.ToList(), request.TermoAceite); //Verifica se está criando ou copiando um pacto de trabalho if (request.PactoTrabalhoId.HasValue) { //Obtém os dados do pacto que está copiando var pactoCopiar = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId.Value); //Adiciona ao pacto novo as atividades do que está sendo copiado foreach (var atividade in pactoCopiar.Atividades) { var assuntosId = atividade.Assuntos.Select(a => a.AssuntoId); var objetosId = atividade.Objetos.Select(o => o.PlanoTrabalhoObjetoId); item.AdicionarAtividade(atividade.ItemCatalogo, atividade.Quantidade, atividade.TempoPrevistoPorItem, atividade.Descricao, assuntosId, objetosId); } } //Adiciona o catalogo no banco de dados await PactoTrabalhoRepository.AdicionarAsync(item); UnitOfWork.Commit(false); result.Result = item.PactoTrabalhoId; result.SetHttpStatusToOk("Plano de trabalho cadastrado com sucesso."); return(result); }
public async Task <IActionResult> Handle(AlterarPeriodoPactoTrabalhoCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); try { //Monta o objeto com os dados do catalogo var item = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Obtém os dias não úteis da pessoa var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(item.PessoaId, item.DataInicio, item.DataFim); item.DiasNaoUteis = diasNaoUteis.Result.ToList(); //Verifica se a pessoa tem outros pactos cadastrados para o período var dadosPessoa = await PessoaRepository.ObterAsync(item.PessoaId); if (dadosPessoa.PactosTrabalho.Any(p => p.PactoTrabalhoId != item.PactoTrabalhoId && p.DataFim.Date >= request.DataInicio.Date && p.DataInicio.Date <= request.DataFim.Date)) { result.Validations = new List <string> { "A pessoa já tem um plano de trabalho cadastrado para o período" }; return(result); } //Altera a situação item.AlterarPeriodo(request.DataInicio.Date, request.DataFim.Date); //Altera o item de catalogo no banco de dados PactoTrabalhoRepository.Atualizar(item); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Plano de trabalho alterado com sucesso."); } catch (SISRH.Domain.Exceptions.SISRHDomainException ex) { result.Validations = new List <string>() { ex.Message }; result.Result = false; result.SetHttpStatusToBadRequest(); } return(result); }
public async Task <IActionResult> Handle(ResponderSolitacaoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); if (!await validarPermissoes(request)) { result.SetHttpStatusToForbidden("O usuário logado não possui permissão suficientes para executar a ação."); return(result); } //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); if (request.AjustarPrazo) { //Obtém os dias não úteis da pessoa var dias = diasAumentoPrazo(pacto, request.PactoTrabalhoSolicitacaoId); if (dias == null) { result.SetHttpStatusToBadRequest("Não foi possível recuperar os dias de aumento de prazo."); return(result); } var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim.AddDays(Convert.ToDouble(Decimal.Round(dias.Value)))); pacto.DiasNaoUteis = diasNaoUteis.Result.ToList(); } //Responde a solicitação pacto.ResponderSolicitacao(request.PactoTrabalhoSolicitacaoId, request.UsuarioLogadoId.ToString(), request.Aprovado, request.AjustarPrazo, request.Descricao); //Altera o pacto de trabalho no banco de dados PactoTrabalhoRepository.Atualizar(pacto); UnitOfWork.Commit(false); //Envia os emails aos envolvidos await EnviarEmail(pacto.PessoaId, pacto.UnidadeId); result.Result = true; result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso."); return(result); }
private async Task EnviarEmail(Guid planoTrabalhoId, Int64 pessoaId) { try { if (Configuration.Value.Notificacoes == null || Configuration.Value.Notificacoes.EnviarEmail) { //Obtém os dados do usuário logado var dadosPessoa = await PessoaQuery.ObterPorChaveAsync(pessoaId); if (!String.IsNullOrEmpty(dadosPessoa.Result.Email)) { //Obtem os destinatários dos emails var destinatarios = new List <string>(); destinatarios.Add(dadosPessoa.Result.Email); //Envia os emails EnviarEmail(planoTrabalhoId, Configuration.Value.Notificacoes.EmailPlanoCandidaturaRegistrada, destinatarios.ToArray()); } } } catch { } }
public async Task <IActionResult> Handle(AlterarAndamentoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { ApplicationResult <bool> result = new ApplicationResult <bool>(request); //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Obtém os dias não úteis da pessoa var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, pacto.DataFim); pacto.DiasNaoUteis = diasNaoUteis.Result.ToList(); //Altera a atividade pacto.AlterarAndamentoAtividade(request.PactoTrabalhoAtividadeId, request.SituacaoId, request.DataInicio, request.DataFim, request.TempoRealizado, consideracoes: request.Consideracoes); //Altera o pacto de trabalho no banco de dados PactoTrabalhoRepository.Atualizar(pacto); UnitOfWork.Commit(false); result.Result = true; result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso."); return(result); }
public async Task <IActionResult> Handle(ResponderSolitacaoPactoTrabalhoAtividadeCommand request, CancellationToken cancellationToken) { var result = new ApplicationResult <PactoTrabalhoViewModel>(request); try { if (!await validarPermissoes(request)) { result.SetHttpStatusToForbidden("O usuário logado não possui permissão suficientes para executar a ação."); return(result); } //Monta os dados do pacto de trabalho var pacto = await PactoTrabalhoRepository.ObterAsync(request.PactoTrabalhoId); //Obtém os dados da solicitação var solicitacao = pacto.Solicitacoes.Where(s => s.PactoTrabalhoSolicitacaoId == request.PactoTrabalhoSolicitacaoId).FirstOrDefault(); var dataFim = pacto.DataFim; Susep.SISRH.Domain.AggregatesModel.CatalogoAggregate.ItemCatalogo itemCatalogo = null; if (request.AjustarPrazo) { //Obtém os dias não úteis da pessoa var dias = diasAumentoPrazo(pacto, solicitacao); if (dias == null) { result.SetHttpStatusToBadRequest("Não foi possível recuperar os dias de aumento de prazo."); return(result); } dataFim = pacto.DataFim.AddDays(Convert.ToDouble(Decimal.Round(dias.Value))); } dynamic dadosSolicitacao = JsonConvert.DeserializeObject(solicitacao.DadosSolicitacao); switch (solicitacao.TipoSolicitacaoId) { case (int)SISRH.Domain.Enums.TipoSolicitacaoPactoTrabalhoEnum.AlterarPrazo: dataFim = (DateTime)dadosSolicitacao.dataFim; break; case (int)SISRH.Domain.Enums.TipoSolicitacaoPactoTrabalhoEnum.NovaAtividade: Guid itemCatalogoId = dadosSolicitacao.itemCatalogoId; itemCatalogo = await ItemCatalogoRepository.ObterAsync(itemCatalogoId); break; } var diasNaoUteis = await PessoaQuery.ObterDiasNaoUteisAsync(pacto.PessoaId, pacto.DataInicio, dataFim); pacto.DiasNaoUteis = diasNaoUteis.Result.ToList(); //Responde a solicitação pacto.ResponderSolicitacao(request.PactoTrabalhoSolicitacaoId, request.UsuarioLogadoId.ToString(), request.Aprovado, request.AjustarPrazo, request.Descricao, itemCatalogo); //Altera o pacto de trabalho no banco de dados PactoTrabalhoRepository.Atualizar(pacto); UnitOfWork.Commit(false); //Envia os emails aos envolvidos await EnviarEmail(request.PactoTrabalhoId, pacto.PessoaId, pacto.UnidadeId); var dadosPacto = await PactoTrabalhoQuery.ObterPorChaveAsync(request.PactoTrabalhoId); result.Result = dadosPacto.Result; result.SetHttpStatusToOk("Pacto de trabalho alterado com sucesso."); } catch (SISRH.Domain.Exceptions.SISRHDomainException ex) { result.Validations = new List <string>() { ex.Message }; result.Result = null; result.SetHttpStatusToBadRequest(); } return(result); }