diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a057c93 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vs diff --git a/.vs/ProjectEvaluation/console_spo_utils.metadata.v2 b/.vs/ProjectEvaluation/console_spo_utils.metadata.v2 deleted file mode 100644 index d3499ae..0000000 Binary files a/.vs/ProjectEvaluation/console_spo_utils.metadata.v2 and /dev/null differ diff --git a/.vs/ProjectEvaluation/console_spo_utils.projects.v2 b/.vs/ProjectEvaluation/console_spo_utils.projects.v2 deleted file mode 100644 index 14f0f94..0000000 Binary files a/.vs/ProjectEvaluation/console_spo_utils.projects.v2 and /dev/null differ diff --git a/.vs/console_spo_utils/DesignTimeBuild/.dtbcache.v2 b/.vs/console_spo_utils/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index 7c4ae64..0000000 Binary files a/.vs/console_spo_utils/DesignTimeBuild/.dtbcache.v2 and /dev/null differ diff --git a/.vs/console_spo_utils/FileContentIndex/aa388625-63fe-490a-b358-0e1b49fe4766.vsidx b/.vs/console_spo_utils/FileContentIndex/aa388625-63fe-490a-b358-0e1b49fe4766.vsidx deleted file mode 100644 index c3be2b2..0000000 Binary files a/.vs/console_spo_utils/FileContentIndex/aa388625-63fe-490a-b358-0e1b49fe4766.vsidx and /dev/null differ diff --git a/.vs/console_spo_utils/FileContentIndex/read.lock b/.vs/console_spo_utils/FileContentIndex/read.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.vs/console_spo_utils/v17/.futdcache.v1 b/.vs/console_spo_utils/v17/.futdcache.v1 deleted file mode 100644 index af19d84..0000000 Binary files a/.vs/console_spo_utils/v17/.futdcache.v1 and /dev/null differ diff --git a/console_spo_utils/Program.cs b/console_spo_utils/Program.cs index ba4ebb4..8748d86 100644 --- a/console_spo_utils/Program.cs +++ b/console_spo_utils/Program.cs @@ -1,5 +1,6 @@ using Microsoft.SharePoint; using Microsoft.SharePoint.Client; +using SP = Microsoft.SharePoint.Client; using Microsoft.Online.SharePoint.TenantAdministration; using System; using System.Collections.Concurrent; @@ -29,19 +30,28 @@ namespace SharePointOnlineUtils { string year = DateTime.Now.Year.ToString(); string projectsYear = "Commesse" + year; - Uri site = new Uri(siteCollection + "/sites/" + projectsYear); + var listTitle = "Lista Commesse " + year; + Uri site = new Uri(siteCollection + "/Commesse/" + projectsYear); - using (var authenticationManager = new AuthenticationManager()) - using (var ctx = authenticationManager.GetContext(site, user, psw)) + using (var authMgr = new AuthenticationManager()) + using (var ctx = authMgr.GetContext(site, user, psw)) { - if (SharePointCustomOperation.SiteExist(ctx) != false) + //SharePointCustomOperation.ProjectsYQuickMenu(ctx); + try { - Console.WriteLine($"{projectsYear} - Esiste già."); + if (SharePointCustomOperation.SiteExist(ctx) == false) + SharePointCustomOperation.ProjectsYSite(year, site, user, psw); + + if (SharePointCustomOperation.SiteExist(ctx) == true && SharePointCustomOperation.ListExist(year, ctx) == false) + { + SharePointCustomOperation.ProjectsYList(listTitle, ctx); + SharePointCustomOperation.ProjectsYListField(listTitle, ctx); + SharePointCustomOperation.ProjectsYListView(listTitle, ctx); + } } - else + catch (Exception ex) { - Console.WriteLine($"{projectsYear} - Non esiste, a breve verrà generata."); - SharePointCustomOperation.ProjectsYearGenerator(year, site, user, psw); + Console.WriteLine(ex.Message); } } } @@ -63,9 +73,25 @@ namespace SharePointOnlineUtils return false; } } - - public static async Task ProjectsYearGenerator(string year, Uri site, string user, SecureString psw) + + public static bool ListExist(string year, ClientContext ctx) { + try + { + List targetList = ctx.Web.Lists.GetByTitle("Lista Commesse " + year); + ctx.ExecuteQuery(); + return true; + } + catch (Exception ex) + { + return false; + } + } + + public static async Task ProjectsYSite(string year, Uri site, string user, SecureString psw) + { + Console.WriteLine($"> Inizializzata la fase di creazione del sito '../Commesse{year}'."); + string siteAdmin = "https://italsortbuttrio-admin.sharepoint.com"; Uri path = new Uri(siteAdmin); @@ -91,21 +117,154 @@ namespace SharePointOnlineUtils while (!spo.IsComplete) { - Console.WriteLine($"Il sito '../{scp.Title}' è in fase di creazione."); + Console.WriteLine($"Il sito '../{scp.Title}' è in fase di pubblicazione."); System.Threading.Thread.Sleep(30000); spo.RefreshLoad(); - ctx.ExecuteQuery(); + await ctx.ExecuteQueryAsync(); } - Console.WriteLine($"Il sito è stato creato con successo.\n{site}"); + Console.WriteLine($"> Il sito è stato creato con successo. ({site})"); } catch (Exception ex) { - Console.WriteLine("Qualcosa è andato storto. (" + ex.Message + ")"); + Console.WriteLine($"> Qualcosa è andato storto nella creazione della pagina. ( {ex.Message} )"); } } } + public static async Task ProjectsYQuickMenu(ClientContext ctx) + { + + } + + public static async Task ProjectsYList(string listTitle, ClientContext ctx) + { + try + { + Console.WriteLine($"> Inizializzata la fase di creazione della lista '{listTitle}'."); + + Web web = ctx.Web; + ListCreationInformation creationInfo = new ListCreationInformation(); + + creationInfo.Title = listTitle; + creationInfo.TemplateType = (int)ListTemplateType.GenericList; + List list = web.Lists.Add(creationInfo); + + ctx.ExecuteQuery(); + + ctx.Load(list, l => l.Fields); + + var fld = list.Fields.GetByInternalNameOrTitle("Title"); + if (fld != null) + { + fld.Required = false; + fld.SetShowInDisplayForm(false); + fld.SetShowInEditForm(false); + fld.SetShowInNewForm(false); + + list.Update(); + ctx.ExecuteQuery(); + } + + Console.WriteLine($"> La lista '{listTitle}' è stato creato con successo."); + } + catch (Exception ex) + { + Console.WriteLine($"> Qualcosa è andato storto nella creazione della lista. ( {ex.Message} )"); + } + } + + public static async Task ProjectsYListField(string listTitle, ClientContext ctx) + { + try + { + Console.WriteLine($"> Inizializzata la fase di creazione dei campi '{listTitle}'."); + + Web web = ctx.Web; + List projectsList = web.Lists.GetByTitle(listTitle); + List list = web.Lists.GetByTitle(listTitle); + + ctx.Load(list, l => l.Fields); + ctx.Load(projectsList, b => b.Id); + ctx.ExecuteQuery(); + + string idProjField = @""; + Field lookupIdProjField = list.Fields.AddFieldAsXml(idProjField, true, AddFieldOptions.DefaultValue); + //lookupIdProjField.Update(); + //ctx.Load(lookupIdProjField); + + string clientField = @""; + Field lookupClientField = list.Fields.AddFieldAsXml(clientField, true, AddFieldOptions.DefaultValue); + //lookupClientField.Update(); + //ctx.Load(lookupClientField); + + string dlvReasonField = @"" + + "" + + " 01 VENDITA MACCHINE / IMPIANTI" + + " 02 VENDITA RICAMBI" + + " 04 VENDITA SERVIZI FUORI COMMESSA" + + " 08 VENDITA RIPARAZIONI" + + " 09 ENGINEERING" + + " 11 VENDITA E LAVORAZ.CONTO TERZI" + + " 55 PREVENDITE" + + " NC NON CONFORMITÁ" + + "" + + ""; + Field lookupDlvReasonField = list.Fields.AddFieldAsXml(dlvReasonField, true, AddFieldOptions.DefaultValue); + //lookupDlvReasonField.Update(); + //ctx.Load(lookupDlvReasonField); + + ctx.ExecuteQuery(); + + Console.WriteLine($"> Completata la fase di creazione dei campi '{listTitle}'."); + } + catch (Exception ex) + { + Console.WriteLine($"> Qualcosa è andato storto nella creazione delle colonne. ( {ex.Message} )"); + } + } + + public static async Task ProjectsYListView(string listTitle, ClientContext ctx) + { + try + { + Console.WriteLine($"> Inizializzata la fase di creazione della ListView '{listTitle}'."); + + List list = ctx.Web.Lists.GetByTitle(listTitle); + var views = list.Views; + //ctx.Load(list, l => l.Views); + + + ViewCreationInformation viewCreation = new ViewCreationInformation(); + + viewCreation.SetAsDefaultView = true; + viewCreation.Title = listTitle; + viewCreation.ViewTypeKind = ViewType.None; + viewCreation.ColumnWidth = "350"; + viewCreation.ViewFields = new string[3] { "ID Progetto", "Cliente", "Causale" }; + + var view = views.Add(viewCreation); + + ctx.Load(view); + ctx.ExecuteQuery(); + + Console.WriteLine($"> Completata la fase di creazione della ListView '{viewCreation.Title}'."); + + var customView = views.GetByTitle(viewCreation.Title); + customView.MobileView = true; + customView.MobileDefaultView = true; + + customView.Update(); + ctx.ExecuteQuery(); + + Console.WriteLine($"> MobileView set to true on ListView '{viewCreation.Title}'."); + } + catch (Exception ex) + { + Console.WriteLine($"> Qualcosa è andato storto nella creazione della ListView. ( {ex.Message} )"); + } + } + } @@ -204,7 +363,8 @@ namespace SharePointOnlineUtils } else { - Console.WriteLine($"Returning token from cache for resource {resourceUri.DnsSafeHost} and user {userPrincipalName}"); + //Console.WriteLine($"Returning token from cache for resource {resourceUri.DnsSafeHost} and user {userPrincipalName}"); + Console.WriteLine("OK - Execution Querry"); return accessTokenFromCache; } }