Ejemplo n.º 1
0
        public static DbContext Audit(this DbContext context, ITimestampProvider timestampProvider = null, IPrincipal principal = null)
        {
            Ensure.NotNull(context, nameof(context));

            context.ChangeTracker.DetectChanges();

            var entries = context.ChangeTracker.Entries <IAuditable>()
                          .Where(x => x.State == EntityState.Added || x.State == EntityState.Modified || x.State == EntityState.Deleted);

            var timestamp = timestampProvider?.GetTimestamp() ?? DateTime.Now;
            var sign      = principal?.Identity?.Name;

            if (entries != null)
            {
                foreach (var entry in entries)
                {
                    switch (entry.State)
                    {
                    case EntityState.Added:
                        OnAdded(context, entry, timestamp, sign);
                        break;

                    case EntityState.Modified:
                        OnModified(context, entry, timestamp, sign);
                        break;

                    case EntityState.Deleted:
                        OnDeleted(context, entry, timestamp, sign);
                        break;
                    }
                }
            }

            return(context);
        }
Ejemplo n.º 2
0
        public async Task <WebServiceResult> SetAwayMode(Structure structure, bool isAway)
        {
            string url           = string.Format(@"{0}/v2/put/structure.{1}", _sessionProvider.TransportUrl, structure.ID);
            string requestString = string.Format("{{\"away_timestamp\":{0},\"away\":{1},\"away_setter\":0}}",
                                                 _timestampProvider.GetTimestamp(), isAway.ToString().ToLower());

            return(await SendPutRequestAsync(url, requestString));
        }
Ejemplo n.º 3
0
        public static async Task Delete <T>(Table <T> table, ITimestampProvider timestampProvider, Condition[] filters)
        {
            var query   = BuildReadQuery(table, filters);
            var results = (await query.ExecuteAsync().ConfigureAwait(false)).ToArray();

            if (results.Length != 1)
            {
                throw new InvalidOperationException($"Expected results count to be 1 but was {results.Length}");
            }

            var timestamp = await timestampProvider.GetTimestamp(table.Name).ConfigureAwait(false);

            await query.Delete().SetTimestamp(timestamp).ExecuteAsync().ConfigureAwait(false);
        }
Ejemplo n.º 4
0
        public static async Task Write <T>(Table <T> table, ITimestampProvider timestampProvider, object @object)
        {
            var timestamp = await timestampProvider.GetTimestamp(table.Name).ConfigureAwait(false);

            await table.Insert((T)@object).SetTimestamp(timestamp).ExecuteAsync().ConfigureAwait(false);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Gets the current date and time on this computer, expressed as the Coordinated Universal Time (UTC).
 /// </summary>
 public static DateTime Universal() => universalProvider.GetTimestamp();
Ejemplo n.º 6
0
 /// <summary>
 /// Gets the current date and time on this computer, expressed as the local time.
 /// </summary>
 public static DateTime Local() => localProvider.GetTimestamp();