/// <summary> /// Método responsável por criar um histórico para uma determinada tarefa. /// </summary> /// /// <param name="oidTarefa">Oid da Tarefa</param> /// <param name="login">Login do usuário</param> /// <param name="nbHoraRealizado">Horas realizadas na atividade.</param> /// <param name="dtRealizado">Data de realização da atividade.</param> /// <param name="nbHoraInicial">Hora Inicial da atividade</param> /// <param name="nbHoraFinal">Hora Final da atividade</param> /// <param name="txComentario">Comentário da atividade</param> /// <param name="nbHoraRestante">Horas restantes da atividade</param> /// <param name="oidSituacaoPlanejamento">Oid da Situação Planejamento da atividade</param> /// <param name="txJustificativaReducao">Justificativa de redução da atividade</param> public static void CriarHistoricoTarefa(Guid oidTarefa, string login, TimeSpan nbHoraRealizado, DateTime dtRealizado, TimeSpan nbHoraInicial, TimeSpan nbHoraFinal, string txComentario, TimeSpan nbHoraRestante, Guid oidSituacaoPlanejamento, string txJustificativaReducao) { if (oidTarefa == new Guid() || String.IsNullOrEmpty(login)) { throw new ArgumentException("Os parâmetros Login e OidTarefa não podem ser nulos."); } TarefaHistoricoTrabalho historico = new TarefaHistoricoTrabalho(); Tarefa tarefa = TarefaDao.ConsultarTarefaPorOid(oidTarefa); Colaborador colaborador = ColaboradorDAO.ConsultarColaborador(login, o => o.Usuario.Person); if (tarefa == null) { return; } SituacaoPlanejamento situacaoPlanejamento = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(oidSituacaoPlanejamento); if (tarefa.NbEstimativaInicial <= 0 && (situacaoPlanejamento.CsTipo == CsTipoPlanejamento.Cancelamento || situacaoPlanejamento.CsTipo == CsTipoPlanejamento.Planejamento)) { TarefaBo.AtualizarDadosTarefa(tarefa.Oid, colaborador, situacaoPlanejamento, nbHoraRealizado, nbHoraRestante, tarefa.CsLinhaBaseSalva); return; } // Caso não possua estimativa inicial não deve salvar historico da tarefa if (tarefa.NbEstimativaInicial <= 0 && situacaoPlanejamento.CsTipo != CsTipoPlanejamento.Impedimento) { throw new EstimativaInicialInvalidaException("Histórico da Tarefa não pode ser salvo, pois não foi estimado um tempo inicial para realização da tarefa"); } if (!tarefa.CsLinhaBaseSalva) { TarefaBo.SalvarLinhaBaseTarefa(tarefa); } historico.OidTarefa = tarefa.Oid; historico.HoraRealizado = nbHoraRealizado; historico.DtRealizado = dtRealizado; historico.HoraInicio = nbHoraInicial; historico.HoraFinal = nbHoraFinal; historico.TxComentario = txComentario; historico.HoraRestante = nbHoraRestante; historico.TxJustificativaReducao = txJustificativaReducao; historico.OidColaborador = colaborador.Oid; historico.OidSituacaoPlanejamento = situacaoPlanejamento.Oid; historico.TxComentario = txComentario; historico.TxJustificativaReducao = txJustificativaReducao; using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { contexto.TarefaHistoricoTrabalho.Add(historico); contexto.SaveChanges(); } //Atualiza os dados da tarefa a partir dos dados salvos no histórico. TarefaBo.AtualizarDadosTarefa(tarefa.Oid, colaborador, situacaoPlanejamento, historico.HoraRealizado, historico.HoraRestante, tarefa.CsLinhaBaseSalva); }
/// <summary> /// Método responsável por editar uma tarefa /// </summary> /// <param name="contexto">Sessão corrente</param> /// <param name="oidCronogramaTarefa">Oid (Guid) da tarefa a ser editada</param> /// <param name="txDescricao">Descrição da tarefa alterada</param> /// <param name="oidSituacaoPlanejamento">Oid (Guid) da tarefa editada</param> /// <param name="dataInicio">Data de Inicio da tarefa editada</param> /// <param name="login">Login do usuário que editou a tarefa</param> /// <param name="txObservacao">Observação da tarefa editada</param> /// <param name="responsaveis">array de responsáveis pela tarefa</param> /// <param name="nbEstimativaInicial">Estimativa inicial da tarefa</param> /// <param name="nbEstimativaRestante">Estimativa restante da tarefa</param> /// <param name="nbRealizado">Horas realizadas da tarefa</param> /// <param name="csLinhaBaseSalva">Boolean afirmando se a tarefa foi salva a linda de base</param> /// <returns>Retorna uma Hash contendo dados de atualizado em, atualizado por e confirmação da edição</returns> public static Hashtable EditarTarefa(string oidCronogramaTarefa, string txDescricao, string oidSituacaoPlanejamento, string login, string txObservacao, string responsaveis, Int16 nbEstimativaInicial, TimeSpan nbEstimativaRestante, TimeSpan nbRealizado, bool csLinhaBaseSalva, DateTime dataInicio) { if (oidCronogramaTarefa == null || txDescricao == null || oidSituacaoPlanejamento == null || login == null) { throw new ArgumentException("Os parâmetros OidCronogramaTarefa, TxDescricao, DataInício, SituacaoPlanejamento, login e TxObservação são obrigatórios."); } Hashtable dadosEdicaoTarefa = new Hashtable(); CronogramaTarefa cronogramaTarefa = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(Guid.Parse(oidCronogramaTarefa), o => o.Tarefa.SituacaoPlanejamento, o => o.Tarefa.AtualizadoPor.Usuario.Person); if (cronogramaTarefa == null) { dadosEdicaoTarefa.Add("EdicaoStatus", false); return(dadosEdicaoTarefa); } Tarefa tarefaAntiga = cronogramaTarefa.Tarefa.Clone(); Colaborador colaborador = ColaboradorDAO.ConsultarColaborador(login, o => o.Usuario.Person); SituacaoPlanejamento situacaoPlanejamento = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(Guid.Parse(oidSituacaoPlanejamento)); if (colaborador != null) { cronogramaTarefa.Tarefa.OidAtualizadoPor = colaborador.Oid; cronogramaTarefa.Tarefa.AtualizadoPor = null; } if (situacaoPlanejamento != null) { cronogramaTarefa.Tarefa.OidSituacaoPlanejamento = situacaoPlanejamento.Oid; cronogramaTarefa.Tarefa.SituacaoPlanejamento = null; } cronogramaTarefa.Tarefa.CsLinhaBaseSalva = csLinhaBaseSalva; cronogramaTarefa.Tarefa.NbEstimativaInicial = nbEstimativaInicial; cronogramaTarefa.Tarefa.EstimativaRealizadoHora = nbRealizado; cronogramaTarefa.Tarefa.TxDescricao = txDescricao; cronogramaTarefa.Tarefa.TxObservacao = txObservacao; cronogramaTarefa.Tarefa.DtAtualizadoEm = DateTime.Now; cronogramaTarefa.Tarefa.TxResponsaveis = responsaveis; cronogramaTarefa.Tarefa.DtInicio = dataInicio; EstimarHorasRestantesSugeridaPorTipoSituacaoPlanejamento(cronogramaTarefa.Tarefa, nbEstimativaRestante.Ticks, situacaoPlanejamento); TarefaDao.SalvarTarefa(cronogramaTarefa.Tarefa); TarefaHistoricoEstimativaBo.CriarHistorico(DateUtil.ConsultarDataHoraAtual(), cronogramaTarefa.Tarefa.Oid, cronogramaTarefa.Tarefa.NbEstimativaRestante); TarefaLogAlteracaoBo.CriarLogTarefa(cronogramaTarefa.Tarefa, tarefaAntiga); dadosEdicaoTarefa.Add("EdicaoStatus", true); dadosEdicaoTarefa.Add("DtAtualizadoEm", cronogramaTarefa.Tarefa.DtAtualizadoEm); dadosEdicaoTarefa.Add("TxAtualizadoPor", colaborador.NomeCompleto); return(dadosEdicaoTarefa); }
/// <summary> /// Método responsável por criar uma tarefa dependente de projeto e cronograma. /// É acessado pelo serviço de planejamento quando solicitado pela tela de cronograma. /// </summary> /// <param name="contexto">Contexto do banco</param> /// <param name="login">Login do usuario</param> /// <param name="oidCronograma"> oid cronograma</param> /// <param name="txDescricaoTarefa"> descrição da tarefa </param> /// <param name="txObservacaoTarefa">observações da tarefa</param> /// <param name="oidSituacao">oid situação da tarefa</param> /// <param name="responsaveis">responsáveis pela tarefa</param> /// <param name="nbEstimativaInicial"> horas estimadas inicialmente</param> /// <param name="dtInicio"> data de inicio da tarefa</param> /// <param name="oidTarefaSelecionada">oid da tarefa</param> /// <param name="salvar"> condição para indicar se irá salvar ou não a tarefa dentro da classe tarefa</param> /// <returns>hash contendo informações sobre a tarefa e lista das tarefas impactadas</returns> public static CronogramaTarefa CriarTarefa(Guid oidCronograma, string txDescricaoTarefa, string oidSituacao, DateTime dtInicio, string login, string txObservacaoTarefa, string responsaveis, out List <CronogramaTarefa> tarefasImpactadas, ref DateTime dataHoraAcao, Int16 nbEstimativaInicial = 0, short nbIDReferencia = 0) { if (oidCronograma == null || oidCronograma == new Guid() || String.IsNullOrEmpty(oidSituacao)) { throw new ArgumentException("Os parametros session, oidCronograma sao obrigatorios."); } SituacaoPlanejamento situacaoPlanejamento = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(Guid.Parse(oidSituacao)); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(oidCronograma, txDescricaoTarefa, situacaoPlanejamento, dtInicio, responsaveis, login, out tarefasImpactadas, ref dataHoraAcao, txObservacaoTarefa, nbEstimativaInicial, nbIDReferencia); return(novaTarefa); }
public void DeveConsultarUmaSituacaoPlanejamentoPorOidQuandoExistirUmaSituacaoPlanejamentoCadastrada() { #region Criação do Cenário //Criando uma situação planejamento padrão var situacaoPlanejamento = CriarSituacaoPlanejamento("Não iniciado", CsTipoPlanejamento.Planejamento, CsTipoSituacaoPlanejamento.Ativo, CsPadraoSistema.Sim); SituacaoPlanejamentoDAO.CriarSituacaoPlanejamento(contexto, situacaoPlanejamento); #endregion #region Testando regra var situacaoPlanejamentoConsultada = SituacaoPlanejamentoDAO.ConsultarSituacaoPlanejamentoPorOid(situacaoPlanejamento.Oid); #endregion #region Validação Assert.IsNotNull(situacaoPlanejamento, "Não deve ser nulo, pois foi criada uma SituaçãoPlanejamento."); Assert.AreEqual(situacaoPlanejamento.Oid, situacaoPlanejamentoConsultada.Oid); #endregion }