using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using Oqtane.Modules; using Oqtane.Models; using Oqtane.Infrastructure; using Oqtane.Interfaces; using Oqtane.Enums; using Oqtane.Repository; using AdamGais.Module.AnmeldeTool.Repository; using System.Threading.Tasks; namespace AdamGais.Module.AnmeldeTool.Manager { public class AnmeldeToolManager : MigratableModuleBase, IInstallable, IPortable, ISearchable { private readonly IAnmeldeToolRepository _AnmeldeToolRepository; private readonly IDBContextDependencies _DBContextDependencies; public AnmeldeToolManager(IAnmeldeToolRepository AnmeldeToolRepository, IDBContextDependencies DBContextDependencies) { _AnmeldeToolRepository = AnmeldeToolRepository; _DBContextDependencies = DBContextDependencies; } public bool Install(Tenant tenant, string version) { return Migrate(new AnmeldeToolContext(_DBContextDependencies), tenant, MigrationType.Up); } public bool Uninstall(Tenant tenant) { return Migrate(new AnmeldeToolContext(_DBContextDependencies), tenant, MigrationType.Down); } public string ExportModule(Oqtane.Models.Module module) { string content = ""; List AnmeldeTools = _AnmeldeToolRepository.GetAnmeldeTools(module.ModuleId).ToList(); if (AnmeldeTools != null) { content = JsonSerializer.Serialize(AnmeldeTools); } return content; } public void ImportModule(Oqtane.Models.Module module, string content, string version) { List AnmeldeTools = null; if (!string.IsNullOrEmpty(content)) { AnmeldeTools = JsonSerializer.Deserialize>(content); } if (AnmeldeTools != null) { foreach(var AnmeldeTool in AnmeldeTools) { _AnmeldeToolRepository.AddAnmeldeTool(new Models.AnmeldeTool { ModuleId = module.ModuleId, Name = AnmeldeTool.Name }); } } } public Task> GetSearchContentsAsync(PageModule pageModule, DateTime lastIndexedOn) { var searchContentList = new List(); foreach (var AnmeldeTool in _AnmeldeToolRepository.GetAnmeldeTools(pageModule.ModuleId)) { if (AnmeldeTool.ModifiedOn >= lastIndexedOn) { searchContentList.Add(new SearchContent { EntityName = "AdamGaisAnmeldeTool", EntityId = AnmeldeTool.AnmeldeToolId.ToString(), Title = AnmeldeTool.Name, Body = AnmeldeTool.Name, ContentModifiedBy = AnmeldeTool.ModifiedBy, ContentModifiedOn = AnmeldeTool.ModifiedOn }); } } return Task.FromResult(searchContentList); } } }