Service update, import changes from web_portal
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
using library_spo_utils.Constants;
|
||||
using library_spo_utils.Enums;
|
||||
using library_spo_utils.Interfaces.Repositories;
|
||||
using library_spo_utils.Interfaces.Services;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.SharePoint.Client;
|
||||
using Microsoft.SharePoint.Client.DocumentSet;
|
||||
|
||||
namespace library_spo_utils.Services;
|
||||
|
||||
internal class PurchasingRequestDocSetService : IPurchasingRequestDocSetService
|
||||
{
|
||||
private readonly IPurchasingRequestRepository _purchasingRequestRepository;
|
||||
private readonly ISharePointCustomOperation _cpt;
|
||||
private readonly IOneNoteService _oneNoteService;
|
||||
private readonly ISiteOptions _siteOptions;
|
||||
private readonly ISharePointAuthenticationManager _sharePointAuthenticationManager;
|
||||
private readonly IFieldEntryDataUpdate _fieldEntryDataUpdate;
|
||||
private readonly ILogger<PurchasingRequestDocSetService> _logger;
|
||||
|
||||
public PurchasingRequestDocSetService(
|
||||
IPurchasingRequestRepository purchasingRequestRepository,
|
||||
ISharePointCustomOperation cpt,
|
||||
IOneNoteService oneNoteService,
|
||||
ISiteOptions siteOptions,
|
||||
ISharePointAuthenticationManager sharePointAuthenticationManager,
|
||||
IFieldEntryDataUpdate fieldEntryDataUpdate,
|
||||
ILogger<PurchasingRequestDocSetService> logger)
|
||||
{
|
||||
_purchasingRequestRepository = purchasingRequestRepository;
|
||||
_cpt = cpt;
|
||||
_oneNoteService = oneNoteService;
|
||||
_siteOptions = siteOptions;
|
||||
_sharePointAuthenticationManager = sharePointAuthenticationManager;
|
||||
_fieldEntryDataUpdate = fieldEntryDataUpdate;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void Create(string purchasingRequestName, string docLibraryName, string tenantName, ClientContext ctx)
|
||||
{
|
||||
#region Context
|
||||
|
||||
var web = ctx.Web;
|
||||
ctx.Load(web, w => w.Url);
|
||||
List list = web.Lists.GetByTitle(docLibraryName);
|
||||
ctx.Load(list, l => l.RootFolder, l => l.ContentTypes, l => l.Fields, l => l.ContentTypesEnabled);
|
||||
ctx.ExecuteQuery();
|
||||
list.ContentTypesEnabled = true;
|
||||
list.Update();
|
||||
|
||||
if (!_cpt.ListContentTypeExist(ctx, docLibraryName, "Set di documenti"))
|
||||
{
|
||||
var documentCT = ctx.Site.RootWeb.AvailableContentTypes.GetById("0x0120D5");
|
||||
ctx.Load(documentCT);
|
||||
ctx.ExecuteQuery();
|
||||
|
||||
var ctDocSet = new ContentTypeCreationInformation()
|
||||
{
|
||||
Name = "Set di documenti",
|
||||
ParentContentType = documentCT
|
||||
};
|
||||
list.ContentTypes.Add(ctDocSet);
|
||||
|
||||
list.Update();
|
||||
ctx.ExecuteQuery();
|
||||
}
|
||||
|
||||
var ctData = list.ContentTypes.Where(c => c.Name == "Set di documenti");
|
||||
var contentType = ctData.FirstOrDefault();
|
||||
ctx.Load(contentType);
|
||||
ctx.ExecuteQuery();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
Console.WriteLine($"> Inizializzata la fase di creazione per {purchasingRequestName}.");
|
||||
|
||||
#region DocSet Field Entry
|
||||
|
||||
DocumentSet.Create(ctx, list.RootFolder, purchasingRequestName, contentType.Id);
|
||||
ctx.ExecuteQuery();
|
||||
|
||||
Console.WriteLine($"> DocumentSet {purchasingRequestName} creata.");
|
||||
|
||||
//var dsItem = list.RootFolder.Folders.GetByUrl(purchasingRequestName).ListItemAllFields;
|
||||
|
||||
//dsItem["PAL_PO_Supplier"] = _purchasingRequestRepository.DefaultPurchasingRequestSupplier(purchasingRequestName);
|
||||
//dsItem["PAL_Status"] = _purchasingRequestRepository.DefaultPurchasingRequestState(purchasingRequestName);
|
||||
|
||||
//dsItem.Update();
|
||||
//ctx.ExecuteQuery();
|
||||
|
||||
_fieldEntryDataUpdate.FieldUpdate(ctx, docLibraryName, purchasingRequestName, FieldUpdateType.PurchasingRequest);
|
||||
|
||||
Console.WriteLine($"> Field value update.");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Folder
|
||||
|
||||
ctx.ExecuteQuery();
|
||||
|
||||
var purchCtx = _sharePointAuthenticationManager.GetContext(_siteOptions.GetPurchasingSite());
|
||||
|
||||
_oneNoteService.CreateFolderInsidePurchasing(purchasingRequestName, purchCtx, PurchType.Request);
|
||||
|
||||
Console.WriteLine($"Le sotto cartelle sono state create con successo in {purchasingRequestName}");
|
||||
|
||||
#endregion
|
||||
|
||||
Console.WriteLine($"> {purchasingRequestName} creato con successo.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user