public void createDepartmentUserRelation_existingOtherRelationOfSimpleMode_willThrow() { DepartmentHelper o = new DepartmentHelper(db); BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; o.saveCreatedObject(bizEntitySchema, department, departmentParent); UserHelper userHelper = new UserHelper(db); User user = userHelper.createObject(); user.name = "Integration_Test_XXXYYYZZZ_1"; userHelper.saveCreatedObject(user); userHelper.setUserDepartment(user.userId, department, UserPositionToDepartment.other); Assert.Throws <DataLogicException>(() => userHelper.createDepartmentUserRelation(department, user, UserPositionToDepartment.manager)); }
public void setUserDepartment_existingRelation_willUpdate() { DepartmentHelper o = new DepartmentHelper(db); BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department department = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (department == null) { Assert.Ignore("Not found department object"); } UserHelper userHelper = new UserHelper(db); User user = userHelper.createObject(); user.name = "Integration_Test_XXXYYYZZZ_1"; userHelper.saveCreatedObject(user); userHelper.setUserDepartment(user.userId, department, UserPositionToDepartment.other); userHelper.setUserDepartment(user.userId, department, UserPositionToDepartment.manager); Assert.AreEqual(1, db.departmentUserRelations.Where( r => r.assistDepartmentId == department.departmentId && r.assistUserId == user.userId).Count()); Assert.AreEqual(UserPositionToDepartment.manager, db.departmentUserRelations.Where( r => r.assistDepartmentId == department.departmentId && r.assistUserId == user.userId).First().userPosition); }
public void setParentDepartment_validObjToSelfDescedent_willThrow() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } o.saveCreatedObject(bizEntitySchema, department, departmentParent); Department departmentLastLevel = o.createObject(); departmentLastLevel.name = "Integration_Test_XXXYYYZZZ_LastLevel"; o.saveCreatedObject(bizEntitySchema, departmentLastLevel, department); Assert.Throws <DataLogicException>(() => o.setParentDepartment(departmentParent.departmentId, departmentLastLevel, bizEntitySchema.bizEntitySchemaId), "设置的祖先不能为自己的子孙节点!"); }
public static void saveCreatedDepartment( BizEntitySchema bizEntitySchema, Department department, Department departmentParent, EnouFlowOrgMgmtContext db) { if (!db.departments.ToList().Contains(department)) //新创建尚未存入DB的Department { //db.departments.Add(department); department.assistBizEntitySchemaId = bizEntitySchema.bizEntitySchemaId; bizEntitySchema.departments.Add(department); } //验证一个Department不能有多个Parent Department if (db.departmentParentChildRelations.ToList().Where( r => r.departmentIdChild == department.departmentId). ToList().Count() > 0) { throw new Exception( string.Format("部门'{0}'已属于其他部门", department.name)); } DepartmentParentChildRelation departmentParentChildRelation = db.departmentParentChildRelations.Create(); departmentParentChildRelation.assistBizEntitySchemaId = bizEntitySchema.bizEntitySchemaId; departmentParentChildRelation.departmentChild = department; if (departmentParent != null) { departmentParentChildRelation.departmentParent = departmentParent; } bizEntitySchema.departmentParentChildRelations.Add(departmentParentChildRelation); db.SaveChanges(); }
public void saveCreatedObject_validObjWithMultipleParent_willThrow() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } Department departmentParent2 = o.createObject(); departmentParent2.name = "Integration_Test_Another_Department"; o.saveCreatedObject(bizEntitySchema, departmentParent2, departmentParent); o.saveCreatedObject(bizEntitySchema, department, departmentParent); Assert.Throws <DataLogicException>(() => o.saveCreatedObject(bizEntitySchema, department, departmentParent2), string.Format("部门'{0}'已被创建并属于其他部门, 请调用setParentDepartment方法", department.name)); }
public IHttpActionResult Post(BizEntitySchema value, [FromUri] int bizEntityId) { var bizEntityHelper = new BizEntityHelper(db); if (value == null || !ModelState.IsValid || !bizEntityHelper.isObjectExists(bizEntityId)) { return(BadRequest(ModelState)); } var bizEntity = db.bizEntities.Find(bizEntityId); BizEntitySchemaHelper bizEntitySchemaHelper = new BizEntitySchemaHelper(db); try { value.BizEntity = bizEntity; bizEntitySchemaHelper.saveCreatedObject(value); } catch (Exception ex) { return(BadRequest(ex.Message)); } return(Ok(bizEntitySchemaHelper.convert2DTO(value))); }
public void convert2DTO_departmentHasNoChildren_returnCorrectObject() { DepartmentHelper o = new DepartmentHelper(db); BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; o.saveCreatedObject(bizEntitySchema, department, departmentParent); var departmentDTO = o.convert2DTO(department); Assert.Zero(departmentDTO.users.Count()); Assert.Zero(departmentDTO.departments.Count()); }
public void saveCreatedObject_validObjWithParent_willExist() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } o.saveCreatedObject(bizEntitySchema, department, departmentParent); Assert.AreEqual(1, db.departments.AsNoTracking().Where( d => d.departmentId == department.departmentId).Count()); Assert.AreEqual(1, db.departmentParentChildRelations.Where( dpcr => dpcr.departmentIdParent == departmentParent.departmentId && dpcr.departmentIdChild == department.departmentId && dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId).Count()); }
public void getUserDTOsOfPositionInDepartment_validCriteria_returnCorrectList() { DepartmentHelper o = new DepartmentHelper(db); BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department department = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (department == null) { Assert.Ignore("Not found department object"); } UserHelper userHelper = new UserHelper(db); User user = userHelper.createObject(); user.name = "Integration_Test_XXXYYYZZZ_1"; userHelper.saveCreatedObject(user); userHelper.createDepartmentUserRelation( department, user, UserPositionToDepartment.manager); User user2 = userHelper.createObject(); user2.name = "Integration_Test_XXXYYYZZZ_2"; userHelper.saveCreatedObject(user2); userHelper.createDepartmentUserRelation( department, user2, UserPositionToDepartment.normal); var userDTOs = o.getUserDTOsOfPositionInDepartment( department.departmentId, UserPositionToDepartment.manager); Assert.AreEqual(1, userDTOs.Where(u => u.userId == user.userId).Count()); Assert.Zero(userDTOs.Where(u => u.userId == user2.userId).Count()); }
public void removeDepartment_validObjWithNoChildren_willRemove() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } o.saveCreatedObject(bizEntitySchema, department, departmentParent); o.removeDepartment(department.departmentId); var dpcrs = db.departmentParentChildRelations.Where(dpcr => dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId && dpcr.departmentIdChild == department.departmentId); Assert.IsFalse(dpcrs.FirstOrDefault().departmentChild.isVisible); }
public void setParentDepartment_validObjToValidParent_willCreateDepartmentParentChildRelation() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } o.saveCreatedObject(bizEntitySchema, department, null); o.setParentDepartment(department.departmentId, departmentParent, bizEntitySchema.bizEntitySchemaId); var dpcrs = db.departmentParentChildRelations.Where(dpcr => dpcr.assistBizEntitySchemaId == bizEntitySchema.bizEntitySchemaId && dpcr.departmentIdChild == department.departmentId); Assert.AreEqual(1, dpcrs.Count()); Assert.IsNotNull(dpcrs.FirstOrDefault().departmentParent); }
public void saveCreatedObject(BizEntitySchema bizEntitySchema, Department department, Department departmentParent) { Contract.Requires <DataLogicException>(_dbContext != null, "DbContext不能为空"); Contract.Requires <DataLogicException>(bizEntitySchema != null, "BizEntitySchema不能为空"); Contract.Requires <DataLogicException>(department != null, "Department不能为空"); Contract.Requires <DataLogicException>(department != departmentParent, "Department的父Department不能为自身"); # region 特定BizEntitySchema中被创建而尚未存入DB的Department if (!_dbContext.departments.ToList().Contains(department)) //
public static bool isBizEntitySchemaChangeAllowed(int id, BizEntitySchema value, EnouFlowOrgMgmtContext db) { if (db.bizEntitySchemas.AsNoTracking().Where( obj => obj.bizEntitySchemaId == id).ToList().FirstOrDefault().guid != value.guid) { throw new GuidNotAllowedToChangeException("不能修改对象GUID!"); } return(true); }
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 static BizEntitySchemaDTO convertBizEntitySchema2DTO(BizEntitySchema obj, EnouFlowOrgMgmtContext db) { return(new BizEntitySchemaDTO() { bizEntitySchemaId = obj.bizEntitySchemaId, guid = obj.guid, name = obj.name, shortName = obj.shortName, displayName = obj.displayName, code = obj.code, indexNumber = obj.indexNumber, createTime = obj.createTime, isVisible = obj.isVisible, rootDepartments = obj.getRootDepartments(db). Select(d => convertDepartment2DTO(d, db)).ToList() }); }
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 IHttpActionResult Put(int id, BizEntitySchema value) { if (value == null || !ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != value.bizEntitySchemaId) { return(BadRequest()); } BizEntitySchemaHelper bizEntitySchemaHelper = new BizEntitySchemaHelper(db); if (!bizEntitySchemaHelper.isObjectExists(id)) { return(NotFound()); } try { if (!bizEntitySchemaHelper.isObjectChangeAllowed(id, value)) { return(BadRequest("不允许修改对象!")); } ; } catch (Exception ex) { return(BadRequest(ex.Message)); } db.Entry(value).State = EntityState.Modified; db.SaveChanges(); return(StatusCode(HttpStatusCode.NoContent)); }
public void removeDepartment_validObjWithChildren_willThrow() { DepartmentHelper o = new DepartmentHelper(db); Department department = o.createObject(); department.name = "Integration_Test_XXXYYYZZZ"; BizEntitySchema bizEntitySchema = db.bizEntitySchemas.FirstOrDefault(); if (bizEntitySchema == null) { Assert.Ignore("Not found BizEntitySchema object"); } Department departmentParent = bizEntitySchema.getRootDepartments(db).FirstOrDefault(); if (departmentParent == null) { Assert.Ignore("Not found departmentParent object"); } o.saveCreatedObject(bizEntitySchema, department, departmentParent); Assert.Throws <DataLogicException>(() => o.removeDepartment(departmentParent.departmentId), "不能直接删除带有子节点的Department"); }
public static void saveCreatedBizEntitySchema(BizEntitySchema bizEntitySchema, BizEntity bizEntity, EnouFlowOrgMgmtContext db) { // 只有multiBizEntitySchemaMode和multliOrgSchemaMode模式下, // BizEntity有多个BizEntitySchema if (schemeMode == SchemeMode.simpleMode || schemeMode == SchemeMode.multiDepartmentForOneUserMode) { if (bizEntity.bizEntitySchemas.ToList().Count() > 0) { throw new Exception("目前模式下一个BizEntity下只有一个BizEntitySchema."); } } //一个BizEntity下只能有一个默认BizEntitySchema if (bizEntity.bizEntitySchemas.ToList().Exists( bs => bs.isDefault && bs.bizEntitySchemaId != bizEntitySchema.bizEntitySchemaId)) { bizEntitySchema.isDefault = false; } bizEntity.bizEntitySchemas.Add(bizEntitySchema); db.SaveChanges(); }