public async Task <ActionResult> Accept(string id) { try { var query = new GetInvitationByKey(id); var invitation = await _queryBus.QueryAsync(query); if (invitation == null) { return(View("InvitationNotFound")); } var model = new AcceptViewModel { InvitationKey = id, Email = invitation.EmailAddress }; return(View(model)); } catch (Exception exception) { ModelState.AddModelError("", exception); _logger.Error("Failed ot launch", exception); return(View(new AcceptViewModel())); } }
public async Task <ActionResult> Accept(AcceptViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var query = new GetInvitationByKey(model.InvitationKey); var invitation = await _queryBus.QueryAsync(query); if (invitation == null) { return(View("InvitationNotFound")); } var cmd = new AcceptInvitation(model.UserName, model.Password, model.InvitationKey) { AcceptedEmail = model.Email, FirstName = model.FirstName, LastName = model.LastName }; var reply = await _requestReplyBus.ExecuteAsync(cmd); if (reply == null) { ModelState.AddModelError("", "Failed to find an invitation with the specified key. You might have already accepted the invitation? If not, ask for a new one."); _logger.Error("Failed to find invitation " + model.InvitationKey); return(View(new AcceptViewModel())); } var getApps = new GetApplicationList { AccountId = reply.AccountId }; var apps = await _queryBus.QueryAsync(getApps); var identity = CreateIdentity(reply.AccountId, reply.UserName, false, apps); SignIn(identity); return(Redirect("~/#/account/accepted")); }