public void saveCreatedObject(OrgSchema orgSchema, BizEntity obj, BizEntity bizEntityParent, bool removeExistingRelation = false) { Contract.Requires <DataLogicException>(_dbContext != null, "DbContext不能为空"); Contract.Requires <DataLogicException>(obj != null, "BizEntity不能为空"); Contract.Requires <DataLogicException>(obj != bizEntityParent, "BizEntity不能为自己的父业务实体"); Contract.Requires <DataLogicException>(orgSchema != null, "OrgSchema不能为空"); if (!_dbContext.bizEntities.ToList().Contains(obj)) //新创建尚未存入DB的BizEntity { _dbContext.bizEntities.Add(obj); } var hasExistingRelation = orgSchema.bizEntityRelationOnOrgSchemas.ToList() .Where(bro => bro.bizEntityIdChild == obj.bizEntityId).ToList() .Count() > 0; //验证BizEntity不能属于同一OrgSchema下的多于一个Parent BizEntity if (hasExistingRelation) { if (!removeExistingRelation) { throw new DataLogicException( string.Format("业务实体'{0}'在组织结构方案'{1}'内已有所属父实体.", obj.name, orgSchema.name)); } else //Remove Existing Relation { orgSchema.bizEntityRelationOnOrgSchemas.Remove( orgSchema.bizEntityRelationOnOrgSchemas.Where( bro => bro.bizEntityIdChild == obj.bizEntityId) .FirstOrDefault()); } } BizEntityRelationOnOrgSchema bizEntityRelationOnOrgSchema = _dbContext.bizEntityRelationOnOrgSchemas.Create(); bizEntityRelationOnOrgSchema.assistOrgSchemaId = orgSchema.orgSchemaId; bizEntityRelationOnOrgSchema.bizEntityChild = obj; if (bizEntityParent != null) { //验证bizEntityParent必须已经在该OrgSchema中存在 if (_dbContext.bizEntityRelationOnOrgSchemas.Where( o => o.assistOrgSchemaId == orgSchema.orgSchemaId && o.bizEntityIdChild == bizEntityParent.bizEntityId) .Count() <= 0) { throw new DataLogicException( string.Format("业务实体'{0}'在组织结构方案'{1}'内尚不存在,不能作为父业务实体.", bizEntityParent.name, orgSchema.name)); } bizEntityRelationOnOrgSchema.bizEntityParent = bizEntityParent; } orgSchema.bizEntityRelationOnOrgSchemas.Add(bizEntityRelationOnOrgSchema); _dbContext.SaveChanges(); }
public IHttpActionResult Put(int id, OrgSchema value) { if (value == null || !ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != value.orgSchemaId) { return(BadRequest()); } OrgSchemaHelper orgSchemaHelper = new OrgSchemaHelper(db); //if (!OrgMgmtDBHelper.isOrgSchemaExists(id, db)) if (!orgSchemaHelper.isObjectExists(id)) { return(NotFound()); } try { //if (!OrgMgmtDBHelper.isOrgSchemaChangeAllowed(id, value, db)) if (!orgSchemaHelper.isObjectChangeAllowed(id, value)) { return(BadRequest("不允许修改对象!")); } ; } catch (Exception ex) { return(BadRequest(ex.Message)); } db.Entry(value).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateException) { //if (!OrgMgmtDBHelper.isOrgSchemaExists(id, db)) if (!orgSchemaHelper.isObjectExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public static bool isOrgSchemaChangeAllowed(int id, OrgSchema value, EnouFlowOrgMgmtContext db) { if (db.orgSchemas.AsNoTracking().Where( orgSchema => orgSchema.orgSchemaId == id).ToList().FirstOrDefault().guid != value.guid) { throw new GuidNotAllowedToChangeException("不能修改对象GUID!"); } return(true); }
public void saveCreatedObject_validObjWithInvalidParent_willThrows() { BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = o.createObject(); Assert.Throws <DataLogicException>( () => o.saveCreatedObject(orgSchema, bizEntity, bizParentEntity)); }
public void convert2DTO_hasBizEntitySchemaObj_willSetfirstbizEntitySchemaIdNotTo0() { BizEntityHelper o = new BizEntityHelper(db); OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; BizEntityDTO bizEntityDTO = o.convert2DTO(bizEntity); Assert.AreNotEqual(0, bizEntityDTO.firstbizEntitySchemaId); Assert.IsNotNull(bizEntityDTO.firstbizEntitySchemaName); }
public void saveCreatedObject_duplicateObjUnderBizEntityWithNotValidModes_willThrows(SchemeMode schemeMode) { BizEntitySchemaHelper o = new BizEntitySchemaHelper(db); OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; BizEntitySchema bizEntitySchema = new BizEntitySchema(); bizEntitySchema.BizEntity = bizParentEntity; OrgMgmtDBHelper.schemeMode = schemeMode; Assert.Throws <DataLogicException>( () => o.saveCreatedObject(bizEntitySchema)); }
public void saveCreatedObject_validObjWithNoParent_willExist() { BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); o.saveCreatedObject(orgSchema, bizEntity, null); Assert.True(o.isObjectExists(bizEntity.bizEntityId)); Assert.AreEqual(1, db.bizEntityRelationOnOrgSchemas.Where( ber => ber.assistOrgSchemaId == orgSchema.orgSchemaId && ber.bizEntityIdChild == bizEntity.bizEntityId).Count()); }
public void removeObject_objWithChild_willThrows() { BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; o.saveCreatedObject(orgSchema, bizEntity, bizParentEntity); Assert.Throws <DataLogicException>( () => o.removeObject(bizParentEntity.bizEntityId)); }
public void removeObject_obj_willSetVibleToFalse() { BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; o.saveCreatedObject(orgSchema, bizEntity, bizParentEntity); o.removeObject(bizEntity.bizEntityId); Assert.False(bizEntity.isVisible); }
public void convert2DTO_noBizEntitySchemaObj_willSetfirstbizEntitySchemaIdTo0() { BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; o.saveCreatedObject(orgSchema, bizEntity, bizParentEntity); BizEntityDTO bizEntityDTO = o.convert2DTO(bizEntity); Assert.AreEqual(0, bizEntityDTO.firstbizEntitySchemaId); Assert.IsNull(bizEntityDTO.firstbizEntitySchemaName); }
public static OrgSchemaDTO convertOrgSchema2DTO(OrgSchema obj) { return(new OrgSchemaDTO() { orgSchemaId = obj.orgSchemaId, guid = obj.guid, name = obj.name, shortName = obj.shortName, displayName = obj.displayName, code = obj.code, indexNumber = obj.indexNumber, createTime = obj.createTime, isDefault = obj.isDefault, isVisible = obj.isVisible, rootBizEntities = obj.rootBizEntities.ToList().Select( bizEntity => convertBizEntity2DTO(bizEntity)).ToList() }); }
public static void saveCreatedBizEntity(OrgSchema orgSchema, BizEntity bizEntity, BizEntity bizEntityParent, EnouFlowOrgMgmtContext db, bool removeExistingRelation = false) { if (!db.bizEntities.ToList().Contains(bizEntity)) //新创建尚未存入DB的BizEntity { db.bizEntities.Add(bizEntity); } var hasExistingRelation = orgSchema.bizEntityRelationOnOrgSchemas.ToList().Where( bro => bro.bizEntityIdChild == bizEntity.bizEntityId ).ToList().Count() > 0; //验证不能属于同一OrgSchema下的多于一个Parent BizEntity if (hasExistingRelation) { if (!removeExistingRelation) { throw new Exception( string.Format("业务实体'{0}'在组织结构方案'{1}'内已有所属父实体.", bizEntity.name, orgSchema.name)); } else //Remove Existing Relation { orgSchema.bizEntityRelationOnOrgSchemas.Remove( orgSchema.bizEntityRelationOnOrgSchemas.Where( bro => bro.bizEntityIdChild == bizEntity.bizEntityId) .FirstOrDefault()); } } BizEntityRelationOnOrgSchema bizEntityRelationOnOrgSchema = db.bizEntityRelationOnOrgSchemas.Create(); bizEntityRelationOnOrgSchema.assistOrgSchemaId = orgSchema.orgSchemaId; bizEntityRelationOnOrgSchema.bizEntityChild = bizEntity; if (bizEntityParent != null) { bizEntityRelationOnOrgSchema.bizEntityParent = bizEntityParent; } orgSchema.bizEntityRelationOnOrgSchemas.Add(bizEntityRelationOnOrgSchema); db.SaveChanges(); }
public void saveCreatedObject_validObj_willExists(SchemeMode schemeMode) { OrgMgmtDBHelper.schemeMode = schemeMode; BizEntityHelper o = new BizEntityHelper(db); BizEntity bizEntity = o.createObject(); bizEntity.name = "Integration_Test_XXXYYYZZZ"; OrgSchema orgSchema = db.orgSchemas.FirstOrDefault(); BizEntity bizParentEntity = orgSchema. bizEntityRelationOnOrgSchemas.FirstOrDefault().bizEntityChild; o.saveCreatedObject(orgSchema, bizEntity, bizParentEntity); BizEntitySchemaHelper bizEntitySchemaHelper = new BizEntitySchemaHelper(db); BizEntitySchema bizEntitySchema = new BizEntitySchema(); bizEntitySchema.BizEntity = bizEntity; bizEntitySchemaHelper.saveCreatedObject(bizEntitySchema); Assert.True(bizEntitySchemaHelper.isObjectExists(bizEntitySchema.bizEntitySchemaId)); }
public static void saveCreatedOrgSchema(Org org, OrgSchema orgSchema, EnouFlowOrgMgmtContext db) { //简单模式下一个Org下只有一个OrgSchema if (schemeMode != SchemeMode.multliOrgSchemaMode) { if (org.orgSchemas.ToList().Where(os => os.isVisible).Count() > 0) { throw new Exception("目前的组织架构模式下一个Org下只有一个OrgSchema."); } } //一个Org下只能有一个默认OrgSchema if (org.orgSchemas.ToList().Exists( os => os.isDefault && os.isVisible && os.orgSchemaId != orgSchema.orgSchemaId)) { orgSchema.isDefault = false; } org.orgSchemas.Add(orgSchema); db.SaveChanges(); }
public IHttpActionResult Post(OrgSchema value, [FromUri] int orgId) { OrgHelper orgHelper = new OrgHelper(db); if (value == null || !ModelState.IsValid || !orgHelper.isObjectExists(orgId)) { return(BadRequest(ModelState)); } try { OrgSchemaHelper orgSchemaHelper = new OrgSchemaHelper(db); value.Org = orgHelper.getObject(orgId); orgSchemaHelper.saveCreatedObject(value); //OrgMgmtDBHelper.saveCreatedOrgSchema(db.orgs.Find(orgId), value, db); } catch (Exception ex) { return(BadRequest(ex.Message)); } return(Ok(value)); }