IClient.cs 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using InABox.Core;
  5. namespace InABox.Clients
  6. {
  7. public delegate void LogEvent(object sender, string message);
  8. public class ValidationData
  9. {
  10. public ValidationResult Status { get; set; }
  11. public string UserID { get; set; }
  12. public Guid UserGuid { get; set; }
  13. public Guid SecurityID { get; set; }
  14. public Guid SessionID { get; set; }
  15. public string? Recipient2FA { get; set; }
  16. public DateTime PasswordExpiration { get; set; }
  17. public ValidationData(ValidationResult status, string userID, Guid userGuid, Guid securityID, Guid sessionID, string? recipient2FA, DateTime passwordExpiration)
  18. {
  19. Status = status;
  20. UserID = userID;
  21. UserGuid = userGuid;
  22. SecurityID = securityID;
  23. SessionID = sessionID;
  24. Recipient2FA = recipient2FA;
  25. PasswordExpiration = passwordExpiration;
  26. }
  27. }
  28. public interface IClient
  29. {
  30. ValidationData Validate(string userid, string password, Guid session = default);
  31. ValidationData Validate(string pin, Guid session = default);
  32. ValidationData Validate(Guid session);
  33. CoreTable Query(object? filter = null, object? columns = null, object? sort = null);
  34. Entity[] Load(object? filter = null, object? sort = null);
  35. void Save(object entity, string auditnote);
  36. void Save(IEnumerable<object> entities, string auditnote);
  37. void Delete(object entity, string auditnote);
  38. void Delete(IList<object> entities, string auditnote);
  39. Dictionary<string, CoreTable> QueryMultiple(Dictionary<string, IQueryDef> queries);
  40. bool Check2FA(string code, Guid? session = null);
  41. /// <summary>
  42. /// Check if the server is running
  43. /// </summary>
  44. /// <returns><c>true</c> if the server is running</returns>
  45. bool Ping();
  46. /// <summary>
  47. /// Get general information about this server
  48. /// </summary>
  49. /// <returns>DatabaseInfo</returns>
  50. DatabaseInfo Info();
  51. IEnumerable<string> SupportedTypes();
  52. void Log(string format, params object[] parameters);
  53. event LogEvent OnLog;
  54. }
  55. public interface IClient<TEntity> : IClient where TEntity : Entity, new()
  56. {
  57. CoreTable Query(Filter<TEntity>? filter = null, Columns<TEntity>? columns = null, SortOrder<TEntity>? sort = null);
  58. void Query(Filter<TEntity>? filter, Columns<TEntity>? columns, SortOrder<TEntity>? sort, Action<CoreTable?, Exception?> callback);
  59. TEntity[] Load(Filter<TEntity>? filter = null, SortOrder<TEntity>? sort = null);
  60. void Load(Filter<TEntity>? filter, SortOrder<TEntity>? sort, Action<TEntity[]?, Exception?> callback);
  61. void Save(TEntity entity, string auditnote);
  62. void Save(IEnumerable<TEntity> entities, string auditnote);
  63. void Save(TEntity entity, string auditnote, Action<TEntity, Exception?> callback);
  64. void Save(IEnumerable<TEntity> entity, string auditnote, Action<IEnumerable<TEntity>, Exception?> callback);
  65. void Delete(TEntity entity, string auditnote);
  66. void Delete(IList<TEntity> entities, string auditnote);
  67. void Delete(TEntity entity, string auditnote, Action<TEntity, Exception?> callback);
  68. void Delete(IList<TEntity> entity, string auditnote, Action<IList<TEntity>, Exception?> callback);
  69. }
  70. }