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;
}
}