Ejemplo 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>
        /// Udfører forespørgelse.
        /// </summary>
        /// <param name="query">Forespørgelse efter et givent firma.</param>
        /// <returns>Firma.</returns>
        public FirmaView Query(FirmaGetByNummerQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            var   getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
            var   regnskaber   = _finansstyringRepository.RegnskabGetAll(getBrevhoved);
            Firma firma;

            try
            {
                firma = _adresseRepository.AdresseGetAll(adresse => MergeInformations(adresse, regnskaber))
                        .OfType <Firma>()
                        .ToArray()
                        .Single(m => m.Nummer == query.Nummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Firma), query.Nummer),
                          ex);
            }
            return(_objectMapper.Map <Firma, FirmaView>(firma));
        }
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til tilføjelse af et regnskab.</param>
        /// <returns>Oprettet regnskab.</returns>
        public RegnskabView Execute(RegnskabAddCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Brevhoved brevhoved = null;

            if (command.Brevhoved != 0)
            {
                try
                {
                    brevhoved = _fællesRepository.BrevhovedGetAll().Single(m => m.Nummer == command.Brevhoved);
                }
                catch (InvalidOperationException ex)
                {
                    throw new DataAccessSystemException(
                              Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Brevhoved),
                                                           command.Brevhoved), ex);
                }
            }

            var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));

            var regnskab = new Regnskab(command.Nummer, command.Navn);

            regnskab.SætBrevhoved(brevhoved);

            var oprettetRegnskab = _finansstyringRepository.RegnskabAdd(getBrevhoved, regnskab.Nummer, regnskab.Navn,
                                                                        regnskab.Brevhoved);

            return(_objectMapper.Map <Regnskab, RegnskabView>(oprettetRegnskab));
        }
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til opdatering af en given konto.</param>
        /// <returns>Opdateret konto.</returns>
        public KontoView Execute(KontoModifyCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Regnskab regnskab;

            try
            {
                var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Regnskabsnummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Regnskabsnummer), ex);
            }
            Kontogruppe kontogruppe;

            try
            {
                kontogruppe = _finansstyringRepository.KontogruppeGetAll().Single(m => m.Nummer == command.Kontogruppe);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Kontogruppe),
                                                       command.Kontogruppe), ex);
            }

            Konto konto;

            try
            {
                konto = regnskab.Konti.OfType <Konto>().Single(m => m.Kontonummer.CompareTo(command.Kontonummer) == 0);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Konto),
                                                       command.Kontonummer), ex);
            }
            konto.SætKontonavn(command.Kontonavn);
            konto.SætBeskrivelse(command.Beskrivelse);
            konto.SætNote(command.Note);
            konto.SætKontogruppe(kontogruppe);

            var opdateretKonto = _finansstyringRepository.KontoModify(regnskab, konto.Kontonummer, konto.Kontonavn,
                                                                      konto.Beskrivelse, konto.Note, konto.Kontogruppe);

            return(_objectMapper.Map <Konto, KontoView>(opdateretKonto));
        }
        /// <summary>
        /// Udfører forespørgelse.
        /// </summary>
        /// <param name="query">Forespørgelse efter alle adresser til en adresseliste.</param>
        /// <returns>Alle adresser til en adresseliste.</returns>
        public IEnumerable <AdresselisteView> Query(AdresselisteGetAllQuery query)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
            var regnskaber   = _finansstyringRepository.RegnskabGetAll(getBrevhoved);
            var adresser     = _adresseRepository.AdresseGetAll(adresse => MergeInformations(adresse, regnskaber));

            return(_objectMapper.Map <IEnumerable <AdresseBase>, IEnumerable <AdresselisteView> >(adresser));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til opdatering eller tilføjelse af budgetoplysninger.</param>
        /// <returns>Opdateret eller tilføjet budgetoplysninger.</returns>
        public BudgetoplysningerView Execute(BudgetoplysningerAddOrModifyCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Regnskab regnskab;

            try
            {
                var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Regnskabsnummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Regnskabsnummer), ex);
            }
            Budgetkonto budgetkonto;

            try
            {
                budgetkonto = regnskab.Konti
                              .OfType <Budgetkonto>()
                              .Single(m => m.Kontonummer.CompareTo(command.Budgetkontonummer) == 0);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Budgetkonto),
                                                       command.Budgetkontonummer), ex);
            }

            var budgetoplysninger = _finansstyringRepository.BudgetoplysningerModifyOrAdd(budgetkonto, command.År,
                                                                                          command.Måned,
                                                                                          command.Indtægter,
                                                                                          command.Udgifter);

            return(_objectMapper.Map <Budgetoplysninger, BudgetoplysningerView>(budgetoplysninger));
        }
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til tilføjelse af en budgetkonto.</param>
        /// <returns>Oprettet budgetkonto.</returns>
        public BudgetkontoView Execute(BudgetkontoAddCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Regnskab regnskab;

            try
            {
                var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Regnskabsnummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Regnskabsnummer), ex);
            }
            Budgetkontogruppe budgetkontogruppe;

            try
            {
                budgetkontogruppe = _finansstyringRepository.BudgetkontogrupperGetAll()
                                    .Single(m => m.Nummer == command.Budgetkontogruppe);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Budgetkontogruppe),
                                                       command.Budgetkontogruppe), ex);
            }

            var budgetkonto = _finansstyringRepository.BudgetkontoAdd(regnskab, command.Kontonummer, command.Kontonavn,
                                                                      command.Beskrivelse, command.Note,
                                                                      budgetkontogruppe);

            return(_objectMapper.Map <Budgetkonto, BudgetkontoView>(budgetkonto));
        }
        /// <summary>
        /// Udfører forespørgelse.
        /// </summary>
        /// <param name="query">Forespørgelse efter et givent regnskab.</param>
        /// <returns>Regnskab.</returns>
        public RegnskabView Query(RegnskabGetByNummerQuery 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);
            }
            return(_objectMapper.Map <Regnskab, RegnskabView>(regnskab));
        }
        /// <summary>
        /// Udfører forespørgelse.
        /// </summary>
        /// <param name="query">Forespørgelse efter en given budgetkonto i et givent regnskab.</param>
        /// <returns>Budgetkonto.</returns>
        public BudgetkontoView Query(BudgetkontoGetByRegnskabAndKontonummerQuery 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);
            }
            Budgetkonto budgetkonto;

            try
            {
                budgetkonto = regnskab.Konti
                              .OfType <Budgetkonto>()
                              .Single(m => m.Kontonummer.CompareTo(query.Kontonummer) == 0);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Budgetkonto),
                                                       query.Kontonummer), ex);
            }
            return(_objectMapper.Map <Budgetkonto, BudgetkontoView>(budgetkonto));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Kommand til oprettelse af en bogføringslinje.</param>
        /// <returns>Oprettet bogføringslinje.</returns>
        public BogføringslinjeView Execute(BogføringslinjeAddCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Regnskab regnskab;

            try
            {
                var getBrevhoved = new Func <int, Brevhoved>(nummer => _fællesRepository.BrevhovedGetByNummer(nummer));
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Regnskabsnummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Regnskabsnummer), ex);
            }
            Konto konto;

            try
            {
                konto = regnskab.Konti
                        .OfType <Konto>()
                        .Single(m => m.Kontonummer.CompareTo(command.Kontonummer) == 0);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Konto),
                                                       command.Kontonummer), ex);
            }
            Budgetkonto budgetkonto = null;

            if (!string.IsNullOrEmpty(command.Budgetkontonummer))
            {
                try
                {
                    budgetkonto = regnskab.Konti
                                  .OfType <Budgetkonto>()
                                  .Single(m => m.Kontonummer.CompareTo(command.Budgetkontonummer) == 0);
                }
                catch (InvalidOperationException ex)
                {
                    throw new DataAccessSystemException(
                              Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Budgetkonto),
                                                           command.Budgetkontonummer), ex);
                }
            }
            AdresseBase adresse = null;

            if (command.AdresseId != 0)
            {
                try
                {
                    adresse = _adresseRepository.AdresseGetAll()
                              .Single(m => m.Nummer == command.AdresseId);
                }
                catch (InvalidOperationException ex)
                {
                    throw new DataAccessSystemException(
                              Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(AdresseBase),
                                                           command.AdresseId), ex);
                }
            }

            var bogføringslinje = _finansstyringRepository.BogføringslinjeAdd(command.Bogføringsdato, command.Bilag,
                                                                              konto, command.Tekst, budgetkonto,
                                                                              command.Debit, command.Kredit, adresse);

            var oldValue = Bogføringslinje.AutoCalculate;

            try
            {
                Bogføringslinje.SætAutoCalculate(true);
                return(_objectMapper.Map <Bogføringslinje, BogføringslinjeView>(bogføringslinje));
            }
            finally
            {
                Bogføringslinje.SætAutoCalculate(oldValue);
            }
        }