判断用户是否在指定的组,并向收费总体表增加一条记录

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

posted @ 2008-11-17 17:01  浪漫稻草人  阅读(267)  评论(0)    收藏  举报