Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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),
                                               "设置的祖先不能为自己的子孙节点!");
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        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)));
        }
Exemple #7
0
        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());
        }
Exemple #8
0
        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());
        }
Exemple #9
0
        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());
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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)) //
Exemple #13
0
        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);
        }
Exemple #14
0
        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));
        }
Exemple #15
0
 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()
     });
 }
Exemple #16
0
        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));
        }
Exemple #17
0
        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));
        }
Exemple #18
0
        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");
        }
Exemple #19
0
        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();
        }