kreta/Kreta.BusinessLogic/HelperClasses/ImportCo/BaseImportCo.cs
2024-03-13 00:33:46 +01:00

60 lines
2.6 KiB
C#

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Kreta.Core;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.HelperClasses.ImportCo
{
public class BaseImportCo
{
[JsonIgnore]
public int ImportMuvelet { get; set; }
protected static void ValidateDuplicatedRows(Dictionary<int, List<ValidationResult>> validationResultDictionary, Dictionary<int, string> lineNumberCompareHashDictionary, List<string> duplicatedRowConditonTextList)
{
//NOTE: Levalidáljuk a duplikált sorokat!
// Azért van szükség Dictionary-re, mert így nagyságrendekkel gyorsabb a keresés!
// Először csoportosítjuk a sorokat egyezőség(compareHash) szerint.
var duplicatedRowDictionary = new Dictionary<string, List<int>>();
foreach (KeyValuePair<int, string> item in lineNumberCompareHashDictionary)
{
int lineNumber = item.Key;
string compareHash = item.Value;
if (compareHash == Constants.General.ImportMD5InvalidInput)
{
continue;
}
if (duplicatedRowDictionary.ContainsKey(compareHash))
{
duplicatedRowDictionary[compareHash].Add(lineNumber);
}
else
{
duplicatedRowDictionary.Add(compareHash, new List<int> { lineNumber });
}
}
//NOTE: Ha egynél több sor kerül egy elemhez, akkor kiírjuk hibának az adott sorokhoz, hogy többször szerepel.
foreach (KeyValuePair<string, List<int>> item in duplicatedRowDictionary)
{
List<int> lineNumberList = item.Value;
if (lineNumberList.Count > 1)
{
foreach (var lineNumber in lineNumberList)
{
var validationResult = new ValidationResult(string.Format(CommonResource.DuplicatedRow0, string.Join(", ", duplicatedRowConditonTextList)));
if (validationResultDictionary.ContainsKey(lineNumber))
{
validationResultDictionary[lineNumber].Add(validationResult);
}
else
{
validationResultDictionary.Add(lineNumber, new List<ValidationResult> { validationResult });
}
}
}
}
}
}
}