103 lines
3.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|