Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
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));
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
 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()
     });
 }
Exemplo n.º 12
0
        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();
        }
Exemplo n.º 13
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));
        }
Exemplo n.º 14
0
        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();
        }
Exemplo n.º 15
0
        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));
        }