public static void Validate(TextReader sokResponseTextReader, Sok sok, List <string> validationErrors) { SokeresultatNoekler sokResponse = null; try { sokResponse = (SokeresultatNoekler) new XmlSerializer(typeof(SokeresultatNoekler)).Deserialize( sokResponseTextReader); } catch (Exception e) { validationErrors.Add(string.Format(ValidationErrorMessages.CouldNotParseSokeresultat, "noekler")); return; } if (sokResponse == null) { validationErrors.Add(ValidationErrorMessages.SokeresultatIsNull); return; } // Too many responses. Doesnt match Take request. if (sokResponse.ResultatListe.Count > sok.Take) { validationErrors.Add(string.Format( ValidationErrorMessages.TooLongResultListAccordingToTakeParameter, sok.Take, sokResponse.ResultatListe.Count)); } foreach (var parameter in sok.Parameter) { switch (parameter.Operator) { case OperatorType.Equal: if (parameter.Felt == SokFelt.MappePeriodTittel) { //TODO should we test this at all? } break; case OperatorType.Between: if (isDateSokeFelt(parameter.Felt)) { var listOfDates = GetDateResults(sokResponse, parameter.Felt, validationErrors); foreach (var dateTimeValue in listOfDates) { ValidateBetweenDates(dateTimeValue, parameter.Parameterverdier.Datevalues[0], parameter.Parameterverdier.Datevalues[1], validationErrors); } } break; } } }
private static List <DateTime> GetDateResults(SokeresultatNoekler sokResponse, SokFelt parameterFelt, List <string> validationErrors) { switch (parameterFelt) { case SokFelt.SakPeriodSaksdato: if (sokResponse.ResultatListe.All(r => r.Saksmappe == null)) { validationErrors.Add(ValidationErrorMessages.CouldNotFindSaksmappe); return(new List <DateTime>()); } return(sokResponse.ResultatListe.Select(r => r.Saksmappe.Saksdato).ToList()); default: return(new List <DateTime>()); } }