server-master/srcs/DatabaseServer/Services/AccountService.cs
2026-02-10 18:21:30 +01:00

173 lines
No EOL
5.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using PhoenixLib.Logging;
using WingsAPI.Communication;
using WingsAPI.Communication.DbServer.AccountService;
using WingsAPI.Data.Account;
namespace DatabaseServer.Services
{
public class AccountService : IAccountService
{
private readonly IAccountBanDao _accountBanDao;
private readonly IAccountDAO _accountDao;
private readonly IAccountPenaltyDao _accountPenaltyDao;
public AccountService(IAccountDAO accountDao, IAccountBanDao accountBanDao, IAccountPenaltyDao accountPenaltyDao)
{
_accountDao = accountDao;
_accountBanDao = accountBanDao;
_accountPenaltyDao = accountPenaltyDao;
}
public async Task<AccountLoadResponse> LoadAccountByName(AccountLoadByNameRequest request)
{
AccountDTO dto = null;
try
{
dto = await _accountDao.GetByNameAsync(request.Name);
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][LOAD_ACCOUNT_BY_NAME] Unexpected error: ", e);
}
return new AccountLoadResponse
{
ResponseType = dto == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS,
AccountDto = dto
};
}
public async Task<AccountLoadResponse> LoadAccountById(AccountLoadByIdRequest request)
{
AccountDTO dto = null;
try
{
dto = await _accountDao.GetByIdAsync(request.AccountId);
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][LOAD_ACCOUNT_BY_ID] Unexpected error: ", e);
}
return new AccountLoadResponse
{
ResponseType = dto == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS,
AccountDto = dto
};
}
public async Task<AccountSaveResponse> SaveAccount(AccountSaveRequest request)
{
AccountDTO dto = null;
try
{
dto = await _accountDao.SaveAsync(request.AccountDto);
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][SAVE_ACCOUNT] Unexpected error: ", e);
}
return new AccountSaveResponse
{
ResponseType = dto == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS,
AccountDto = dto
};
}
public async Task<AccountBanGetResponse> GetAccountBan(AccountBanGetRequest request)
{
try
{
AccountBanDto dto = await _accountBanDao.FindAccountBan(request.AccountId);
return new AccountBanGetResponse
{
ResponseType = RpcResponseType.SUCCESS,
AccountBanDto = dto
};
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][GET_ACCOUNT_BAN] Unexpected error: ", e);
}
return new AccountBanGetResponse
{
ResponseType = RpcResponseType.GENERIC_SERVER_ERROR
};
}
public async Task<AccountBanSaveResponse> SaveAccountBan(AccountBanSaveRequest request)
{
AccountBanDto dto = null;
try
{
dto = await _accountBanDao.SaveAsync(request.AccountBanDto);
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][SAVE_ACCOUNT_BAN] Unexpected error: ", e);
}
return new AccountBanSaveResponse
{
ResponseType = dto == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS,
AccountBanDto = dto
};
}
public async Task<AccountPenaltyGetAllResponse> GetAccountPenalties(AccountPenaltyGetRequest request)
{
try
{
List<AccountPenaltyDto> dtos = await _accountPenaltyDao.GetPenaltiesByAccountId(request.AccountId);
return new AccountPenaltyGetAllResponse
{
ResponseType = RpcResponseType.SUCCESS,
AccountPenaltyDtos = dtos
};
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][GET_ACCOUNT_PENALTIES] Unexpected error: ", e);
}
return new AccountPenaltyGetAllResponse
{
ResponseType = RpcResponseType.GENERIC_SERVER_ERROR
};
}
public async Task<AccountPenaltyMultiSaveResponse> SaveAccountPenalties(AccountPenaltyMultiSaveRequest request)
{
if (request.AccountPenaltyDtos == null)
{
return new AccountPenaltyMultiSaveResponse
{
ResponseType = RpcResponseType.SUCCESS
};
}
IEnumerable<AccountPenaltyDto> dtos = null;
try
{
dtos = await _accountPenaltyDao.SaveAsync(request.AccountPenaltyDtos);
}
catch (Exception e)
{
Log.Error("[ACCOUNT_SERVICE][SAVE_ACCOUNT_PENALTIES] Unexpected error: ", e);
}
return new AccountPenaltyMultiSaveResponse
{
ResponseType = dtos == null ? RpcResponseType.GENERIC_SERVER_ERROR : RpcResponseType.SUCCESS,
AccountPenaltyDtos = dtos
};
}
}
}