示例#1
0
        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 }));
        }
示例#2
0
        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 }));
        }