public async Task <IActionResult> Invite(InviteContactViewModel vm) { if (!ModelState.IsValid) { await RebuildViewModel(vm); return(View("~/Views/ManageUsers/InviteUser/Invite.cshtml", vm)); } var requestingContact = await GetRequestingContact(); var result = await _contactsApiClient.InviteContactToOrganisation(new InviteContactToOrganisationRequest { InvitedByContactId = (await GetRequestingContact()).Id, FamilyName = vm.FamilyName, GivenName = vm.GivenName, Email = vm.Email, OrganisationId = requestingContact.OrganisationId.GetValueOrDefault(), Privileges = vm.PrivilegesViewModel.PrivilegeViewModels.Where(pvm => pvm.Selected).Select(pvm => pvm.Privilege.Id).ToArray() }); if (!result.Success) { ModelState.AddModelError("Email", result.ErrorMessage); await RebuildViewModel(vm); return(View("~/Views/ManageUsers/InviteUser/Invite.cshtml", vm)); } return(RedirectToAction("Invited", new { result.ContactId })); }
private async Task RebuildViewModel(InviteContactViewModel vm) { var privileges = await _contactsApiClient.GetPrivileges(); foreach (var privilegeViewModel in vm.PrivilegesViewModel.PrivilegeViewModels) { privilegeViewModel.Privilege = privileges.Single(p => p.Id == privilegeViewModel.Privilege.Id); } }
public async Task <IActionResult> Invite(string backController = "ManageUsers", string backAction = "Index") { var privileges = await _contactsApiClient.GetPrivileges(); var vm = new InviteContactViewModel { PrivilegesViewModel = new EditPrivilegesViewModel { PrivilegeViewModels = privileges.Select(p => new PrivilegeViewModel { Privilege = p }).ToArray() }, BackController = backController, BackAction = backAction }; return(View("~/Views/ManageUsers/InviteUser/Invite.cshtml", vm)); }