コード例 #1
0
ファイル: EntityManager.cs プロジェクト: nhannv/WebVella-ERP
        public RecordTreeResponse CreateRecordTree(string entityName, InputRecordTree inputRecordTree)
        {
            RecordTreeResponse response = new RecordTreeResponse();

            var entityResponse = ReadEntity(entityName);

            if (!entityResponse.Success)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = entityResponse.Message;
                return response;
            }
            else if (entityResponse.Object == null)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = "Entity with such Id does not exist!";
                return response;
            }
            Entity entity = entityResponse.Object;

            return CreateRecordTree(entity, inputRecordTree);
        }
コード例 #2
0
ファイル: ApiController.cs プロジェクト: nhannv/WebVella-ERP
        public IActionResult PatchRecordTreeByName(string entityName, string treeName, [FromBody]JObject submitObj)
        {
            RecordTreeResponse response = new RecordTreeResponse();
            Entity entity = new Entity();
            InputRecordTree tree = new InputRecordTree();

            try
            {
                DbEntity storageEntity = DbContext.Current.EntityRepository.Read(entityName);
                if (storageEntity == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "Entity with such Name does not exist!";
                    return DoBadRequestResponse(response);
                }
                entity = storageEntity.MapTo<Entity>();

                RecordTree treeToUpdate = entity.RecordTrees.FirstOrDefault(l => l.Name == treeName);
                if (treeToUpdate == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "REcord tree with such Name does not exist!";
                    return DoBadRequestResponse(response);
                }
                tree = treeToUpdate.MapTo<InputRecordTree>();

                Type inputListType = tree.GetType();

                foreach (var prop in submitObj.Properties())
                {
                    int count = inputListType.GetProperties().Where(n => n.Name.ToLower() == prop.Name.ToLower()).Count();
                    if (count < 1)
                        response.Errors.Add(new ErrorModel(prop.Name, prop.Value.ToString(), "Input object contains property that is not part of the object model."));
                }

                if (response.Errors.Count > 0)
                    return DoBadRequestResponse(response);

                InputRecordTree inputTree = InputRecordTree.Convert(submitObj);

                foreach (var prop in submitObj.Properties())
                {
                    if (prop.Name.ToLower() == "label")
                        tree.Label = inputTree.Label;
                    if (prop.Name.ToLower() == "default")
                        tree.Default = inputTree.Default;
                    if (prop.Name.ToLower() == "system")
                        tree.System = inputTree.System;
                    if (prop.Name.ToLower() == "depthlimit")
                        tree.DepthLimit = inputTree.DepthLimit;
                    if (prop.Name.ToLower() == "cssclass")
                        tree.CssClass = inputTree.CssClass;
                    if (prop.Name.ToLower() == "iconname")
                        tree.IconName = inputTree.IconName;
                    if (prop.Name.ToLower() == "nodenamefieldid")
                        tree.NodeNameFieldId = inputTree.NodeNameFieldId;
                    if (prop.Name.ToLower() == "nodelabelfieldid")
                        tree.NodeLabelFieldId = inputTree.NodeLabelFieldId;
                    if (prop.Name.ToLower() == "nodeweightfieldid")
                        tree.NodeWeightFieldId = inputTree.NodeWeightFieldId;
                    if (prop.Name.ToLower() == "rootnodes")
                        tree.RootNodes = inputTree.RootNodes;
                    if (prop.Name.ToLower() == "nodeobjectproperties")
                        tree.NodeObjectProperties = inputTree.NodeObjectProperties;
                }
            }
            catch (Exception e)
            {
                return DoBadRequestResponse(response, "Input object is not in valid format! It cannot be converted.", e);
            }
            var updateResponse = entMan.UpdateRecordTree(entity, tree);
            return DoResponse(updateResponse);
        }
コード例 #3
0
ファイル: EntityManager.cs プロジェクト: nhannv/WebVella-ERP
        private RecordTreeResponse CreateRecordTree(Entity entity, InputRecordTree inputRecordTree)
        {
            RecordTreeResponse response = new RecordTreeResponse
            {
                Success = true,
                Message = "The tree was successfully created!",
            };

            if (!inputRecordTree.Id.HasValue)
                inputRecordTree.Id = Guid.NewGuid();

            RecordTree recordTree = inputRecordTree.MapTo<RecordTree>();

            try
            {
                response.Object = recordTree;
                response.Errors = ValidateRecordTree(entity, inputRecordTree);

                recordTree = inputRecordTree.MapTo<RecordTree>();

                if (response.Errors.Count > 0)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not created. Validation error occurred!";
                    return response;
                }

                entity.RecordTrees.Add(recordTree);

                DbEntity updatedEntity = entity.MapTo<DbEntity>();
                bool result = DbContext.Current.EntityRepository.Update(updatedEntity);
                if (!result)
                {
                    Cache.ClearEntities();
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not created! An internal error occurred!";
                    return response;
                }

            }
            catch (Exception e)
            {
                Cache.ClearEntities();
                response.Success = false;
                response.Object = recordTree;
                response.Timestamp = DateTime.UtcNow;
            #if DEBUG
                response.Message = e.Message + e.StackTrace;
            #else
                response.Message = "The tree was not created. An internal error occurred!";
            #endif
                return response;
            }

            Cache.ClearEntities();

            return ReadRecordTree(entity.Id, recordTree.Id);
        }
コード例 #4
0
ファイル: EntityManager.cs プロジェクト: nhannv/WebVella-ERP
        private RecordTreeResponse ReadRecordTree(Entity entity, RecordTree recordTree)
        {
            RecordTreeResponse response = new RecordTreeResponse
            {
                Success = true,
                Message = "The list was successfully returned!",
            };

            try
            {
                response.Object = recordTree;
            }
            catch (Exception e)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
            #if DEBUG
                response.Message = e.Message + e.StackTrace;
            #else
                response.Message = "An internal error occurred!";
            #endif
                return response;
            }

            response.Timestamp = DateTime.Now;

            return response;
        }
コード例 #5
0
ファイル: EntityManager.cs プロジェクト: nhannv/WebVella-ERP
        public RecordTreeResponse ReadRecordTree(string entityName, string name)
        {
            RecordTreeResponse response = new RecordTreeResponse();

            EntityResponse entityResponse = ReadEntity(entityName);

            if (!entityResponse.Success)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = entityResponse.Message;
                return response;
            }
            else if (entityResponse.Object == null)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = "Entity with such name does not exist!";
                return response;
            }

            Entity entity = entityResponse.Object;

            RecordTree recordTree = entity.RecordTrees.FirstOrDefault(r => r.Name == name);

            if (recordTree == null)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = "Record tree with such Name does not exist!";
                return response;
            }

            return ReadRecordTree(entity, recordTree);
        }
コード例 #6
0
ファイル: EntityManager.cs プロジェクト: nhannv/WebVella-ERP
        public RecordTreeResponse DeleteRecordTree(string entityName, string name)
        {
            RecordTreeResponse response = new RecordTreeResponse
            {
                Success = true,
                Message = "The tree was successfully deleted!",
            };

            try
            {
                var entityResponse = ReadEntity(entityName);

                if (!entityResponse.Success)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = entityResponse.Message;
                    return response;
                }
                else if (entityResponse.Object == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "Entity with such Id does not exist!";
                    return response;
                }
                Entity entity = entityResponse.Object;

                RecordTree recordTree = entity.RecordTrees.FirstOrDefault(l => l.Name == name);

                if (recordTree == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not deleted. Validation error occurred!";
                    response.Errors.Add(new ErrorModel("name", name, "Tree with such Name does not exist!"));
                    return response;
                }

                entity.RecordTrees.Remove(recordTree);

                DbEntity updatedEntity = entity.MapTo<DbEntity>();
                bool result = DbContext.Current.EntityRepository.Update(updatedEntity);
                if (!result)
                {
                    Cache.ClearEntities();
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not updated! An internal error occurred!";
                    return response;
                }
            }
            catch (Exception e)
            {
                Cache.ClearEntities();
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
            #if DEBUG
                response.Message = e.Message + e.StackTrace;
            #else
                response.Message = "The tree was not deleted. An internal error occurred!";
            #endif
                return response;
            }

            Cache.ClearEntities();

            response.Timestamp = DateTime.UtcNow;
            return response;
        }
コード例 #7
0
ファイル: EntityManager.cs プロジェクト: hguven/WebVella-ERP
        public RecordTreeResponse CreateRecordTree(string entityName, InputRecordTree inputRecordTree)
        {
            RecordTreeResponse response = new RecordTreeResponse();

            IStorageEntity storageEntity = EntityRepository.Read(entityName);

            if (storageEntity == null)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
                response.Message = "Entity with such name does not exist!";
                return response;
            }

            return CreateRecordTree(storageEntity.MapTo<Entity>(), inputRecordTree);
        }
コード例 #8
0
ファイル: EntityManager.cs プロジェクト: hguven/WebVella-ERP
        public RecordTreeResponse UpdateRecordTree(Entity entity, InputRecordTree inputRecordTree)
        {
            RecordTreeResponse response = new RecordTreeResponse
            {
                Success = true,
                Message = "The tree was successfully updated!",
            };

            RecordTree recordTree = inputRecordTree.MapTo<RecordTree>();

            try
            {
                response.Object = recordTree;
                response.Errors = ValidateRecordTree(entity, inputRecordTree);
                recordTree = inputRecordTree.MapTo<RecordTree>();

                if (response.Errors.Count > 0)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not updated. Validation error occurred!";
                    return response;
                }

                RecordTree treeToUpdate = entity.RecordTrees.FirstOrDefault(r => r.Id == recordTree.Id);
                if (treeToUpdate.Id == recordTree.Id)
                    entity.RecordTrees.Remove(treeToUpdate);

                entity.RecordTrees.Add(recordTree);

                IStorageEntity updatedEntity = entity.MapTo<IStorageEntity>();
                bool result = EntityRepository.Update(updatedEntity);
                if (!result)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not updated! An internal error occurred!";
                    return response;
                }

            }
            catch (Exception e)
            {
                response.Success = false;
                response.Object = recordTree;
                response.Timestamp = DateTime.UtcNow;
            #if DEBUG
                response.Message = e.Message + e.StackTrace;
            #else
                response.Message = "The tree was not updated. An internal error occurred!";
            #endif
                return response;
            }

            return ReadRecordTree(entity.Id, recordTree.Id);
        }
コード例 #9
0
ファイル: EntityManager.cs プロジェクト: hguven/WebVella-ERP
        public RecordTreeResponse DeleteRecordTree(Guid entityId, Guid id)
        {
            RecordTreeResponse response = new RecordTreeResponse
            {
                Success = true,
                Message = "The tree was successfully deleted!",
            };

            try
            {
                IStorageEntity storageEntity = EntityRepository.Read(entityId);

                if (storageEntity == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "Entity with such Id does not exist!";
                    return response;
                }

                Entity entity = storageEntity.MapTo<Entity>();

                RecordTree recordTree = entity.RecordTrees.FirstOrDefault(v => v.Id == id);

                if (recordTree == null)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not deleted. Validation error occurred!";
                    response.Errors.Add(new ErrorModel("id", id.ToString(), "Tree with such Id does not exist!"));
                    return response;
                }

                entity.RecordTrees.Remove(recordTree);

                IStorageEntity updatedEntity = entity.MapTo<IStorageEntity>();
                bool result = EntityRepository.Update(updatedEntity);
                if (!result)
                {
                    response.Timestamp = DateTime.UtcNow;
                    response.Success = false;
                    response.Message = "The tree was not updated! An internal error occurred!";
                    return response;
                }
            }
            catch (Exception e)
            {
                response.Timestamp = DateTime.UtcNow;
                response.Success = false;
            #if DEBUG
                response.Message = e.Message + e.StackTrace;
            #else
                response.Message = "The tree was not deleted. An internal error occurred!";
            #endif
                return response;
            }

            response.Timestamp = DateTime.UtcNow;
            return response;
        }