Пример #1
0
        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();
        }
Пример #2
0
        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();
        }
Пример #3
0
        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();
        }