/// <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)); }