Beispiel #1
0
        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);
        }