public async Task <object> MarkAsRead(string objectId) { var user = _userService.CurrentUser.Id; var oid = new ObjectId(objectId); var ccEvent = (await _dbService.Events.FindAsync(i => i.Id == oid)).FirstOrDefault(); var deletedCount = await _utilService.MarkNotificationAsReadAsync(ccEvent) + await _utilService.MarkNotificationAsReadAsync(ccEvent?.ResultId, user); return(new { status = deletedCount >= 1 ? "ok" : "error", updated = deletedCount }); }
public async Task <IActionResult> ResultGet(string objectId) { var user = _userService.CurrentUser; await _utilService.MarkNotificationAsReadAsync(new ObjectId(objectId), user.Id); var id = new ObjectId(objectId); var item = (await _dbService.Data.SingleAsync(id)) .IncludeDirectories(_utilService) .HideHiddenFiles(user.IsRoot); var result = new ApiResponse <CcData>(item); return(Ok(result)); }
public async Task <object> SaveGrade(MarkSolutionItem item) { var oid = new ObjectId(item.objectId); var ccData = await _dbService.Data.SingleAsync(oid); var sender = _userService.CurrentUser.Id; var recipients = _utilService.GetUsersRelatedToResult(ccData); ccData.Points = item.points; ccData.GradeComment = item.comment; await _utilService.MarkNotificationAsReadAsync(oid, sender); var result = await _dbService.Data.UpdateDocumentAsync(ccData); var notificationCount = default(int); if (result.IsAcknowledged) { notificationCount = await _utilService.SendNotificationAsync(recipients, new CcEvent { ResultId = oid, Type = CcEventType.NewGrade, IsNew = true, Subject = $"**[{ccData.CourseName}]**: Received **{item.points}%** in problem **{ccData.Problem}**", Sender = sender, }); } return(new { status = result.IsAcknowledged ? "ok" : "error", count = notificationCount }); }