private void PausarTarefa_Execute(object sender, SimpleActionExecuteEventArgs e) { if (View.Id == "SubTarefa_ListView") { SubTarefa subT = (SubTarefa)e.CurrentObject; subT.Save(); if (subT.EmTeste) { subT.StatusSubTarefa = StatusSubTarefaEnum.TestePausado; } else { subT.StatusSubTarefa = StatusSubTarefaEnum.Pausado; } if (subT.HistoricoTempo == null) { throw new UserFriendlyException("Subtarefa não foi iniciada"); } //Pega o Ultimo registro TempoTarefa _horaPausa = subT.HistoricoTempo.FirstOrDefault(x => x.HoraFim == TimeSpan.Parse("00:00:00")); if (_horaPausa != null) { _horaPausa.HoraFim = DateTime.Now.TimeOfDay; _horaPausa.Save(); } subT.Save(); ObjectSpace.CommitChanges(); } View.Refresh(); }
private void btnIniciarTarefa_Execute(object sender, SimpleActionExecuteEventArgs e) { if (View.Id == "SubTarefa_ListView") { SubTarefa subT = (SubTarefa)e.CurrentObject; //se status pendente seta data inicio se não continua a mesma if (subT.StatusSubTarefa == StatusSubTarefaEnum.Pendente) { subT.DataInicio = DateTime.Now; } if (subT.DataInicio == null) { subT.DataInicio = DateTime.Now; } TempoTarefa _tempoTarefa = ObjectSpace.CreateObject <TempoTarefa>(); _tempoTarefa.Data = DateTime.Now.Date; _tempoTarefa.HoraInicio = DateTime.Now.TimeOfDay; //Pega User da Sessão pela Id _tempoTarefa.User = ObjectSpace.GetObjectByKey <Usuario>(SecuritySystem.CurrentUserId); subT.HistoricoTempo.Add(_tempoTarefa); //Se Status do Projeto = Pendente o mesmo passa para EmExecução if (subT?.Tarefa?.Projeto?.StatusProjeto == StatusProjetoEnum.Pendente) { subT.Tarefa.Projeto.StatusProjeto = StatusProjetoEnum.EmExecução; subT.Save(); } //Se Status Tarefa = Pendente Ou Pausado O mesmo passa para EmExecução if (!subT.EmTeste) { subT.StatusSubTarefa = StatusSubTarefaEnum.EmDesenvolvimento; subT.Save(); if (subT?.Tarefa?.StatusTarefa == StatusTarefaEnum.Pendente || subT?.Tarefa?.StatusTarefa == StatusTarefaEnum.Pausado) { subT.Tarefa.StatusTarefa = StatusTarefaEnum.EmDesenvolvimento; subT.Save(); } } if (subT.EmTeste) { subT.StatusSubTarefa = StatusSubTarefaEnum.EmTeste; } subT.Correcao = false; ////TEMPORAIO PARA TESTE //if (subT?.StatusSubTarefa == StatusSubTarefaEnum.Finalizado) //{ // subT.StatusSubTarefa = StatusSubTarefaEnum.EmDesenvolvimento; subT.Save(); //} ObjectSpace.CommitChanges(); } View.Refresh(); }
private void btnAprovarTarefa_Execute(object sender, SimpleActionExecuteEventArgs e) { SubTarefa subT = (SubTarefa)e.CurrentObject; //Fazer Varredura em todas As Tarefas Pertencentes Ao Mesmo Projeto if (subT.StatusSubTarefa == StatusSubTarefaEnum.Finalizado || subT.StatusSubTarefa == StatusSubTarefaEnum.EmTeste || subT.StatusSubTarefa == StatusSubTarefaEnum.TesteFinalizado) { subT.StatusSubTarefa = StatusSubTarefaEnum.Aprovado; subT.Correcao = false; subT.EmTeste = false; subT.DataFim = DateTime.Now; XPCollection <TempoTarefa> tempo = new XPCollection <TempoTarefa>(); tempo = new XPCollection <TempoTarefa>(((XPObjectSpace)ObjectSpace).Session); foreach (TempoTarefa x in tempo) { x.HoraFim = x.HoraFim; if (x != null) { x.Save(); if (subT.Correcao) { subT.Correcao = false; } ; break; } } subT.Save(); #region Verifica Status Tarefa Mãe //Cria Collection de Todas subTarefas da Mesma tarefa XPCollection <SubTarefa> sub = new XPCollection <SubTarefa>(((XPObjectSpace)ObjectSpace).Session, CriteriaOperator.Parse("[Tarefa] = ?", subT.Tarefa)); int num = 0; foreach (SubTarefa item in sub) { if (item.StatusSubTarefa != StatusSubTarefaEnum.Aprovado && item.StatusSubTarefa != StatusSubTarefaEnum.Cancelado) { num += 1; } } //Se NÃO encontrou Sub Tarefa com Status entre EmExecução, Pendente, Pausado, Reprovado, Aprovado, EmTeste //Tarefa MÃE pode ser Finalizada por que Todas suas SubTarefas Estão Finalizadas ou Canceladas //valor 1 pq Status (SubTarefa) do objeto atual ainda não esta Finalizado ou Cancelado if (num == 0) { //Tarefa MÃE será Finalizada subT.Tarefa.StatusTarefa = StatusTarefaEnum.Finalizado; subT.DataFim = DateTime.Now; } #endregion #region Atualiza Status Projeto Principal //Faz Busca de Tarefas do Mesmo Projeto XPCollection <Tarefa> tarefas = new XPCollection <Tarefa>(((XPObjectSpace)ObjectSpace).Session, CriteriaOperator.Parse("[Projeto] = ?", subT.Tarefa.Projeto)); int cont = 0; foreach (Tarefa itemTarefa in tarefas) { if (itemTarefa.StatusTarefa != StatusTarefaEnum.Cancelado && itemTarefa.StatusTarefa != StatusTarefaEnum.Aprovado && itemTarefa.StatusTarefa != StatusTarefaEnum.Finalizado) { cont += 1; } } //Se Todas Tarefas Estiverem Finalizadas O Projeto Pai Será Finalizado //Igual a "0" por Objeto (Tarefa) ja foi finalizada if (cont == 0) { //Projeto Pai será Finalizado subT.Tarefa.Projeto.StatusProjeto = StatusProjetoEnum.Finalizado; subT.Tarefa.Projeto.DataFim = DateTime.Now; } #endregion } ObjectSpace.CommitChanges(); View.Refresh(); }
private void btnFinalizar_Execute(object sender, SimpleActionExecuteEventArgs e) { if (View.Id == "SubTarefa_ListView") { //Converte Objeto Selecionado em SubTarefa SubTarefa SubT = (SubTarefa)e.CurrentObject; //Procura em SubTarefa Status em: EmExecução, Pendente, Pausado, Reprovado, Aprovado, EmTeste //IEnumerable<SubTarefa> subtarefas = SubT.Tarefa.SubTarefa.Where(x => x.StatusSubTarefa != StatusSubTarefaEnum.Finalizado //&& x.StatusSubTarefa != StatusSubTarefaEnum.Cancelado && x.Tarefa == SubT.Tarefa); //Procura SubTarefas com Status EmExecução ou Pausado //Se Ecnontrou StatusSubTarefa = Finalizado if (SubT.StatusSubTarefa == StatusSubTarefaEnum.EmDesenvolvimento || SubT.StatusSubTarefa == StatusSubTarefaEnum.Pausado || SubT.StatusSubTarefa == StatusSubTarefaEnum.EmTeste || SubT.StatusSubTarefa == StatusSubTarefaEnum.TestePausado) { if (SubT.EmTeste) { SubT.StatusSubTarefa = StatusSubTarefaEnum.TesteFinalizado; SubT.Save(); } else { SubT.StatusSubTarefa = StatusSubTarefaEnum.Desenvolvido; SubT.Save(); } TempoTarefa _horaPausa = SubT.HistoricoTempo.FirstOrDefault(x => x.HoraFim == TimeSpan.Parse("00:00:00")); if (_horaPausa != null) { _horaPausa.HoraFim = DateTime.Now.TimeOfDay; _horaPausa.Save(); } #region Verifica Status Tarefa Mãe //Cria Collection de Todas subTarefas da Mesma tarefa XPCollection <SubTarefa> sub = new XPCollection <SubTarefa>(((XPObjectSpace)ObjectSpace).Session, CriteriaOperator.Parse("[Tarefa] = ?", SubT.Tarefa)); int num = 0; foreach (SubTarefa item in sub) { if (item.StatusSubTarefa != StatusSubTarefaEnum.Desenvolvido && item.StatusSubTarefa != StatusSubTarefaEnum.Cancelado && item.StatusSubTarefa != StatusSubTarefaEnum.Aprovado) { num += 1; } } //Se NÃO encontrou Sub Tarefa com Status entre EmExecução, Pendente, Pausado, Reprovado, Aprovado, EmTeste //Tarefa MÃE pode ser Finalizada por que Todas suas SubTarefas Estão Finalizadas ou Canceladas //valor 1 pq Status (SubTarefa) do objeto atual ainda não esta Finalizado ou Cancelado if (num == 0) { //Tarefa MÃE será Finalizada SubT.Tarefa.StatusTarefa = StatusTarefaEnum.Desenvolvido; } #endregion } #region Atualiza Status Projeto Principal ////Faz Busca de Tarefas do Mesmo Projeto //XPCollection<Tarefa> tarefas = new XPCollection<Tarefa>(((XPObjectSpace)ObjectSpace).Session, CriteriaOperator.Parse("[Projeto] = ?", SubT.Tarefa.Projeto)); //int cont = 0; //foreach (Tarefa itemTarefa in tarefas) //{ // if (itemTarefa.StatusTarefa != StatusTarefaEnum.Cancelado && itemTarefa.StatusTarefa != StatusTarefaEnum.Finalizado) // { // cont += 1; // } //} ////Se Todas Tarefas Estiverem Finalizadas O Projeto Pai Será Finalizado ////Igual a "0" por Objeto (Tarefa) ja foi finalizada //if (cont == 0) //{ // //Projeto Pai será Finalizado // SubT.Tarefa.Projeto.StatusProjeto = StatusProjetoEnum.Finalizado; // SubT.Tarefa.Projeto.DataFim = DateTime.Now; //} #endregion ObjectSpace.CommitChanges(); } View.Refresh(); }