fix(aihitSyncer): неверно разбивались имена приложений при наличии в имени фигурных скобок с перечислением версий. Одна программа рабивалась на несколько строк.
This commit is contained in:
@@ -141,7 +141,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
|
||||
if (objFromQuery.APP != null)
|
||||
{
|
||||
var appList = objFromQuery.APP.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.APP);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.APP);
|
||||
@@ -151,7 +151,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.DB != null)
|
||||
{
|
||||
var appList = objFromQuery.DB.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.DB);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.DB);
|
||||
@@ -161,7 +161,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.CKBS != null)
|
||||
{
|
||||
var appList = objFromQuery.CKBS.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.CKBS);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.CKBS);
|
||||
@@ -171,7 +171,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.IB != null)
|
||||
{
|
||||
var appList = objFromQuery.IB.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.IB);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.IB);
|
||||
@@ -181,7 +181,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.SI != null)
|
||||
{
|
||||
var appList = objFromQuery.SI.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.SI);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.SI);
|
||||
@@ -191,7 +191,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.SM != null)
|
||||
{
|
||||
var appList = objFromQuery.SM.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.SM);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.SM);
|
||||
@@ -201,7 +201,7 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
if (objFromQuery.OS != null)
|
||||
{
|
||||
var appList = objFromQuery.OS.Split(new char[] { ',', ';' }).Distinct().ToList();
|
||||
var appList = ParseAppsList(objFromQuery.OS);
|
||||
foreach (var app in appList)
|
||||
{
|
||||
var created = await CreateAppIfNotExistAsync(app, ApplicationTypesEnum.OS);
|
||||
@@ -213,6 +213,24 @@ namespace PARR.AIHITSyncer.Services
|
||||
}
|
||||
|
||||
|
||||
private List<string> ParseAppsList(string appStr)
|
||||
{
|
||||
var regex = new Regex("\\([^)]*\\)");
|
||||
|
||||
if (regex.IsMatch(appStr))
|
||||
foreach (var parenthesis in regex.Matches(appStr))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(parenthesis.ToString()))
|
||||
{
|
||||
var newParenthesis = parenthesis.ToString()!.Replace(",", "<|>").Replace(";", "<|>");
|
||||
appStr = appStr.Replace(parenthesis!.ToString()!, newParenthesis);
|
||||
}
|
||||
}
|
||||
|
||||
return appStr.Split(new char[] { ',', ';' }).Select(a => a.Replace("<|>", ",")).Distinct().ToList();
|
||||
}
|
||||
|
||||
|
||||
private async Task<Application?> CreateAppIfNotExistAsync(string appName, ApplicationTypesEnum type)
|
||||
{
|
||||
if (string.IsNullOrEmpty(appName) || string.IsNullOrWhiteSpace(appName)) return null;
|
||||
|
||||
Reference in New Issue
Block a user