Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }