using RobotNet.Script.Expressions; using System.Linq.Expressions; namespace RobotNet.Script; /// /// Service quản lý các phần tử trong bản đồ. /// public interface IMapManager { /// /// Trả về phần tử theo tên trong bản đồ. /// /// /// /// Task GetElement(string map, string name); /// /// Retrieves a node from the specified map by its name. /// /// This method performs an asynchronous operation to locate a node within the specified map. /// Ensure that the map and name parameters are valid and non-empty before calling this method. /// The identifier of the map from which to retrieve the node. Cannot be null or empty. /// The name of the node to retrieve. Cannot be null or empty. /// A task that represents the asynchronous operation. The task result contains the node matching the specified name /// within the given map, or if no such node exists. Task GetNode(string map, string name); /// /// Tìm kiếm các phần tử trong bản đồ theo biểu thức. /// /// /// /// Task FindElements(string map, string model); /// /// Tìm kiếm các phần tử trong bản đồ theo biểu thức. /// /// /// /// /// Task FindElements(string map, string model, Expression> expr); } /// /// Thông tin về một nút trong bản đồ. /// public interface INode { /// /// Id của nút. /// Guid Id { get; } /// /// Id của map chứa nút này. /// Guid MapId { get; } /// /// Tên của nút /// string Name { get; } /// /// Tọa độ trục hoành của nút trong không gian 2D. /// double X { get; } /// /// Tọa độ trục tung của nút trong không gian 2D. /// double Y { get; } /// /// Hướng của nút trong không gian 2D, tính bằng độ. /// double Theta { get; } } /// /// Quản lý thông tin của một phần tử trong bản đồ. /// public interface IElement { /// /// Id của phần tử. /// Guid Id { get; } /// /// Id model của phần tử này. /// Guid ModelId { get; } /// /// Tên của model mà phần tử này thuộc về. /// string ModelName { get; } /// /// Id của nút mà phần tử này thuộc về. /// Guid NodeId { get; } /// /// Tên của phần tử. /// string Name { get; } /// /// Tạo độ trục hoành tương dối của phần từ so với nút mà nó thuộc về. /// double OffsetX { get; } /// /// Tọa độ trục tung tương đối của phần từ so với nút mà nó thuộc về. /// double OffsetY { get; } /// /// Tên của nút mà phần tử này thuộc về. /// string NodeName { get; } /// /// Tọa độ trục hoành của nút trong không gian 2D. /// double X { get; } /// /// Tọa độ trục tung của nút trong không gian 2D. /// double Y { get; } /// /// Hướng của phần tử trong không gian 2D, tính bằng độ. /// double Theta { get; } /// /// Các thuộc tính của phần tử, bao gồm các thuộc tính bool, double, int và string. /// ElementProperties Properties { get; } /// /// Lưu các thay đổi của thuộc tính phần tử vào cơ sở dữ liệu /// /// Task SaveChangesAsync(); }