using LevelCode.License.DataAccess; using LevelCode.License.Models; using LevelCode.License.Models.Enums; using System; using System.Collections.Generic; namespace LevelCode.License.Business { public class LicencaMaquinaService { private readonly LicencaMaquinaDAL _maquinaDal; public LicencaMaquinaService(LicencaMaquinaDAL maquinaDal) { _maquinaDal = maquinaDal; } // ========================= // VALIDAR / REGISTRAR MÁQUINA // ========================= public bool ValidarOuRegistrarMaquina( int licencaId, string hwid, string hwidHash, int limiteMaquinas, out string mensagem) { mensagem = ""; if (string.IsNullOrWhiteSpace(hwidHash)) { mensagem = "HWID inválido."; return false; } // Verifica se a máquina já existe var maquina = _maquinaDal.BuscarPorLicencaEHash(licencaId, hwidHash); if (maquina != null) { if (maquina.Status != (int)StatusMaquinaEnum.Ativa) { mensagem = "Máquina bloqueada para esta licença."; return false; } _maquinaDal.AtualizarUltimoUso(maquina.Id); mensagem = "Máquina já registrada."; return true; } // Nova máquina → verifica limite int totalAtivas = _maquinaDal.ContarMaquinasAtivas(licencaId); if (totalAtivas >= limiteMaquinas) { mensagem = "Limite de máquinas atingido."; return false; } // Registrar nova máquina ModeloLicencaMaquina nova = new ModeloLicencaMaquina { LicencaId = licencaId, HWID = hwid, HWID_Hash = hwidHash, DataAtivacao = DateTime.Now, Status = (int)StatusMaquinaEnum.Ativa }; _maquinaDal.Inserir(nova); mensagem = "Máquina registrada com sucesso."; return true; } public List ListarMaquinas(int licencaId) { return _maquinaDal.ListarPorLicenca(licencaId); } public void Desativar(int id) { _maquinaDal.DesativarMaquina(id); } // ========================= // BLOQUEAR MÁQUINA // ========================= public void BloquearMaquina(int idMaquina) { _maquinaDal.AtualizarStatus(idMaquina, (int)StatusMaquinaEnum.Bloqueada); } // ========================= // ATIVAR MÁQUINA // ========================= public void AtivarMaquina(int idMaquina) { _maquinaDal.AtualizarStatus(idMaquina, (int)StatusMaquinaEnum.Ativa); } } }