using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Service.DCEntityMapper; using BS.Shared.DataContracts.Compact; using BS.Shared.DataContracts; using BS.Shared; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using BeWo.Service.Core; namespace BeWo.Service.ServiceUtils { public static class DataContractLoader { //public static CompactCustomerDC LoadCompactCustomerDC(BeWoRefDC beWoRef) // => LoadDataContact(MapperFactory.CompactCustomerDC_Customer, beWoRef); public static CompactSupportConceptDC LoadSupportConceptDC(BeWoRefDC beWoRef) => LoadDataContact(MapperFactory.CompactSupportConceptDC_SupportConcept, beWoRef); public static IEnumerable LoadServiceRecordDCs(IEnumerable beWoRefs) => LoadDataContacts(MapperFactory.ServiceRecordDC_ServiceRecord, beWoRefs); private static IEnumerable LoadDataContacts(TMapper mapper, IEnumerable beWoRefs, bool checkVersion = true) where TMapper : AbstractIDCEntityMapper where TEntity : BeWoEntityBase, new() where TDC : class, new() { var entities = LoadEntitiesByRef(beWoRefs, checkVersion); var dcs = mapper.MapToNewDCs(entities); return dcs; } private static TDC LoadDataContact(TMapper mapper, BeWoRefDC beWoRef, bool checkVersion = true) where TMapper : AbstractIDCEntityMapper where TEntity : BeWoEntityBase, new() where TDC : class, new() { var entity = LoadEntityByRef(beWoRef, checkVersion); var dc = mapper.MapToNewDC(entity); return dc; } private static IEnumerable LoadEntitiesByRef(IEnumerable beWoRefs, bool checkVersion = true) where TEntity : BeWoEntityBase, new() { var tid = GetTableID(); var entities = beWoRefs.Select(x => LoadEntityByRef(x, checkVersion)); return entities; } private static TEntity LoadEntityByRef(BeWoRefDC beWoRef, bool checkVersion = true) where TEntity : BeWoEntityBase, new() { var tid = GetTableID(); var oid = beWoRef.Oid; var entity = DAOFactory.GenericDAO.LoadByID(oid); if (checkVersion) ServiceLogic.ConcurrencyCheck(beWoRef.Version, entity); return entity; } private static TableID GetTableID() where TEntity : BeWoEntityBase, new() { return new TEntity().Tid; } } }