Beispiel #1
0
        /// <summary>
        /// 删除流程参与人
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                long?id = (sender as LinkButton).CommandArgument.ToLongNullable();
                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
                {
                    using (BizDataContext db = new BizDataContext())
                    {
                        SysProcessParticipant p = db.FindById <SysProcessParticipant>(id);
                        if (p != null)
                        {
                            //同步删除关联的活动参与人
                            var apList = db.Where <SysActivityParticipant>(x => x.ParticipantId == id);
                            foreach (var ap in apList)
                            {
                                db.Delete(ap);
                            }

                            db.Delete(p);
                        }
                    }
                    ts.Complete();
                }
                BindGrid();
            }
            catch (Exception ex)
            {
                this.AjaxAlert(ex);
            }
        }
Beispiel #2
0
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="selectedId"></param>
        private void Delete(long selectedId)
        {
            var section = this.DataHelper.FindById <SysFormFieldSection>(selectedId);

            if (section != null)
            {
                var fieldList = this.DataHelper.Where <SysFormField>(p => p.FormSectionId == selectedId);

                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
                {
                    using (BizDataContext db = new BizDataContext())
                    {
                        foreach (var field in fieldList)
                        {
                            db.Delete(field);
                        }
                        db.Delete(section);
                    }
                    ts.Complete();
                }
            }
            else
            {
                var field = this.DataHelper.FindById <SysFormField>(selectedId);
                if (field != null)
                {
                    this.DataHelper.Delete(field);
                }
            }
        }
        /// <summary>
        /// 删除流程,只有“新增”状态的可以删除
        /// </summary>
        public void DeleteProcess()
        {
            using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
            {
                using (BizDataContext db = new BizDataContext())
                {
                    if (_process != null && _process.ProcessStatus == (int)ProcessState.Created)
                    {
                        //删除流程
                        db.Delete(_process);

                        //删除活动
                        db.Where <SysActivity>(p => p.ProcessId == _process.ProcessId).ToList().ForEach(p =>
                        {
                            //删除活动
                            db.Delete(p);

                            //删除活动参与人
                            db.Where <SysActivityParticipant>(i => i.ActivityId == p.ActivityId).ToList().ForEach(i => db.Delete(i));
                        });

                        //删除流程参与人
                        db.Where <SysProcessParticipant>(p => p.ProcessId == _process.ProcessId).ToList().ForEach(p => db.Delete(p));

                        //删除连接线
                        db.Where <SysTransition>(p => p.ProcessId == _process.ProcessId).ToList().ForEach(p => db.Delete(p));
                    }
                    else
                    {
                        throw new Exception("流程不存在或当前流程状态不能删除");
                    }
                }
                ts.Complete();
            }
        }
Beispiel #4
0
 /// <summary>
 /// 删除
 /// </summary>
 /// <param name="serser"></param>
 /// <param name="e"></param>
 protected void lbtnDel_Click(object sender, EventArgs e)
 {
     using (BizDataContext context = new BizDataContext())
     {
         int             id = int.Parse((sender as LinkButton).CommandArgument);
         SysProcessProxy ProcessProxyData = context.FirstOrDefault <SysProcessProxy>(p => p.ProcessProxyId == id);
         context.Delete(ProcessProxyData);
     }
     Response.Redirect(Request.Url.ToString());
 }
Beispiel #5
0
 public bool DeleteRoleFunction(int roleId)
 {
     try
     {
         using (BizDataContext context = new BizDataContext(true))
         {
             List <T_Role_Function> list = context.Where <T_Role_Function>(r => r.Role_ID == roleId);
             if ((list != null) && (list.Count > 0))
             {
                 foreach (T_Role_Function function in list)
                 {
                     context.Delete(function);
                 }
             }
         }
         return(true);
     }
     catch (Exception exception)
     {
         AppLogHelper.Error(exception);
         return(false);
     }
 }
Beispiel #6
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                long?entityId = this.scEntity.SelectedValues.FirstOrDefault().ToLongNullable();
                if (entityId == null)
                {
                    throw new Exception("请选择实体");
                }
                List <int> roleIdList = this.scRole.SelectedValues.Select(p => p.ToIntNullable()).Where(p => p != null).Select(p => p.Value).ToList();
                if (roleIdList.Count == 0)
                {
                    throw new Exception("请选择角色");
                }
                List <int> opList = this.scOperation.SelectedValues.Select(p => p.ToIntNullable()).Where(p => p != null).Select(p => p.Value).ToList();
                if (opList.Count == 0)
                {
                    throw new Exception("请选择操作");
                }
                int?privilege = this.ccPrivilege.SelectedValue.ToIntNullable();
                if (privilege == null)
                {
                    throw new Exception("请选择权限");
                }

                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
                {
                    using (BizDataContext db = new BizDataContext())
                    {
                        var delList = db.Where <SysDataPrivilege>(p => p.EntityId == entityId.Value)
                                      .Where(p => roleIdList.Contains(p.RoleId)).ToList();
                        foreach (var del in delList)
                        {
                            db.Delete(del);
                        }

                        var insertList = new List <SysDataPrivilege>();
                        foreach (var roleId in roleIdList)
                        {
                            foreach (var op in opList)
                            {
                                SysDataPrivilege data = new SysDataPrivilege()
                                {
                                    RoleId         = roleId,
                                    EntityId       = entityId.Value,
                                    OperationId    = op,
                                    PrivelegeLevel = privilege.Value,
                                };
                                insertList.Add(data);
                            }
                        }
                        db.BatchInsert(insertList);
                    }
                    ts.Complete();
                }
                Clear();
                this.AjaxAlert("保存成功");
            }
            catch (Exception ex)
            {
                this.AjaxAlert(ex);
            }
        }
        /// <summary>
        /// 清除流程
        /// </summary>
        /// <param name="processId"></param>
        public string Delete(long processId)
        {
            try
            {
                using (BizDataContext context = new BizDataContext())
                {
                    SendToClient("正在删除旧流程定义...", 10);

                    SysProcess process = context.FindById <SysProcess>(processId);
                    if (process != null)
                    {
                        //禁用外键
                        DisableConstraint();

                        //删除流程
                        context.Delete(process);

                        //删除活动
                        context.Where <SysActivity>(p => p.ProcessId == processId).ToList().ForEach(p =>
                        {
                            //删除活动
                            context.Delete(p);

                            //删除活动操作
                            context.Where <SysActivityOperation>(i => i.ActivityId == p.ActivityId).ToList().ForEach(i =>
                            {
                                //删除活动操作
                                context.Delete(i);

                                //删除活动操作步骤
                                context.Where <SysActivityStep>(q => q.OperationId == i.OperationId).ToList().ForEach(q => context.Delete(q));
                            });

                            //删除活动提醒
                            context.Where <SysActivityRemind>(i => i.ActivityId == p.ActivityId).ToList().ForEach(i =>
                            {
                                //删除活动提醒
                                context.Delete(i);

                                //删除活动提醒参与人
                                context.Where <SysActivityRemindParticipant>(q => q.RemindId == i.RemindId).ToList().ForEach(q => context.Delete(q));
                            });

                            //删除活动参与人
                            context.Where <SysActivityParticipant>(i => i.ActivityId == p.ActivityId).ToList().ForEach(i => context.Delete(i));

                            //删除表达式
                            context.Where <SysExpression>(i => i.ActivityId == p.ActivityId).ToList().ForEach(i => context.Delete(i));
                        });

                        //删除流程参与人
                        context.Where <SysProcessParticipant>(p => p.ProcessId == processId).ToList().ForEach(p => context.Delete(p));

                        //删除流程提醒
                        context.Where <SysProcessRemind>(p => p.ProcessId == processId).ToList().ForEach(p =>
                        {
                            //删除流程提醒
                            context.Delete(p);

                            //删除流程提醒参与人
                            context.Where <SysProcessRemindParticipant>(q => q.RemindId == p.RemindId).ToList().ForEach(q => context.Delete(q));
                        });

                        //删除连接线
                        context.Where <SysTransition>(p => p.ProcessId == processId).ToList().ForEach(p => context.Delete(p));

                        //启用外键
                        EnableConstraint();

                        return(null);
                    }
                    return(null);
                }
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        /// <summary>
        /// 删除活动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                //所有活动
                Dictionary <long, SysActivity> activityDict = this.DataHelper.Set <SysActivity>()
                                                              .Where(p => p.ProcessId == this.ProcessId).ToDictionary(p => p.ActivityId);

                if (activityDict.Count == 4)
                {
                    throw new Exception("只有一个审核活动,不能删除");
                }

                //当前活动
                SysActivity a = activityDict[this.SelectedActivityId];

                //当前活动参与人
                List <SysActivityParticipant> apList = this.DataHelper.Set <SysActivityParticipant>()
                                                       .Where(p => p.ActivityId == this.SelectedActivityId).ToList();

                //此活动之后的审核活动
                List <SysActivity> nextActivityList = activityDict.Values.Where(p => (p.DisplayOrder ?? 0) > a.DisplayOrder).ToList();

                //最后一个审核活动
                SysActivity lastActivity = activityDict.Values.OrderByDescending(p => p.DisplayOrder ?? 0).FirstOrDefault();

                //结束活动(驳回)
                SysActivity endReject = activityDict.Values.FirstOrDefault(p => p.ActivityType == (int)ActivityType.End && p.ActivityName == "驳回");

                //通过指向当前活动的连接线
                SysTransition tIn_Pass = this.DataHelper.Set <SysTransition>()
                                         .Where(p => p.PostActivityId == this.SelectedActivityId &&
                                                p.Direction == (int)FlowStepDirection.True).FirstOrDefault();

                //驳回指向当前活动的连接线(集合)
                List <SysTransition> tIn_RejectList = this.DataHelper.Set <SysTransition>()
                                                      .Where(p => p.PostActivityId == this.SelectedActivityId &&
                                                             p.Direction == (int)FlowStepDirection.False).ToList();

                //从当前活动通过指向的连接线
                SysTransition tOut_Pass = this.DataHelper.Set <SysTransition>()
                                          .Where(p => p.PreActivityId == this.SelectedActivityId &&
                                                 p.Direction == (int)FlowStepDirection.True).FirstOrDefault();

                //从当前活动驳回指向的连接线
                SysTransition tOut_Reject = this.DataHelper.Set <SysTransition>()
                                            .Where(p => p.PreActivityId == this.SelectedActivityId &&
                                                   p.Direction == (int)FlowStepDirection.False).FirstOrDefault();

                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
                {
                    using (BizDataContext db = new BizDataContext())
                    {
                        //让上一个活动通过指向当前活动通过指向的活动
                        tIn_Pass.PostActivityId = tOut_Pass.PostActivityId;
                        db.UpdatePartial(tIn_Pass, p => new { p.PostActivityId });

                        //让其它驳回指向当前活动的活动驳回指向结束活动(驳回)
                        foreach (var tIn_Reject in tIn_RejectList)
                        {
                            tIn_Reject.PostActivityId = endReject.ActivityId;
                            db.UpdatePartial(tIn_Reject, p => new { p.PostActivityId });
                        }

                        //删除当前活动及连接线
                        db.Delete(a);
                        db.Delete(tOut_Pass);
                        if (tOut_Reject != null)
                        {
                            db.Delete(tOut_Reject);
                        }

                        //删除当前活动参与人
                        foreach (var ap in apList)
                        {
                            db.Delete(ap);
                        }

                        //将后面的活动的顺序提前1位
                        foreach (var na in nextActivityList)
                        {
                            na.DisplayOrder--;
                            na.TopPos -= 130;
                            db.UpdatePartial(na, p => new { p.DisplayOrder, p.TopPos });
                        }
                    }
                    ts.Complete();
                }

                //选择最后一个活动
                SelectActivity(lastActivity);

                this.EnableButton();
            }
            catch (Exception ex)
            {
                this.AjaxAlertAndEnableButton(ex);
            }
        }
        /// <summary>
        /// 保存当前活动配置
        /// </summary>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                //所有活动
                Dictionary <long, SysActivity> activityDict = this.DataHelper.Set <SysActivity>()
                                                              .Where(p => p.ProcessId == this.ProcessId).ToDictionary(p => p.ActivityId);

                //当前活动
                SysActivity a = activityDict[this.SelectedActivityId];

                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope())
                {
                    using (BizDataContext db = new BizDataContext())
                    {
                        a.ActivityName = this.txtActivityName.Text.Trim();
                        db.UpdatePartial(a, p => new { p.ActivityName });

                        #region 处理驳回方式
                        //找到当前活动驳回指向的连接线
                        SysTransition t = this.DataHelper.Set <SysTransition>()
                                          .Where(p => p.PreActivityId == this.SelectedActivityId && p.Direction == (int)FlowStepDirection.False).FirstOrDefault();
                        FormProcessActivityRejectType rejectType = (FormProcessActivityRejectType)this.ccRejectType.SelectedValue.ToInt();
                        switch (rejectType)
                        {
                        case FormProcessActivityRejectType.SelectActivityWhenRunning:
                        {
                            if (t != null)
                            {
                                db.Delete(t);
                            }
                            break;
                        }

                        case FormProcessActivityRejectType.SelectActivity:
                        {
                            SysActivity target = activityDict[this.ccRejectTargetActivity.SelectedValue.ToLong()];
                            if (t == null)
                            {
                                ConnectActivity(db, a, target, FlowStepDirection.False);
                            }
                            else if (t.PostActivityId != target.ActivityId)
                            {
                                t.PostActivityId = target.ActivityId;
                                db.UpdatePartial(t, p => new { p.PostActivityId });
                            }
                            break;
                        }

                        case FormProcessActivityRejectType.EndActivity:
                        {
                            SysActivity end = activityDict.Values.FirstOrDefault(p => p.ActivityType == (int)ActivityType.End && p.ActivityName == "驳回");
                            if (t == null)
                            {
                                ConnectActivity(db, a, end, FlowStepDirection.False);
                            }
                            else if (t.PostActivityId != end.ActivityId)
                            {
                                t.PostActivityId = end.ActivityId;
                                db.UpdatePartial(t, p => new { p.PostActivityId });
                            }
                            break;
                        }

                        default: break;
                        }
                        #endregion
                    }
                    ts.Complete();
                }

                //重新选择一下
                SelectActivity(a);

                this.AjaxAlertAndEnableButton("保存成功");
            }
            catch (Exception ex)
            {
                this.AjaxAlertAndEnableButton(ex);
            }
        }
        protected void btnSaveAA_Click(object sender, EventArgs e)
        {
            var dataList = RoleOfEntityControl1.GetReptBindItem();

            try
            {
                if (string.IsNullOrEmpty(this.ddlCategory.SelectedValue))
                {
                    return;
                }
                long   CategoryId = Convert.ToInt64(this.ddlCategory.SelectedValue);
                string msg        = string.Empty;
                //先清除该角色权限,然后添加当前设定的权限
                using (BizDataContext Context = new BizDataContext())
                {
                    //var moduleList = Context.Where<SysModule>(p => p.CategoryId == CategoryId).Select(p => p.ModuleId).ToList();
                    var moduleList = this.EntityCache.SysModule.Where(p => p.CategoryId == CategoryId).Select(p => p.ModuleId).ToList();

                    //var entityList = Context.Where<SysEntity>(p => p.ModuleId != null)
                    var entityList = this.EntityCache.SysEntity.Where(p => p.ModuleId != null)
                                     .Where(p => moduleList.Contains(p.ModuleId.Value))
                                     .Select(p => p.EntityId);

                    var delList = Context.Where <SysDataPrivilege>(x => x.RoleId == this.RoleId)
                                  .Where(x => entityList.Contains(x.EntityId)).ToList();
                    //delList.Clear();
                    foreach (var del in delList)
                    {
                        Context.Delete(del);
                    }

                    foreach (var add in dataList)
                    {
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Add,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.addRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Delete,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.delRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Update,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.updtRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Query,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.queryRight
                        });
                    }


                    //1.无权限,2.个人,3.部门,4.部门及子部门,5.全部权限
                    //循环遍历所有实体表(即父实体)
                    foreach (var reptBindItem in dataList)
                    {
                        //获取当前父实体的一对多关系
                        var sysOneMoreRelations =
                            //    Context.Where<SysOneMoreRelation>(
                            this.EntityCache.SysOneMoreRelation.Where(
                                p => p.ParentEntityId == reptBindItem.EntityId && p.IsParentChild == true);
                        //循环所有一对多关系
                        foreach (var sysOneMoreRelation in sysOneMoreRelations)
                        {
                            //sysOneMoreRelation.ChildEntity = Context.FindById<SysEntity>(sysOneMoreRelation.ChildEntityId);

                            //获取父实体的子实体的所有权限
                            var delChild =
                                Context.Where <SysDataPrivilege>(
                                    x => x.RoleId == this.RoleId && sysOneMoreRelation.ChildEntityId == x.EntityId).ToList();
                            //删除子实体的所有权限
                            foreach (var sysDataPrivilege in delChild)
                            {
                                Context.Delete(sysDataPrivilege);
                            }
                            msg += string.Format("{0}为{1}的子实体,权限随{1}的权限而改变!\\n",
                                                 sysOneMoreRelation.ChildEntity.DisplayText,
                                                 reptBindItem.DisplayText);
                            //判断子实体的授权方式
                            //1.个人类,在此情况下子实体无需担心父实体的授权方式,子实体所包含的权限(即上面5种)>=父实体所包含权限
                            //2.组织类(只含有无权限和全部权限),在此情况下需判断父实体所选择的权限(即上面5种之一),如果父实体选择无权限,子实体即无权限,否则子实体为全部权限
                            if (sysOneMoreRelation.ChildEntity.PrivilegeMode == (int)PrivilegeModel.Persional)//子实体为个人类
                            {
                                //子实体的Add权限跟随父实体的Update权限,其余权限与父实体一一对应
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Add,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.updtRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Delete,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.delRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Update,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.updtRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Query,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.queryRight
                                });
                            }
                            else//子实体为组织类
                            {
                                if (reptBindItem.delRight == 1)//父实体对于删除选择无权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Delete,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.delRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Delete,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                                if (reptBindItem.updtRight == 1)//父实体对于更新选择无权限,子实体Add权限跟随父实体update权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Update,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.updtRight
                                    });
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Add,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.updtRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Update,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Add,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                                if (reptBindItem.queryRight == 1)//父实体对于查询选择无权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Query,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.queryRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Query,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                            }
                        }
                    }
                }

                IOperationManager dom = new DefaultOperationManager(this.DataHelper, this.LoginUser);
                int count             = dom.ValidateSharedPrivilege();
                if (count > 0)
                {
                    msg = string.Format("{0},修改导致{1}条权限共享规则被移除", msg, count);
                }

                //清除菜单的缓存,2011-10-8 zhu min
                Session["T_Function"] = null;
                this.AjaxAlert("保存成功!\\n" + msg, "window.location.reload()");
            }
            catch (Exception ex)
            {
                this.AjaxAlert(ex);
            }
        }