92 lines
3.1 KiB
C#
92 lines
3.1 KiB
C#
using Marco.Pms.Model.AppMenu;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging;
|
|
using MongoDB.Driver;
|
|
|
|
namespace Marco.Pms.CacheHelper
|
|
{
|
|
public class SidebarMenuHelper
|
|
{
|
|
private readonly IMongoCollection<MenuSection> _oldCollection;
|
|
private readonly IMongoCollection<WebSideMenuItem> _collection;
|
|
private readonly ILogger<SidebarMenuHelper> _logger;
|
|
|
|
public SidebarMenuHelper(IConfiguration configuration, ILogger<SidebarMenuHelper> logger)
|
|
{
|
|
_logger = logger;
|
|
var connectionString = configuration["MongoDB:ModificationConnectionString"];
|
|
var mongoUrl = new MongoUrl(connectionString);
|
|
var client = new MongoClient(mongoUrl);
|
|
var database = client.GetDatabase(mongoUrl.DatabaseName);
|
|
_oldCollection = database.GetCollection<MenuSection>("Menus");
|
|
_collection = database.GetCollection<WebSideMenuItem>("WebSideMenus");
|
|
}
|
|
|
|
public async Task<List<WebSideMenuItem>> GetAllWebMenuSectionsAsync(Guid tenantId)
|
|
{
|
|
try
|
|
{
|
|
var filter = Builders<WebSideMenuItem>.Filter.Eq(e => e.TenantId, tenantId);
|
|
|
|
var result = await _collection
|
|
.Find(filter)
|
|
.ToListAsync();
|
|
if (result.Any())
|
|
{
|
|
return result;
|
|
}
|
|
|
|
tenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26");
|
|
filter = Builders<WebSideMenuItem>.Filter.Eq(e => e.TenantId, tenantId);
|
|
|
|
result = await _collection
|
|
.Find(filter)
|
|
.ToListAsync();
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Error occurred while fetching Web Menu Sections.");
|
|
return new List<WebSideMenuItem>();
|
|
}
|
|
}
|
|
|
|
public async Task<List<WebSideMenuItem>> AddWebMenuItemAsync(List<WebSideMenuItem> newItems)
|
|
{
|
|
try
|
|
{
|
|
await _collection.InsertManyAsync(newItems);
|
|
return newItems;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Error occurred while adding Web Menu Section.");
|
|
return new List<WebSideMenuItem>();
|
|
}
|
|
}
|
|
|
|
public async Task<List<MenuSection>> GetAllMenuSectionsAsync(Guid tenantId)
|
|
{
|
|
var filter = Builders<MenuSection>.Filter.Eq(e => e.TenantId, tenantId);
|
|
|
|
var result = await _oldCollection
|
|
.Find(filter)
|
|
.ToListAsync();
|
|
if (result.Any())
|
|
{
|
|
return result;
|
|
}
|
|
|
|
tenantId = Guid.Parse("b3466e83-7e11-464c-b93a-daf047838b26");
|
|
filter = Builders<MenuSection>.Filter.Eq(e => e.TenantId, tenantId);
|
|
|
|
result = await _oldCollection
|
|
.Find(filter)
|
|
.ToListAsync();
|
|
return result;
|
|
}
|
|
|
|
|
|
}
|
|
}
|