using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; using KmsDAL.CustomCode.KmConnector; using KmsDAL.DTO.KmConnector; namespace KmsBLL.KmConnector { public class KmConnectorBLL : IKmConnectorBLL { private readonly IKmConnectorDAL _dal; private readonly AutoNumber _autoNumber; private readonly IValidation _validation; public KmConnectorBLL(IKmConnectorDAL dal, AutoNumber autoNumber, IValidation validation) { _dal = dal; _autoNumber = autoNumber; _validation = validation; } public async Task GetKmConnector(int connectorId, LoginDTO login, CancellationToken ct) => await _dal.GetKmConnector(connectorId, login, ct); public async Task GetKmConnectors(int page, int pageSize, LoginDTO login, CancellationToken ct) => await _dal.GetKmConnectors(page, pageSize, login, ct); public async Task GetSelectListKmConnector(LoginDTO login, CancellationToken ct) => await _dal.GetSelectListKmConnector(login, ct); public async Task SaveKmConnector(KmConnectorDTO dto, LoginDTO login, CancellationToken ct) { await _validation.NotEmpty(dto.ConnectorCode, nameof(dto.ConnectorCode)); await _validation.NotEmpty(dto.ConnectorName, nameof(dto.ConnectorName)); await _validation.NotEmpty(dto.ConfigJson, nameof(dto.ConfigJson)); if (dto.ConnectorType > 5) throw new InvalidOperationException($"Connector type '{dto.ConnectorType}' is invalid."); var duplicateCount = await _dal.GetKmConnectorCodeCount(dto.ConnectorCode, dto.ConnectorId, login, ct); if (duplicateCount > 0) throw new InvalidOperationException($"Connector code '{dto.ConnectorCode}' already exists."); dto.TenantId = login.ClientId; bool isNew = dto.ConnectorId == 0; if (isNew) { var autoNum = await _autoNumber.GetNumberAsync(1, "KMCONNECTOR", login); dto.ConnectorId = autoNum.StartNumber; dto.CreatedById = login.UserId; dto.ModifiedById = login.UserId; await _dal.SaveKmConnector(dto, login, ct); return $"{SuccessResponse.SaveSuccessMessage} {dto.ConnectorId}"; } else { dto.ModifiedById = login.UserId; await _dal.UpdateKmConnector(dto, login, ct); return $"{SuccessResponse.UpdateSuccessMessage} {dto.ConnectorId}"; } } public async Task DeleteKmConnector(int connectorId, LoginDTO login, CancellationToken ct) { await _dal.DeleteKmConnector(connectorId, login, ct); return SuccessResponse.DeleteSuccessMessage; } } }