2022-03-01 11:44:13 +00:00
|
|
|
|
namespace ASC.Web.Api.Controllers.Settings;
|
2022-03-01 10:58:02 +00:00
|
|
|
|
|
2022-03-02 08:08:59 +00:00
|
|
|
|
public class CustomNavigationController : BaseSettingsController
|
2022-03-01 10:58:02 +00:00
|
|
|
|
{
|
|
|
|
|
private readonly MessageService _messageService;
|
|
|
|
|
private readonly PermissionContext _permissionContext;
|
|
|
|
|
private readonly SettingsManager _settingsManager;
|
|
|
|
|
private readonly StorageHelper _storageHelper;
|
|
|
|
|
|
2022-03-02 08:08:59 +00:00
|
|
|
|
public CustomNavigationController(
|
|
|
|
|
MessageService messageService,
|
2022-03-01 10:58:02 +00:00
|
|
|
|
ApiContext apiContext,
|
|
|
|
|
PermissionContext permissionContext,
|
|
|
|
|
SettingsManager settingsManager,
|
|
|
|
|
WebItemManager webItemManager,
|
|
|
|
|
StorageHelper storageHelper,
|
2022-03-02 08:08:59 +00:00
|
|
|
|
IMemoryCache memoryCache) : base(apiContext, memoryCache, webItemManager)
|
|
|
|
|
{
|
|
|
|
|
_messageService = messageService;
|
2022-03-01 10:58:02 +00:00
|
|
|
|
_permissionContext = permissionContext;
|
|
|
|
|
_settingsManager = settingsManager;
|
|
|
|
|
_storageHelper = storageHelper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Read("customnavigation/getall")]
|
|
|
|
|
public List<CustomNavigationItem> GetCustomNavigationItems()
|
|
|
|
|
{
|
|
|
|
|
return _settingsManager.Load<CustomNavigationSettings>().Items;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Read("customnavigation/getsample")]
|
|
|
|
|
public CustomNavigationItem GetCustomNavigationItemSample()
|
|
|
|
|
{
|
|
|
|
|
return CustomNavigationItem.GetSample();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Read("customnavigation/get/{id}")]
|
|
|
|
|
public CustomNavigationItem GetCustomNavigationItem(Guid id)
|
|
|
|
|
{
|
|
|
|
|
return _settingsManager.Load<CustomNavigationSettings>().Items.FirstOrDefault(item => item.Id == id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Create("customnavigation/create")]
|
|
|
|
|
public CustomNavigationItem CreateCustomNavigationItemFromBody([FromBody] CustomNavigationItem item)
|
|
|
|
|
{
|
|
|
|
|
return CreateCustomNavigationItem(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Create("customnavigation/create")]
|
|
|
|
|
[Consumes("application/x-www-form-urlencoded")]
|
|
|
|
|
public CustomNavigationItem CreateCustomNavigationItemFromForm([FromForm] CustomNavigationItem item)
|
|
|
|
|
{
|
|
|
|
|
return CreateCustomNavigationItem(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private CustomNavigationItem CreateCustomNavigationItem(CustomNavigationItem item)
|
|
|
|
|
{
|
|
|
|
|
_permissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
|
|
|
|
|
|
|
|
|
|
var settings = _settingsManager.Load<CustomNavigationSettings>();
|
|
|
|
|
|
|
|
|
|
var exist = false;
|
|
|
|
|
|
|
|
|
|
foreach (var existItem in settings.Items)
|
|
|
|
|
{
|
2022-03-17 15:01:39 +00:00
|
|
|
|
if (existItem.Id != item.Id)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-01 10:58:02 +00:00
|
|
|
|
existItem.Label = item.Label;
|
|
|
|
|
existItem.Url = item.Url;
|
|
|
|
|
existItem.ShowInMenu = item.ShowInMenu;
|
|
|
|
|
existItem.ShowOnHomePage = item.ShowOnHomePage;
|
|
|
|
|
|
|
|
|
|
if (existItem.SmallImg != item.SmallImg)
|
|
|
|
|
{
|
|
|
|
|
_storageHelper.DeleteLogo(existItem.SmallImg);
|
|
|
|
|
existItem.SmallImg = _storageHelper.SaveTmpLogo(item.SmallImg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (existItem.BigImg != item.BigImg)
|
|
|
|
|
{
|
|
|
|
|
_storageHelper.DeleteLogo(existItem.BigImg);
|
|
|
|
|
existItem.BigImg = _storageHelper.SaveTmpLogo(item.BigImg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
exist = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!exist)
|
|
|
|
|
{
|
|
|
|
|
item.Id = Guid.NewGuid();
|
|
|
|
|
item.SmallImg = _storageHelper.SaveTmpLogo(item.SmallImg);
|
|
|
|
|
item.BigImg = _storageHelper.SaveTmpLogo(item.BigImg);
|
|
|
|
|
|
|
|
|
|
settings.Items.Add(item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_settingsManager.Save(settings);
|
|
|
|
|
|
|
|
|
|
_messageService.Send(MessageAction.CustomNavigationSettingsUpdated);
|
|
|
|
|
|
|
|
|
|
return item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Delete("customnavigation/delete/{id}")]
|
|
|
|
|
public void DeleteCustomNavigationItem(Guid id)
|
|
|
|
|
{
|
|
|
|
|
_permissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
|
|
|
|
|
|
|
|
|
|
var settings = _settingsManager.Load<CustomNavigationSettings>();
|
|
|
|
|
|
|
|
|
|
var terget = settings.Items.FirstOrDefault(item => item.Id == id);
|
|
|
|
|
|
2022-03-17 15:01:39 +00:00
|
|
|
|
if (terget == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2022-03-01 10:58:02 +00:00
|
|
|
|
_storageHelper.DeleteLogo(terget.SmallImg);
|
|
|
|
|
_storageHelper.DeleteLogo(terget.BigImg);
|
|
|
|
|
|
|
|
|
|
settings.Items.Remove(terget);
|
|
|
|
|
_settingsManager.Save(settings);
|
|
|
|
|
|
|
|
|
|
_messageService.Send(MessageAction.CustomNavigationSettingsUpdated);
|
|
|
|
|
}
|
|
|
|
|
}
|