396 lines
20 KiB
C#
396 lines
20 KiB
C#
using System.Globalization;
|
|
using System.Threading;
|
|
using Microsoft.SharePoint;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.SharePoint.Utilities;
|
|
using Taloyhtio.CondoAutomation.Utils;
|
|
using Taloyhtio.CondoAutomation.Resources;
|
|
|
|
namespace CondoAutomation.TestEnvironment
|
|
{
|
|
// Creates PMC artefacts (lists, groups, permission levels, etc) on standard site collection
|
|
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 thread language to site language in order to use correct resources
|
|
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo((int)rootWeb.Language);
|
|
|
|
var hallitustiedotteetList = rootWeb.GetListByTitleSafely(TaloyhtioPropertyManagersSite.List_BoardMembersReleases_Title);
|
|
if (hallitustiedotteetList == null)
|
|
{
|
|
var hallitustiedotteetId = rootWeb.Lists.Add(TaloyhtioPropertyManagersSite.List_BoardMembersReleases_Title, 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("'{0}' list is created and test items are added", TaloyhtioPropertyManagersSite.List_BoardMembersReleases_Title);
|
|
}
|
|
|
|
var asukastiedotteetList = rootWeb.GetListByTitleSafely(TaloyhtioPropertyManagersSite.List_TenantsReleases_Title);
|
|
if (asukastiedotteetList == null)
|
|
{
|
|
var asukastiedotteetId = rootWeb.Lists.Add(TaloyhtioPropertyManagersSite.List_TenantsReleases_Title, 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();
|
|
}
|
|
Console.WriteLine("'{0}' list is created and test items are added", TaloyhtioPropertyManagersSite.List_TenantsReleases_Title);
|
|
}
|
|
|
|
var osakastiedotteetList = rootWeb.GetListByTitleSafely(TaloyhtioPropertyManagersSite.List_LandlordsReleases_Title);
|
|
if (osakastiedotteetList == null)
|
|
{
|
|
var osakastiedotteetId = rootWeb.Lists.Add(TaloyhtioPropertyManagersSite.List_LandlordsReleases_Title, string.Empty, SPListTemplateType.Announcements);
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
var newItem = rootWeb.Lists[osakastiedotteetId].Items.Add();
|
|
newItem[SPBuiltInFieldId.Title] = "Test item osakas" + i;
|
|
newItem.Update();
|
|
}
|
|
Console.WriteLine("'{0}' list is created and test items are added", TaloyhtioPropertyManagersSite.List_LandlordsReleases_Title);
|
|
}
|
|
|
|
var palstaWeb = rootWeb.GetSubWebSafely(TaloyhtioPropertyManagersSite.Web_Palsta_Title);
|
|
if (palstaWeb == null)
|
|
{
|
|
palstaWeb = rootWeb.Webs.Add("lomakkeet", TaloyhtioPropertyManagersSite.Web_Palsta_Title, "", rootWeb.Language, "BLANKINTERNET#0", false, false);
|
|
//palstaWeb = rootWeb.GetSubWebSafely(TaloyhtioPropertyManagersSite.Web_Palsta_Title);
|
|
//palstaWeb.SetProperty("__InheritsMasterUrl", "true");
|
|
palstaWeb.MasterUrl = rootWeb.MasterUrl;
|
|
palstaWeb.CustomMasterUrl = rootWeb.CustomMasterUrl;
|
|
palstaWeb.Update();
|
|
Console.WriteLine("'{0}' sub web is created on pmc site", TaloyhtioPropertyManagersSite.Web_Palsta_Title);
|
|
}
|
|
|
|
var sitesList = rootWeb.GetListByTitleSafely(TaloyhtioPropertyManagersSite.List_SitesList_Title);
|
|
if (sitesList == null)
|
|
{
|
|
createSitesList(rootWeb);
|
|
Console.WriteLine("'{0}' list is created", TaloyhtioPropertyManagersSite.List_SitesList_Title);
|
|
}
|
|
|
|
var formsRedirectsList = palstaWeb.GetListByTitleSafely(TaloyhtioPropertyManagersSite.List_FormsRedirects_Title);
|
|
if (formsRedirectsList == null)
|
|
{
|
|
createFormsRedirectsList(palstaWeb);
|
|
Console.WriteLine("'{0}' list is created", TaloyhtioPropertyManagersSite.List_FormsRedirects_Title);
|
|
}
|
|
|
|
var propertyManagersGroup = SecurityHelper.GetPropertyManagerGroupSafely(rootWeb);
|
|
if (propertyManagersGroup == null)
|
|
{
|
|
string groupName = SecurityHelper.GetPropertyManagerGroupName(rootWeb);
|
|
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
|
|
Console.WriteLine("'{0}' group is created", groupName);
|
|
}
|
|
|
|
var propertyManagerRoleDefinition = SecurityHelper.GetRoleDefinition(rootWeb.Site,
|
|
TaloyhtioCondoSecurity.ManagerPermissionLevel);
|
|
if (propertyManagerRoleDefinition == null)
|
|
{
|
|
createPMCPermissionLevel(rootWeb);
|
|
Console.WriteLine("managerRoleDefinition is created");
|
|
}
|
|
|
|
propertyManagerRoleDefinition = SecurityHelper.GetRoleDefinition(rootWeb.Site, TaloyhtioCondoSecurity.ManagerPermissionLevel);
|
|
propertyManagersGroup = SecurityHelper.GetPropertyManagerGroupSafely(rootWeb);
|
|
if (propertyManagerRoleDefinition != null && propertyManagersGroup != null)
|
|
{
|
|
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, propertyManagerRoleDefinition, propertyManagersGroup);
|
|
Console.WriteLine("Added '{0}' permissions for '{1}' group", TaloyhtioCondoSecurity.ManagerPermissionLevel, propertyManagersGroup.Name);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("WARNING: '{0}' permission level or Property managers group still not found. Permissions won't be added on root PMC site for Property managers group",
|
|
TaloyhtioCondoSecurity.ManagerPermissionLevel);
|
|
}
|
|
|
|
var howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
|
|
if (howzeeGroup == null)
|
|
{
|
|
string groupName = TaloyhtioCondoSecurity.HowzeeGroupName;
|
|
SecurityHelper.EnsureSiteGroup(rootWeb, groupName);
|
|
Console.WriteLine("'{0}' group is created", groupName);
|
|
}
|
|
|
|
var howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(rootWeb.Site, TaloyhtioCondoSecurity.HowzeePermissionLevel);
|
|
if (howzeeRoleDefinition == null)
|
|
{
|
|
createHowzeePermissionLevel(rootWeb);
|
|
Console.WriteLine("howzeeRoleDefinition is created");
|
|
}
|
|
|
|
howzeeRoleDefinition = SecurityHelper.GetRoleDefinition(rootWeb.Site, TaloyhtioCondoSecurity.HowzeePermissionLevel);
|
|
howzeeGroup = SecurityHelper.GetHowzeeGroupSafely(rootWeb);
|
|
if (howzeeRoleDefinition != null && howzeeGroup != null)
|
|
{
|
|
SecurityHelper.AssignGroupRoleToSecurableObject(rootWeb, rootWeb, howzeeRoleDefinition, howzeeGroup);
|
|
Console.WriteLine("Added '{0}' permissions for '{1}' group", TaloyhtioCondoSecurity.HowzeePermissionLevel, howzeeGroup.Name);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("WARNING: '{0}' permission level or Howzee group still not found. Permissions won't be added on root PMC site for Howzee group",
|
|
TaloyhtioCondoSecurity.HowzeePermissionLevel);
|
|
}
|
|
|
|
var boardMemberRoleDefinition = SecurityHelper.GetRoleDefinition(rootWeb.Site,
|
|
TaloyhtioCondoSecurity.BoardMemberPermissionLevel);
|
|
if (boardMemberRoleDefinition == null)
|
|
{
|
|
createBoardMemberPermissionLevel(rootWeb);
|
|
Console.WriteLine("boardMemberRoleDefinition is created");
|
|
}
|
|
|
|
// Taloyhtio.CondoSite.CustomAction
|
|
var featureId = new Guid("4e3eeb3f-8cea-4a13-9d96-5bc974979c2a");
|
|
if (!site.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
site.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.CondoSite.CustomAction feature activated");
|
|
}
|
|
|
|
// Taloyhtio.PMCRootSite.SiteElements
|
|
featureId = new Guid("a82bd1bc-5f1d-4556-b600-c84eb1f63c04");
|
|
if (!rootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.PMCRootSite.SiteElements feature activated");
|
|
}
|
|
|
|
// Taloyhtio.ControlPanel.Layouts
|
|
featureId = new Guid("e9105304-c6b7-4a21-a8a0-3f8e87e967c4");
|
|
if (!site.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
site.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.ControlPanel.Layouts feature activated");
|
|
}
|
|
|
|
// Taloyhtio.TilaaIlmoitaList
|
|
featureId = new Guid("28612bce-9bf5-423f-94d4-481fea2b5b40");
|
|
if (!rootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.TilaaIlmoitaList feature activated");
|
|
}
|
|
|
|
// Taloyhtio.SendDevelopmentIdea
|
|
featureId = new Guid("70d87e82-df4d-48e6-9c03-3f8f2395fe77");
|
|
if (!rootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.SendDevelopmentIdea feature activated");
|
|
}
|
|
|
|
// Taloyhtio.ToolsList
|
|
featureId = new Guid("a0e3a0ce-f0f9-457b-810c-b09d56acf7e1");
|
|
if (!rootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.ToolsList feature activated");
|
|
}
|
|
|
|
// Taloyhtio.AddonsList
|
|
featureId = new Guid("ecf4686d-7379-4b4e-abe1-6e8801fb983a");
|
|
if (!rootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.AddonsList feature activated");
|
|
}
|
|
|
|
var rootSite = site.WebApplication.Sites[0];
|
|
// Taloyhtio.ApuaList - on the root site of web application
|
|
featureId = new Guid("a1faa2c4-57b5-4c31-8831-39927f61d894");
|
|
if (!rootSite.RootWeb.Features.Any(f => f.DefinitionId == featureId))
|
|
{
|
|
rootSite.RootWeb.Features.Add(featureId);
|
|
Console.WriteLine("Taloyhtio.ApuaList feature activated on the root site of web app");
|
|
}
|
|
|
|
var akatemiaWeb = rootSite.RootWeb.Webs.FirstOrDefault(w => w.Url.ToLower().EndsWith("/akatemia"));
|
|
if (akatemiaWeb == null)
|
|
{
|
|
akatemiaWeb = rootSite.RootWeb.Webs.Add("akatemia", "Taloyhtio.Info Akatemia", "", rootSite.RootWeb.Language, "BLANKINTERNET#0", false, false);
|
|
Console.WriteLine("'{0}' sub web is created on the root site", akatemiaWeb.Url);
|
|
}
|
|
var taloyhtioTiedotaList = akatemiaWeb.GetListByTitleSafely(Constants.AdminNews.LIST_TITLE);
|
|
if (taloyhtioTiedotaList == null)
|
|
{
|
|
createTaloyhtioTiedotaList(akatemiaWeb);
|
|
Console.WriteLine("'{0}' list is created on '{1}' site", Constants.AdminNews.LIST_TITLE, akatemiaWeb.Url);
|
|
}
|
|
|
|
var hallitusakatemiaWeb = rootSite.RootWeb.Webs.FirstOrDefault(w => w.Url.ToLower().EndsWith("/hallitusakatemia"));
|
|
if (hallitusakatemiaWeb == null)
|
|
{
|
|
hallitusakatemiaWeb = rootSite.RootWeb.Webs.Add("hallitusakatemia", "Taloyhtio.Info Akatemia", "", rootSite.RootWeb.Language, "BLANKINTERNET#0", false, false);
|
|
Console.WriteLine("'{0}' sub web is created on the root site", hallitusakatemiaWeb.Url);
|
|
}
|
|
taloyhtioTiedotaList = hallitusakatemiaWeb.GetListByTitleSafely(Constants.AdminNews.LIST_TITLE);
|
|
if (taloyhtioTiedotaList == null)
|
|
{
|
|
createTaloyhtioTiedotaList(hallitusakatemiaWeb);
|
|
Console.WriteLine("'{0}' list is created on '{1}' site", Constants.AdminNews.LIST_TITLE, hallitusakatemiaWeb.Url);
|
|
}
|
|
|
|
var isakatemiaWeb = rootSite.RootWeb.Webs.FirstOrDefault(w => w.Url.ToLower().EndsWith("/isakatemia"));
|
|
if (isakatemiaWeb == null)
|
|
{
|
|
isakatemiaWeb = rootSite.RootWeb.Webs.Add("isakatemia", "Taloyhtio.Info Akatemia", "", rootSite.RootWeb.Language, "BLANKINTERNET#0", false, false);
|
|
Console.WriteLine("'{0}' sub web is created on the root site", isakatemiaWeb.Url);
|
|
}
|
|
taloyhtioTiedotaList = isakatemiaWeb.GetListByTitleSafely(Constants.AdminNews.LIST_TITLE);
|
|
if (taloyhtioTiedotaList == null)
|
|
{
|
|
createTaloyhtioTiedotaList(isakatemiaWeb);
|
|
Console.WriteLine("'{0}' list is created on '{1}' site", Constants.AdminNews.LIST_TITLE, isakatemiaWeb.Url);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void createSitesList(SPWeb rootWeb)
|
|
{
|
|
var listId = rootWeb.Lists.Add(TaloyhtioPropertyManagersSite.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(TaloyhtioCondoSites.Field_CondoName_Title, SPFieldType.Text, true);
|
|
var titleField = list.Fields[SPBuiltInFieldId.Title];
|
|
titleField.Title = TaloyhtioCondoSites.Field_CondoName_Title;
|
|
titleField.Update();
|
|
|
|
list.Fields.Add(TaloyhtioCondoSites.Field_Url_Title, SPFieldType.URL, true);
|
|
list.Fields.Add(TaloyhtioCondoSites.List_Sivustot_Responsible_User, SPFieldType.User, true);
|
|
var urlField = list.Fields[TaloyhtioCondoSites.Field_Url_Title];
|
|
urlField.StaticName = Constants.Fields.URL_STATIC_NAME;
|
|
urlField.Update();
|
|
|
|
list.Fields.Add(TaloyhtioCondoSites.Field_CondoType_Title, SPFieldType.MultiChoice, false);
|
|
var condoTypeField = list.Fields[TaloyhtioCondoSites.Field_CondoType_Title] as SPFieldMultiChoice;
|
|
condoTypeField.Choices.Add(TaloyhtioCondoSites.Choice_Apartment_Title);
|
|
condoTypeField.Choices.Add(TaloyhtioCondoSites.Choice_Terrace_Title);
|
|
condoTypeField.Choices.Add(TaloyhtioCondoSites.Choice_Other_Title);
|
|
condoTypeField.Update(true);
|
|
//SharepointUtils.AddFieldIntoDefaultView(list, headerTitleInternalName);
|
|
}
|
|
|
|
private static void createTaloyhtioTiedotaList(SPWeb rootWeb)
|
|
{
|
|
// var listId = rootWeb.Lists.Add(Constants.AdminNews.LIST_TITLE, "",
|
|
// "TaloyhtioInfo tiedottaa", "00BFEA71-D1CE-42de-9C63-A44004CE0104", // announcementslist
|
|
// (int)SPListTemplateType.Announcements, "100", SPListTemplate.QuickLaunchOptions.On);
|
|
var listId = rootWeb.Lists.Add(Constants.AdminNews.LIST_TITLE, "", SPListTemplateType.Announcements);
|
|
//var list = rootWeb.Lists[listId];
|
|
|
|
// var titleField = list.Fields[SPBuiltInFieldId.Title];
|
|
// titleField.Title = Constants.AdminNews.FIELD_TITLE;
|
|
// titleField.Update();
|
|
|
|
// list.Fields.Add(Constants.AdminNews.FIELD_TEXT, SPFieldType.Note, false);
|
|
// list.Fields.Add(Constants.AdminNews.FIELD_EXPIRY_DATE, SPFieldType.DateTime, false);
|
|
}
|
|
|
|
private static void createFormsRedirectsList(SPWeb palstaWeb)
|
|
{
|
|
var listId = palstaWeb.Lists.Add(TaloyhtioPropertyManagersSite.List_FormsRedirects_Title, "",
|
|
"lists/lomakeohjaukset", "00BFEA71-DE22-43B2-A848-C05709900100", // customlist
|
|
(int)SPListTemplateType.GenericList, "100", SPListTemplate.QuickLaunchOptions.On);
|
|
var list = palstaWeb.Lists[listId];
|
|
|
|
//list.Fields.Add(TaloyhtioPropertyManagersSite.Field_Target_Title, SPFieldType.Text, true);
|
|
var titleField = list.Fields[SPBuiltInFieldId.Title];
|
|
titleField.Title = TaloyhtioPropertyManagersSite.Field_Target_Title;
|
|
titleField.Update();
|
|
|
|
list.Fields.Add(TaloyhtioPropertyManagersSite.Field_ServiceCompanyEmail_Title, SPFieldType.Text, false);
|
|
list.Fields.Add(TaloyhtioPropertyManagersSite.Field_PMCEmail_Title, SPFieldType.Text, false);
|
|
}
|
|
|
|
private static void createPMCPermissionLevel(SPWeb web)
|
|
{
|
|
if (!web.HasUniqueRoleDefinitions)
|
|
{
|
|
web.RoleDefinitions.BreakInheritance(false, false);
|
|
}
|
|
|
|
var roleDefinition = new SPRoleDefinition();
|
|
roleDefinition.Name = TaloyhtioCondoSecurity.ManagerPermissionLevel;
|
|
roleDefinition.BasePermissions =
|
|
SPBasePermissions.AddListItems |
|
|
SPBasePermissions.EditListItems |
|
|
SPBasePermissions.DeleteListItems |
|
|
SPBasePermissions.ViewListItems |
|
|
SPBasePermissions.ManageSubwebs |
|
|
SPBasePermissions.ManageWeb |
|
|
SPBasePermissions.AddAndCustomizePages |
|
|
SPBasePermissions.BrowseDirectories |
|
|
SPBasePermissions.ViewPages |
|
|
SPBasePermissions.EnumeratePermissions |
|
|
SPBasePermissions.BrowseUserInfo |
|
|
SPBasePermissions.Open |
|
|
SPBasePermissions.ManagePersonalViews;
|
|
|
|
web.RoleDefinitions.Add(roleDefinition);
|
|
}
|
|
|
|
private static void createBoardMemberPermissionLevel(SPWeb web)
|
|
{
|
|
if (!web.HasUniqueRoleDefinitions)
|
|
{
|
|
web.RoleDefinitions.BreakInheritance(false, false);
|
|
}
|
|
|
|
var roleDefinition = new SPRoleDefinition();
|
|
roleDefinition.Name = TaloyhtioCondoSecurity.BoardMemberPermissionLevel;
|
|
roleDefinition.BasePermissions =
|
|
SPBasePermissions.AddListItems |
|
|
SPBasePermissions.DeleteListItems |
|
|
SPBasePermissions.ViewListItems |
|
|
SPBasePermissions.ViewFormPages |
|
|
SPBasePermissions.ViewPages |
|
|
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 = TaloyhtioCondoSecurity.HowzeePermissionLevel;
|
|
roleDefinition.BasePermissions =
|
|
SPBasePermissions.AddListItems |
|
|
SPBasePermissions.DeleteListItems |
|
|
SPBasePermissions.ViewListItems |
|
|
SPBasePermissions.ViewFormPages |
|
|
SPBasePermissions.ViewPages |
|
|
SPBasePermissions.Open;
|
|
|
|
web.RoleDefinitions.Add(roleDefinition);
|
|
}
|
|
}
|
|
}
|