Friday, January 4, 2008

This Code Creates Document Library, Creates Group and users and assigns it to Sharepoint Document Library

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace DocLibCreator
{
public class DocLibCreator
{
private SPWeb web;
private SPMember _Owner;
public SPGroup Group;
private string _utCode;
public Guid ListID;

public string utCode
{
get { return _utCode; }
set {
try
{
_utCode = value;
SPUser user;
if (Group != null)
{
user = web.Site.RootWeb.EnsureUser(_utCode);
AddUsersToGroup(user);
}
}
catch (SPException e)
{
//System.Windows.Forms.MessageBox.Show(e.Message);
}
}
}



public MercureSiteCreator(SPWeb web)
{
this.web = web;

}

private SPUser GetExistingUser(string _userString)
{
//parse the string after the delimiter '#'
int delimIndex = _userString.IndexOf("#");
string userStr = _userString.Substring(delimIndex + 1);
SPUser user = null;
foreach (SPUser thisUser in web.Users)
{ //if this is current user
if (thisUser.Name.ToLower().IndexOf(userStr.ToLower()) > -1)
{
user = thisUser;
break;
}
}
return user;
}

public SPMember owner
{
get { return web.CurrentUser; }
}

private string _groupName;

public string GroupName
{
get { return _groupName; }
set
{
_groupName = value;
Group = GetSiteGroup(_groupName);

}
}

private bool AddUsersToGroup(SPUser User)
{
if (!IsUserInGroup(User, Group.Name))
{
Group.AddUser(User);
web.AssociatedVisitorGroup.AddUser(User);
web.Site.RootWeb.AssociatedVisitorGroup.AddUser(User);
return true;
}

return false;
}

private bool IsUserInGroup(SPUser user, string grpName)
{
foreach (SPGroup group in user.Groups)
if (group.Name.ToLower().Trim() == grpName.ToLower().Trim())
return true;

return false;
}
public Guid createDocLibrary( string title)
{
Nullable id = GetExistingList(web, title);
if (!id.HasValue)
id = web.Lists.Add(title, "This was created Programatically", SPListTemplateType.DocumentLibrary);
ListID = id.Value;
return id.Value;
}

private Guid? GetExistingList(SPWeb myWeb, string title)
{
foreach (SPList list in myWeb.Lists)
{
if (list.Title.ToLower().Trim() == title.ToLower().Trim())
return list.ID;
}
return null;
}

private SPGroup GetSiteGroup(string groupName)
{
SPGroup group = null;
group = GetExistingSiteGroup(web.Site.RootWeb, groupName);
if (group == null)
{
web.Site.RootWeb.SiteGroups.Add(groupName, owner, null, "");
group = GetExistingSiteGroup(web.Site.RootWeb, groupName);
}




return group;
}

private SPGroup GetExistingSiteGroup(SPWeb webs, string name)
{
foreach (SPGroup group in webs.SiteGroups)
if (group.Name.ToLower().Trim() == name.ToLower().Trim())
return group;
return null;
}


public void CreatePermissions()
{
SPRoleAssignment roleAssignment = new SPRoleAssignment(Group);
SPRoleDefinition role = web.Site.RootWeb.RoleDefinitions["Read"];

if (!roleAssignment.RoleDefinitionBindings.Contains(role))
roleAssignment.RoleDefinitionBindings.Add(role);

SPList list = web.Lists[ListID];
//Check inheritance
if (!list.HasUniqueRoleAssignments)
{
list.BreakRoleInheritance(false);
}
list.RoleAssignments.Add(roleAssignment);
list.Update();
}
}
}