Esempio n. 1
0
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til opdatering af et givent regnskab.</param>
        /// <returns>Opdateret regnskab.</returns>
        public RegnskabView Execute(RegnskabModifyCommand 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));

            Regnskab regnskab;

            try
            {
                regnskab = _finansstyringRepository.RegnskabGetAll(getBrevhoved)
                           .Single(m => m.Nummer == command.Nummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Regnskab),
                                                       command.Nummer), ex);
            }
            regnskab.SætNavn(command.Navn);
            regnskab.SætBrevhoved(brevhoved);

            var opdateretRegnskab = _finansstyringRepository.RegnskabModify(getBrevhoved, regnskab.Nummer, regnskab.Navn,
                                                                            regnskab.Brevhoved);

            return(_objectMapper.Map <Regnskab, RegnskabView>(opdateretRegnskab));
        }