public static async Task ArchiveTimedEventAsync(ulong eventId) { try { using (UserContext db = new UserContext()) { var eventToArchive = await db.UserDisciplinaryEventStorageTable.FindAsync(eventId); if (eventToArchive != null) { db.UserDisciplinaryEventStorageTable.Remove(eventToArchive); var archivedEvent = new UserDisciplinaryEventArchive() { DateArchived = DateTime.UtcNow, DateInserted = eventToArchive.DateInserted, DateToRemove = eventToArchive.DateToRemove, DisciplineEventID = eventToArchive.DisciplineEventID, DisciplineType = eventToArchive.DiscipinaryEventType, ModeratorID = eventToArchive.ModeratorID, Reason = eventToArchive.Reason, UserID = eventToArchive.UserID }; await db.UserDisciplinaryEventArchiveTable.AddAsync(archivedEvent); await db.SaveChangesAsync(); } } } catch (Exception ex) { ExceptionManager.HandleException(ErrMessages.StorageException, ex); } }
public static async Task <bool> RemoveActiveDisciplinaries(ulong userID) { try { using (var db = new UserContext()) { var activeDisciplinaries = await db.UserDisciplinaryEventStorageTable.AsQueryable().AnyAsync(x => x.UserID == userID); if (activeDisciplinaries) { var itemsToRemove = await db.UserDisciplinaryEventStorageTable.AsQueryable().Where(x => x.UserID == userID).ToListAsync(); db.RemoveRange(itemsToRemove); List <UserDisciplinaryEventArchive> eventsToArchive = new List <UserDisciplinaryEventArchive>(); foreach (UserDisciplinaryEventStorage eventToArchive in itemsToRemove) { var archivedEvent = new UserDisciplinaryEventArchive() { DateArchived = DateTime.UtcNow, DateInserted = eventToArchive.DateInserted, DateToRemove = eventToArchive.DateToRemove, DisciplineEventID = eventToArchive.DisciplineEventID, DisciplineType = eventToArchive.DiscipinaryEventType, ModeratorID = eventToArchive.ModeratorID, Reason = eventToArchive.Reason, UserID = eventToArchive.UserID }; eventsToArchive.Add(archivedEvent); } await db.UserDisciplinaryEventArchiveTable.AddRangeAsync(eventsToArchive); await db.SaveChangesAsync(); return(true); } else { return(false); } } } catch (Exception ex) { ExceptionManager.HandleException($"{typeof(StorageManager).GetType().FullName}: {ExceptionManager.GetAsyncMethodName()}", ex); throw ex; } }
public static async Task RemoveDisciplinaryEventAsync(ulong userID, DisciplinaryEventEnum type) { try { using (var db = new UserContext()) { //check event table first UserDisciplinaryEventStorage[] existingEvents; if (type == DisciplinaryEventEnum.BanEvent) { existingEvents = await db.UserDisciplinaryEventStorageTable.AsQueryable().Where(x => x.UserID == userID).ToArrayAsync(); } else { existingEvents = await db.UserDisciplinaryEventStorageTable.AsQueryable().Where(x => x.UserID == userID && x.DiscipinaryEventType == type).ToArrayAsync(); } if (existingEvents.Count() > 0) { foreach (var item in existingEvents) { await TimedEventManager.RemoveEvent(item.DisciplineEventID); db.UserDisciplinaryEventStorageTable.Remove(item); var archivedEvent = new UserDisciplinaryEventArchive() { DateArchived = DateTime.UtcNow, DateInserted = item.DateInserted, DateToRemove = item.DateToRemove, DisciplineEventID = item.DisciplineEventID, DisciplineType = item.DiscipinaryEventType, ModeratorID = item.ModeratorID, Reason = item.Reason, UserID = item.UserID }; await db.UserDisciplinaryEventArchiveTable.AddAsync(archivedEvent); } } else //check permanent event table if can't find { UserDisciplinaryPermanentStorage[] existingPermaEvents; if (type == DisciplinaryEventEnum.BanEvent) { existingPermaEvents = await db.UserDisciplinaryPermanentStorageTable.AsQueryable().Where(x => x.UserID == userID).ToArrayAsync(); } else { existingPermaEvents = await db.UserDisciplinaryPermanentStorageTable.AsQueryable().Where(x => x.UserID == userID && x.DiscipinaryEventType == type).ToArrayAsync(); } if (existingPermaEvents.Count() > 0) { foreach (var item in existingPermaEvents) { await TimedEventManager.RemoveEvent(item.DisciplineEventID); db.UserDisciplinaryPermanentStorageTable.Remove(item); var archivedEvent = new UserDisciplinaryEventArchive() { DateArchived = DateTime.UtcNow, DateInserted = item.DateInserted, DisciplineEventID = item.DisciplineEventID, DisciplineType = item.DiscipinaryEventType, ModeratorID = item.ModeratorID, Reason = item.Reason, UserID = item.UserID }; await db.UserDisciplinaryEventArchiveTable.AddAsync(archivedEvent); } } } } } catch (Exception ex) { ExceptionManager.HandleException($"{typeof(StorageManager).GetType().FullName}: {ExceptionManager.GetAsyncMethodName()}", ex); throw ex; } }