private void SendNotificationToLegalOfficers(OrganizationLicense license, List <User> legalOfficers, string schemaName, string urlToSchema, LoggedInUserDetails user) { // Send notification to legal officers foreach (var legalOfficer in legalOfficers) { // Generate secure token var tokenInfo = _tokens.GenerateLicenseVerificationToken(legalOfficer.ID, license.ID); // Create approval request var request = new LicenseApprovalRequest { accessToken = tokenInfo.TokenInfoEncoded, Token = tokenInfo.Token, ExpiresAt = tokenInfo.TokenExpire.Value, OrganizationLicenseID = license.ID, SentAt = GetDate, SentBy = user.ID.Value, SentTo = legalOfficer.ID }; // Save request _verificationRequests.Add(request); // Setup url to confirmation screen var urlToConfirmScreen = _urls.ToLicenseVerification(license.ApplicationID, license.DataSchemaID, tokenInfo.TokenInfoEncoded); // Send notificaion to legal officer with templated license if (license.LicenseTemplateID != null) { // Send notification _notificationService.LegalOfficer.LicenseIsPendingApprovalInBackground(legalOfficer.ID, $"{urlToConfirmScreen}#Clauses", urlToSchema, _config.DataLinkerHost, schemaName, license.ID); } // Send notificaion to legal officer with custom license if (license.CustomLicenseID != null) { // Send notification _notificationService.LegalOfficer.LicenseVerificationRequiredInBackground(legalOfficer.ID, urlToConfirmScreen, schemaName, license.ID); } } }
private void SendNotificationToLegalOfficers(OrganizationLicense license, int consumerProviderRegistrationId, List <User> legalOfficers, string schemaName, string urlToSchema, LoggedInUserDetails user, bool toProviderLegal) { // Send notification to legal officers foreach (var legalOfficer in legalOfficers) { // Generate secure token //var tokenInfo = _tokens.GenerateLicenseVerificationToken(legalOfficer.ID, license.ID); var tokenInfo = _tokens.GenerateConsumerProviderRegistrationToken(legalOfficer.ID, license.ID, consumerProviderRegistrationId); // Create approval request var request = new LicenseApprovalRequest { accessToken = tokenInfo.TokenInfoEncoded, Token = tokenInfo.Token, ExpiresAt = tokenInfo.TokenExpire.Value, OrganizationLicenseID = license.ID, SentAt = DateTime.UtcNow, SentBy = user.ID.Value, SentTo = legalOfficer.ID }; // Save request _verificationRequests.Add(request); // Setup url to confirmation screen // var urlToConfirmScreen = _urls.ToLicenseVerification(license.ApplicationID, license.DataSchemaID, tokenInfo.TokenInfoEncoded); var urlToConfirmScreen = $"{_config.DataLinkerHost}/consumer-provider-registration/{consumerProviderRegistrationId}/consumer-legal-approval?token={tokenInfo.TokenInfoEncoded}"; if (toProviderLegal) { urlToConfirmScreen = $"{_config.DataLinkerHost}/consumer-provider-registration/{consumerProviderRegistrationId}/provider-legal-approval?token={tokenInfo.TokenInfoEncoded}"; } if (license.LicenseTemplateID != null) { urlToConfirmScreen = $"{urlToConfirmScreen}#Clauses"; } // Send notificaion to legal officer with templated license //if (license.LicenseTemplateID != null) //{ if (toProviderLegal) { _notificationService.ConsumerProviderRegistration.ProviderLegalApprovalRequestInBackground(legalOfficer.ID, urlToConfirmScreen, urlToSchema, _config.DataLinkerHost, schemaName, consumerProviderRegistrationId); } else { _notificationService.ConsumerProviderRegistration.ConsumerLegalApprovalRequestInBackground(legalOfficer.ID, urlToConfirmScreen, urlToSchema, _config.DataLinkerHost, schemaName, consumerProviderRegistrationId); } //} //// Send notificaion to legal officer with custom license //if (license.CustomLicenseID != null) //{ // if(toProviderLegal) // { // _notificationService.ConsumerProviderRegistration.ProviderLegalCustomLicenseApprovalRequestInBackground(legalOfficer.ID, urlToConfirmScreen, schemaName, license.ID); // } // else // { // _notificationService.ConsumerProviderRegistration.ConsumerLegalCustomLicenseApprovalRequestInBackground(legalOfficer.ID, urlToConfirmScreen, schemaName, license.ID); // } //} } }
public LicenseConfirmModel GetConfirmModel(string token, LoggedInUserDetails user) { OrganizationLicense license = null; LicenseApprovalRequest request = null; try { // Check access _security.CheckBasicAccess(user); // Process token var tokenInfo = _tokens.ParseLicenseVerificationToken(token); // Get license license = _orgLicenses.FirstOrDefault(i => i.ID == tokenInfo.ID.Value); // Get request request = _verificationRequests.FirstOrDefault(i => i.Token == tokenInfo.Token); // Check whether token exists if (request == null) { throw new BaseException("Access denied."); } // Check whether token belongs to user if (request.SentTo != user.ID.Value) { request.ExpiresAt = GetDate; _verificationRequests.Update(request); throw new BaseException("Access denied."); } // Check whether token expired if (request.ExpiresAt != tokenInfo.TokenExpire || request.ExpiresAt < DateTime.Now) { throw new BaseException( "Approval link is expired."); } // Check whether user is Legal officer for organisation CheckForLegalOfficer(user); // Check whether organisation is active if (!user.Organization.IsActive) { throw new BaseException( "Your organization is inactive. Please check if your organization has approved Legal Officer. For more details contact DataLinker team."); } // Check whether licese is pending approval if (license.Status != (int)PublishStatus.PendingApproval) { throw new BaseException("This license is not pending approval."); } // Get organisation details var organization = _organisations.FirstOrDefault(i => i.ID == user.Organization.ID); // Determine license type var type = GetType(license); // Get content for license var licenseContent = GetLicenseContent(license, organization.ID, type); // Setup result var result = new LicenseConfirmModel { OrganizationName = organization.Name, ID = license.ID, LicenseContent = licenseContent, Type = type, IsProvider = license.ProviderEndpointID != 0 }; // Return result return(result); } catch (BaseException) { // Set license status to draft if (license != null && license.Status == (int)PublishStatus.PendingApproval) { license.Status = (int)PublishStatus.Draft; _orgLicenses.Update(license); } throw; } finally { // Always expire request if (request != null) { request.ExpiresAt = GetDate; _verificationRequests.Update(request); } } }