/// <summary>
        /// Henter alle kontogrupper.
        /// </summary>
        /// <returns>Liste af kontogrupper.</returns>
        public IEnumerable <Kontogruppe> KontogruppeGetAll()
        {
            var channel = _channelFactory.CreateChannel <IFinansstyringRepositoryService>(EndpointConfigurationName);

            try
            {
                var query            = new KontogruppeGetAllQuery();
                var kontogruppeViews = channel.KontogruppeGetAll(query);
                return(_domainObjectBuilder.BuildMany <KontogruppeView, Kontogruppe>(kontogruppeViews));
            }
            catch (IntranetRepositoryException)
            {
                throw;
            }
            catch (FaultException ex)
            {
                throw new IntranetRepositoryException(ex.Message);
            }
            catch (Exception ex)
            {
                throw new IntranetRepositoryException(
                          Resource.GetExceptionMessage(ExceptionMessage.RepositoryError, MethodBase.GetCurrentMethod().Name,
                                                       ex.Message), ex);
            }
            finally
            {
                ChannelTools.CloseChannel(channel);
            }
        }
        /// <summary>
        /// Henter et givent regnskab.
        /// </summary>
        /// <param name="nummer">Unik identifikation af regnskabet.</param>
        /// <param name="getBrevhovedCallback">Callbackmetode til at hente et givent brevhoved.</param>
        /// <param name="getAdresseCallback">Callbackmetode til at hente en given adresse.</param>
        /// <returns>Regnskab.</returns>
        public Regnskab RegnskabGet(int nummer, Func <int, Brevhoved> getBrevhovedCallback, Func <int, AdresseBase> getAdresseCallback)
        {
            if (getBrevhovedCallback == null)
            {
                throw new ArgumentNullException("getBrevhovedCallback");
            }
            if (getAdresseCallback == null)
            {
                throw new ArgumentNullException("getAdresseCallback");
            }
            var channel = _channelFactory.CreateChannel <IFinansstyringRepositoryService>(EndpointConfigurationName);

            try
            {
                // Hent regnskabet.
                var regnskabQuery = new RegnskabGetByNummerQuery
                {
                    Regnskabsnummer = nummer
                };
                var regnskabView = channel.RegnskabGetByNummer(regnskabQuery);
                // Hent alle kontogrupper.
                var kontogruppeQuery = new KontogruppeGetAllQuery();
                var kontogruppeViews = channel.KontogruppeGetAll(kontogruppeQuery);
                // Hent alle budgetkontogrupper.
                var budgetkontogruppeQuery = new BudgetkontogruppeGetAllQuery();
                var budgetkontogruppeViews = channel.BudgetkontogruppeGetAll(budgetkontogruppeQuery);
                // Mapning af regnskab.
                var kontogruppelisteHelper =
                    new KontogruppelisteHelper(
                        _domainObjectBuilder.BuildMany <KontogruppeView, Kontogruppe>(kontogruppeViews));
                var budgetkontogruppelisteHelper =
                    new BudgetkontogruppelisteHelper(
                        _domainObjectBuilder.BuildMany <BudgetkontogruppeView, Budgetkontogruppe>(budgetkontogruppeViews));
                _domainObjectBuilder.GetKontogruppeCallback       = kontogruppelisteHelper.GetById;
                _domainObjectBuilder.GetBudgetkontogruppeCallback = budgetkontogruppelisteHelper.GetById;
                _domainObjectBuilder.GetBrevhovedCallback         = getBrevhovedCallback;
                _domainObjectBuilder.GetAdresseBaseCallback       = getAdresseCallback;
                return(_domainObjectBuilder.Build <RegnskabView, Regnskab>(regnskabView));
            }
            catch (IntranetRepositoryException)
            {
                throw;
            }
            catch (FaultException ex)
            {
                throw new IntranetRepositoryException(ex.Message);
            }
            catch (Exception ex)
            {
                throw new IntranetRepositoryException(
                          Resource.GetExceptionMessage(ExceptionMessage.RepositoryError, MethodBase.GetCurrentMethod().Name,
                                                       ex.Message), ex);
            }
            finally
            {
                ChannelTools.CloseChannel(channel);
            }
        }
        /// <summary>
        /// Udfører forespørgelse.
        /// </summary>
        /// <param name="query">Forespørgelse efter alle kontogrupper.</param>
        /// <returns>Alle kontogrupper.</returns>
        public IEnumerable <KontogruppeView> Query(KontogruppeGetAllQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            var kontogrupper = _finansstyringRepository.KontogruppeGetAll();

            return(_objectMapper.Map <IEnumerable <Kontogruppe>, IEnumerable <KontogruppeView> >(kontogrupper));
        }
 public IEnumerable <KontogruppeView> KontogruppeGetAll(KontogruppeGetAllQuery kontogruppeGetAllQuery)
 {
     try
     {
         return(_queryBus.Query <KontogruppeGetAllQuery, IEnumerable <KontogruppeView> >(kontogruppeGetAllQuery));
     }
     catch (Exception ex)
     {
         throw CreateFault(MethodBase.GetCurrentMethod(), ex,
                           int.Parse(Properties.Resources.EventLogFinansstyringRepositoryService));
     }
 }