Exemplo n.º 1
0
        /// <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());
        }