Exemple #1
0
        /// <summary>
        /// Udførelse af kommandoen.
        /// </summary>
        /// <param name="command">Command til opdatering af en given kontogruppe.</param>
        /// <returns>Opdateret kontogruppe.</returns>
        public KontogruppeView Execute(KontogruppeModifyCommand command)
        {
            if (command == null)
            {
                throw new ArgumentNullException("command");
            }

            Kontogruppe kontogruppe;

            try
            {
                kontogruppe = _finansstyringRepository.KontogruppeGetAll().Single(m => m.Nummer == command.Nummer);
            }
            catch (InvalidOperationException ex)
            {
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.CantFindUniqueRecordId, typeof(Kontogruppe),
                                                       command.Nummer), ex);
            }
            kontogruppe.SætNavn(command.Navn);
            switch (command.KontogruppeType)
            {
            case KontogruppeType.Aktiver:
                kontogruppe.SætKontogruppeType(CommonLibrary.Domain.Enums.KontogruppeType.Aktiver);
                break;

            case KontogruppeType.Passiver:
                kontogruppe.SætKontogruppeType(CommonLibrary.Domain.Enums.KontogruppeType.Passiver);
                break;

            default:
                throw new DataAccessSystemException(
                          Resource.GetExceptionMessage(ExceptionMessage.UnhandledSwitchValue, command.KontogruppeType,
                                                       "KontogruppeType", MethodBase.GetCurrentMethod().Name));
            }

            var opdateretKontogruppe = _finansstyringRepository.KontogruppeModify(kontogruppe.Nummer, kontogruppe.Navn,
                                                                                  kontogruppe.KontogruppeType);

            return(_objectMapper.Map <Kontogruppe, KontogruppeView>(opdateretKontogruppe));
        }