Initial commit
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user