/// <summary> /// 删除职务 /// </summary> /// <param name="positionId"></param> public void DeletePosition(int positionId) { SqlTransaction transaction = null; AuthorizationDS.PositionRow position = this.DS.Position.FindByPositionId(positionId); string positionName = position.PositionName; DataSet backDS = this.DS.Copy(); try { //action on backDS and database first AuthorizationDS actionDS = new AuthorizationDS(); actionDS.Merge(backDS); AuthorizationDS.PositionRow actionPosition = actionDS.Position.FindByPositionId(positionId); foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in actionPosition.GetPositionAndPositionTypeRows()) { positionType.Delete(); } actionPosition.Delete(); PositionAndPositionTypeTableAdapter ptAd = new PositionAndPositionTypeTableAdapter(); PositionTableAdapter psAd = new PositionTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(ptAd); TableAdapterHelper.SetTransaction(psAd, transaction); ptAd.Update(actionDS.PositionAndPositionType); psAd.Update(actionDS.Position); transaction.Commit(); //if success, update dataset foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); this.DS.AcceptChanges(); } catch (Exception ex) { transaction.Rollback(); //this.DS.Clear(); //this.DS.Merge(backupDS); throw new ApplicationException("职位" + positionName + "已在系统中使用"); } finally { if (transaction != null) { transaction.Dispose(); } } }
/// <summary> /// ɾ��ְ�� /// </summary> /// <param name="positionId"></param> public void DeletePosition(int positionId) { SqlTransaction transaction = null; AuthorizationDS.PositionRow position = this.DS.Position.FindByPositionId(positionId); string positionName = position.PositionName; DataSet backDS = this.DS.Copy(); try { //action on backDS and database first AuthorizationDS actionDS = new AuthorizationDS(); actionDS.Merge(backDS); AuthorizationDS.PositionRow actionPosition = actionDS.Position.FindByPositionId(positionId); foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in actionPosition.GetPositionAndPositionTypeRows()) { positionType.Delete(); } actionPosition.Delete(); PositionAndPositionTypeTableAdapter ptAd = new PositionAndPositionTypeTableAdapter(); PositionTableAdapter psAd = new PositionTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(ptAd); TableAdapterHelper.SetTransaction(psAd, transaction); ptAd.Update(actionDS.PositionAndPositionType); psAd.Update(actionDS.Position); transaction.Commit(); //if success, update dataset foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); this.DS.AcceptChanges(); } catch (Exception ex) { transaction.Rollback(); //this.DS.Clear(); //this.DS.Merge(backupDS); throw new ApplicationException("ְλ" + positionName + "����ϵͳ��ʹ��"); } finally { if (transaction != null) { transaction.Dispose(); } } }
/// <summary> /// ɾ����֯������ͬʱ�ϴθ���֯���������������ְ�� /// </summary> /// <param name="organizationUnitId"></param> /// <exception cref="System.ApplicationException">�������֯�������������������ְ���Ѿ���ʹ�ã�������ʱ�׳��쳣</exception> public void DeleteOrganizationUnit(int organizationUnitId) { SqlTransaction transaction = null; AuthorizationDS.OrganizationUnitRow ou = this.DS.OrganizationUnit.FindByOrganizationUnitId(organizationUnitId); string ouName = ou.OrganizationUnitName; DataSet backDS = this.DS.Copy(); try { PositionTableAdapter positionAdapter = new PositionTableAdapter(); OrganizationUnitTableAdapter ouAdapter = new OrganizationUnitTableAdapter(); PositionAndPositionTypeTableAdapter ptAd = new PositionAndPositionTypeTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(positionAdapter); TableAdapterHelper.SetTransaction(ouAdapter, transaction); TableAdapterHelper.SetTransaction(ptAd, transaction); //action on backDS and database first AuthorizationDS actionDS = new AuthorizationDS(); actionDS.Merge(backDS); AuthorizationDS.OrganizationUnitRow actionOU = actionDS.OrganizationUnit.FindByOrganizationUnitId(organizationUnitId); AuthorizationDS.OrganizationUnitRow[] actionOUs = this.GetDepFirstChildren(actionOU); foreach (AuthorizationDS.OrganizationUnitRow o in actionOUs) { foreach (AuthorizationDS.PositionRow position in o.GetPositionRows()) { foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); } o.Delete(); ptAd.Update(actionDS.PositionAndPositionType); positionAdapter.Update(actionDS.Position); ouAdapter.Update(actionDS.OrganizationUnit); } transaction.Commit(); //if success update dataset AuthorizationDS.OrganizationUnitRow[] ous = this.GetDepFirstChildren(ou); foreach (AuthorizationDS.OrganizationUnitRow o in ous) { foreach (AuthorizationDS.PositionRow position in o.GetPositionRows()) { foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); } o.Delete(); //ptAd.Update(this.DS.PositionAndPositionType); //positionAdapter.Update(this.DS.Position); //ouAdapter.Update(this.DS.OrganizationUnit); this.DS.AcceptChanges(); } } catch (Exception ex) { transaction.Rollback(); //this.DS.Clear(); //this.DS.Merge(backDS); throw new ApplicationException("��֯����" + ouName + "���߷�֧����,ְλ�ѱ�ʹ��"); } finally { transaction.Dispose(); } }
/// <summary> /// ���ְ���ְ������ /// </summary> /// <param name="positionId"></param> /// <param name="positionTypeId"></param> /// <returns></returns> public bool CheckPositionType(int positionId, int positionTypeId) { PositionAndPositionTypeTableAdapter ta = new PositionAndPositionTypeTableAdapter(); return (int)ta.IsExist(positionId, positionTypeId) > 0; }
/// <summary> /// 检查职务的职务类型 /// </summary> /// <param name="positionId"></param> /// <param name="positionTypeId"></param> /// <returns></returns> public bool CheckPositionType(int positionId, int positionTypeId) { PositionAndPositionTypeTableAdapter ta = new PositionAndPositionTypeTableAdapter(); return((int)ta.IsExist(positionId, positionTypeId) > 0); }
/// <summary> /// 删除组织机构,同时上次该组织机构的下属机构和职务 /// </summary> /// <param name="organizationUnitId"></param> /// <exception cref="System.ApplicationException">如果该组织机构或者其下属机构和职务已经被使用,被关联时抛出异常</exception> public void DeleteOrganizationUnit(int organizationUnitId) { SqlTransaction transaction = null; AuthorizationDS.OrganizationUnitRow ou = this.DS.OrganizationUnit.FindByOrganizationUnitId(organizationUnitId); string ouName = ou.OrganizationUnitName; DataSet backDS = this.DS.Copy(); try { PositionTableAdapter positionAdapter = new PositionTableAdapter(); OrganizationUnitTableAdapter ouAdapter = new OrganizationUnitTableAdapter(); PositionAndPositionTypeTableAdapter ptAd = new PositionAndPositionTypeTableAdapter(); transaction = TableAdapterHelper.BeginTransaction(positionAdapter); TableAdapterHelper.SetTransaction(ouAdapter, transaction); TableAdapterHelper.SetTransaction(ptAd, transaction); //action on backDS and database first AuthorizationDS actionDS = new AuthorizationDS(); actionDS.Merge(backDS); AuthorizationDS.OrganizationUnitRow actionOU = actionDS.OrganizationUnit.FindByOrganizationUnitId(organizationUnitId); AuthorizationDS.OrganizationUnitRow[] actionOUs = this.GetDepFirstChildren(actionOU); foreach (AuthorizationDS.OrganizationUnitRow o in actionOUs) { foreach (AuthorizationDS.PositionRow position in o.GetPositionRows()) { foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); } o.Delete(); ptAd.Update(actionDS.PositionAndPositionType); positionAdapter.Update(actionDS.Position); ouAdapter.Update(actionDS.OrganizationUnit); } transaction.Commit(); //if success update dataset AuthorizationDS.OrganizationUnitRow[] ous = this.GetDepFirstChildren(ou); foreach (AuthorizationDS.OrganizationUnitRow o in ous) { foreach (AuthorizationDS.PositionRow position in o.GetPositionRows()) { foreach (AuthorizationDS.PositionAndPositionTypeRow positionType in position.GetPositionAndPositionTypeRows()) { positionType.Delete(); } position.Delete(); } o.Delete(); //ptAd.Update(this.DS.PositionAndPositionType); //positionAdapter.Update(this.DS.Position); //ouAdapter.Update(this.DS.OrganizationUnit); this.DS.AcceptChanges(); } } catch (Exception ex) { transaction.Rollback(); //this.DS.Clear(); //this.DS.Merge(backDS); throw new ApplicationException("组织机构" + ouName + "或者分支机构,职位已被使用"); } finally { transaction.Dispose(); } }