/// <summary> /// Alle mapninger sættes op i den statiske /// constructor af objektet. /// </summary> static ObjectMapper() { var mapperConfiguration = new MapperConfiguration(config => { config.CreateMap <AdresseBase, TelefonlisteView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, TelefonlisteView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, TelefonlisteView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, TelefonlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)); config.CreateMap <Firma, TelefonlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)); config.CreateMap <AdresseBase, AdressekontolisteView>() .ConvertUsing(s => { if (s == null) { return(null); } var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, AdressekontolisteView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, AdressekontolisteView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, AdressekontolisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, AdressekontolisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <AdresseBase, AdressekontoView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, AdressekontoView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, AdressekontoView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, AdressekontoView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, AdressekontoView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <AdresseBase, DebitorlisteView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, DebitorlisteView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, DebitorlisteView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, DebitorlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, DebitorlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <AdresseBase, DebitorView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, DebitorView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, DebitorView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, DebitorView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, DebitorView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <AdresseBase, KreditorlisteView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, KreditorlisteView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, KreditorlisteView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, KreditorlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, KreditorlisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <AdresseBase, KreditorView>() .ConvertUsing(s => { var mapper = new ObjectMapper(); Person person = s as Person; if (person != null) { return(mapper.Map <Person, KreditorView>(person)); } Firma firma = s as Firma; if (firma != null) { return(mapper.Map <Firma, KreditorView>(firma)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Person, KreditorView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Firma, KreditorView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)); config.CreateMap <Person, PersonView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? s.Mobil : s.Telefon)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon) ? null : s.Mobil)) .ForMember(x => x.Fødselsdato, opt => { opt.Condition(s => s.Fødselsdato != null); opt.MapFrom(s => s.Fødselsdato); }) .ForMember(x => x.Adressegruppe, opt => { opt.Condition(s => s.Adressegruppe != null); opt.MapFrom(s => s.Adressegruppe); }) .ForMember(x => x.Bekendtskab, opt => opt.MapFrom(s => s.Bekendtskab)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Web, opt => opt.MapFrom(s => s.Webadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Udlånsfrist, opt => opt.MapFrom(s => s.Udlånsfrist)) .ForMember(x => x.Firma, opt => { opt.Condition(s => s.Firma != null); opt.MapFrom(s => s.Firma); }); config.CreateMap <Firma, FirmaView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Adresse1, opt => opt.MapFrom(s => s.Adresse1)) .ForMember(x => x.Adresse2, opt => opt.MapFrom(s => s.Adresse2)) .ForMember(x => x.PostnummerBy, opt => opt.MapFrom(s => s.PostnrBy)) .ForMember(x => x.PrimærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? s.Telefon2 : s.Telefon1)) .ForMember(x => x.SekundærTelefon, opt => opt.MapFrom(s => string.IsNullOrEmpty(s.Telefon1) ? null : s.Telefon2)) .ForMember(x => x.Telefax, opt => opt.MapFrom(s => s.Telefax)) .ForMember(x => x.Adressegruppe, opt => { opt.Condition(s => s.Adressegruppe != null); opt.MapFrom(s => s.Adressegruppe); }) .ForMember(x => x.Bekendtskab, opt => opt.MapFrom(s => s.Bekendtskab)) .ForMember(x => x.Mailadresse, opt => opt.MapFrom(s => s.Mailadresse)) .ForMember(x => x.Web, opt => opt.MapFrom(s => s.Webadresse)) .ForMember(x => x.Betalingsbetingelse, opt => { opt.Condition(s => s.Betalingsbetingelse != null); opt.MapFrom(s => s.Betalingsbetingelse); }) .ForMember(x => x.Udlånsfrist, opt => opt.MapFrom(s => s.Udlånsfrist)) .ForMember(x => x.Personer, opt => { opt.Condition(s => s.Personer != null); opt.MapFrom(s => s.Personer); }); config.CreateMap <Postnummer, PostnummerView>() .ForMember(x => x.Landekode, opt => opt.MapFrom(s => s.Landekode)) .ForMember(x => x.Postnummer, opt => opt.MapFrom(s => s.Postnr)) .ForMember(x => x.Bynavn, opt => opt.MapFrom(s => s.By)); config.CreateMap <Adressegruppe, AdressegruppeView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.AdressegruppeOswebdb, opt => opt.MapFrom(s => s.AdressegruppeOswebdb)); config.CreateMap <Betalingsbetingelse, BetalingsbetingelseView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)); config.CreateMap <Regnskab, RegnskabslisteView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Brevhoved, opt => opt.MapFrom(s => s.Brevhoved)); config.CreateMap <KontoBase, KontoBaseView>() .ConvertUsing(s => { var objectMapper = new ObjectMapper(); Konto konto = s as Konto; if (konto != null) { return(objectMapper.Map <Konto, KontoView>(konto)); } Budgetkonto budgetkonto = s as Budgetkonto; if (budgetkonto != null) { return(objectMapper.Map <Budgetkonto, BudgetkontoView>(budgetkonto)); } throw new IntranetSystemException(Resource.GetExceptionMessage(ExceptionMessage.CantAutoMapType, s.GetType().Name)); }); config.CreateMap <Konto, KontoplanView>() .ForMember(x => x.Regnskab, opt => opt.MapFrom(s => s.Regnskab)) .ForMember(x => x.Kontonummer, opt => opt.MapFrom(s => s.Kontonummer)) .ForMember(x => x.Kontonavn, opt => opt.MapFrom(s => s.Kontonavn)) .ForMember(x => x.Beskrivelse, opt => opt.MapFrom(s => s.Beskrivelse)) .ForMember(x => x.Notat, opt => opt.MapFrom(s => s.Note)) .ForMember(x => x.Kontogruppe, opt => opt.MapFrom(s => s.Kontogruppe)) .ForMember(x => x.Kredit, opt => opt.MapFrom(s => s.KreditPrStatusdato)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)) .ForMember(x => x.Disponibel, opt => opt.MapFrom(s => s.DisponibelPrStatusdato)); config.CreateMap <Konto, KontoView>() .ForMember(x => x.Regnskab, opt => opt.MapFrom(s => s.Regnskab)) .ForMember(x => x.Kontonummer, opt => opt.MapFrom(s => s.Kontonummer)) .ForMember(x => x.Kontonavn, opt => opt.MapFrom(s => s.Kontonavn)) .ForMember(x => x.Beskrivelse, opt => opt.MapFrom(s => s.Beskrivelse)) .ForMember(x => x.Notat, opt => opt.MapFrom(s => s.Note)) .ForMember(x => x.Kontogruppe, opt => opt.MapFrom(s => s.Kontogruppe)) .ForMember(x => x.Kredit, opt => opt.MapFrom(s => s.KreditPrStatusdato)) .ForMember(x => x.Saldo, opt => opt.MapFrom(s => s.SaldoPrStatusdato)) .ForMember(x => x.Disponibel, opt => opt.MapFrom(s => s.DisponibelPrStatusdato)) .ForMember(x => x.Kreditoplysninger, opt => opt.MapFrom(s => s.Kreditoplysninger)); config.CreateMap <Kreditoplysninger, KreditoplysningerView>() .ForMember(x => x.År, opt => opt.MapFrom(s => s.År)) .ForMember(x => x.Måned, opt => opt.MapFrom(s => s.Måned)) .ForMember(x => x.Kredit, opt => opt.MapFrom(s => s.Kredit)); config.CreateMap <Budgetkonto, BudgetkontoplanView>() .ForMember(x => x.Regnskab, opt => opt.MapFrom(s => s.Regnskab)) .ForMember(x => x.Kontonummer, opt => opt.MapFrom(s => s.Kontonummer)) .ForMember(x => x.Kontonavn, opt => opt.MapFrom(s => s.Kontonavn)) .ForMember(x => x.Beskrivelse, opt => opt.MapFrom(s => s.Beskrivelse)) .ForMember(x => x.Notat, opt => opt.MapFrom(s => s.Note)) .ForMember(x => x.Budgetkontogruppe, opt => opt.MapFrom(s => s.Budgetkontogruppe)) .ForMember(x => x.Budget, opt => opt.MapFrom(s => s.BudgetPrStatusdato)) .ForMember(x => x.BudgetSidsteMåned, opt => opt.MapFrom(s => s.BudgetSidsteMåned)) .ForMember(x => x.BudgetÅrTilDato, opt => opt.MapFrom(s => s.BudgetÅrTilStatusdato)) .ForMember(x => x.BudgetSidsteÅr, opt => opt.MapFrom(s => s.BudgetSidsteÅr)) .ForMember(x => x.Bogført, opt => opt.MapFrom(s => s.BogførtPrStatusdato)) .ForMember(x => x.BogførtSidsteMåned, opt => opt.MapFrom(s => s.BogførtSidsteMåned)) .ForMember(x => x.BogførtÅrTilDato, opt => opt.MapFrom(s => s.BogførtÅrTilStatusdato)) .ForMember(x => x.BogførtSidsteÅr, opt => opt.MapFrom(s => s.BogførtSidsteÅr)) .ForMember(x => x.Disponibel, opt => opt.MapFrom(s => s.DisponibelPrStatusdato)); config.CreateMap <Budgetkonto, BudgetkontoView>() .ForMember(x => x.Regnskab, opt => opt.MapFrom(s => s.Regnskab)) .ForMember(x => x.Kontonummer, opt => opt.MapFrom(s => s.Kontonummer)) .ForMember(x => x.Kontonavn, opt => opt.MapFrom(s => s.Kontonavn)) .ForMember(x => x.Beskrivelse, opt => opt.MapFrom(s => s.Beskrivelse)) .ForMember(x => x.Notat, opt => opt.MapFrom(s => s.Note)) .ForMember(x => x.Budgetkontogruppe, opt => opt.MapFrom(s => s.Budgetkontogruppe)) .ForMember(x => x.Budget, opt => opt.MapFrom(s => s.BudgetPrStatusdato)) .ForMember(x => x.BudgetSidsteMåned, opt => opt.MapFrom(s => s.BudgetSidsteMåned)) .ForMember(x => x.BudgetÅrTilDato, opt => opt.MapFrom(s => s.BudgetÅrTilStatusdato)) .ForMember(x => x.BudgetSidsteÅr, opt => opt.MapFrom(s => s.BudgetSidsteÅr)) .ForMember(x => x.Bogført, opt => opt.MapFrom(s => s.BogførtPrStatusdato)) .ForMember(x => x.BogførtSidsteMåned, opt => opt.MapFrom(s => s.BogførtSidsteMåned)) .ForMember(x => x.BogførtÅrTilDato, opt => opt.MapFrom(s => s.BogførtÅrTilStatusdato)) .ForMember(x => x.BogførtSidsteÅr, opt => opt.MapFrom(s => s.BogførtSidsteÅr)) .ForMember(x => x.Disponibel, opt => opt.MapFrom(s => s.DisponibelPrStatusdato)) .ForMember(x => x.Budgetoplysninger, opt => opt.MapFrom(s => s.Budgetoplysninger)); config.CreateMap <Budgetoplysninger, BudgetoplysningerView>() .ForMember(x => x.År, opt => opt.MapFrom(s => s.År)) .ForMember(x => x.Måned, opt => opt.MapFrom(s => s.Måned)) .ForMember(x => x.Budget, opt => opt.MapFrom(s => s.Budget)) .ForMember(x => x.Bogført, opt => opt.MapFrom(s => s.BogførtPrStatusdato)); config.CreateMap <Bogføringslinje, BogføringslinjeView>() .ForMember(x => x.Løbenr, opt => opt.MapFrom(s => s.Løbenummer)) .ForMember(x => x.Konto, opt => opt.MapFrom(s => s.Konto)) .ForMember(x => x.Budgetkonto, opt => { opt.Condition(s => s.Budgetkonto != null); opt.MapFrom(s => s.Budgetkonto); }) .ForMember(x => x.Adressekonto, opt => { opt.Condition(s => s.Adresse != null); opt.MapFrom(s => s.Adresse); }) .ForMember(x => x.Dato, opt => opt.MapFrom(s => s.Dato)) .ForMember(x => x.Bilag, opt => opt.MapFrom(s => s.Bilag)) .ForMember(x => x.Tekst, opt => opt.MapFrom(s => s.Tekst)) .ForMember(x => x.Debit, opt => opt.MapFrom(s => s.Debit)) .ForMember(x => x.Kredit, opt => opt.MapFrom(s => s.Kredit)); config.CreateMap <IBogføringsresultat, BogføringslinjeOpretResponse>() .ForMember(x => x.Løbenr, opt => opt.MapFrom(s => s.Bogføringslinje.Løbenummer)) .ForMember(x => x.Konto, opt => opt.MapFrom(s => s.Bogføringslinje.Konto)) .ForMember(x => x.Budgetkonto, opt => { opt.Condition(s => s.Bogføringslinje.Budgetkonto != null); opt.MapFrom(s => s.Bogføringslinje.Budgetkonto); }) .ForMember(x => x.Adressekonto, opt => { opt.Condition(s => s.Bogføringslinje.Adresse != null); opt.MapFrom(s => s.Bogføringslinje.Adresse); }) .ForMember(x => x.Dato, opt => opt.MapFrom(s => s.Bogføringslinje.Dato)) .ForMember(x => x.Bilag, opt => opt.MapFrom(s => s.Bogføringslinje.Bilag)) .ForMember(x => x.Tekst, opt => opt.MapFrom(s => s.Bogføringslinje.Tekst)) .ForMember(x => x.Debit, opt => opt.MapFrom(s => s.Bogføringslinje.Debit)) .ForMember(x => x.Kredit, opt => opt.MapFrom(s => s.Bogføringslinje.Kredit)) .ForMember(x => x.Advarsler, opt => opt.MapFrom(s => s.Advarsler)); config.CreateMap <IBogføringsadvarsel, BogføringsadvarselResponse>() .ForMember(x => x.Advarsel, opt => opt.MapFrom(s => s.Advarsel)) .ForMember(x => x.Konto, opt => opt.MapFrom(s => s.Konto)) .ForMember(x => x.Beløb, opt => opt.MapFrom(s => s.Beløb)); config.CreateMap <Kontogruppe, KontogruppeView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.ErAktiver, opt => opt.MapFrom(s => s.KontogruppeType == KontogruppeType.Aktiver)) .ForMember(x => x.ErPassiver, opt => opt.MapFrom(s => s.KontogruppeType == KontogruppeType.Passiver)); config.CreateMap <Budgetkontogruppe, BudgetkontogruppeView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)); config.CreateMap <IBrugeraftale, KalenderbrugerAftaleView>() .ForMember(x => x.System, opt => opt.MapFrom(s => s.Aftale.System)) .ForMember(x => x.Id, opt => opt.MapFrom(s => s.Aftale.Id)) .ForMember(x => x.FraTidspunkt, opt => opt.MapFrom(s => s.Aftale.FraTidspunkt)) .ForMember(x => x.TilTidspunkt, opt => opt.MapFrom(s => s.Aftale.TilTidspunkt)) .ForMember(x => x.Emne, opt => opt.MapFrom(s => s.Aftale.Emne)) .ForMember(x => x.Notat, opt => opt.MapFrom(s => s.Aftale.Notat)) .ForMember(x => x.Offentlig, opt => opt.MapFrom(s => s.Offentligtgørelse)) .ForMember(x => x.Privat, opt => opt.MapFrom(s => s.Privat)) .ForMember(x => x.Alarm, opt => opt.MapFrom(s => s.Alarm)) .ForMember(x => x.Udført, opt => opt.MapFrom(s => s.Udført)) .ForMember(x => x.Eksporteres, opt => opt.MapFrom(s => s.Eksporter)) .ForMember(x => x.Eksporteret, opt => opt.MapFrom(s => s.Eksporteret)) .ForMember(x => x.Deltagere, opt => opt.MapFrom(s => s.Aftale.Deltagere)); config.CreateMap <IBrugeraftale, KalenderbrugerView>() .ForMember(x => x.System, opt => opt.MapFrom(s => s.Bruger.System)) .ForMember(x => x.Id, opt => opt.MapFrom(s => s.Bruger.Id)) .ForMember(x => x.Initialer, opt => opt.MapFrom(s => s.Bruger.Initialer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Bruger.Navn)); config.CreateMap <IBruger, KalenderbrugerView>() .ForMember(x => x.System, opt => opt.MapFrom(s => s.System)) .ForMember(x => x.Id, opt => opt.MapFrom(s => s.Id)) .ForMember(x => x.Initialer, opt => opt.MapFrom(s => s.Initialer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)); config.CreateMap <Brevhoved, BrevhovedreferenceView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)); config.CreateMap <Brevhoved, BrevhovedView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Navn, opt => opt.MapFrom(s => s.Navn)) .ForMember(x => x.Linje1, opt => opt.MapFrom(s => s.Linje1)) .ForMember(x => x.Linje2, opt => opt.MapFrom(s => s.Linje2)) .ForMember(x => x.Linje3, opt => opt.MapFrom(s => s.Linje3)) .ForMember(x => x.Linje4, opt => opt.MapFrom(s => s.Linje4)) .ForMember(x => x.Linje5, opt => opt.MapFrom(s => s.Linje5)) .ForMember(x => x.Linje6, opt => opt.MapFrom(s => s.Linje6)) .ForMember(x => x.Linje7, opt => opt.MapFrom(s => s.Linje7)) .ForMember(x => x.CvrNr, opt => opt.MapFrom(s => s.CvrNr)); config.CreateMap <ISystem, SystemView>() .ForMember(x => x.Nummer, opt => opt.MapFrom(s => s.Nummer)) .ForMember(x => x.Titel, opt => opt.MapFrom(s => s.Titel)) .ForMember(x => x.Kalender, opt => opt.MapFrom(s => s.Kalender)); }); mapperConfiguration.AssertConfigurationIsValid(); Mapper = mapperConfiguration.CreateMapper(); }
/// <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> /// Evaluerer kommando til oprettelse af en bogføringslinje. /// </summary> /// <param name="command">Kommando til oprettelse af en bogføringslinje.</param> /// <param name="konto">Returnering af konto, hvorpå bogføringslinjen skal bogføres.</param> /// <param name="budgetkonto">Returnering af budgetkonto, hvorpå bogføringslinjen skal bogføres.</param> /// <param name="adressekonto">Returnering af adressekonto, hvorpå bogføringslinjen skal bogføres.</param> private void EvaluateCommand(BogføringslinjeOpretCommand command, out Konto konto, out Budgetkonto budgetkonto, out AdresseBase adressekonto) { var adresselisteHelper = new AdresselisteHelper(AdresseRepository.AdresseGetAll()); var brevhovedlisteHelper = new BrevhovedlisteHelper(FællesRepository.BrevhovedGetAll()); var regnskab = Repository.RegnskabGet(command.Regnskabsnummer, brevhovedlisteHelper.GetById, adresselisteHelper.GetById); var currentTime = DateTime.Now; if (command.Dato.Date < currentTime.AddDays(_konfigurationRepository.DageForBogføringsperiode * -1).Date) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineDateToOld, _konfigurationRepository.DageForBogføringsperiode)); } if (command.Dato.Date > currentTime.Date) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineDateIsForwardInTime)); } if (string.IsNullOrEmpty(command.Kontonummer)) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineAccountNumberMissing)); } try { konto = regnskab.Konti.OfType <Konto>().Single(m => String.Compare(m.Kontonummer, command.Kontonummer, StringComparison.Ordinal) == 0); } catch (InvalidOperationException ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Konto).Name, command.Kontonummer), ex); } if (string.IsNullOrEmpty(command.Tekst)) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineTextMissing)); } budgetkonto = null; if (!string.IsNullOrEmpty(command.Budgetkontonummer)) { try { budgetkonto = regnskab.Konti.OfType <Budgetkonto>().Single(m => String.Compare(m.Kontonummer, command.Budgetkontonummer, StringComparison.Ordinal) == 0); } catch (InvalidOperationException ex) { throw new IntranetRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.CantFindObjectById, typeof(Budgetkonto).Name, command.Budgetkontonummer), ex); } } if (command.Debit < 0M) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineValueBelowZero)); } if (command.Kredit < 0M) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineValueBelowZero)); } if (command.Debit == 0M && command.Kredit == 0M) { throw new IntranetBusinessException(Resource.GetExceptionMessage(ExceptionMessage.BalanceLineValueMissing)); } adressekonto = null; if (command.Adressekonto == 0) { return; } adressekonto = adresselisteHelper.GetById(command.Adressekonto); }
/// <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); } }
/// <summary> /// Tilføjer en bogføringslinje. /// </summary> /// <param name="bogføringstidspunkt">Bogføringstidspunkt.</param> /// <param name="bilag">Bilag.</param> /// <param name="konto">Konto.</param> /// <param name="tekst">Tekst.</param> /// <param name="budgetkonto">Budgetkonto.</param> /// <param name="debit">Debitbeløb.</param> /// <param name="kredit">Kreditbeløb.</param> /// <param name="adressekonto">Adressekonto.</param> /// <returns>Oprettet bogføringslinje.</returns> public Bogføringslinje BogføringslinjeAdd(DateTime bogføringstidspunkt, string bilag, Konto konto, string tekst, Budgetkonto budgetkonto, decimal debit, decimal kredit, AdresseBase adressekonto) { if (konto == null) { throw new ArgumentNullException("konto"); } if (string.IsNullOrEmpty(tekst)) { throw new ArgumentNullException("tekst"); } var channel = _channelFactory.CreateChannel <IFinansstyringRepositoryService>(EndpointConfigurationName); try { // Udførelse af kommando. var command = new BogføringslinjeAddCommand { Regnskabsnummer = konto.Regnskab.Nummer, Bogføringsdato = bogføringstidspunkt, Bilag = bilag, Kontonummer = konto.Kontonummer, Tekst = tekst, Budgetkontonummer = budgetkonto == null ? null : budgetkonto.Kontonummer, Debit = debit, Kredit = kredit, AdresseId = adressekonto == null ? 0 : adressekonto.Nummer }; var result = channel.BogføringslinjeAdd(command); // Behandling af resultat. var bogføringslinje = new Bogføringslinje(result.Løbenummer, result.Dato, result.Bilag, result.Tekst, result.Debit, result.Kredit); konto.TilføjBogføringslinje(bogføringslinje); if (budgetkonto != null) { budgetkonto.TilføjBogføringslinje(bogføringslinje); } if (adressekonto != null) { adressekonto.TilføjBogføringslinje(bogføringslinje); } return(bogføringslinje); } catch (IntranetRepositoryException) { throw; } catch (FaultException ex) { throw new IntranetRepositoryException(ex.Message); } catch (Exception ex) { throw new IntranetRepositoryException( Resource.GetExceptionMessage(ExceptionMessage.RepositoryError, MethodBase.GetCurrentMethod().Name, ex.Message), ex); } finally { ChannelTools.CloseChannel(channel); } }