public async Task <List <InvitationForListDto> > CreateInvitation(InvitationForCreationDto invitation)
        {
            var response = await _httpService.Post <InvitationForCreationDto, List <InvitationForListDto> >($"{_rootUrl}/create", invitation);

            if (response.Success)
            {
                return(response.Response);
            }
            else
            {
                throw new Exception($"Fail to create invitation, {response.HttpResponseMessage}");
            }
        }
Esempio n. 2
0
        public async Task <IActionResult> InviteUser(InvitationForCreationDto invitationForCreation)
        {
            if (!await _users.UserExist(invitationForCreation.UserId) || !await _users.UserExist(invitationForCreation.InvitorId) || !await _repo.OrganizationExist(invitationForCreation.OrganizationId))
            {
                return(BadRequest("Invalid Data"));
            }
            var inviter = await _users.GetUser(invitationForCreation.InvitorId);

            var user = await _users.GetUser(invitationForCreation.UserId);

            var organization = await _repo.GetOrganization(invitationForCreation.OrganizationId);

            if (!await _repo.IsAdmin(organization, inviter))
            {
                return(BadRequest("Not Authorized To Invite New Member"));
            }
            if (await _invitations.InvitationExist(organization.Id, user.Id))
            {
                return(Conflict("Invitation Already Exist"));
            }
            Invitation invitation = new Invitation
            {
                User           = user,
                Organization   = organization,
                UserId         = user.Id,
                OrganizationId = organization.Id
            };
            await _invitations.Add(invitation);

            //TODO, return list of all invitations that belong to this organization
            var invitations = await _invitations.GetInvitationsByOrganization(organization.Id);

            var invitationsToReturn = new List <InvitationForListDto>();

            foreach (var item in invitations)
            {
                var invitationToReturn = new InvitationForListDto
                {
                    Organization = _mapper.Map <OrganizationForListDto>(item.Organization),
                    User         = _mapper.Map <UserForListDto>(item.User)
                };
                invitationsToReturn.Add(invitationToReturn);
            }
            return(Ok(invitationsToReturn));
        }
Esempio n. 3
0
        public async Task <IActionResult> InviteUser(InvitationForCreationDto invitationForCreation)
        {
            var inviterId      = HttpContext.GetUserId();
            var organizationId = invitationForCreation.OrganizationId;

            if (!await _orgs.OrganizationExistById(invitationForCreation.OrganizationId))
            {
                return(BadRequest($"Organization with ID {organizationId} does not exist."));
            }
            if (!await _orgs.UserInOrganization(inviterId, organizationId))
            {
                return(BadRequest($"User with ID {inviterId} has no access to Organization with ID {organizationId}."));
            }
            var inviter = await _users.GetUser(inviterId);

            if (!await _users.UserExist(invitationForCreation.UserId))
            {
                return(BadRequest($"User with ID {invitationForCreation.UserId} does not exist."));
            }
            var user = await _users.GetUser(invitationForCreation.UserId);

            var organization = await _orgs.GetOrganization(organizationId);

            if (!await _orgs.IsAdmin(organization, inviter))
            {
                return(BadRequest("Not Authorized To Invite New Member"));
            }
            if (await _repo.InvitationExist(organizationId, user.Id))
            {
                return(Conflict("Invitation Already Exist"));
            }
            Invitation invitation = new Invitation
            {
                UserId         = user.Id,
                OrganizationId = organizationId
            };
            await _repo.Add(invitation);

            //TODO, return list of all invitations that belong to this organization
            var invitations = await _repo.GetInvitationsByOrganization(organization.Id);

            return(Ok(_mapper.Map <List <InvitationForListDto> >(invitations)));
        }