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}"); } }
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)); }
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))); }