using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Oqtane.Enums; using Oqtane.Infrastructure; using Oqtane.Models; using Oqtane.Security; using Oqtane.Shared; using AdamGais.Module.AnmeldeTool.Repository; namespace AdamGais.Module.AnmeldeTool.Services { public class ServerAnmeldeToolService : IAnmeldeToolService { private readonly IAnmeldeToolRepository _AnmeldeToolRepository; private readonly IUserPermissions _userPermissions; private readonly ILogManager _logger; private readonly IHttpContextAccessor _accessor; private readonly Alias _alias; public ServerAnmeldeToolService(IAnmeldeToolRepository AnmeldeToolRepository, IUserPermissions userPermissions, ITenantManager tenantManager, ILogManager logger, IHttpContextAccessor accessor) { _AnmeldeToolRepository = AnmeldeToolRepository; _userPermissions = userPermissions; _logger = logger; _accessor = accessor; _alias = tenantManager.GetAlias(); } public Task> GetAnmeldeToolsAsync(int ModuleId) { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View)) { return Task.FromResult(_AnmeldeToolRepository.GetAnmeldeTools(ModuleId).ToList()); } else { _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AnmeldeTool Get Attempt {ModuleId}", ModuleId); return null; } } public Task GetAnmeldeToolAsync(int AnmeldeToolId, int ModuleId) { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View)) { return Task.FromResult(_AnmeldeToolRepository.GetAnmeldeTool(AnmeldeToolId)); } else { _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AnmeldeTool Get Attempt {AnmeldeToolId} {ModuleId}", AnmeldeToolId, ModuleId); return null; } } public Task AddAnmeldeToolAsync(Models.AnmeldeTool AnmeldeTool) { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, AnmeldeTool.ModuleId, PermissionNames.Edit)) { AnmeldeTool = _AnmeldeToolRepository.AddAnmeldeTool(AnmeldeTool); _logger.Log(LogLevel.Information, this, LogFunction.Create, "AnmeldeTool Added {AnmeldeTool}", AnmeldeTool); } else { _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AnmeldeTool Add Attempt {AnmeldeTool}", AnmeldeTool); AnmeldeTool = null; } return Task.FromResult(AnmeldeTool); } public Task UpdateAnmeldeToolAsync(Models.AnmeldeTool AnmeldeTool) { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, AnmeldeTool.ModuleId, PermissionNames.Edit)) { AnmeldeTool = _AnmeldeToolRepository.UpdateAnmeldeTool(AnmeldeTool); _logger.Log(LogLevel.Information, this, LogFunction.Update, "AnmeldeTool Updated {AnmeldeTool}", AnmeldeTool); } else { _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AnmeldeTool Update Attempt {AnmeldeTool}", AnmeldeTool); AnmeldeTool = null; } return Task.FromResult(AnmeldeTool); } public Task DeleteAnmeldeToolAsync(int AnmeldeToolId, int ModuleId) { if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.Edit)) { _AnmeldeToolRepository.DeleteAnmeldeTool(AnmeldeToolId); _logger.Log(LogLevel.Information, this, LogFunction.Delete, "AnmeldeTool Deleted {AnmeldeToolId}", AnmeldeToolId); } else { _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AnmeldeTool Delete Attempt {AnmeldeToolId} {ModuleId}", AnmeldeToolId, ModuleId); } return Task.CompletedTask; } } }