Example #1
0
        public async Task <List <ChangeDescriptorDto> > GetModelChangesAsync(EstablishmentModel original, EstablishmentModel model)
        {
            var changes = ReflectionHelper.DetectChanges(model, original, typeof(IEBTModel));
            var retVal  = new List <ChangeDescriptorDto>();

            foreach (var change in changes)
            {
                if (_cachedLookupService.IsLookupField(change.Name))
                {
                    change.OldValue = await _cachedLookupService.GetNameAsync(change.Name, change.OldValue.ToInteger());

                    change.NewValue = await _cachedLookupService.GetNameAsync(change.Name, change.NewValue.ToInteger());
                }

                if (change.Name.EndsWith("Id", StringComparison.Ordinal))
                {
                    change.Name = change.Name.Substring(0, change.Name.Length - 2);
                }
                change.Name = change.Name.Replace("_", "").Replace(nameof(IEBTModel) + ".", string.Empty);
                change.Name = change.Name.ToProperCase(true);

                retVal.Add(new ChangeDescriptorDto
                {
                    Name     = change.DisplayName ?? change.Name,
                    NewValue = change.NewValue.Clean(),
                    OldValue = change.OldValue.Clean()
                });
            }

            await DetectSENChanges(original, model, retVal);

            return(retVal);
        }
        public async Task <List <ChangeDescriptorDto> > GetModelChangesAsync(GroupModel original, GroupModel model)
        {
            var changes = ReflectionHelper.DetectGroupChanges(model, original);
            var retVal  = new List <ChangeDescriptorDto>();

            foreach (var change in changes)
            {
                if (_cachedLookupService.IsLookupField(change.Name))
                {
                    change.OldValue = await _cachedLookupService.GetNameAsync(change.Name, change.OldValue.ToInteger());

                    change.NewValue = await _cachedLookupService.GetNameAsync(change.Name, change.NewValue.ToInteger());
                }

                if (change.DisplayName == null)
                {
                    change.DisplayName = PropertyName2Label(change.Name);
                }

                retVal.Add(new ChangeDescriptorDto
                {
                    Id               = change.Name,
                    Name             = change.DisplayName ?? change.Name,
                    NewValue         = change.NewValue.Clean(),
                    OldValue         = change.OldValue.Clean(),
                    Tag              = change.Tag,
                    RequiresApproval = false
                });
            }

            return(retVal);
        }
        public async Task <List <ChangeDescriptorDto> > GetModelChangesAsync(EstablishmentModel original, EstablishmentModel model, EstablishmentApprovalsPolicy approvalsPolicy)
        {
            var changes = ReflectionHelper.DetectChanges(model, original, new[] { typeof(IEBTModel), typeof(ProprietorModel) });

            changes.AddRange(await DetectAdditionalAddressChanges(original, model));
            changes.AddRange(await DetectProprietorsChanges(original, model));
            var retVal = new List <ChangeDescriptorDto>();

            var approvalFields = approvalsPolicy.GetFieldsRequiringApproval();

            foreach (var change in changes)
            {
                if (_cachedLookupService.IsLookupField(change.Name))
                {
                    change.OldValue = await _cachedLookupService.GetNameAsync(change.Name, change.OldValue.ToInteger());

                    change.NewValue = await _cachedLookupService.GetNameAsync(change.Name, change.NewValue.ToInteger());
                }

                if (change.DisplayName == null)
                {
                    change.DisplayName = PropertyName2Label(change.Name);
                }

                retVal.Add(new ChangeDescriptorDto
                {
                    Id               = change.Name,
                    Name             = change.DisplayName ?? change.Name,
                    NewValue         = change.NewValue.Clean(),
                    OldValue         = change.OldValue.Clean(),
                    Tag              = change.Tag,
                    RequiresApproval = (change.Tag == "additionaladdress" && approvalsPolicy.AdditionalAddresses.RequiresApproval) ||
                                       //(change.Tag == "proprietors" && approvalsPolicy.IEBTDetail.Proprietors.RequiresApproval) ||
                                       //(change.Name.Contains(nameof(approvalsPolicy.IEBTDetail.ChairOfProprietor)) && approvalsPolicy.IEBTDetail.ChairOfProprietor.RequiresApproval) ||
                                       approvalFields.Contains(change.Name, StringComparer.OrdinalIgnoreCase),
                    ApproverName = approvalsPolicy.GetApproverName(change.Name)
                });
            }

            await DetectSENChanges(original, model, retVal);

            return(retVal);
        }