private void SalvarTarefa()
        {
            if (DataPrevInicioView > DataPrevTerminoView)
            {
                DataMaiorQueInicio = DataPrevInicioView;
                Toast.LongMessage(Mensagem.MENS_FORM_47);
                return;
            }
            Model.Tarefa modelTarefa = new Model.Tarefa()
            {
                Id              = servicoTarefa.ObterIdTarefaSelecionada(),
                NomeTarefa      = NomeTarefaView,
                TipoTarefa      = TipoTarefaView,
                IdResponsavel   = servicoTarefa.ObterIdDoResponsavelSelecionado(),
                DescricaoTarefa = DescricaoView,
                DataPrevInicio  = DataPrevInicioView,
                DataPrevTermino = DataPrevTerminoView,
                IdProjeto       = servicoTarefa.ObterIdDoProjetoSelecionado(),
                Estado          = servicoTarefa.ObterEstadoSelecionado(),
                Motivo          = RazaoView
            };

            if (modelTarefa.Estado == Estado.Iniciada)
            {
                modelTarefa.DataInicio = DateTime.Now;
            }

            if (modelTarefa.Estado == Estado.Feita)
            {
                modelTarefa.DataTermino = DateTime.Now;
            }

            servicoTarefa.AlterarTarefa(modelTarefa);
            Application.Current.MainPage.Navigation.PopAsync();
        }
예제 #2
0
 public Guid Persistir(Model.Tarefa objTarefa)
 {
     if (objTarefa.ID != null && objTarefa.ID.Value != Guid.Empty)
     {
         RepositoryService.Tarefa.Update(objTarefa);
         return(objTarefa.ID.Value);
     }
     else
     {
         return(RepositoryService.Tarefa.Create(objTarefa));
     }
 }
예제 #3
0
 public Color CorTarefa(Model.Tarefa tarefa)
 {
     if (DateTime.Now.Date <= tarefa.DataPrevTermino.Date && tarefa.Estado == Internal.Estado.Aberta ||
         tarefa.Estado == Internal.Estado.Iniciada)
     {
         return(Color.FromHex("#010870"));
     }
     else if (DateTime.Now.Date > tarefa.DataPrevTermino.Date && tarefa.Estado == Internal.Estado.Aberta ||
              tarefa.Estado == Internal.Estado.Iniciada)
     {
         return(Color.DarkRed);
     }
     else
     {
         return(Color.Green);
     }
 }
        private void DadosAutomaticos()
        {
            servicoTarefa = new TarefaService();
            servicoTarefa.SalvarIdTarefaSelecionada();
            tarefa = servicoTarefa.ObterTarefaSelecionada();

            NomeTarefaView      = tarefa.NomeTarefa;
            TipoTarefaView      = tarefa.TipoTarefa;
            DescricaoView       = tarefa.DescricaoTarefa;
            DataPrevInicioView  = tarefa.DataPrevInicio;
            DataPrevTerminoView = tarefa.DataPrevTermino;
            CriadorView         = servicoTarefa.ObterNomeCriadorTarefa();
            ResponsavelView     = servicoTarefa.ObterNomeResponsavelTarefa();
            ProjetoSelecionado  = servicoTarefa.ObterNomeProjetoDaTarefa();
            EstadoView          = tarefa.Estado;
            EstadoAnterior      = tarefa.Estado;
            Estados             = servicoTarefa.ListarEstadosDisponiveis(tarefa.Estado);
            RazaoView           = tarefa.Motivo;
        }
예제 #5
0
        public Tarefa Persistir(Model.Tarefa objTarefa, out string retorno)
        {
            //Somente Update
            retorno = string.Empty;
            Tarefa TmpTarefa = null;

            Trace.Add("Tarefa.Persistir IsUpdate: {0}", objTarefa.ID.HasValue);

            if (objTarefa.ID.HasValue)
            {
                TmpTarefa = RepositoryService.Tarefa.ObterPor(objTarefa.ID.Value);

                if (TmpTarefa != null)
                {
                    objTarefa.ID = TmpTarefa.ID;
                    RepositoryService.Tarefa.Update(objTarefa);

                    Trace.Add("Atualizando tarefa ID: {0}", objTarefa.ID.Value);

                    //Altera Status - Se necessário
                    if (!TmpTarefa.State.Equals(objTarefa.State) && objTarefa.State != null)
                    {
                        Trace.Add("Atualizando Status para: {0}", objTarefa.State.Value);
                        this.MudarStatus(TmpTarefa.ID.Value, objTarefa.State.Value, null);
                    }

                    return(TmpTarefa);
                }
                else
                {
                    retorno = "Tarefa - " + objTarefa.ID.Value.ToString() + " não cadastrada no Crm, ação de insert não permitida para entidade 'Tarefa'.";
                    Trace.Add(retorno);

                    return(null);
                }
            }

            return(null);
        }
예제 #6
0
        // CASO DE USO 4 – MONITORAMENTO POR TAREFAS
        public void MonitoramentoPorTarefas()
        {
            Trace       = new SDKore.Helper.Trace("MonitoramentoPorTarefa");
            mensagemLog = new List <string>();

            if (StatusCompromissoCumprido == null)
            {
                throw new ApplicationException("(CRM) A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido);
            }

            if (StatusCompromissoNaoCumprido == null)
            {
                throw new ApplicationException("(CRM) A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido);
            }

            List <CompromissosDoCanal> compromissosCanalVencidos = CompromissoDoCanalService.ListarAtivosVencidosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas);

            Trace.Add("Foram encontrados {0} vencidos para ser processado!", compromissosCanalVencidos.Count);
            Trace.SaveClear();

            foreach (var item in compromissosCanalVencidos)
            {
                var compromissoCanalUpdate = new CompromissosDoCanal(item.OrganizationName, item.IsOffline)
                {
                    ID = item.ID,
                    StatusCompromisso = new Lookup(StatusCompromissoNaoCumprido.ID.Value, "")
                };

                Trace.Add("Atualizando o compromisso do Canal [{0}] para não cumprido!", item.ID);
                Trace.SaveClear();

                RepositoryService.CompromissosDoCanal.Update(compromissoCanalUpdate);
            }

            List <CompromissosDoCanal> compromissosCanalCumpridos = CompromissoDoCanalService.ListarAtivosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas);

            Trace.Add("Foram encontrados {0} Cumpridos para ser processado!", compromissosCanalCumpridos.Count);
            Trace.SaveClear();

            foreach (var item in compromissosCanalCumpridos)
            {
                List <Tarefa> tarefas = RepositoryService.Tarefa.ListarPorReferenteAAtivo(item.ID.Value);

                // CRIA TAREFA CASO NAO EXISTA (CASO USO 4: STEP 6)
                if (tarefas.Count == 0)
                {
                    try
                    {
                        #region Obtem Parametros Global
                        if (item.UnidadeDeNegocio == null || item.Compromisso == null)
                        {
                            throw new ArgumentException("(CRM) O Comromisso do Canal a seguir não tem Unidade de Negócio ou Compromisso preenchido. " + item.ID.Value);
                        }

                        ParametroGlobal frequenciaChecklist = ParametroGlobal.ObterPor((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.FrequenciaChecklist,
                                                                                       null, null, null, null, item.Compromisso.Id, null, null);

                        ParametroGlobal atividadesChecklist = ParametroGlobal.ObterPor((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.AtividadesChecklist,
                                                                                       null, null, null, null, item.Compromisso.Id, null, null);

                        if (frequenciaChecklist == null)
                        {
                            InserirLogFormat("Parametro Global {0} não foi localizado.", Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.FrequenciaChecklist);
                            continue;
                        }

                        if (atividadesChecklist == null)
                        {
                            InserirLogFormat("Parametro Global {0} não foi localizado.", Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.AtividadesChecklist);
                            continue;
                        }

                        #endregion

                        #region Criando Tarefa

                        var task = new Model.Tarefa(OrganizationName, isOffline);
                        task.Assunto    = string.Format("Atividades Checklist - {0} - {1}", item.UnidadeDeNegocio.Name, item.Compromisso.Name);
                        task.ReferenteA = new Lookup(item.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(item));
                        task.Descricao  = atividadesChecklist.Valor;

                        task.DataInicial = DateTime.Now;
                        task.Conclusao   = DateTime.Today.AddDays(int.Parse(frequenciaChecklist.Valor));
                        task.Prioridade  = (int)Enum.Tarefa.Prioridade.Normal;
                        task.Status      = (int)Enum.Tarefa.StatusCode.NaoIniciada;

                        Trace.Add("Criando Tarefa para Compromisso do Canal [{0}]", item.ID.Value);
                        Trace.Add("Atividades Checklist [{0}]", atividadesChecklist.Valor);
                        Trace.Add("Frequencia Checklist [{0}]", frequenciaChecklist.Valor);

                        RepositoryService.Tarefa.Create(task);

                        #endregion
                    }
                    catch (Exception ex)
                    {
                        Trace.Add(ex);
                        InserirLog(SDKore.Helper.Error.Handler(ex));
                    }
                    finally
                    {
                        Trace.SaveClear();
                    }
                }
            }

            this.EnviaEmailDeLog("Monitoramento Por Tarefas");
        }
예제 #7
0
        public bool CriarTarefa(Lookup referenteA, string tiposolicitacaonome, string descricao, string ParecerAnterior, ParticipantesDoProcesso PartProcesso)
        {
            Guid   idProprietario   = Guid.Empty;
            string tipoProprietario = "";

            Model.Tarefa task = new Model.Tarefa(NomeDaOrganizacao, _isOffline);
            Model.SolicitacaoBeneficio tmpSolBen = new SolicitacaoBeneficio(NomeDaOrganizacao, _isOffline);
            Model.SolicitacaoCadastro  tmpSolCad = new SolicitacaoCadastro(NomeDaOrganizacao, _isOffline);

            List <RelacionamentoCanal> lstRelacionamento = new List <RelacionamentoCanal>();

            task.Assunto              = "Plugin - " + referenteA.Name;
            task.ReferenteA           = new Lookup(referenteA.Id, referenteA.Type);
            task.Assunto              = PartProcesso.Papel.Name + " - " + tiposolicitacaonome;
            task.Ordem                = PartProcesso.Ordem;
            task.PareceresAnteriores  = ParecerAnterior;
            task.DescricaoSolicitacao = descricao;
            task.Conclusao            = DateTime.Now.AddDays(1).AddHours(3);

            TipoDeAtividade tmpTipoDeAtividade = RepositoryService.TipoDeAtividade.ObterPorPapel(PartProcesso.Papel.Id);

            if (tmpTipoDeAtividade == null)
            {
                throw new ArgumentException("Tipo de Atividade do Participante Não Encontrado! : " + PartProcesso.Papel.Name + " : " + PartProcesso.Papel.Id.ToString());
            }

            if (tmpTipoDeAtividade.ID.HasValue)
            {
                task.TipoDeAtividade = new Lookup(tmpTipoDeAtividade.ID.Value, "itbc_tipoatividade");
            }

            if (PartProcesso.Equipe != null)
            {
                idProprietario   = PartProcesso.Equipe.Id;
                tipoProprietario = PartProcesso.Equipe.Type;
            }

            if (PartProcesso.Usuario != null)
            {
                idProprietario   = PartProcesso.Usuario.Id;
                tipoProprietario = PartProcesso.Usuario.Type;
            }

            if (PartProcesso.Contato != null)
            {
                idProprietario   = PartProcesso.Contato.Id;
                tipoProprietario = PartProcesso.Contato.Type;
            }

            if (PartProcesso.PapelNoCanal.HasValue)
            {
                if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower()))
                {
                    tmpSolCad         = RepositoryService.SolicitacaoCadastro.Retrieve(referenteA.Id);
                    lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolCad.Canal.Id);
                }
                if (referenteA.Type.ToLower().Equals(SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower()))
                {
                    tmpSolBen         = RepositoryService.SolicitacaoBeneficio.Retrieve(referenteA.Id);
                    lstRelacionamento = RepositoryService.RelacionamentoDoCanal.ListarPor(tmpSolBen.Canal.Id);
                }


                if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.DiretorDeUnidade)
                {
                    if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null)
                    {
                        throw new ArgumentException("Diretor da Unidade Não encontrado. Não é possivel criar o próximo passo de Tarefa!");
                    }

                    Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id);

                    if (_usuario == null)
                    {
                        throw new ArgumentException("Não foi encontrado o usuário.");
                    }

                    if (_usuario.Gerente == null)
                    {
                        throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada.");
                    }

                    //Descemos mais um nivel para pegar o gerente do gerente
                    _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(_usuario.Gerente.Id);

                    if (_usuario == null)
                    {
                        throw new ArgumentException("Não foi encontrado o usuário.");
                    }

                    if (_usuario.Gerente == null)
                    {
                        throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada.");
                    }

                    idProprietario   = _usuario.Gerente.Id;
                    tipoProprietario = _usuario.Gerente.Type;
                }

                if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.GerenteNacionalGerenteDeDistribuicao)
                {
                    if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor == null)
                    {
                        throw new ArgumentException("Gerente Nacional Gerente De Distribuicao Não encontrado. Não é possivel criar o próximo passo de Tarefa!");
                    }

                    Usuario _usuario = new Intelbras.CRM2013.Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline).ObterPor(lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id);

                    if (_usuario == null)
                    {
                        throw new ArgumentException("Não foi encontrado o usuário.");
                    }

                    if (_usuario.Gerente == null)
                    {
                        throw new ArgumentException("Gerente do Supervisor não confiurado.Operação cancelada.");
                    }

                    idProprietario   = _usuario.Gerente.Id;
                    tipoProprietario = _usuario.Gerente.Type;
                }

                if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.KeyAccountRepresentante)
                {
                    if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null)
                    {
                        idProprietario   = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id;
                        tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type;
                    }
                    else
                    {
                        throw new ArgumentException("Key Account Representante Não encontrado. Não é possivel criar o próximo passo de Tarefa!");
                    }
                }

                if (PartProcesso.PapelNoCanal.Value == (int)Domain.Enum.ParticipanteDoCanal.PapelNoCanal.SupervisorDeVendas)
                {
                    if (lstRelacionamento.First <RelacionamentoCanal>().Supervisor != null)
                    {
                        idProprietario   = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Id;
                        tipoProprietario = lstRelacionamento.First <RelacionamentoCanal>().Supervisor.Type;
                    }
                    else
                    {
                        throw new ArgumentException("Supervisor De Vendas Não encontrado. Não é possivel criar o próximo passo de Tarefa!");
                    }
                }
            }

            Guid idTask = RepositoryService.Tarefa.Create(task);

            if (idTask != Guid.Empty)
            {
                new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro(tipoProprietario, idProprietario, "task", idTask);
            }
            return(true);
        }