public void Create(Notification newEntity) { if (newEntity.Task is TaskList) { CreateTaskListNotification(newEntity.User.UniqueId, newEntity.Task.Id, newEntity); } else { CreateNoteNotification(newEntity.User.UniqueId, newEntity.Task.Id, newEntity); } }
public void CreateNote(User user, string listId, string creatorId, Note noteData) { noteData.Creator = user; var list = _taskListManager.GetTaskList(user.UniqueId, listId, creatorId); noteData.ParentList = list; _repository.Create(noteData); // TODO create specific repo for note shares _userNotesRepo.Create(user.UniqueId, noteData.Id, listId); _noteUsersRepo.Create(noteData.Id, user.UniqueId, listId); foreach (var u in list.Users) { var notif = new Notification() { Task = noteData, User = u, Type = Notification.NotificationType.Insert }; _noticationMgr.CreateNotification(user.UniqueId, notif); } }
public void CreateTaskListNotification(string userId, string listId, Notification notificationData) { notificationData.Id = (++_notificationId).ToString(); var user = _userRepository.GetAll().FirstOrDefault(u => u.UniqueId == userId); if (user.Notifications == null) { user.Notifications = new List<Notification>(); } user.Notifications.Add(notificationData); notificationData.User = user; if (notificationData.Task == null) { // this can not be always done, because in delete notifications, // at this moment the repository does not have the list anymore notificationData.Task = _listRepository.Get(userId, listId); } }
public void UpdateTaskList(string userId, string listId, string creatorId, TaskList listData) { var listUsers = _listUsersRepo.GetAll(listId); if (listUsers == null) { throw new ObjectNotFoundException(); } if (!listUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } _repository.Update(creatorId, listId, listData); foreach (var user in listUsers) { var notif = new Notification() { Task = listData, User = user, Type = Notification.NotificationType.Update }; _noticationMgr.CreateNotification(userId, notif); } }
public void CreateNotification(string userId, Notification notificationData) { // dont notify the user that made the change if (userId == notificationData.User.UniqueId) { return; } notificationData.At = DateTime.Now; if (!_onlineProcessor.Send(notificationData)) { if (ProcessToEmail(notificationData)) { _queue.SendMessage(notificationData); } if (ProcessToRepository(notificationData)) { _repository.Create(notificationData); } } }
public void DeleteTaskList(string userId, string listId, string creatorId) { // only let the creator user delete a list if (userId != creatorId) { throw new NoPermissionException(); } var listUsers = _listUsersRepo.GetAll(listId); if (!listUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } var list = _repository.Get(creatorId, listId); if (list == null) { throw new ObjectNotFoundException(); } _repository.Delete(creatorId, listId); foreach (var user in listUsers) { var notif = new Notification() { User = user, Task = list, Type = Notification.NotificationType.Delete }; _noticationMgr.CreateNotification(userId, notif); } }
public void ShareTaskList(string userId, string listId, string creatorId, string shareUserId) { var listUsers = _listUsersRepo.GetAll(listId); if (!listUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } var list = _repository.Get(creatorId, listId); if (list == null) { throw new ObjectNotFoundException(); } _userListsRepo.Create(shareUserId, listId, creatorId); _listUsersRepo.Create(listId, shareUserId, ""); // TODO see later, really add name, need to check existance? var notif = new Notification() { Type = Notification.NotificationType.Share, Task = list, User = new User() { UniqueId = shareUserId } }; _noticationMgr.CreateNotification(userId, notif); }
public void UpdateNote(string userId, string listId, string noteId, Note noteData) { var noteUsers = _noteUsersRepo.GetAll(noteId); if (!noteUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } _repository.Update(listId, noteId, noteData); foreach (var user in noteUsers) { var notif = new Notification() { Task = noteData, User = user, Type = Notification.NotificationType.Update }; _noticationMgr.CreateNotification(userId, notif); } }
public void ShareNote(string userId, string listId, string noteId, string shareUserId) { var noteUsers = _noteUsersRepo.GetAll(noteId); if (!noteUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } var note = _repository.Get(listId, noteId); if (note == null) { throw new ObjectNotFoundException(); } _userNotesRepo.Create(shareUserId, noteId, listId); _noteUsersRepo.Create(noteId, shareUserId, listId); var notif = new Notification() { Type = Notification.NotificationType.Share, Task = note, User = new User() { UniqueId = shareUserId } }; _noticationMgr.CreateNotification(userId, notif); }
public void DeleteNote(string userId, string listId, string creatorId, string noteId) { var noteUsers = _noteUsersRepo.GetAll(noteId); if (!noteUsers.Any(u => u.UniqueId == userId)) { throw new NoPermissionException(); } var note = _repository.Get(listId, noteId); if (note == null) { throw new ObjectNotFoundException(); } _repository.Delete(listId, noteId); foreach (var user in noteUsers) { var notif = new Notification() { User = user, Task = note, Type = Notification.NotificationType.Delete }; _noticationMgr.CreateNotification(userId, notif); } var list = _taskListManager.GetTaskList(userId, listId, creatorId); foreach (var user in list.Users) { var notif = new Notification() { User = user, Task = list, Type = Notification.NotificationType.Update }; _noticationMgr.CreateNotification(userId, notif); } }
public void Update(string partitionKey, string rowKey, Notification changedEntity) { }
private bool ProcessToRepository(Notification notificationData) { // saving all notifications in database when the user is not online return true; }
private bool ProcessToEmail(Notification notificationData) { // TODO read notifications configurations for user return notificationData.Type == Notification.NotificationType.Share; }
public NotificationEntity(Notification n) : base(n.User.UniqueId, n.Id) { TaskId = n.Task.Id; IsList = (n.Task is TaskList); }