public void LicenseAgreementCreated(int licenseId, string linkToLicense, string linkToSchema, string urlToDataLinker) { var agreement = _agreementService.FirstOrDefault(i => i.ID == licenseId); var consumerRegistration = _consumerProviderRegistrations.GetById(agreement.ConsumerProviderRegistrationId); var providerLicense = _licenseService.FirstOrDefault(i => i.ID == consumerRegistration.OrganizationLicenseID); var consumerApp = _applicationService.FirstOrDefault(i => i.ID == consumerRegistration.ConsumerApplicationID); var consumerOrganization = _organizationService.FirstOrDefault(i => i.ID == consumerApp.OrganizationID); var providerApp = _applicationService.FirstOrDefault(i => i.ID == providerLicense.ApplicationID); var providerOrganization = _organizationService.FirstOrDefault(i => i.ID == providerApp.OrganizationID); var dataSchema = _dataSchemaService.FirstOrDefault(i => i.ID == providerLicense.DataSchemaID); var users = _userService.Where(i => i.OrganizationID == consumerOrganization.ID).Where(i => i.IsActive == true && i.IsIntroducedAsLegalOfficer == true && i.IsVerifiedAsLegalOfficer == true).ToList(); var providerLegals = _userService.Where(i => i.OrganizationID == providerOrganization.ID).Where(i => i.IsActive == true && i.IsIntroducedAsLegalOfficer == true && i.IsVerifiedAsLegalOfficer == true); users.AddRange(providerLegals); var template = _licenseTemplateService.FirstOrDefault(i => i.ID == providerLicense.LicenseTemplateID.Value); var licenseDocument = _licenseContentBuilder.GetLicenseContent(organizationLicenseId: providerLicense.ID); _licenseContentBuilder.InsertAgreementDetails(licenseDocument, agreement.ID, linkToSchema, urlToDataLinker); var pdfBytes = new HtmlToPdfConverter().GeneratePdf(licenseDocument.OuterXml); foreach (var user in users) { var stream = new MemoryStream(pdfBytes); var attachment = new List <Attachment> { new Attachment(stream, $"{template.Name}{MailFileFormat}", MediaTypeNames.Application.Pdf) }; var email = new NewLicenseAgreementEmail { To = user.Email, From = _emailSettings.SmtpFromEmail, Name = user.Name, OrgNameConsumer = consumerOrganization.Name, OrgNameProvider = providerOrganization.Name, LinkToLicense = linkToLicense, Attachments = attachment, SchemaName = dataSchema.Name }; Send(email); } }
public CustomFileDetails GetAgreement(int agreementId, LoggedInUserDetails user) { // Get agreements var agreement = _agreements.FirstOrDefault(i => i.ID == agreementId); // Return error if data not found if (agreement == null) { throw new BaseException("License Agreement not found"); } // Check whether user has access _security.CheckBasicAccess(user); var consumerRegistration = _consumerProviderRegistrations.GetById(agreement.ConsumerProviderRegistrationId); var providerLicense = _licenses.FirstOrDefault(i => i.ID == consumerRegistration.OrganizationLicenseID); var consumerApp = _applications.FirstOrDefault(i => i.ID == consumerRegistration.ConsumerApplicationID); var providerApp = _applications.FirstOrDefault(i => i.ID == providerLicense.ApplicationID); var isFromConsumerSide = user.Organization.ID == consumerApp.OrganizationID; var isFromProviderSide = user.Organization.ID == providerApp.OrganizationID; var isFromAllowedOrganization = isFromProviderSide || isFromConsumerSide; // Return error if not access to data if (!user.IsSysAdmin && !isFromAllowedOrganization) { throw new BaseException("Access denied."); } // 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 administrator."); } // Get provider licese if (providerLicense.CustomLicenseID != null) { // Get uploaded by provider file var customLicenseResult = GetCustomLicenseForDownload(providerLicense.CustomLicenseID.Value); // Return custom license result return(customLicenseResult); } // Get template var template = _licenseTemplates.FirstOrDefault(i => i.ID == providerLicense.LicenseTemplateID.Value); // Get schema file var schemaFile = _schemaFiles.FirstOrDefault(i => i.DataSchemaID == providerLicense.DataSchemaID); // Setup url to download schema var urlToSchema = _urls.ToDownloadSchema(schemaFile.ID); // Setup license content var licenseDocument = _licenseContentBuilder.GetLicenseContent(organizationLicenseId: providerLicense.ID); // Insert provider details _licenseContentBuilder.InsertAgreementDetails(licenseDocument, agreement.ID, urlToSchema, _config.DataLinkerHost); // Get butes for generated pdf var bytes = new HtmlToPdfConverter().GeneratePdf(licenseDocument.OuterXml); var result = new CustomFileDetails { Content = bytes, FileName = template.Name + ".pdf", MimeType = "application/pdf" }; return(result); }