using System.Collections.Generic; namespace TellmePdmsPluging.Models { public class ShrinkwrapModelRequest { public string ExecutionId { get; set; } public string execution_id { get { return ExecutionId; } set { ExecutionId = value; } } public bool DryRun { get; set; } = true; public double Padding { get; set; } = 500.0; public double TouchTolerance { get; set; } = 1.0; public List ZoneFilters { get { return _zoneFilters; } set { _zoneFilters = NormalizeList(value); } } public List KeepTypes { get { return _keepTypes; } set { _keepTypes = NormalizeList(value); } } private List _zoneFilters; private List _keepTypes; public void ApplyDefaults() { if (_keepTypes == null || _keepTypes.Count == 0) { _keepTypes = new List { "SITE", "ZONE", "STRU", "FRAME", "SHELL", "PLAT", "WALL" }; } if (_zoneFilters == null) { _zoneFilters = new List(); } } private static List NormalizeList(IEnumerable source) { if (source == null) { return null; } var normalized = new List(); foreach (var item in source) { if (IsNullOrWhiteSpace(item)) { continue; } var formatted = item.Trim().ToUpperInvariant(); if (!normalized.Contains(formatted)) { normalized.Add(formatted); } } return normalized; } private static bool IsNullOrWhiteSpace(string value) { if (value == null) { return true; } for (int i = 0; i < value.Length; i++) { if (!char.IsWhiteSpace(value[i])) { return false; } } return true; } } public class ShrinkwrapModelResult { public bool Success { get; set; } public bool DryRun { get; set; } public double Padding { get; set; } public int TotalVisited { get; set; } public int RemovedCount { get; set; } public int KeptCount { get; set; } public int ShellKeptCount { get; set; } public List RemovedElements { get; set; } = new List(); public List Errors { get; set; } = new List(); public List ZoneSummaries { get; set; } = new List(); public System.DateTime StartedAt { get; set; } public System.DateTime CompletedAt { get; set; } public string Message { get; set; } } }