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> validationResultDictionary, Dictionary lineNumberCompareHashDictionary, List 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>(); foreach (KeyValuePair 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 { 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> item in duplicatedRowDictionary) { List 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 }); } } } } } } }