/// <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. Obs: Ela pode ser independente de projeto ou não. /// É usado pela classe CronogramaTarefa ou pode ser avulsa. /// </summary> /// <param name="txDescricaoTarefa">descrição da tarefa</param> /// <param name="txObservacaoTarefa">observação da tarefa</param> /// <param name="situacaoPlanejamento">situação da tarefaClone</param> /// <param name="responsavel">responsáveis pela tarefaClone</param> /// <param name="estimativaInicial">estimativa inicial para tarefa</param> /// <param name="dtInicio">data de início da tarefa</param> public static Tarefa CriarTarefa(string txDescricaoTarefa, SituacaoPlanejamento situacaoPlanejamento, DateTime dtInicio, string login, string txObservacaoTarefa = "", string responsaveis = null, Int16 estimativaInicial = 0) { if (txDescricaoTarefa == null || dtInicio == null || situacaoPlanejamento == null || login == null) { throw new ArgumentException("Os parâmetros txDescricao, dtInício, situacaoPlanejamento e login são obrigatórios."); } var novaTarefa = new Tarefa { TxDescricao = txDescricaoTarefa, TxObservacao = String.Empty, TxResponsaveis = responsaveis, NbEstimativaInicial = estimativaInicial, NbEstimativaRestante = estimativaInicial.ToTicks(), DtInicio = dtInicio, OidSituacaoPlanejamento = situacaoPlanejamento.Oid, SituacaoPlanejamento = situacaoPlanejamento }; Colaborador colaborador = ColaboradorDAO.ConsultarColaborador(login, o => o.Usuario.Person); if (colaborador != null) { novaTarefa.OidAtualizadoPor = colaborador.Oid; novaTarefa.AtualizadoPor = colaborador; } novaTarefa.DtAtualizadoEm = DateUtil.ConsultarDataHoraAtual(); TarefaDao.SalvarTarefa(novaTarefa); TarefaHistoricoEstimativaBo.CriarHistorico(DateUtil.ConsultarDataHoraAtual(), novaTarefa.Oid, novaTarefa.NbEstimativaRestante); TarefaLogAlteracaoBo.CriarLogTarefa(novaTarefa, null); return(novaTarefa); }
/// <summary> /// Método responsável por, atribuir um colaborador à tarefa, caso ele não esteja como responsável pela mesma, /// atualizar a situação planejamento da tarefa e atualizar as estimativas da tarefa. /// </summary> /// <param name="oidTarefa">oid da tarefa</param> /// <param name="colaborador">Objeto Colaborador</param> /// <param name="situacaoPlanejamento">Objeto Situação Planejamento</param> /// <param name="nbHoraRealizado">Hora realizado da atividade</param> /// <param name="nbHoraRestante">Hora restante da atividade</param> public static void AtualizarDadosTarefa(Guid oidTarefa, Colaborador colaborador, SituacaoPlanejamento situacaoPlanejamento, TimeSpan nbHoraRealizado, TimeSpan nbHoraRestante, bool CsLinhaBaseSalva) { if (oidTarefa == null || oidTarefa == new Guid()) { throw new ArgumentException("O parâmetro oidTarefa é inválido"); } using (WexDb contexto = ContextFactoryManager.CriarWexDb()) { Tarefa tarefa = TarefaDao.ConsultarTarefaPorOid(oidTarefa); if (tarefa == null) { return; } //Atualiza a situação planejamento da tarefa e estimativas if (situacaoPlanejamento != null && !tarefa.OidSituacaoPlanejamento.Equals(situacaoPlanejamento.Oid)) { tarefa.SituacaoPlanejamento = null; tarefa.OidSituacaoPlanejamento = situacaoPlanejamento.Oid; } if (colaborador != null && !tarefa.OidAtualizadoPor.Equals(colaborador.Oid)) { tarefa.AtualizadoPor = null; tarefa.OidAtualizadoPor = colaborador.Oid; } EstimarHorasRestantesSugeridaPorTipoSituacaoPlanejamento(tarefa, nbHoraRestante.Ticks, situacaoPlanejamento, true); tarefa.EstimativaRealizadoHora += nbHoraRealizado; tarefa.DtAtualizadoEm = DateUtil.ConsultarDataHoraAtual(); tarefa.CsLinhaBaseSalva = CsLinhaBaseSalva; //Atualiza responsáveis tarefa if (nbHoraRealizado.Ticks > 0) { if (!String.IsNullOrEmpty(tarefa.TxResponsaveis) || !String.IsNullOrWhiteSpace(tarefa.TxResponsaveis)) { List <string> ResponsaveisTarefa = new List <string>(tarefa.TxResponsaveis.Split(',')); if (colaborador != null) { if (!ResponsaveisTarefa.Contains(colaborador.NomeCompleto)) { tarefa.TxResponsaveis += "," + colaborador.NomeCompleto; } } } else { tarefa.TxResponsaveis += colaborador.NomeCompleto; } } contexto.Tarefa.Attach(tarefa); contexto.Entry(tarefa).State = EntityState.Modified; contexto.SaveChanges(); TarefaHistoricoEstimativaBo.CriarHistorico(DateUtil.ConsultarDataHoraAtual(), tarefa.Oid, tarefa.NbEstimativaRestante); } }