| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | using System;using System.Collections.Generic;using System.Drawing;using InABox.Core;namespace InABox.Clients{    public delegate void LogEvent(object sender, string message);    public class ValidationData    {        public ValidationResult Status { get; set; }        public string UserID { get; set; }        public Guid UserGuid { get; set; }        public Guid SecurityID { get; set; }        public Guid SessionID { get; set; }        public string? Recipient2FA { get; set; }        public DateTime PasswordExpiration { get; set; }                public ValidationData(ValidationResult status, string userID, Guid userGuid, Guid securityID, Guid sessionID, string? recipient2FA, DateTime passwordExpiration)        {            Status = status;            UserID = userID;            UserGuid = userGuid;            SecurityID = securityID;            SessionID = sessionID;            Recipient2FA = recipient2FA;            PasswordExpiration = passwordExpiration;        }    }    public interface IClient    {        ValidationData Validate(string userid, string password, Guid session = default);        ValidationData Validate(string pin, Guid session = default);        ValidationData Validate(Guid session);        CoreTable Query(object? filter = null, object? columns = null, object? sort = null);        Entity[] Load(object? filter = null, object? sort = null);        void Save(object entity, string auditnote);        void Save(IEnumerable<object> entities, string auditnote);        void Delete(object entity, string auditnote);        void Delete(IList<object> entities, string auditnote);        Dictionary<string, CoreTable> QueryMultiple(Dictionary<string, IQueryDef> queries);        bool Check2FA(string code, Guid? session = null);        /// <summary>        /// Check if the server is running        /// </summary>        /// <returns><c>true</c> if the server is running</returns>        bool Ping();                /// <summary>        /// Get general information about this server        /// </summary>        /// <returns>DatabaseInfo</returns>        DatabaseInfo Info();        IEnumerable<string> SupportedTypes();        void Log(string format, params object[] parameters);        event LogEvent OnLog;    }    public interface IClient<TEntity> : IClient where TEntity : Entity, new()    {        CoreTable Query(Filter<TEntity>? filter = null, Columns<TEntity>? columns = null, SortOrder<TEntity>? sort = null);        void Query(Filter<TEntity>? filter, Columns<TEntity>? columns, SortOrder<TEntity>? sort, Action<CoreTable?, Exception?> callback);        TEntity[] Load(Filter<TEntity>? filter = null, SortOrder<TEntity>? sort = null);        void Load(Filter<TEntity>? filter, SortOrder<TEntity>? sort, Action<TEntity[]?, Exception?> callback);        void Save(TEntity entity, string auditnote);        void Save(IEnumerable<TEntity> entities, string auditnote);        void Save(TEntity entity, string auditnote, Action<TEntity, Exception?> callback);        void Save(IEnumerable<TEntity> entity, string auditnote, Action<IEnumerable<TEntity>, Exception?> callback);        void Delete(TEntity entity, string auditnote);        void Delete(IList<TEntity> entities, string auditnote);        void Delete(TEntity entity, string auditnote, Action<TEntity, Exception?> callback);        void Delete(IList<TEntity> entity, string auditnote, Action<IList<TEntity>, Exception?> callback);    }}
 |