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); }
public static bool Remover(Guid idTarefa) { try { var idDataTarefa = DataTarefas.Find(df => df.Tarefas.Any(t => t.Id == idTarefa)).Id; CrossLocalNotifications.Current.Cancel(DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.Find(t => t.Id == idTarefa).IdNotificacao); DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.Remove(DataTarefas.Find(df => df.Id == idDataTarefa) .Tarefas.Find(t => t.Id == idTarefa)); if (!DataTarefas.Find(df => df.Id == idDataTarefa).Tarefas.Any()) { DataTarefas.Remove(DataTarefas.Find(df => df.Id == idDataTarefa)); } } catch (Exception e) { return(false); } SaveChanges(); return(true); }