using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PetaPoco.Business; using Sony.Filtr.Contracts.Entities; using Sony.Filtr.DistributedCaching; using Sony.Filtr.Contracts.Abstractions; namespace Sony.Filtr.Core.EditorialPlaylists { public class EditorialPlaylistImportManager { private readonly IApplicationInstanceManager _applicationInstanceManager; private readonly DistributedCacheHandler _cacheHandler; private readonly EditorialPlaylistImportFactory _factory; public EditorialPlaylistImportManager(IApplicationInstanceManager applicationInstanceManager, DistributedCacheHandler cacheHandler, EditorialPlaylistImportFactory factory) { _applicationInstanceManager = applicationInstanceManager; _cacheHandler = cacheHandler; _factory = factory; } public List GetEditorialPlaylistImportUsers(Application app = null) { var cacheKey = GetCacheKeyEditorialPlaylistImportUsers(app); var importUsers = _cacheHandler.Get(cacheKey) as List; if (importUsers == null) { importUsers = _factory.GetPlaylistImportUsers(app); _cacheHandler.Put(cacheKey, importUsers); } return importUsers; } private void ClearCacheEditorialPlaylistImportUsers(int applicationID) { ClearCacheEditorialPlaylistImportUsers(_applicationInstanceManager.GetApplication(applicationID)); } private void ClearCacheEditorialPlaylistImportUsers(Application app) { _cacheHandler.Remove(GetCacheKeyEditorialPlaylistImportUsers(null)); _cacheHandler.Remove(GetCacheKeyEditorialPlaylistImportUsers(app)); } public EditorialPlaylistImportUser SaveEditorialPlaylistImportUser(EditorialPlaylistImportUser user) { if (user.ID == default(int)) user = _factory.AddEditorialPlaylistImportUser(user); else user = _factory.UpdateEditorialPlaylistImportUser(user); ClearCacheEditorialPlaylistImportUsers(user.ApplicationID); return user; } public EditorialPlaylistImportUser GetEditorialPlaylistImportUser(int id) { return _factory.GetPlaylistImportUser(id); } public void DeleteEditorialPlaylistImportUser(EditorialPlaylistImportUser user) { _factory.DeleteEditorialPlaylistImportUser(user); ClearCacheEditorialPlaylistImportUsers(user.ApplicationID); } private string GetCacheKeyEditorialPlaylistImportUsers(Application app) { return "GetEditorialPlaylistImportUsers:" + typeof(EditorialPlaylistImportUser) + ":" + (app != null ? app.ID.ToString() : "null"); } public List GetDeezerImportUsers() { var users = PetaPocoRepository.ReadOnlyInstance.Fetch(); return users; } } }