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)); }
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)); }
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()); }
//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); }
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)); }
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 !.")); } }
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)); }
//Create public async Task <TreeHistory> Create(TreeHistory history) { await repos.InsertOneAsync(history); return(history); }