/// <summary> /// Udfører forespørgelse. /// </summary> /// <param name="query">Forespørgelse efter alle bogføringslinjer i et givent regnskab.</param> /// <returns>Alle bogføringslinjer i et givent regnskab.</returns> public IEnumerable <BogføringslinjeView> Query(BogføringslinjeGetByRegnskabQuery query) { if (query == null) { throw new ArgumentNullException("query"); } var adresser = _adresseRepository.AdresseGetAll(); var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer)); var regnskaber = _finansstyringRepository.RegnskabGetAll(getBrevhoved, r => MergeInformations(r, adresser)); Regnskab regnskab; try { regnskab = regnskaber.Single(m => m.Nummer == query.Regnskabsnummer); } catch (InvalidOperationException ex) { throw new DataAccessSystemException( Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab), query.Regnskabsnummer), ex); } var comparer = new BogføringslinjeComparer(); var bogføringslinjer = regnskab.Konti .OfType <Konto>() .SelectMany(m => m.Bogføringslinjer) .OrderByDescending(n => n, comparer) .ToArray(); return(_objectMapper.Map <IEnumerable <Bogføringslinje>, IEnumerable <BogføringslinjeView> >(bogføringslinjer)); }
/// <summary> /// Henter og returnerer et givent antal bogføringslinjer fra en given statusdato. /// </summary> /// <param name="query">Forespørgelse efter et givent antal bogføringslinjer.</param> /// <returns>Liste af bogføringslinjer.</returns> public IEnumerable <BogføringslinjeView> Query(BogføringerGetQuery query) { if (query == null) { throw new ArgumentNullException("query"); } var konti = KontoGetAllByRegnskab(query.Regnskabsnummer); var bogføringslinjeComparer = new BogføringslinjeComparer(); var bogføringslinjer = konti.OfType <Konto>() .SelectMany(m => m.Bogføringslinjer) .OrderByDescending(m => m, bogføringslinjeComparer) .Where(m => m.Dato.CompareTo(query.StatusDato) <= 0) .Take(query.Linjer) .ToList(); return(bogføringslinjer.Select(Map <Bogføringslinje, BogføringslinjeView>).ToList()); }