/// <summary> /// Udførelse af kommandoen. /// </summary> /// <param name="command">Command til oprettelse af et brevhoved.</param> /// <returns>Oprettet brevhoved.</returns> public BrevhovedView Execute(BrevhovedAddCommand command) { if (command == null) { throw new ArgumentNullException("command"); } var brevhoved = new Brevhoved(command.Nummer, command.Navn); brevhoved.SætLinje1(command.Linje1); brevhoved.SætLinje2(command.Linje2); brevhoved.SætLinje3(command.Linje3); brevhoved.SætLinje4(command.Linje4); brevhoved.SætLinje5(command.Linje5); brevhoved.SætLinje6(command.Linje6); brevhoved.SætLinje7(command.Linje7); brevhoved.SætCvrNr(command.CvrNr); var oprettetBrevhoved = _fællesRepository.BrevhovedAdd(brevhoved.Nummer, brevhoved.Navn, brevhoved.Linje1, brevhoved.Linje2, brevhoved.Linje3, brevhoved.Linje4, brevhoved.Linje5, brevhoved.Linje6, brevhoved.Linje7, brevhoved.CvrNr); return(_objectMapper.Map <Brevhoved, BrevhovedView>(oprettetBrevhoved)); }
/// <summary> /// Danner domæneobjekt bygger. /// </summary> public DomainObjectBuilder() { var mapperConfiguration = new MapperConfiguration(config => { config.CreateMap <AdressereferenceView, AdresseBase>() .ConvertUsing(s => { throw new NotSupportedException(); }); config.CreateMap <PersonView, AdresseBase>() .ConvertUsing(s => { Adressegruppe adressegruppe; lock (SyncRoot) { if (GetAdressegruppeCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetAdressegruppeCallback")); } try { adressegruppe = GetAdressegruppeCallback(s.Adressegruppe.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Adressegruppe).Name, s.Adressegruppe.Nummer), ex); } } var person = new Person(s.Nummer, s.Navn, adressegruppe); person.SætAdresseoplysninger(s.Adresse1, s.Adresse2, s.PostnummerBy); person.SætTelefon(s.Telefon, s.Mobil); person.SætFødselsdato(s.Fødselsdato); person.SætBekendtskab(s.Bekendtskab); person.SætMailadresse(s.Mailadresse); person.SætWebadresse(s.Webadresse); if (s.Betalingsbetingelse != null) { Betalingsbetingelse betalingsbetingelse; lock (SyncRoot) { if (GetBetalingsbetingelseCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetBetalingsbetingelseCallback")); } try { betalingsbetingelse = GetBetalingsbetingelseCallback(s.Betalingsbetingelse.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Betalingsbetingelse).Name, s.Betalingsbetingelse.Nummer), ex); } } person.SætBetalingsbetingelse(betalingsbetingelse); } person.SætUdlånsfrist(s.Udlånsfrist); person.SætFilofaxAdresselabel(s.FilofaxAdresselabel); if (s.Firma != null) { Firma firma; lock (SyncRoot) { if (GetAdresseBaseCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetAdresseBaseCallback")); } try { firma = (Firma)GetAdresseBaseCallback(s.Firma.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Firma).Name, s.Firma.Nummer), ex); } } firma.TilføjPerson(person); } return(person); }); config.CreateMap <FirmaView, AdresseBase>() .ConvertUsing(s => { Adressegruppe adressegruppe; lock (SyncRoot) { if (GetAdressegruppeCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetAdressegruppeCallback")); } try { adressegruppe = GetAdressegruppeCallback(s.Adressegruppe.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Adressegruppe).Name, s.Adressegruppe.Nummer), ex); } } var firma = new Firma(s.Nummer, s.Navn, adressegruppe); firma.SætAdresseoplysninger(s.Adresse1, s.Adresse2, s.PostnummerBy); firma.SætTelefon(s.Telefon1, s.Telefon2, s.Telefax); firma.SætBekendtskab(s.Bekendtskab); firma.SætMailadresse(s.Mailadresse); firma.SætWebadresse(s.Webadresse); if (s.Betalingsbetingelse != null) { Betalingsbetingelse betalingsbetingelse; lock (SyncRoot) { if (GetBetalingsbetingelseCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetBetalingsbetingelseCallback")); } try { betalingsbetingelse = GetBetalingsbetingelseCallback(s.Betalingsbetingelse.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Betalingsbetingelse).Name, s.Betalingsbetingelse.Nummer), ex); } } firma.SætBetalingsbetingelse(betalingsbetingelse); } firma.SætUdlånsfrist(s.Udlånsfrist); firma.SætFilofaxAdresselabel(s.FilofaxAdresselabel); return(firma); }); config.CreateMap <PostnummerView, Postnummer>() .ConvertUsing(s => new Postnummer(s.Landekode, s.Postnummer, s.Bynavn)); config.CreateMap <AdressegruppeView, Adressegruppe>() .ConvertUsing(s => new Adressegruppe(s.Nummer, s.Navn, s.AdressegruppeOswebdb)); config.CreateMap <BetalingsbetingelseView, Betalingsbetingelse>() .ConvertUsing(s => new Betalingsbetingelse(s.Nummer, s.Navn)); config.CreateMap <RegnskabListeView, Regnskab>() .ConvertUsing(s => { var regnskab = new Regnskab(s.Nummer, s.Navn); if (s.Brevhoved != null && s.Brevhoved.Nummer != 0) { Brevhoved brevhoved; lock (SyncRoot) { if (GetBrevhovedCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetBrevhovedCallback")); } try { brevhoved = GetBrevhovedCallback(s.Brevhoved.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Brevhoved).Name, s.Brevhoved.Nummer), ex); } } regnskab.SætBrevhoved(brevhoved); } return(regnskab); }); config.CreateMap <RegnskabView, Regnskab>() .ConvertUsing(s => { var regnskab = new Regnskab(s.Nummer, s.Navn); if (s.Brevhoved != null && s.Brevhoved.Nummer != 0) { Brevhoved brevhoved; lock (SyncRoot) { if (GetBrevhovedCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetBrevhovedCallback")); } try { brevhoved = GetBrevhovedCallback(s.Brevhoved.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Brevhoved).Name, s.Brevhoved.Nummer), ex); } } regnskab.SætBrevhoved(brevhoved); } lock (SyncRoot) { var cached = _regnskaber.SingleOrDefault(m => m.Nummer == regnskab.Nummer); if (cached != null) { _regnskaber.Remove(cached); } _regnskaber.Add(regnskab); var regnskabslisteHelper = new RegnskabslisteHelper(_regnskaber); GetRegnskabCallback = regnskabslisteHelper.GetById; foreach (var konto in BuildMany <KontoView, Konto>(s.Konti)) { regnskab.TilføjKonto(konto); } foreach (var budgetkonto in BuildMany <BudgetkontoView, Budgetkonto>(s.Budgetkonti)) { regnskab.TilføjKonto(budgetkonto); } BuildMany <BogføringslinjeView, Bogføringslinje>(s.Konti.SelectMany(m => m.Bogføringslinjer)); } return(regnskab); }); config.CreateMap <KontoListeView, Konto>() .ConvertUsing(s => { throw new NotSupportedException(); }); config.CreateMap <KontoView, Konto>() .ConvertUsing(s => { Regnskab regnskab; lock (SyncRoot) { if (GetRegnskabCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetRegnskabCallback")); } try { regnskab = GetRegnskabCallback(s.Regnskab.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Regnskab).Name, s.Regnskab.Nummer), ex); } } Kontogruppe kontogruppe; lock (SyncRoot) { if (GetKontogruppeCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetKontogruppeCallback")); } try { kontogruppe = GetKontogruppeCallback(s.Kontogruppe.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Kontogruppe).Name, s.Kontogruppe.Nummer), ex); } } var konto = new Konto(regnskab, s.Kontonummer, s.Kontonavn, kontogruppe); konto.SætBeskrivelse(s.Beskrivelse); konto.SætNote(s.Note); foreach (var kreditoplysninger in BuildMany <KreditoplysningerView, Kreditoplysninger>(s.Kreditoplysninger)) { konto.TilføjKreditoplysninger(kreditoplysninger); } return(konto); }); config.CreateMap <KreditoplysningerView, Kreditoplysninger>() .ConvertUsing(s => new Kreditoplysninger(s.År, s.Måned, s.Kredit)); config.CreateMap <BudgetkontoListeView, Budgetkonto>() .ConvertUsing(s => { throw new NotSupportedException(); }); config.CreateMap <BudgetkontoView, Budgetkonto>() .ConvertUsing(s => { Regnskab regnskab; lock (SyncRoot) { if (GetRegnskabCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetRegnskabCallback")); } try { regnskab = GetRegnskabCallback(s.Regnskab.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Regnskab).Name, s.Regnskab.Nummer), ex); } } Budgetkontogruppe budgetkontogruppe; lock (SyncRoot) { if (GetBudgetkontogruppeCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetBudgetkontogruppeCallback")); } try { budgetkontogruppe = GetBudgetkontogruppeCallback(s.Budgetkontogruppe.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Budgetkontogruppe).Name, s.Budgetkontogruppe.Nummer), ex); } } var budgetkonto = new Budgetkonto(regnskab, s.Kontonummer, s.Kontonavn, budgetkontogruppe); budgetkonto.SætBeskrivelse(s.Beskrivelse); budgetkonto.SætNote(s.Note); foreach (var budgetoplysninger in BuildMany <BudgetoplysningerView, Budgetoplysninger>(s.Budgetoplysninger)) { budgetkonto.TilføjBudgetoplysninger(budgetoplysninger); } return(budgetkonto); }); config.CreateMap <BudgetoplysningerView, Budgetoplysninger>() .ConvertUsing(s => new Budgetoplysninger(s.År, s.Måned, s.Indtægter, s.Udgifter)); config.CreateMap <BogføringslinjeView, Bogføringslinje>() .ConvertUsing(s => { Regnskab regnskab; lock (SyncRoot) { if (GetRegnskabCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetRegnskabCallback")); } try { regnskab = GetRegnskabCallback(s.Konto.Regnskab.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Regnskab).Name, s.Konto.Regnskab.Nummer), ex); } } Konto konto; try { konto = regnskab.Konti .OfType <Konto>() .Single(m => String.Compare(m.Kontonummer, s.Konto.Kontonummer, StringComparison.Ordinal) == 0); } catch (InvalidOperationException ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Konto).Name, s.Konto.Kontonummer), ex); } Budgetkonto budgetkonto = null; if (s.Budgetkonto != null && string.IsNullOrEmpty(s.Budgetkonto.Kontonummer) == false) { try { budgetkonto = regnskab.Konti .OfType <Budgetkonto>() .Single(m => String.Compare(m.Kontonummer, s.Budgetkonto.Kontonummer, StringComparison.Ordinal) == 0); } catch (InvalidOperationException ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Budgetkonto).Name, s.Budgetkonto.Kontonummer), ex); } } AdresseBase adresse = null; if (s.Adresse != null && s.Adresse.Nummer != 0) { lock (SyncRoot) { if (GetAdresseBaseCallback == null) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.NoRegistrationForDelegate, "GetAdresseBaseCallback")); } try { adresse = GetAdresseBaseCallback(s.Adresse.Nummer); } catch (IntranetRepositoryException) { throw; } catch (Exception ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(AdresseBase).Name, s.Adresse.Nummer), ex); } } } var bogføringslinje = new Bogføringslinje(s.Løbenummer, s.Dato, s.Bilag, s.Tekst, s.Debit, s.Kredit); konto.TilføjBogføringslinje(bogføringslinje); if (budgetkonto != null) { budgetkonto.TilføjBogføringslinje(bogføringslinje); } if (adresse != null) { adresse.TilføjBogføringslinje(bogføringslinje); } return(bogføringslinje); }); config.CreateMap <KontogruppeView, Kontogruppe>() .ConvertUsing(s => { var kontogruppe = new Kontogruppe(s.Nummer, s.Navn, KontogruppeType.Aktiver); switch (s.KontogruppeType) { case DataAccess.Contracts.Enums.KontogruppeType.Aktiver: kontogruppe.SætKontogruppeType(KontogruppeType.Aktiver); break; case DataAccess.Contracts.Enums.KontogruppeType.Passiver: kontogruppe.SætKontogruppeType(KontogruppeType.Passiver); break; default: throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.UnhandledSwitchValue, s.KontogruppeType, "KontogruppeType", MethodBase.GetCurrentMethod().Name)); } return(kontogruppe); }); config.CreateMap <BudgetkontogruppeView, Budgetkontogruppe>() .ConvertUsing(s => new Budgetkontogruppe(s.Nummer, s.Navn)); config.CreateMap <BrevhovedView, Brevhoved>() .ConvertUsing(s => { var brevhoved = new Brevhoved(s.Nummer, s.Navn); brevhoved.SætLinje1(s.Linje1); brevhoved.SætLinje2(s.Linje2); brevhoved.SætLinje3(s.Linje3); brevhoved.SætLinje4(s.Linje4); brevhoved.SætLinje5(s.Linje5); brevhoved.SætLinje6(s.Linje6); brevhoved.SætLinje7(s.Linje7); brevhoved.SætCvrNr(s.CvrNr); return(brevhoved); }); config.CreateMap <BrevhovedreferenceView, Brevhoved>() .ConvertUsing(s => new Brevhoved(s.Nummer, s.Navn)); }); mapperConfiguration.AssertConfigurationIsValid(); _mapper = mapperConfiguration.CreateMapper(); }
/// <summary> /// Henter alle brevhoveder. /// </summary> /// <returns>Liste indeholdende alle brevhoveder.</returns> public IEnumerable <Brevhoved> BrevhovedGetAll() { lock (BrevhovedCache) { if (BrevhovedCache.Count > 0) { return(new List <Brevhoved>(BrevhovedCache)); } var brevhoveder = GetTableContentFromTabel <Brevhoved>(2020, (dbHandle, searchHandle, list) => { var nummer = GetFieldValueAsInt(dbHandle, searchHandle, "Nummer"); var navn = GetFieldValueAsString(dbHandle, searchHandle, "Tekst"); var brevhoved = new Brevhoved( nummer, navn); brevhoved.SætLinje1( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie1")); brevhoved.SætLinje2( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie2")); brevhoved.SætLinje3( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie3")); brevhoved.SætLinje4( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie4")); brevhoved.SætLinje5( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie5")); brevhoved.SætLinje6( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie6")); brevhoved.SætLinje7( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedLinie7")); brevhoved.SætCvrNr( GetFieldValueAsString(dbHandle, searchHandle, "BrevhovedCVR")); list.Add(brevhoved); }); BrevhovedCache.Clear(); foreach (var brevhoved in brevhoveder) { BrevhovedCache.Add(brevhoved); } return(new List <Brevhoved>(BrevhovedCache)); } }