//Efetuar correções ViewBag incorreta public ActionResult Editar(int id) { ViewBag.Tarefas = new SelectList(new TarefaDao().Buscar().ToDictionary(t => t.TarefaID, t => t.NomeTarefa), "Key", "Value"); var tarefa = new TarefaDao().Buscar(id); return(View(tarefa)); }
public void ExcluirTarefaQuandoNaoExistirTarefaParaExcluir() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dtInicio = new DateTime(); //cria tarefa Tarefa tarefa = new Tarefa(); tarefa = TarefaBo.CriarTarefa((string)"Tarefa 01", situacaoPlanejamento, dtInicio, colaborador1.Usuario.UserName, (string)"Criar método", responsaveis, 3); List <Guid> oidTarefas = new List <Guid>(); oidTarefas.Add(tarefa.Oid); List <Guid> oidTarefasExcluidas = new List <Guid>(); TarefaBo.ExcluirTarefa(contexto, oidTarefas); oidTarefasExcluidas = TarefaBo.ExcluirTarefa(contexto, oidTarefas); Tarefa tarefaExcluida = TarefaDao.ConsultarTarefaPorOid(tarefa.Oid); Assert.AreEqual(0, oidTarefasExcluidas.Count, "Não deve existir nenhuma tarefa na lista, pois nenhuma tarefa foi deletada (pois a tarefa já estava deletada)"); Assert.IsNull(tarefaExcluida, "Deveria ser nulo, pois a tarefa deveria ter sido excluida."); }
/// <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); }
public void ExcluirTarefaQuandoExistirHistoricoELogAlteracao() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dtInicio = new DateTime(); //cria tarefa Tarefa tarefa = new Tarefa(); tarefa = TarefaBo.CriarTarefa((string)"Tarefa 01", situacaoPlanejamento, dtInicio, colaborador1.Usuario.UserName, (string)"Criar método", responsaveis, 3); TarefaHistoricoTrabalho tarefaHistorico = new TarefaHistoricoTrabalho(); tarefaHistorico.OidTarefa = tarefa.Oid; tarefaHistorico.OidColaborador = colaborador1.Oid; tarefaHistorico.DtRealizado = DateTime.Now; tarefaHistorico.HoraFinal = new TimeSpan(10, 0, 0); tarefaHistorico.HoraInicio = new TimeSpan(5, 0, 0); tarefaHistorico.HoraRealizado = new TimeSpan(4, 0, 0); tarefaHistorico.HoraRestante = new TimeSpan(6, 0, 0); tarefaHistorico.TxComentario = "Comentario"; contexto.TarefaHistoricoTrabalho.Add(tarefaHistorico); contexto.SaveChanges(); List <Guid> oidTarefas = new List <Guid>(); oidTarefas.Add(tarefa.Oid); List <Guid> oidTarefasExcluidas = new List <Guid>(); oidTarefasExcluidas = TarefaBo.ExcluirTarefa(contexto, oidTarefas); Tarefa tarefaExcluida = TarefaDao.ConsultarTarefaPorOid(tarefa.Oid); TarefaHistoricoTrabalho tarefaHistoricoExcluido = contexto.TarefaHistoricoTrabalho.FirstOrDefault(o => o.OidTarefa == tarefa.Oid); TarefaLogAlteracao tarefaLogExcluido = contexto.TarefaLogAlteracao.FirstOrDefault(o => o.OidTarefa == tarefa.Oid); Assert.AreEqual(1, oidTarefasExcluidas.Count, "Deve ter excluido uma tarefa"); Assert.AreEqual(tarefa.Oid, oidTarefasExcluidas[0], "Deve ter excluido a tarefa com este oid"); Assert.IsNull(tarefaExcluida, "Deveria ser nulo, pois a tarefa deveria ter sido excluida."); Assert.IsNotNull(tarefaHistoricoExcluido, "Não deveria ser nulo, pois a tarefa deveria ter sido excluida, mas o historico permanece."); Assert.IsNotNull(tarefaLogExcluido, "Não deveria ser nulo, pois a tarefa deveria ter sido excluida, mas o Log permanece."); }
/// <summary> /// Método responsável por excluir uma tarefa. /// </summary> /// <param name="contexto">Sessão Corrente</param> /// <param name="oidTarefas">Lista com os oids das tarefas a serem excluidas</param> /// <returns>Lista contendo os oids das tarefas que foram excluidas.</returns> public static List <Guid> ExcluirTarefa(WexDb contexto, List <Guid> oidTarefas) { List <Guid> oidTarefasExcluidas = new List <Guid>(); foreach (Guid oidTarefa in oidTarefas) { if (TarefaDao.ExcluirTarefa(oidTarefa)) { oidTarefasExcluidas.Add(oidTarefa); } } return(oidTarefasExcluidas); }
public void AtualizarDadosTarefaQuandoJáExistirColaboradorNaListaDeResponsaveisTest() { //Cria situação planejamento SituacaoPlanejamento situacaoPlanejamentoNaoIniciado = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Não Iniciado", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Não, true); //Cria situação planejamento SituacaoPlanejamento situacaoPlanejamentoEmAndamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "Em Andamento", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Não, true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = String.Format("{0}", colaborador1.NomeCompleto); //iníco tarefa DateTime dtInicio = new DateTime(); //cria tarefa Tarefa tarefa1 = new Tarefa(); tarefa1 = TarefaBo.CriarTarefa("Tarefa 01", situacaoPlanejamentoNaoIniciado, dtInicio, colaborador1.Usuario.UserName, "Criar método1", responsaveis, 5); //busca tarefa criada Tarefa tarefaCriada = TarefaDao.ConsultarTarefaPorOid(tarefa1.Oid, o => o.SituacaoPlanejamento); //simulando passagem de parâmetros ao criar um histórico. TarefaBo.AtualizarDadosTarefa(tarefaCriada.Oid, colaborador1, situacaoPlanejamentoEmAndamento, new TimeSpan(3, 0, 0), new TimeSpan(2, 0, 0), tarefaCriada.CsLinhaBaseSalva); Tarefa tarefaAlterada = TarefaDao.ConsultarTarefaPorOid(tarefaCriada.Oid, o => o.SituacaoPlanejamento); List <string> responsaveisTarefa = new List <string>(tarefaAlterada.TxResponsaveis.Split(',')); //Responsável Tarefa Assert.AreEqual(1, responsaveisTarefa.Count, "Deveria ter um responsável, pois foi adicionado apenas 1 colaborador pela tarefa."); Assert.AreEqual(colaborador1.NomeCompleto, responsaveisTarefa.First(), "Deveriam ser iguais, pois é o único cadastrado."); //Situacao Planejamento Assert.AreEqual(tarefaAlterada.OidSituacaoPlanejamento, situacaoPlanejamentoEmAndamento.Oid, "Deveria ser o mesmo Oid, pois a tarefa foi alterada para Em Andamento."); //Estimativas Assert.AreEqual(new TimeSpan(2, 0, 0), tarefaAlterada.NbEstimativaRestante.ToTimeSpan(), "Deveriam ser iguais, pois a tarefa possui 5 horas de estimativa inicial e foram realizadas 3 horas, então sobram 2"); Assert.AreEqual(new TimeSpan(3, 0, 0), tarefaAlterada.NbRealizado.ToTimeSpan(), "Deveria ser 3 horas, pois foram realizadas 3 horas na tarefa e o historico foi salvo."); }
/// <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); }
public void EditarTarefaQuandoSalvarLinhaBaseTarefaTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Cronograma cronogramaPadrao1 = CronogramaBo.CriarCronogramaPadrao(contexto); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dataInicio = DateTime.Now; List <CronogramaTarefa> tarefasImpactadas; DateTime dataHoraAcao = new DateTime(); CronogramaTarefa novaTarefa = CronogramaTarefaBo.CriarCronogramaTarefa(cronogramaPadrao1.Oid, (string)"Tarefa 01", situacaoPlanejamento, dataInicio, responsaveis, colaborador1.Usuario.UserName, out tarefasImpactadas, ref dataHoraAcao, (string)"Criar método", 3, 0); //busca tarefa criada CronogramaTarefa tarefaCriada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(novaTarefa.Oid, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa); bool salvarLinhaBaseTarefa = true; TimeSpan estimativaRestante = TarefaDao.ConsultarTarefaPorOid((Guid)tarefaCriada.OidTarefa).EstimativaRestanteHora; string responsaveisTarefaEdicao = colaborador1.NomeCompleto; TarefaBo.EditarTarefa(tarefaCriada.Oid.ToString(), tarefaCriada.Tarefa.TxDescricao, tarefaCriada.Tarefa.SituacaoPlanejamento.Oid.ToString(), colaborador1.Usuario.UserName, tarefaCriada.Tarefa.TxObservacao, responsaveisTarefaEdicao, tarefaCriada.Tarefa.NbEstimativaInicial, estimativaRestante, new TimeSpan(0), salvarLinhaBaseTarefa, dataInicio); //busca tarefa criada CronogramaTarefa tarefaAlterada = CronogramaTarefaDao.ConsultarCronogramaTarefaPorOid(tarefaCriada.Oid, o => o.Tarefa.SituacaoPlanejamento, o => o.Cronograma, o => o.Tarefa.AtualizadoPor.Usuario.Person, o => o.Tarefa.LogsAlteracao, o => o.Tarefa.TarefaHistoricoTrabalhos, o => o.Tarefa.TarefaResponsaveis); Assert.AreEqual(salvarLinhaBaseTarefa, tarefaAlterada.Tarefa.CsLinhaBaseSalva, "Deveria ter salvo a linha de base"); Assert.AreEqual(estimativaRestante, tarefaAlterada.Tarefa.NbEstimativaRestante.ToTimeSpan(), "Deveria ter mudado a estimativa restando, pois salvou a linha de base"); }
public void CriarTarefaQuandoCriarLogPrimeiraVezTest() { //cria situação planejamento SituacaoPlanejamento situacaoPlanejamento = CronogramaFactoryEntity.CriarSituacaoPlanejamento(contexto, "S1", CsTipoSituacaoPlanejamento.Ativo, CsTipoPlanejamento.Execução, CsPadraoSistema.Sim, true); Colaborador colaborador1 = ColaboradorFactoryEntity.CriarColaborador(contexto, "anderson.lins", true); string responsaveis = colaborador1.NomeCompleto; //iníco tarefa DateTime dtInicio = new DateTime(); //cria tarefa Tarefa tarefa = new Tarefa(); tarefa = TarefaBo.CriarTarefa((string)"Tarefa 01", situacaoPlanejamento, dtInicio, colaborador1.Usuario.UserName, (string)"Criar método", responsaveis, 3); DateUtil.CurrentDateTime = (DateTime)tarefa.DtAtualizadoEm; Assert.AreEqual(DateUtil.CurrentDateTime, tarefa.DtAtualizadoEm); Assert.AreEqual(colaborador1.NomeCompleto, TarefaDao.ConsultarTarefaPorOid(tarefa.Oid, o => o.AtualizadoPor.Usuario.Person).AtualizadoPor.NomeCompleto); }
public ActionResult Detalhar(int id) { Tarefa tarefa = new TarefaDao().Buscar(id); return(View(tarefa)); }
// GET: Tarefa public ActionResult Index() { var tarefas = new TarefaDao().Buscar(); return(View(tarefas)); }
/// <summary> /// Método responsável por excluir uma tarefa. /// </summary> /// <param name="contexto">Sessão Corrente</param> /// <param name="oidTarefa">Lista com os oids das tarefas a serem excluidas</param> /// <returns>Lista contendo os oids das tarefas que foram excluidas.</returns> public static Guid ExcluirTarefa(WexDb contexto, Guid oidTarefa) { return(TarefaDao.ExcluirTarefa(oidTarefa) ? oidTarefa : new Guid()); }
/// <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); } }