public async Task<CertificateTemplate> AddTemplate(string courseId, string name, string archiveName) { var template = new CertificateTemplate { Id = Guid.NewGuid(), CourseId = courseId, Name = name, Timestamp = DateTime.Now, ArchiveName = archiveName, }; db.CertificateTemplates.Add(template); await db.SaveChangesAsync(); return template; }
public async Task RemoveTemplate(CertificateTemplate template) { template.IsDeleted = true; await db.SaveChangesAsync(); }
public IEnumerable<string> GetTemplateParameters(CertificateTemplate template) { EnsureCertificateTemplateIsUnpacked(template); var templateDirectory = GetTemplateDirectory(template); var indexFile = templateDirectory.GetFile(TemplateIndexFile); if (!indexFile.Exists) { log.Error($"Не нашёл файла {TemplateIndexFile} в шаблоне \"{template.Name}\" (Id = {template.Id}, {template.ArchiveName})"); yield break; } var parameters = new HashSet<string>(); var matches = templateParameterRegex.Matches(File.ReadAllText(indexFile.FullName)); foreach (Match match in matches) { var parameter = match.Groups[1].Value; if (!builtInParameters.Contains(parameter) && !parameters.Contains(parameter)) { yield return parameter; parameters.Add(parameter); } } }
public void EnsureCertificateTemplateIsUnpacked(CertificateTemplate template) { var certificateDirectory = GetTemplateDirectory(template); if (!certificateDirectory.Exists) { log.Info($"Нет директории с распакованным шаблоном сертификата, Id = {template.Id}"); var certificateArchive = GetTemplateArchivePath(template); if (!certificateArchive.Exists) throw new Exception("Can\'t find certificate template"); log.Info($"Распаковываю шаблон сертификата {template.Id}: \"{certificateArchive.FullName}\" в \"{certificateDirectory.FullName}\""); using (var zip = ZipFile.Read(certificateArchive.FullName, new ReadOptions { Encoding = Encoding.UTF8 })) { zip.ExtractAll(certificateDirectory.FullName, ExtractExistingFileAction.OverwriteSilently); } } }
public DirectoryInfo GetTemplateDirectory(CertificateTemplate template) { return GetTemplateDirectory(template.ArchiveName); }
public FileInfo GetTemplateArchivePath(CertificateTemplate template) { return GetTemplateArchivePath(template.ArchiveName); }