判断用户是否在指定的组,并向收费总体表增加一条记录
public override void ItemUpdated(SPItemEventProperties properties)
{
SPSecurity.RunWithElevatedPrivileges(delegate() //用此方法模拟管理员账户运行此事件处理程序
{
using (SPSite site = new SPSite(properties.SiteId)) //用此方法的话就不用dispose()了
{
using (SPWeb web = site.OpenWeb(properties.OpenWeb().ID)) //注意获得web的方法!!!
{
try
{
SPList list = web.Lists[properties.ListId]; //获得触发事件的列表
SPListItem item = list.Items.GetItemById(properties.ListItemId); //获得触发事件的列表条目
//if (!item.HasUniqueRoleAssignments) item.BreakRoleInheritance(false); //将此条目取消权限继承,如果是“false”,则将去除所有权限,只保留系统账户,如果是“true”,则将上一级权限复制过来。
//SPUser user = web.Users.GetByID(properties.CurrentUserId); //获得触发此事件的用户
SPUser user= web.CurrentUser;
SPRoleAssignment ra = new SPRoleAssignment(web.EnsureUser(user.LoginName)); //生成一个新的角色分配
ra.RoleDefinitionBindings.Add(web.RoleDefinitions["完全控制"]); //将此角色分配绑定“完全控制”权限级别
//item.RoleAssignments.Add(ra); //将此新权限绑定到列表条目上
string modifier = item["修改者"].ToString();
if (CheckUser(modifier.Substring(4), "财务"))
{
if (item["是否已收费"].ToString() == "收费已确认")
{
SPSite tsite = new SPSite("http://ck-moss:3721");
SPWeb tWeb = tsite.OpenWeb();
tWeb.AllowUnsafeUpdates = true;
SPList tlist = tWeb.Lists["收费明细"];
Decimal zbgsum = 0,jyksum=0,grsum=0;
SPQuery tQuery = new SPQuery();
tQuery.Query = "<Where><Eq><FieldRef Name='_x5de5__x7a0b__x7f16__x53f7_'/><Value Type='Lookup'>"+item["工程编号"]+"</Value></Eq></Where>";
SPListItemCollection collList = tlist.GetItems(tQuery);
foreach (SPListItem titem in tlist.GetItems(tQuery))
{
//求“总工办核定收费金额”,“经营科核定收费金额”,“工日”的和。
string[] zgb = titem["总工办核定收费金额"].ToString().Split('#');
string[] jyk = titem["经营科核定收费金额"].ToString().Split('#');
string gri = titem["工日"].ToString();
zbgsum = zbgsum + Convert.ToDecimal(zgb[0]);
jyksum = jyksum + Convert.ToDecimal(jyk[0]);
grsum = grsum + Convert.ToDecimal(gri);
}
//向收费总体记录列表中增加一条记录。
SPList ztlist = tWeb.Lists["收费总体记录"];
SPListItemCollection collListItemsDest = ztlist.Items;
SPListItem oListDest = collListItemsDest.Add();
oListDest["工程编号"] = item["ID"].ToString()+";#"+item["工程编号"].ToString();
oListDest["工程名称"] = item["工程名称"];
oListDest["建设单位"] = item["建设单位"];
oListDest["工作内容"] = item["专业类别"];
oListDest["工日"] = grsum;
oListDest["总实收费金额"]=zbgsum;
oListDest["总应收费金额"] = jyksum;
oListDest["工程项目负责人"] = item["工程项目负责人"];
oListDest["交费时间"] = DateTime.Now;
oListDest.Update();
}
}
if (item["工程项目所在部门"].ToString() == "总工办")
{
if (CheckUser(modifier.Substring(4), "测绘一部") || CheckUser(modifier.Substring(4), "测绘二部") || CheckUser(modifier.Substring(4), "测绘三部"))
{
if (item["任务完成状态"].ToString() == "未完成")
{
item["任务完成状态"] = "已完成";
item["实际施测日期"] = DateTime.Today;
item.Update();
}
}
}
}
catch (Exception ee)
{
}
}
}
}
);
}
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem item = properties.ListItem;
string modifier = item["创建者"].ToString();
if (CheckUser(modifier.Substring(4), "对外业务部"))
{
item["任务下达人"] = item["创建者"];
item.Update();
}
}
public override void ItemDeleting(SPItemEventProperties properties)
{
properties.Cancel = true;
properties.ErrorMessage = "项目不能被删除!";
}
//判断用户是否在指定的组中modifier用户名,Group组名
private bool CheckUser(string modifier, string Group)
{ //获取当前的WEB
SPSite oSite = new SPSite("http://ck-moss:3721");
SPWeb oWeb = oSite.OpenWeb();
SPGroupCollection oGroups = oWeb.Groups;
foreach (SPUser ouser in oGroups[Group].Users)
{
if (ouser.Name == modifier)
{
return true;
}
}
return false;
}
}

浙公网安备 33010602011771号