Ejemplo n.º 1
0
        public async Task <ActionResult> Post([FromBody] CircleEventCommentReply model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var circleEventComment = await _repo.GetCircleEventComment(model.CommentId);

            if (circleEventComment == null)
            {
                return(NotFound());
            }
            if (!await this.MatchAppUserWithToken(model.AppUserId) || !await _repo.IsMember((int)model.AppUserId, circleEventComment.CircleId))
            {
                return(Unauthorized());
            }

            model.CircleId = circleEventComment.CircleId;
            // var newTopic = this._mapper.Map<CircleEvent>(model);
            _repo.Add(model);
            await _repo.SaveAll();

            if (circleEventComment.AppUserId == model.AppUserId) //Comment owner
            {
                await _notificationRepo.AddNotification(NotificationEnum.NewCircleEventReplyByOwner, (int)model.AppUserId, model);
            }
            else
            {
                await _notificationRepo.AddNotification(NotificationEnum.NewCircleEventReplyByMember, (int)model.AppUserId, model);
            }
            await _repo.SaveAll();

            return(CreatedAtRoute("GetCircleEventCommentReply", new { id = model.Id }, _mapper.Map <CommentForReturnDto>(model)));
        }
        public async Task <ActionResult> Post([FromBody] UserCommentUpdateDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var circleTopic = await _repo.GetCircleTopic(model.OwnerRecordId);

            if (circleTopic == null)
            {
                return(NotFound());
            }
            if (!await this.MatchAppUserWithToken(model.AppUserId) || !await _repo.IsMember((int)model.AppUserId, circleTopic.CircleId))
            {
                return(Unauthorized());
            }

            // model.CircleId = circleTopic.CircleId;
            var newTopic = this._mapper.Map <CircleTopicComment>(model);

            newTopic.CircleId = circleTopic.CircleId;
            _repo.Add(newTopic);
            await _repo.SaveAll();

            return(CreatedAtRoute("GetCircleTopicComment", new { id = model.Id }, _mapper.Map <CircleTopicCommentForReturnDto>(newTopic)));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult> SendCircleRequest([FromBody] CircleRequest model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (!await this.MatchAppUserWithToken(model.AppUserId))
            {
                return(Unauthorized());
            }
            if (await _repo.IsMember((int)model.AppUserId, model.CircleId))
            {
                return(BadRequest("既にメンバーになっています"));
            }
            var circleFromRepo = await _repo.Get <Circle>(model.CircleId);

            if (circleFromRepo == null)
            {
                return(NotFound("サークルレコードが見つかりません: " + model.CircleId));
            }
            if (await _repo.RequestSent((int)model.AppUserId, model.CircleId))
            {
                return(BadRequest("既にリクエストしています"));
            }

            if (circleFromRepo.ApprovalRequired)
            {
                _repo.Add(model);
                await _notificationRepo.AddNotification(NotificationEnum.NewCircleMemberRequest, model.AppUserId, model);

                await _repo.SaveAll();

                return(CreatedAtRoute("GetCircleRequest", new { userId = model.AppUserId, circleId = model.CircleId }, null));
            }
            _repo.Add(new CircleMember()
            {
                AppUserId      = (int)model.AppUserId,
                CircleId       = model.CircleId,
                Role           = CircleRoleEnum.MEMBER,
                DateJoined     = DateTime.Now,
                DateLastActive = DateTime.Now
            });
            await _repo.SaveAll();

            return(CreatedAtRoute("GetCircleMember", new { userId = model.AppUserId, circleId = model.CircleId }, null));
        }
Ejemplo n.º 4
0
        public async Task <ActionResult> Get(int id)
        {
            var circleEventForReturn = _mapper.Map <CircleEventForReturnDto>(await _repo.GetCircleEvent(id));

            if (circleEventForReturn == null)
            {
                return(NotFound());
            }
            //circleEventForReturn.EventCommentCounts = await _repo.GetCircleEventCommentCount(id);
            var loggedInUser = await GetLoggedInUserAsync();

            if (loggedInUser != null)
            {
                var myParticipation = await _repo.GetCircleEventParticipation(loggedInUser.Id, id);

                circleEventForReturn.MyStatus       = myParticipation != null ? (CircleEventParticipationStatus?)myParticipation.Status : null;
                circleEventForReturn.IsCircleMember = await _repo.IsMember(loggedInUser.Id, circleEventForReturn.CircleId);
            }

            return(Ok(circleEventForReturn));
        }
Ejemplo n.º 5
0
        public async Task <ActionResult> Post([FromBody] CircleTopicUpdateDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (!await this.MatchAppUserWithToken(model.AppUserId) || !await _repo.IsMember(model.AppUserId, model.CircleId))
            {
                return(Unauthorized());
            }

            var newTopic = this._mapper.Map <CircleTopic>(model);

            _repo.Add(newTopic);
            await _repo.SaveAll();

            await _notificationRepo.AddNotification(NotificationEnum.NewCircleTopicCreated, model.AppUserId, newTopic);

            await _repo.SaveAll();

            return(CreatedAtRoute("GetCircleTopic", new { id = newTopic.Id }, _mapper.Map <CircleTopicForReturnDto>(await _repo.GetCircleTopic(newTopic.Id))));
        }
Ejemplo n.º 6
0
        public async Task <ActionResult> Get(int id)
        {
            var circleForReturn = _mapper.Map <CircleForReturnDto>(await _repo.GetCircle(id));
            var appUser         = await GetLoggedInUserAsync();

            if (appUser != null)
            {
                if (await _repo.IsOwner(appUser.Id, circleForReturn.Id))
                {
                    circleForReturn.IsManageable = true;
                    circleForReturn.IsMember     = true;
                }
                else if (await _repo.IsMember(appUser.Id, circleForReturn.Id))
                {
                    circleForReturn.IsMember = true;
                }
                else
                {
                    var request = await _repo.GetCircleRequest(appUser.Id, circleForReturn.Id);

                    if (request != null)
                    {
                        if (request.Declined)
                        {
                            circleForReturn.IsDeclined = true;
                        }
                        else
                        {
                            circleForReturn.IsWaitingApproval = true;
                        }
                    }
                }
            }

            circleForReturn.TotalMemberCount = await _repo.GetCircleMemberCount(id);

            return(Ok(circleForReturn));
        }