示例#1
0
 public void AlterarPrioridade(PrioridadeEnum prioridadeEnum)
 {
     if ((StatusAtual == StatusEnum.Concluido) | (StatusAtual == StatusEnum.Cancelado))
     {
         AddNotification("Status", "Não é possível alterar a prioridade de um ticket concluído ou cancelado");
     }
     else
     {
         PrioridadeAtual = prioridadeEnum;
     }
 }
 public TarefaEntity(string titulo, PrioridadeEnum prioridade, TimeSpan hora, string descricao, bool realizado, NotificacaoTempoEnum notificacaoTempo, int idNotificacao)
 {
     Id               = Guid.NewGuid();
     Titulo           = titulo;
     Prioridade       = prioridade;
     Hora             = hora;
     Descricao        = descricao;
     Realizado        = realizado;
     NotificacaoTempo = notificacaoTempo;
     IdNotificacao    = idNotificacao;
 }
            public static TarefaEntity NewTarefa(Guid id, string titulo, PrioridadeEnum prioridade, TimeSpan hora, string descricao, bool realizado, NotificacaoTempoEnum notificacaoTempo, int idNotificacao)
            {
                var tarefa = new TarefaEntity()
                {
                    Id               = id,
                    Titulo           = titulo,
                    Prioridade       = prioridade,
                    Hora             = hora,
                    Descricao        = descricao,
                    Realizado        = realizado,
                    NotificacaoTempo = notificacaoTempo,
                    IdNotificacao    = idNotificacao
                };

                return(tarefa);
            }
        public static bool Cadastrar(DateTime dia, DateTime?diaFinal, List <DiaSemanaEnum> diasSemanas, string titulo, PrioridadeEnum prioridade, TimeSpan hora, string descricao, NotificacaoTempoEnum notificacaoTempo)
        {
            try
            {
                hora = new TimeSpan(hora.Days, hora.Hours, hora.Minutes, 0);
                var tarefa = new TarefaEntity(titulo, prioridade, hora, descricao, false, notificacaoTempo, NextIdNotification());

                if (DataTarefas.Any(df => df.Dia == dia))
                {
                    DataTarefas.Find(df => df.Dia == dia).AddTarefa(tarefa);
                }
                else
                {
                    var dataTarefa = new DataTarefaEntity(dia, new List <TarefaEntity>());
                    dataTarefa.AddTarefa(tarefa);
                    DataTarefas.Add(dataTarefa);
                }

                var dataHoraNotificacao = DataTarefas.Find(df => df.Dia == dia).NotificacaoBaseDateTime(tarefa.Id);
                if (tarefa.NotificacaoTempo.Minutos != 0)
                {
                    dataHoraNotificacao = dataHoraNotificacao.AddMinutes(tarefa.NotificacaoTempo.Minutos);
                }
                CrossLocalNotifications.Current.Show(titulo, descricao, tarefa.IdNotificacao, dataHoraNotificacao);

                if (diaFinal.HasValue &&
                    diasSemanas != null &&
                    diasSemanas.Any(ds => ds.Ativo && ds.Aplicar))
                {
                    foreach (var date in Enumerable.Range(0, 1 + diaFinal.Value.Subtract(dia).Days)
                             .Select(offset => dia.AddDays(offset))
                             .ToList()
                             .FindAll(date => date > dia && diasSemanas.Where(ds => ds.Aplicar && ds.Ativo).Select(ds => ds.Id).Contains(date.DayOfWeek))
                             )
                    {
                        var res = Cadastrar(date, null, null, titulo, prioridade, hora, descricao, notificacaoTempo);
                    }
                }
            }
            catch (Exception e)
            {
                return(false);
            }

            SaveChanges();
            return(true);
        }
        public static bool Alterar(Guid idDataTarefa, DateTime dia, Guid idTarefa, string titulo, PrioridadeEnum prioridade, TimeSpan hora, string descricao, bool realizado, NotificacaoTempoEnum notificacaoTempo)
        {
            try
            {
                hora = new TimeSpan(hora.Days, hora.Hours, hora.Minutes, 0);
                var idNotificacao = DataTarefas.Find(dt => dt.Tarefas.Exists(t => t.Id == idTarefa)).Tarefas
                                    .Find(t => t.Id == idTarefa).IdNotificacao;
                var tarefa = TarefaEntity.TarefaFactory.NewTarefa(idTarefa, titulo, prioridade, hora, descricao, realizado, notificacaoTempo, idNotificacao);
                if (DataTarefas.Any(df => df.Dia == dia && df.Id == idDataTarefa))
                {
                    var index = DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.IndexOf(DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.Find(t => t.Id == idTarefa));
                    DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas[index] = tarefa;
                }
                else
                {
                    if (DataTarefas.Any(df => df.Dia == dia))
                    {
                        DataTarefas.Find(df => df.Dia == dia).AddTarefa(tarefa);
                    }
                    else
                    {
                        var dataTarefa = new DataTarefaEntity(dia, new List <TarefaEntity>());
                        dataTarefa.AddTarefa(tarefa);
                        DataTarefas.Add(dataTarefa);
                    }

                    DataTarefas.Find(df => df.Id == idDataTarefa).RemoveTarefa(tarefa);

                    if (!DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.Any())
                    {
                        DataTarefas.Remove(DataTarefas.Find(df => df.Id == idDataTarefa));
                    }
                }

                CrossLocalNotifications.Current.Cancel(tarefa.IdNotificacao);

                if (!tarefa.Realizado)
                {
                    var dataHoraNotificacao = DataTarefas.Find(df => df.Dia == dia).NotificacaoBaseDateTime(tarefa.Id);
                    if (tarefa.NotificacaoTempo.Minutos != 0)
                    {
                        dataHoraNotificacao = dataHoraNotificacao.AddMinutes(tarefa.NotificacaoTempo.Minutos);
                    }
                    CrossLocalNotifications.Current.Show(titulo, descricao, tarefa.IdNotificacao, dataHoraNotificacao);
                }
            }
            catch (Exception e)
            {
                return(false);
            }

            SaveChanges();
            return(true);
        }