using Microsoft.EntityFrameworkCore; using ZB.MOM.WW.OtOpcUa.Configuration; using ZB.MOM.WW.OtOpcUa.Configuration.Entities; namespace ZB.MOM.WW.OtOpcUa.Admin.Services; public sealed class UnsService(OtOpcUaConfigDbContext db) { public Task> ListAreasAsync(long generationId, CancellationToken ct) => db.UnsAreas.AsNoTracking() .Where(a => a.GenerationId == generationId) .OrderBy(a => a.Name) .ToListAsync(ct); public Task> ListLinesAsync(long generationId, CancellationToken ct) => db.UnsLines.AsNoTracking() .Where(l => l.GenerationId == generationId) .OrderBy(l => l.Name) .ToListAsync(ct); public async Task AddAreaAsync(long draftId, string clusterId, string name, string? notes, CancellationToken ct) { var area = new UnsArea { GenerationId = draftId, UnsAreaId = $"area-{Guid.NewGuid():N}"[..20], ClusterId = clusterId, Name = name, Notes = notes, }; db.UnsAreas.Add(area); await db.SaveChangesAsync(ct); return area; } public async Task AddLineAsync(long draftId, string unsAreaId, string name, string? notes, CancellationToken ct) { var line = new UnsLine { GenerationId = draftId, UnsLineId = $"line-{Guid.NewGuid():N}"[..20], UnsAreaId = unsAreaId, Name = name, Notes = notes, }; db.UnsLines.Add(line); await db.SaveChangesAsync(ct); return line; } }