using OperationControl.Mapas.Models; namespace OperationControl.Mapas.Editing { public sealed class MapaEstadoEdicao { private readonly HashSet _ruasSelecionadas = new( StringComparer.OrdinalIgnoreCase ); public MapaDocumento? DocumentoOriginal { get; internal set; } public MapaDocumento? DocumentoTrabalho { get; internal set; } public IReadOnlyCollection RuasSelecionadas => _ruasSelecionadas; public bool EmEdicao => DocumentoTrabalho != null; public bool PossuiSelecao => _ruasSelecionadas.Count > 0; public int QuantidadeSelecionadas => _ruasSelecionadas.Count; public bool Modificado => DocumentoTrabalho? .Modificado ?? false; internal HashSet RuasSelecionadasMutaveis => _ruasSelecionadas; private readonly List _historicoDesfazer = new(); private readonly List _historicoRefazer = new(); public bool PodeDesfazer => _historicoDesfazer.Count > 0; public bool PodeRefazer => _historicoRefazer.Count > 0; public int QuantidadeHistoricoDesfazer => _historicoDesfazer.Count; public int QuantidadeHistoricoRefazer => _historicoRefazer.Count; internal List HistoricoDesfazerMutavel => _historicoDesfazer; internal List HistoricoRefazerMutavel => _historicoRefazer; } }