Taylohtio/CompanyAutomation/CompanyAutomation.TestEnvir.../Program.cs

250 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.SharePoint;
using Taloyhtio.CompanyAutomation.Utils;
using Taloyhtio.CompanyAutomation.Resources;
namespace CompanyAutomation.TestEnvironment
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Usage: exe <site_collection_url>");
return;
}
using (var site = new SPSite(args[0]))
{
var rootWeb = site.RootWeb;
// set culture is needed for changing list title
// see https://sharepoint.stackexchange.com/questions/146330/rename-list-with-powershell-sp2013
var ci = new CultureInfo((int)rootWeb.Language);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture = ci;
var hallitustiedotteetList = rootWeb.GetListByTitleSafely("Hallitustiedotteet");
if (hallitustiedotteetList == null)
{
var hallitustiedotteetId = rootWeb.Lists.Add("Hallitustiedotteet", string.Empty, SPListTemplateType.Announcements);
for (int i = 0; i < 10; i++)
{
var newItem = rootWeb.Lists[hallitustiedotteetId].Items.Add();
newItem[SPBuiltInFieldId.Title] = "Test item hallitus " + i;
newItem.Update();
}
Console.WriteLine("'Hallitustiedotteet' list is created and test items are added");
}
var asukastiedotteetList = rootWeb.GetListByTitleSafely("Asiakastiedotteet");
if (asukastiedotteetList == null)
{
var asukastiedotteetId = rootWeb.Lists.Add("Asukastiedotteet", string.Empty, SPListTemplateType.Announcements);
for (int i = 0; i < 10; i++)
{
var newItem = rootWeb.Lists[asukastiedotteetId].Items.Add();
newItem[SPBuiltInFieldId.Title] = "Test item asukas" + i;
newItem.Update();
}
var list = rootWeb.Lists[asukastiedotteetId];
list.Title = "Asiakastiedotteet";
list.Update();
Console.WriteLine("'Asiakastiedotteet' list is created and test items are added");
}
var sitesList = rootWeb.GetListByTitleSafely(TaloyhtioCompanyAutomation.List_SitesList_Title);
if (sitesList == null)
{
createSitesList(rootWeb);
Console.WriteLine("'{0}' list is created", TaloyhtioCompanyAutomation.List_SitesList_Title);
}
var contactsList = rootWeb.GetListByTitleSafely("Yhteystiedot");
if (contactsList == null)
{
rootWeb.Lists.Add("Yhteystiedot", string.Empty, SPListTemplateType.Contacts);
Console.WriteLine("'Yhteystiedot' list is created and test items are added");
}
var palstaWeb = rootWeb.GetSubWebSafely("Tilitoimiston palsta");
if (palstaWeb == null)
{
rootWeb.Webs.Add("lomakkeet", "Tilitoimiston palsta", "", 1035, "BLANKINTERNET#0", false, false);
Console.WriteLine("'Tilitoimiston palsta' sub web is created on pmc site");
}
var accountingCompanyGroup = SecurityHelper.GetAccountingCompanyGroupSafely(rootWeb);
if (accountingCompanyGroup == null)
{
string groupName = SecurityHelper.GetAccountCompanyGroupName(rootWeb);
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
Console.WriteLine("'{0}' group is created", groupName);
}
var accountingCompanyRoleDefinition = SecurityHelper.GetRoleDefinition(site,
TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
if (accountingCompanyRoleDefinition == null)
{
createAccountingCompanyPermissionLevel(rootWeb);
Console.WriteLine("'{0}' permission level is created", TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
}
accountingCompanyGroup = SecurityHelper.GetAccountingCompanyGroupSafely(rootWeb);
accountingCompanyRoleDefinition = SecurityHelper.GetRoleDefinition(site,
TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name);
if (accountingCompanyGroup != null && accountingCompanyRoleDefinition != null)
{
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, accountingCompanyRoleDefinition,
accountingCompanyGroup);
Console.WriteLine("Granted '{0}' permission level to '{1}' group", TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name,
accountingCompanyGroup.Name);
}
var howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
if (howzeeGroup == null)
{
string groupName = TaloyhtioCompanyAutomation.Group_Howzee_Name;
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
Console.WriteLine("'{0}' group is created", groupName);
}
var howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(site,
TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
if (howzeeRoleDefinition == null)
{
createHowzeePermissionLevel(rootWeb);
Console.WriteLine("'{0}' permission level is created", TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
}
howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(site, TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name);
if (howzeeGroup != null && howzeeRoleDefinition != null)
{
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, howzeeRoleDefinition, howzeeGroup, false);
Console.WriteLine("Granted '{0}' permission level to '{1}' group", TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name,
howzeeGroup.Name);
}
}
}
private static void createAccountingCompanyPermissionLevel(SPWeb web)
{
if (!web.HasUniqueRoleDefinitions)
{
web.RoleDefinitions.BreakInheritance(false, false);
}
var roleDefinition = new SPRoleDefinition();
roleDefinition.Name = TaloyhtioCompanyAutomation.PermissionLevel_AccountingCompany_Name;
roleDefinition.BasePermissions =
SPBasePermissions.AddListItems |
SPBasePermissions.EditListItems |
SPBasePermissions.DeleteListItems |
SPBasePermissions.ViewListItems |
SPBasePermissions.ApproveItems |
SPBasePermissions.OpenItems |
SPBasePermissions.ViewVersions |
SPBasePermissions.DeleteVersions |
SPBasePermissions.ViewFormPages |
SPBasePermissions.AddAndCustomizePages |
SPBasePermissions.BrowseDirectories |
SPBasePermissions.ViewPages |
SPBasePermissions.BrowseUserInfo |
SPBasePermissions.UseRemoteAPIs |
SPBasePermissions.Open;
web.RoleDefinitions.Add(roleDefinition);
}
private static void createHowzeePermissionLevel(SPWeb web)
{
if (!web.HasUniqueRoleDefinitions)
{
web.RoleDefinitions.BreakInheritance(false, false);
}
var roleDefinition = new SPRoleDefinition();
roleDefinition.Name = TaloyhtioCompanyAutomation.PermissionLevel_Howzee_Name;
roleDefinition.BasePermissions =
SPBasePermissions.ManageLists |
SPBasePermissions.CancelCheckout |
SPBasePermissions.AddListItems |
SPBasePermissions.EditListItems |
SPBasePermissions.DeleteListItems |
SPBasePermissions.ViewListItems |
SPBasePermissions.ApproveItems |
SPBasePermissions.OpenItems |
SPBasePermissions.ViewVersions |
SPBasePermissions.DeleteVersions |
SPBasePermissions.CreateAlerts |
SPBasePermissions.ViewFormPages |
SPBasePermissions.ManagePermissions |
SPBasePermissions.ViewUsageData |
SPBasePermissions.ManageSubwebs |
SPBasePermissions.ManageWeb |
SPBasePermissions.AddAndCustomizePages |
SPBasePermissions.ApplyThemeAndBorder |
SPBasePermissions.ApplyStyleSheets |
SPBasePermissions.CreateGroups |
SPBasePermissions.BrowseDirectories |
SPBasePermissions.ViewPages |
SPBasePermissions.EnumeratePermissions |
SPBasePermissions.BrowseUserInfo |
SPBasePermissions.ManageAlerts |
SPBasePermissions.UseRemoteAPIs |
SPBasePermissions.UseClientIntegration |
SPBasePermissions.Open |
SPBasePermissions.EditMyUserInfo |
SPBasePermissions.ManagePersonalViews |
SPBasePermissions.AddDelPrivateWebParts |
SPBasePermissions.UpdatePersonalWebParts;
web.RoleDefinitions.Add(roleDefinition);
}
private static void createSitesList(SPWeb rootWeb)
{
var listId = rootWeb.Lists.Add(
TaloyhtioCompanyAutomation.List_SitesList_Title,
"",
"SitesList",
"00BFEA71-DE22-43B2-A848-C05709900100", // customlist
(int)SPListTemplateType.GenericList,
"100",
SPListTemplate.QuickLaunchOptions.On);
var list = rootWeb.Lists[listId];
//list.Fields.Add(TaloyhtioCompanyAutomation.Field_CompanyName_Title, SPFieldType.Text, true);
var titleField = list.Fields[SPBuiltInFieldId.Title];
titleField.Title = TaloyhtioCompanyAutomation.Field_CompanyName_Title;
titleField.Update();
list.Fields.Add(TaloyhtioCompanyAutomation.Field_Accountant_Title, SPFieldType.User, false);
list.Fields.Add(TaloyhtioCompanyAutomation.Field_Url_Title, SPFieldType.URL, true);
var urlField = list.Fields[TaloyhtioCompanyAutomation.Field_Url_Title];
urlField.StaticName = Constants.Fields.URL_STATIC_NAME;
urlField.Update();
list.Fields.Add(TaloyhtioCompanyAutomation.Field_MostPopularSite_Title, SPFieldType.Boolean, false);
list.Fields.Add("Omistaja", SPFieldType.User, false);
var view = list.DefaultView;
view.ViewFields.Add(list.Fields[TaloyhtioCompanyAutomation.Field_Url_Title]);
view.ViewFields.Add("Omistaja");
view.ViewFields.Add(list.Fields[TaloyhtioCompanyAutomation.Field_Accountant_Title]);
view.Update();
}
}
}