public OkObjectResult AddEnsembleModerator([FromBody] EnsembleCommentDto dto) { var userId = GetUserId(); var validMem = _context.EnsembleMembers .Any(em => em.EnsembleId == dto.EnsembleId && em.UserIdRecipient == userId && em.Status == RequestStatus.Accepted); if (!validMem) { return(new OkObjectResult(new { success = false, error = "Not a valid member" })); } var user = _context.Users.Find(userId); var ensemble = _context.Ensembles.Find(dto.EnsembleId); NotifyEnsembleMembers( userId, dto.EnsembleId, $"{user.FullName} commented on the {ensemble.Name} page", $"/ensemble/{ensemble.EnsembleId}#comments" ); _context.EnsembleComments.Add(new EnsembleComment { EnsembleId = dto.EnsembleId, UserId = userId, Text = dto.Text, Timestamp = DateTime.Now }); _context.SaveChanges(); return(new OkObjectResult(new { success = true })); }
public OkObjectResult GetEnsembleComments([FromBody] EnsembleCommentDto dto) { var userId = GetUserId(); var ensembleModIds = _context.EnsembleModerators .Where(em => em.EnsembleId == dto.EnsembleId && em.Status == RequestStatus.Accepted) .Select(em => em.UserIdRecipient) .ToArray(); var ensembleMemberIds = _context.EnsembleMembers .Where(e => e.EnsembleId == dto.EnsembleId && e.Status == RequestStatus.Accepted) .Select(b => b.UserIdRecipient) .ToArray(); var validMem = ensembleMemberIds.Contains(userId); var validMod = ensembleModIds.Contains(userId); if (!(validMem || validMod)) { return(new OkObjectResult(new { success = false, error = "Not valid member or mod" })); } var userConnectionIds = GetUserConnections(userId); var comments = _context.EnsembleComments .Include(c => c.User) .Where(c => c.EnsembleId == dto.EnsembleId) .OrderByDescending(c => c.Timestamp) .Select(c => new EnsembleCommentDto { Text = c.Text, Timestamp = c.Timestamp, User = new MemberDto { FullName = c.User.FullName, PhotoUrl = c.User.PhotoUrl, UserId = c.UserId, ConnectedToUser = userConnectionIds.Contains(c.UserId) } }); return(new OkObjectResult(new { success = true, comments })); }