Initial commit

This commit is contained in:
2026-07-03 16:37:12 +07:00
commit 63b8c1ea8b
1931 changed files with 640587 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
using Microsoft.EntityFrameworkCore;
using RobotNet10.MapManager.Data;
namespace RobotNet10.MapManager.Services;
/// <summary>
/// Service implementation for querying map data (nodes and edges) by VehicleType
/// </summary>
public class MapQueryService(MapDbContext context) : IMapQueryService
{
private readonly MapDbContext _context = context;
public async Task<List<Node>> GetNodesByVehicleTypeAsync(Guid vehicleTypeId)
{
var filteredNodes = await _context.Nodes
.Include(n => n.VehicleProperties)
.ThenInclude(vp => vp.VehicleType)
.Where(n => n.VehicleProperties.Any(vp => vp.VehicleTypeId == vehicleTypeId))
.OrderBy(n => n.NodeId)
.ToListAsync();
return filteredNodes;
}
public async Task<List<Edge>> GetEdgesByVehicleTypeAsync(Guid vehicleTypeId)
{
var filteredEdges = await _context.Edges
.Include(e => e.VehicleProperties)
.ThenInclude(vp => vp.VehicleType)
.Include(e => e.StartNode)
.Include(e => e.EndNode)
.Where(e => e.VehicleProperties.Any(vp => vp.VehicleTypeId == vehicleTypeId))
.OrderBy(e => e.EdgeId)
.ToListAsync();
return filteredEdges;
}
public async Task<List<Node>> GetNodesByVehicleTypeAndLevelAsync(Guid vehicleTypeId, Guid levelId)
{
var filteredNodes = await _context.Nodes
.Include(n => n.VehicleProperties)
.ThenInclude(vp => vp.VehicleType)
.Where(n => n.LevelId == levelId &&
n.VehicleProperties.Any(vp => vp.VehicleTypeId == vehicleTypeId))
.OrderBy(n => n.NodeId)
.ToListAsync();
return filteredNodes;
}
public async Task<List<Edge>> GetEdgesByVehicleTypeAndLevelAsync(Guid vehicleTypeId, Guid levelId)
{
var filteredEdges = await _context.Edges
.Include(e => e.VehicleProperties)
.ThenInclude(vp => vp.VehicleType)
.Include(e => e.StartNode)
.Include(e => e.EndNode)
.Where(e => e.LevelId == levelId &&
e.VehicleProperties.Any(vp => vp.VehicleTypeId == vehicleTypeId))
.OrderBy(e => e.EdgeId)
.ToListAsync();
return filteredEdges;
}
public async Task<int> GetTotalNodesCountAsync()
{
return await _context.Nodes.CountAsync();
}
public async Task<int> GetTotalEdgesCountAsync()
{
return await _context.Edges.CountAsync();
}
}