Files
2023-06-21 10:38:57 +02:00

87 lines
2.5 KiB
C#

using library_spo_utils.Constants;
using library_spo_utils.Interfaces.Services;
using Microsoft.Extensions.Logging;
using Microsoft.SharePoint.Client;
namespace library_spo_utils.Services;
internal class ProjectQuickMenuService : IProjectQuickMenuService
{
private readonly ILogger<ProjectQuickMenuService> logger;
private readonly ISiteOptions siteOptions;
public ProjectQuickMenuService(ILogger<ProjectQuickMenuService> logger
, ISiteOptions siteOptions)
{
this.logger = logger;
this.siteOptions = siteOptions;
}
public void CreateForProject(string projName, ClientContext ctx)
{
try
{
ClearQuickMenu(ctx);
var subSiteUrl = siteOptions.GetSubProjSite(projName).ToString();
var itemQuickMenu = Folders.GetProjectQuickMenu(projName, subSiteUrl);
var spNavNodeColl = ctx.Web.Navigation.QuickLaunch;
var newNavNode = new NavigationNodeCreationInformation();
ctx.Load(ctx.Web, w => w.RootFolder.WelcomePage);
foreach (var (name, path) in itemQuickMenu)
{
newNavNode.Title = name;
newNavNode.Url = path;
newNavNode.AsLastNode = true;
spNavNodeColl.Add(newNavNode);
ctx.ExecuteQuery();
logger.LogInformation($"> Il menu rapido è stato aggiornato in {projName}");
if (name != $"SottoCommesse {projName}")
{
continue;
}
var projNameWithoutDash = projName.Replace("-", "");
ctx.Web.RootFolder.WelcomePage = $"SottoCommesse%20{projNameWithoutDash}/Forms/SottoCommesse%20{projNameWithoutDash}.aspx";
ctx.Web.RootFolder.Update();
ctx.ExecuteQuery();
}
}
catch (Exception ex)
{
logger.LogError(ex, "CreateForProject");
}
}
private void ClearQuickMenu(ClientContext ctx)
{
try
{
NavigationNodeCollection navBar = ctx.Web.Navigation.QuickLaunch;
ctx.Load(navBar);
ctx.ExecuteQueryRetry();
int[] element = new[] { 1, 1, 1 };
foreach (var e in element)
{
navBar[e].DeleteObject();
ctx.ExecuteQuery();
}
}
catch (Exception ex)
{
logger.LogError(ex, "ClearQuickMenu");
}
}
}