Exemplo n.º 1
0
 public HistoryService(NSCRegDbContext dbContext)
 {
     _dbContext           = dbContext;
     _userService         = new UserService(dbContext);
     _foreignKeysResolver = new ForeingKeysResolver(dbContext);
     _commonSvc           = new Common(dbContext);
 }
Exemplo n.º 2
0
        /// <summary>
        /// Method returning unchanged cropped fields
        /// </summary>
        /// <param name = "after"> After </param>
        /// <param name = "before"> To </param>
        /// <param name = "userId"> User Id </param>
        /// <returns> </returns>
        private async Task <IEnumerable <ChangedField> > CutUnchangedFields <T>(T after, T before, string userId)
            where T : class, IStatisticalUnit
        {
            var unitType = after.GetType();
            var daa      = await _userService.GetDataAccessAttributes(
                userId,
                StatisticalUnitsTypeHelper.GetStatUnitMappingType(unitType));

            var cahangedFields =
                from prop in unitType.GetProperties()
                let valueBefore = unitType.GetProperty(prop.Name).GetValue(before, null)?.ToString() ?? ""
                                  let valueAfter = unitType.GetProperty(prop.Name).GetValue(after, null)?.ToString() ?? ""
                                                   where prop.Name != nameof(IStatisticalUnit.RegId) &&
                                                   daa.HasWriteOrReadPermission(DataAccessAttributesHelper.GetName(unitType, prop.Name)) &&
                                                   valueAfter != valueBefore
                                                   select new ChangedField {
                Name = prop.Name, Before = valueBefore, After = valueAfter
            };

            var result = cahangedFields.ToArray();

            foreach (var historyChangedField in result.Where(x => _foreignKeysResolver.Keys.Contains(x.Name)).Select(x => x).ToArray())
            {
                if (historyChangedField != null)
                {
                    _foreignKeysResolver[historyChangedField.Name](historyChangedField);
                }
            }



            return(result.ToArray());
        }