LevelcodeLicenseAPP/Business/LicencaMaquinaService.cs
2026-03-25 16:26:11 -03:00

103 lines
3.0 KiB
C#

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<ModeloLicencaMaquina> 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);
}
}
}