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 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); }