public AssociateModel GetAssociateVersion(int id, DateTime from, DateTime to) { Associate associate = this.associateRepo.GetAssociateVersion(id, to); IEnumerable <AssociateReferenceDetail> refs = this.associateRepo.GetAssociateReferenceVersions(id, from, to); IEnumerable <AssociateAddressHistory> addresses = this.associateRepo.GetAssociateAddressVersions( id, from, to); var associateVersion = this.dataMapper.MapAssociateE2M <AssociateModel>(associate, refs, addresses); AssociateItemHistory associateHistory = this.GetAssociateItemHistory( @from, to, id, ItemHistoryType.Associate); associateVersion.CategorizedItemHistory = new CategorizedItemHistory(associateHistory); foreach (ReferenceBaseModel reference in associateVersion.References) { var referenceWithAccountants = reference as IReferenceWithAccountants; if (referenceWithAccountants != null) { foreach (ReferenceAccountantModel accountantModel in (referenceWithAccountants).Accountants) { accountantModel.AssociateItemHistory = this.GetAssociateItemHistory( @from, to, accountantModel.Id, ItemHistoryType.Reference, accountantModel); } } reference.AssociateItemHistory = this.GetAssociateItemHistory( @from, to, reference.Id, ItemHistoryType.Reference, reference); } foreach (AssociateAddressModel address in associateVersion.AddressHistory) { address.AssociateItemHistory = this.GetAssociateItemHistory( @from, to, address.Id, ItemHistoryType.Address, address); } associateVersion.UpdateJson(); associateVersion.LockingUser = this.associateRepo.GetLockingEmployeeUserId(associateVersion.Id); return(associateVersion); }
private AssociateItemHistory GetAssociateItemHistory( DateTime @from, DateTime to, int itemId, ItemHistoryType itemType, AssociateDeletableItem item = null) { bool hasRestoredDelete; DateTime?createdDate; DateTime?deletedDate; IEnumerable <ItemHistory> h = this.associateRepo.GetItemHistory( itemId, itemType, @from, to, out createdDate, out deletedDate, out hasRestoredDelete); if (item != null) { item.IsDeletedOnServer = deletedDate.HasValue; } List <AssociateItemRestoredDeleteHistoryRecord> restoredDeleteHistory = null; if (hasRestoredDelete) { IEnumerable <ItemRestoredDeleteHistory> r = this.associateRepo.GetItemRestoredDeleteHistory( itemId, itemType); restoredDeleteHistory = this.dataMapper.MapItemRestoredDeleteHistoryListE2M(r); } var associateItemHistory = new AssociateItemHistory { RestoredDeleteHistory = restoredDeleteHistory, CreatedDate = createdDate, DeletedDate = deletedDate, CreatedDuringPeriod = (@from <= createdDate && createdDate <= to), DeletedDuringPeriod = (@from <= deletedDate && deletedDate <= to), ItemHistoryType = itemType }; // format the address data column from json into a string h.Where(x => x.Col == "AddressData" && !string.IsNullOrEmpty(x.Val)).ForEach(this.FormatAddress); associateItemHistory.HistoryRecords.AddRange(this.dataMapper.MapItemHistoryListE2M(h)); return(associateItemHistory); }
private AssociateItemHistory GetAssociateItemHistory( DateTime @from, DateTime to, int itemId, ItemHistoryType itemType, AssociateDeletableItem item = null) { bool hasRestoredDelete; DateTime? createdDate; DateTime? deletedDate; IEnumerable<ItemHistory> h = this.associateRepo.GetItemHistory( itemId, itemType, @from, to, out createdDate, out deletedDate, out hasRestoredDelete); if (item != null) { item.IsDeletedOnServer = deletedDate.HasValue; } List<AssociateItemRestoredDeleteHistoryRecord> restoredDeleteHistory = null; if (hasRestoredDelete) { IEnumerable<ItemRestoredDeleteHistory> r = this.associateRepo.GetItemRestoredDeleteHistory( itemId, itemType); restoredDeleteHistory = this.dataMapper.MapItemRestoredDeleteHistoryListE2M(r); } var associateItemHistory = new AssociateItemHistory { RestoredDeleteHistory = restoredDeleteHistory, CreatedDate = createdDate, DeletedDate = deletedDate, CreatedDuringPeriod = (@from <= createdDate && createdDate <= to), DeletedDuringPeriod = (@from <= deletedDate && deletedDate <= to), ItemHistoryType = itemType }; // format the address data column from json into a string h.Where(x => x.Col == "AddressData" && !string.IsNullOrEmpty(x.Val)).ForEach(this.FormatAddress); associateItemHistory.HistoryRecords.AddRange(this.dataMapper.MapItemHistoryListE2M(h)); return associateItemHistory; }