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