public async Task <IActionResult> Create([FromBody]  TreeHistory history)
        {
            //check for valid object
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!types.Contains(history.Name))
            {
                return(BadRequest("Loại lịch sử không hợp lệ: " + history.Name));
            }

            //insert to database
            var result = await repos.Create(history);

            var tree = await treeRepos.Find(history.TreeId);

            if (tree == null)
            {
                return(BadRequest("Không thể tìm thấy cây với id: " + history.TreeId));
            }

            tree.History.Add(result.Id);
            tree.Status = result;

            if (!await treeRepos.Update(tree))
            {
                return(BadRequest("Không thể cập nhật cây với id: " + tree.Id));
            }

            return(Ok(result.Id));
        }
コード例 #2
0
        public async Task <IActionResult> Delete([FromBody] DeleteModel model)
        {
            var area = await repos.Find(model.PolygonId);

            if (area == null)
            {
                return(BadRequest("Lỗi khi xóa phân vùng. Không thể tìm thấy phân vùng với id: " + model.PolygonId));
            }


            foreach (string TreeId in area.Trees)
            {
                var tree = await repos_Tree.Find(TreeId);

                if (tree == null)
                {
                    return(BadRequest("Lỗi khi xóa phân vùng. Không thể tìm thấy cây với id: " + TreeId));
                }

                var history = new TreeHistory()
                {
                    Date      = model.Date,
                    Name      = "delete",
                    PolygonId = model.PolygonId,
                    TreeId    = TreeId,
                    UserId    = model.UserId,
                    Detail    = "Phân vùng bị loại bỏ"
                };

                var deleteHistory = await treeHistoryRepository.Create(history);

                tree.History.Add(deleteHistory.Id);

                tree.Status = deleteHistory;

                if (!await repos_Tree.Update(tree))
                {
                    return(BadRequest(new { tree = tree.Id, error = "Lỗi khi xóa phân vùng. Không thể cập nhật cây" }));
                }
            }

            area.IsDeleted = true;
            if (!await repos.Update(area))
            {
                return(BadRequest(new { area = area.Id, error = "Không thể xóa phân vùng" }));
            }

            return(Ok(area.Id));
        }
コード例 #3
0
        public async Task <IActionResult> Delete([FromBody] DeleteModel model)
        {
            var tree = await repos.Find(model.TreeId);

            if (tree == null)
            {
                return(BadRequest("Không thể tìm thấy cây với id: " + model.TreeId));
            }

            var history = new TreeHistory()
            {
                Date      = model.Date,
                Name      = model.Name,
                PolygonId = model.PolygonId,
                TreeId    = model.TreeId,
                UserId    = model.UserId,
                Detail    = model.Detail
            };

            var deleteHistory = await HistoryRepos.Create(history);

            tree.History.Add(deleteHistory.Id);

            tree.Status = deleteHistory;

            if (!await repos.Update(tree))
            {
                return(BadRequest(new { tree = tree.Id, error = "Không thể cập nhật cây" }));
            }

            var area = await AreaRepos.Find(tree.PolygonId);

            if (area == null)
            {
                return(BadRequest("Không thể tìm thấy phân vùng với id: " + tree.PolygonId));
            }

            area.Trees.Remove(tree.Id);
            if (!await AreaRepos.Update(area))
            {
                return(BadRequest(new { area = tree.PolygonId, error = "Không thể cập nhật phân vùng" }));
            }

            return(Ok(deleteHistory.Id));
        }
        public async Task <IActionResult> Update([FromBody] TreeHistory updateHistory)
        {
            //check for valid object
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //check for node's existence
            if (!await repos.isExisted(updateHistory.Id))
            {
                return(BadRequest("Lịch sử với id = " + updateHistory.Id + " không tồn tại."));
            }

            //update to database
            await repos.Update(updateHistory);

            return(Ok());
        }
コード例 #5
0
        //Update
        public async Task <Boolean> Update(TreeHistory history)
        {
            if (history == null)
            {
                return(false);
            }
            UpdateResult result = await repos.UpdateOneAsync(
                Builders <TreeHistory> .Filter.Eq("_id", new ObjectId(history.Id)),
                Builders <TreeHistory> .Update
                .Set("name", history.Name)
                .Set("userId", history.UserId)
                .Set("date", history.Date)
                .Set("detail", history.Detail)
                .Set("treeId", history.TreeId)
                .Set("polygonId", history.PolygonId)
                );

            if (result.IsAcknowledged)
            {
                return(result.MatchedCount > 0 && result.ModifiedCount > 0);
            }
            return(false);
        }
コード例 #6
0
        public async Task <IActionResult> Create([FromBody]  Tree tree)
        {
            //check for valid tree object
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //check for valid given info
            if (
                tree.Coord == null ||
                tree.Name == null ||
                tree.PolygonId == null ||
                tree.ManagerId == null ||
                tree.CreateUserId == null
                )
            {
                return(BadRequest("Thông tin cây không hợp lệ !."));
            }

            var history = new TreeHistory()
            {
                Date      = tree.RegisDate,
                Name      = "create",
                PolygonId = tree.PolygonId,
                TreeId    = "",
                UserId    = tree.CreateUserId,
                Detail    = ""
            };

            var createdHistory = await HistoryRepos.Create(history);

            tree.History = new List <string>
            {
                createdHistory.Id
            };

            tree.Status = createdHistory;

            //insert new tree to collection
            tree = await repos.Create(tree);

            createdHistory.TreeId = tree.Id;

            tree.Status = createdHistory;

            if (!await repos.Update(tree))
            {
                return(BadRequest(new { tree = tree.Id, error = "cannot update status of tree" }));
            }

            if (!await HistoryRepos.Update(createdHistory))
            {
                return(BadRequest(new { history = createdHistory.Id, error = "cannot update createId of history" }));
            }

            //add tree's reference to area treeId list
            if (!await AreaRepos.AddTreeId(tree.PolygonId, tree.Id))
            {
                return(BadRequest(new { area = tree.PolygonId, error = "cannot add tree with id of " + tree.Id + " out of area" }));
            }


            return(Ok(tree.Id));
        }
コード例 #7
0
        public async Task <IActionResult> Update([FromBody] UpdateModel model)
        {
            //check for valid tree object
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //check for valid given info
            if (
                model.newTree.Coord == null ||
                model.newTree.Name == null ||
                model.newTree.PolygonId == null ||
                model.newTree.ManagerId == null
                )
            {
                return(BadRequest("Thông tin cây không hợp lệ !."));
            }

            var newTree = model.newTree;
            //check for valid id
            var objectId = new ObjectId();

            if (!ObjectId.TryParse(newTree.Id, out objectId))
            {
                return(BadRequest("Id không hợp lệ !."));
            }

            var OldTree = await repos.Find(newTree.Id);

            //check existence for tree
            if (OldTree == null)
            {
                return(NotFound(new { newTree.Id, error = "Không tồn tại cây với id = " + newTree.Id + "." }));
            }

            newTree.History = OldTree.History;

            var detail = new StringBuilder();

            if (OldTree.Height != newTree.Height)
            {
                detail.Append($"Thay đổi chiều cao từ {OldTree.Height} thành {newTree.Height}");
                detail.AppendLine();
            }
            if (OldTree.Width != newTree.Width)
            {
                detail.Append($"Thay đổi chiều rộng từ {OldTree.Width} thành {newTree.Width}");
                detail.AppendLine();
            }
            if (OldTree.Coord.Latitude != newTree.Coord.Latitude || OldTree.Coord.Longtitude != newTree.Coord.Longtitude)
            {
                detail.Append($"Tọa độ thay đổi từ [{OldTree.Coord.Latitude},{OldTree.Coord.Longtitude}] thành [{newTree.Coord.Latitude},{newTree.Coord.Longtitude}]");
                detail.AppendLine();
            }

            var history = new TreeHistory()
            {
                Date      = model.Date,
                Detail    = detail.ToString(),
                Name      = "edit",
                PolygonId = newTree.PolygonId,
                TreeId    = newTree.Id,
                UserId    = model.UserId
            };

            var EditHistory = await HistoryRepos.Create(history);

            newTree.History.Add(EditHistory.Id);
            newTree.Status = EditHistory;

            //update tree
            if (await repos.Update(newTree))
            {
                return(Ok());
            }
            else
            {
                return(BadRequest("Thất bại !."));
            }
        }
コード例 #8
0
        public async Task <IActionResult> Update([FromBody] UpdateModel model)
        {
            //check for valid object
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var area = await repos.Find(model.area.Id);

            //check for node's existence

            if (area == null)
            {
                return(BadRequest("Phân vùng với id = " + model.area.Id + " không tồn tại."));
            }

            model.area.Trees = area.Trees;

            foreach (string TreeId in model.DeleteTrees)
            {
                var tree = await repos_Tree.Find(TreeId);

                if (tree == null)
                {
                    return(BadRequest("Lỗi khi sửa phân vùng. Không thể tìm thấy cây với id: " + TreeId));
                }

                var history = new TreeHistory()
                {
                    Date      = model.Date,
                    Name      = "delete",
                    PolygonId = model.area.Id,
                    TreeId    = TreeId,
                    UserId    = model.UserId,
                    Detail    = "Phân vùng bị chỉnh sửa"
                };

                var deleteHistory = await treeHistoryRepository.Create(history);

                tree.History.Add(deleteHistory.Id);

                tree.Status = deleteHistory;

                if (!await repos_Tree.Update(tree))
                {
                    return(BadRequest(new { tree = tree.Id, error = "Lỗi khi sửa phân vùng. Không thể cập nhật cây" }));
                }

                model.area.Trees.Remove(TreeId);
            }

            if (!area.ManagerId.Equals(model.area.ManagerId))
            {
                foreach (string treeId in model.area.Trees)
                {
                    var tree = await repos_Tree.Find(treeId);

                    if (tree == null)
                    {
                        return(NotFound($"Không tìm thấy cây với id '{treeId}' trong phân vùng với id '{model.area.Id}'."));
                    }

                    tree.ManagerId = model.area.ManagerId;

                    if (!await repos_Tree.Update(tree))
                    {
                        return(BadRequest(new { tree = tree.Id, area = model.area.Id, error = "Không thể thay đổi người quản lý của cây" }));
                    }
                }
            }


            //update to database
            if (!await repos.Update(model.area))
            {
                return(BadRequest(new { area = model.area.Id, error = "Không thể sửa phân vùng" }));
            }

            return(Ok(model.area.Id));
        }
コード例 #9
0
        //Create
        public async Task <TreeHistory> Create(TreeHistory history)
        {
            await repos.InsertOneAsync(history);

            return(history);
        }