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