using library_spo_utils.Enums; using library_spo_utils.Interfaces.Services; using Microsoft.Extensions.Logging; namespace library_spo_utils.Services; internal class PurchasingPackingSlipBuildService : IPurchasingPackingSlipBuildService { private readonly ISiteOptions _siteOptions; private readonly ISharePointAuthenticationManager _sharePointAuthenticationManager; private readonly ISharePointCustomOperation _spc; private readonly IPurchasingPackingSlipDocLibraryService _purchasingPackingSlipDocLibraryService; private readonly IPurchasingPackingSlipDocSetService _purchasingPackingSlipDocSetService; private readonly IFieldEntryDataUpdate _fieldEntryDataUpdate; private readonly ILogger _logger; public PurchasingPackingSlipBuildService( ISiteOptions siteOptions, ISharePointAuthenticationManager sharePointAuthenticationManager, ISharePointCustomOperation spc, IPurchasingPackingSlipDocLibraryService purchasingPackingSlipDocLibraryService, IPurchasingPackingSlipDocSetService purchasingPackingSlipDocSetService, IFieldEntryDataUpdate fieldEntryDataUpdate, ILogger logger) { _siteOptions = siteOptions; _sharePointAuthenticationManager = sharePointAuthenticationManager; _spc = spc; _purchasingPackingSlipDocLibraryService = purchasingPackingSlipDocLibraryService; _purchasingPackingSlipDocSetService = purchasingPackingSlipDocSetService; _fieldEntryDataUpdate = fieldEntryDataUpdate; _logger = logger; } public void CreateIfNotExists(string purchasingPackingSlipName) { var site = _siteOptions.GetPurchasingPackingSlipSite(); var ctx = _sharePointAuthenticationManager.GetContext(site); var list = _siteOptions.GetPurchasingPackingSlipLibrary(purchasingPackingSlipName); var tenant = _siteOptions.GetPurchasingPackingSlipTenat(); if (!_spc.SiteExist(ctx)) { throw new Exception($"Impossibile to build site it don't exist"); } if (!_spc.ListExist(ctx, list)) { _purchasingPackingSlipDocLibraryService.Create(list, ctx); } if (!_spc.FolderExistsInsideList(ctx, list, purchasingPackingSlipName)) { _purchasingPackingSlipDocSetService.Create(purchasingPackingSlipName, list, tenant, ctx); } else { _logger.LogInformation($"Quotation with {purchasingPackingSlipName} already exist"); _fieldEntryDataUpdate.FieldUpdate(ctx, list, purchasingPackingSlipName, FieldUpdateType.PurchasingPackingSlip); } } }