Пример #1
0
        public bool DeclineInvitation(InvitationRequestModel invitation)
        {
            var invite = _projectUserRepository.GetByPredicate(i => i.ProjectId == invitation.ProjectId &&
                                                               i.UserId == _userId).First();

            return(_projectUserRepository.Remove(invite));
        }
Пример #2
0
        public bool AcceptInvitation(InvitationRequestModel invitation)
        {
            var invite = _projectUserRepository.GetByPredicate(i => i.ProjectId == invitation.ProjectId &&
                                                               i.UserId == _userId).FirstOrDefault();

            if (invite == null)
            {
                return(false);
            }

            invite.IsAccepted = true;

            _projectUserRepository.SaveChanges();

            return(true);
        }
Пример #3
0
        public async Task <IActionResult> Post(InvitationRequestModel model)
        {
            var invitee = await this.Context.Students
                          .AsNoTracking()
                          .FirstOrDefaultAsync(s => s.Id == model.InviteeId);

            if (invitee == null)
            {
                return(this.NotFound());
            }

            var inviteRoom = await this.Context.Rooms
                             .AsNoTracking()
                             .Include(r => r.CurrentResidents)
                             .FirstOrDefaultAsync(r => r.Number == model.RoomNumber);

            var inviter = await this.Context.Students
                          .AsNoTracking()
                          .Include(s => s.InvitationsSent)
                          .FirstOrDefaultAsync(s => s.Id == this.CurrentUserId);

            if (!IsEligibleToInvite(inviter, invitee, inviteRoom))
            {
                return(this.Unauthorized());
            }

            var invitation = new Invitation()
            {
                FromStudentId = inviter.Id,
                ToStudentId   = invitee.Id,
                RoomNumber    = model.RoomNumber
            };

            await this.Context.Invitations.AddAsync(invitation);

            await this.Context.SaveChangesAsync();

            return(this.Ok());
        }