public IActionResult AddEmoji(string id, string boardId, string emojiId)
        {
            if (string.IsNullOrWhiteSpace(id) || string.IsNullOrWhiteSpace(emojiId))
            {
                return(BadRequest());
            }

            if (boardId != null)
            {
                var board = _boardsRepository.GetById(Guid.Parse(boardId));

                if (board != null)
                {
                    if (BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
                    {
                        if (!_boardsRepository.IsActive(boardId))
                        {
                            return(StatusCode(StatusCodes.Status403Forbidden));
                        }
                    }
                    else if (!BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
                    {
                        return(Unauthorized());
                    }
                }
            }

            return(StatusCode(StatusCodes.Status403Forbidden));
        }
        public IActionResult AddReply(string id, string boardId, string replyToId, [FromBody] string replyComment, string time)
        {
            var userId = _identityHelper.GetObjectId(User.Identity as ClaimsIdentity);
            var board  = new Board();

            if (boardId != null)
            {
                board = _boardsRepository.GetById(Guid.Parse(boardId));

                if (BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
                {
                    //enable board
                    // enable board
                    var timeStamp = time;
                    if (
                        string.IsNullOrWhiteSpace(id) ||
                        string.IsNullOrWhiteSpace(userId) ||
                        string.IsNullOrWhiteSpace(replyComment) ||
                        string.IsNullOrWhiteSpace(timeStamp) ||
                        string.IsNullOrWhiteSpace(replyToId))
                    {
                        return(BadRequest());
                    }

                    var feedItemId      = Guid.Parse((string)id);
                    var parentCommentId = Guid.Parse((string)replyToId);
                    var feedItem        = _feedItemRepository.GetById(feedItemId);
                    board = _boardsRepository.GetById(Guid.Parse(boardId));
                    var parentComment = _commentsRepository.GetById(parentCommentId);

                    if (feedItem == null || parentComment == null)
                    {
                        return(NotFound());
                    }

                    var user = _userRepository.GetByObjectId(userId);

                    if (user == null)
                    {
                        return(Unauthorized());
                    }
                    _commentsService.ReplyToComment(board, feedItem, user, timeStamp, replyComment, parentComment);

                    return(StatusCode(Status201Created));
                }
                else if (!BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
                {
                    //disable board
                    return(Unauthorized());
                }
            }

            return(BadRequest());
        }
        public IActionResult AddShares(string id, string shareTo, string boardId, string time)
        {
            var userId = _identityHelper.GetObjectId(User.Identity as ClaimsIdentity);

            if (
                string.IsNullOrWhiteSpace(id) ||
                string.IsNullOrWhiteSpace(userId) ||
                string.IsNullOrWhiteSpace(shareTo) ||
                string.IsNullOrWhiteSpace(boardId) ||
                string.IsNullOrWhiteSpace(time))
            {
                return(BadRequest());
            }

            var feedItemId = Guid.Parse((string)id);
            var feedItem   = _feedItemRepository.GetById(feedItemId);

            if (feedItem == null)
            {
                return(NotFound());
            }

            var board = _boardsRepository.GetById(Guid.Parse(boardId));

            if (board == null)
            {
                return(NotFound());
            }

            var user = _userRepository.GetByObjectId(userId);

            if (user == null)
            {
                return(Unauthorized());
            }

            //check board time limit
            if (BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
            {
                _activityService.ShareFeedItem(feedItemId, shareTo, Guid.Parse(boardId), userId, time);

                return(StatusCode(StatusCodes.Status201Created));
            }
            else if (!BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
            {
                return(Unauthorized());
            }

            return(Unauthorized());
        }
        public IActionResult AddComments(string id, string boardId, [FromBody] string comment, string time)
        {
            var userId = _identityHelper.GetObjectId(User.Identity as ClaimsIdentity);

            // TODO:   Add Date validation. For now storing it as string.
            var timeStamp = time;

            if (
                string.IsNullOrWhiteSpace(id) ||
                string.IsNullOrWhiteSpace(userId) ||
                string.IsNullOrWhiteSpace(boardId) ||
                string.IsNullOrWhiteSpace(comment) ||
                string.IsNullOrWhiteSpace(timeStamp))
            {
                return(BadRequest());
            }

            var feedItemId = Guid.Parse((string)id);
            var feedItem   = _feedItemRepository.GetById(feedItemId);
            var board      = _boardsRepository.GetById(Guid.Parse(boardId));

            if (feedItem == null || board == null)
            {
                return(NotFound());
            }

            var user = _userRepository.GetByObjectId(userId);

            if (user == null)
            {
                return(Unauthorized());
            }

            if (BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
            {
                _commentsService.StoreComments(board, feedItem, user, timeStamp, comment);

                return(StatusCode(Status201Created));
            }
            else if (!BoardValidityHelper.IsBetween(DateTime.Now, board.StartDate.AddHours(-4), board.EndDate.AddHours(4)))
            {
                return(Unauthorized());
            }

            return(Unauthorized());
        }