public async Task <ViewResult> JoinOrganisation(Guid organisationId) { using (var client = apiClient()) { var organisationData = await client.SendAsync( User.GetAccessToken(), new GetPublicOrganisationInfo(organisationId)); var existingAssociations = await client.SendAsync( User.GetAccessToken(), new GetUserOrganisationsByStatus( new int[0], new int[1] { (int)OrganisationStatus.Complete })); /* There should only ever be a single non-rejected association, but * during development this wasn't enforced. Using FirstOrDefault * instead of SingleOrDefault will avoid any issues being raised * due to bad data. */ OrganisationUserData existingAssociation = existingAssociations .Where(o => o.OrganisationId == organisationId) .Where(o => o.UserStatus != UserStatus.Rejected) .FirstOrDefault(); var activeUsers = await client.SendAsync(User.GetAccessToken(), new GetActiveOrganisationUsers(organisationId)); if (existingAssociation != null) { UserAlreadyAssociatedWithOrganisationViewModel viewModel = new UserAlreadyAssociatedWithOrganisationViewModel() { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, Status = existingAssociation.UserStatus, AnyActiveUsers = activeUsers.Any() }; return(View("UserAlreadyAssociatedWithOrganisation", viewModel)); } else { var model = new JoinOrganisationViewModel { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, AnyActiveUsers = activeUsers.Any() }; return(View(model)); } } }
public async Task<ViewResult> JoinOrganisation(Guid organisationId) { using (var client = apiClient()) { var organisationData = await client.SendAsync( User.GetAccessToken(), new GetPublicOrganisationInfo(organisationId)); var existingAssociations = await client.SendAsync( User.GetAccessToken(), new GetUserOrganisationsByStatus( new int[0], new int[1] { (int)OrganisationStatus.Complete })); /* There should only ever be a single non-rejected association, but * during development this wasn't enforced. Using FirstOrDefault * instead of SingleOrDefault will avoid any issues being raised * due to bad data. */ OrganisationUserData existingAssociation = existingAssociations .Where(o => o.OrganisationId == organisationId) .Where(o => o.UserStatus != UserStatus.Rejected) .FirstOrDefault(); if (existingAssociation != null) { UserAlreadyAssociatedWithOrganisationViewModel viewModel = new UserAlreadyAssociatedWithOrganisationViewModel() { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName, Status = existingAssociation.UserStatus }; return View("UserAlreadyAssociatedWithOrganisation", viewModel); } else { var model = new JoinOrganisationViewModel { OrganisationId = organisationId, OrganisationName = organisationData.DisplayName }; return View(model); } } }