//https://johnthiriet.com/efficient-api-calls/# static async Task <AIPUserResult> GetFromExternalServerAsync(string url) { AIPUserResult userResult = null; using (var client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { userResult = await response.Content.ReadAsAsync <AIPUserResult>(); } } return(userResult); }
//public IActionResult InviteCandidate(Guid candidateId, Guid invitedBy, string toTenant) public async Task <IActionResult> Invite([FromBody] InviteViewModel model) //InviteCandidate(CandidateDto model) { string roleName = model.Role; bool inviteEmailSent = false; //TODO: aipApiService.TryInviteToTenant(user, toTenant); //AIP will return "invitation tocken" (aipInviteResult) with details : UserStatus (registered,not registered, registered in other tenant) string AIPinviteUserToTenantUrl = string.Format(@"{0}/check_account?tenant={1}&user_email={2}&roleName={3}", AIPHostUrl, model.TenantName, model.ToEmail, model.Role);//AIPHostUrl + "/Account/InviteUser?user="******"LALA_Invitationtocken", ActivateAccountURL = string.Format(@"https://{0}/activate_account?client_id={1}&tenant={2}&token={3}", AIPHostUrl, candidateId, toTenant, inviteToken)}; if (aipInviteResult != null)// && aipInviteResult.RedirectUrl) { //var inviteToken = inviteTicket.RegistractionToken;// -it will came from AIP return link (generated by AIP Token Service) //inviteTicket.aipInviteAcceptURL OR registrationContinueUrl = string.Format(@"https://{0}/activate_account?client_id={1}&tenant={2}&token={3}", AIPHostUrl, candidateId, toTenant, inviteToken); switch (aipInviteResult.UserStatus) { case UserAIPStatus.UserRegisteredInTenant: //TODO: THERE no need to register user in Tenant again. But only add to other ROLE //SO, aipActivateAccountURL will have OTHER message like 'Please, join a Role '{RoleName}' in {TenantName}' // inviteEmailSent = WorkflowMessageManager.SendCandidateUserInviteJoinRoleMessage(candidateId, invitedBy, toTenant, aipActivateAccountURL); //var emailTmpl = MessageTemplateManager.FindEmailByName(<CandidateInvitationEmail>); break; case UserAIPStatus.UserRegisteredInOtherTenant: case UserAIPStatus.UserNotRegisteredOnAIP: //TODO: there will be message 'Please, join {Tenant} and {Role}' // inviteEmailSent = WorkflowMessageManager.SendCandidateUserInviteMessage(candidateId, invitedBy, toTenant, inviteTicket.aipActivateAccountURL); //var emailTmpl = MessageTemplateManager.FindEmailByName(<CandidateInvitationEmail>); break; default: //TODO: not result break; } } if (inviteEmailSent) { string activityMsg = string.Format("User {0} invited to join tenant {1} as {2}", model.ToEmail, _currentTenant?.Name, model.Role); //_userActivityService.RecordActivity(Consultant.Consultant_Sent_CandidateInvite, // nameof(Candidate), candidateId.ToString(), // _currentUserName, _currentTenant?.Name, // activityMsg); //_logger.LogInformation(UserActivityLogTypes.Consultant.Consultant_Sent_CandidateInvite); //ScopedMediator.Publish<InvitationSent>(inviteSent); } return(Ok(inviteEmailSent)); } catch (Exception ex) { //return InternalServerError(new ApplicationException("Error to send letter exception: " + ex.Message)); //var response = new HttpResponseMessage(HttpStatusCode.BadRequest) //{ // Content = new HttpContent(ex.InnerException); //}; //return response; return(BadRequest(ex.Message)); } }