PushHelper.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections;
  6. using System.IO;
  7. using System.Runtime.Serialization.Formatters.Binary;
  8. using System.Data;
  9. using Microsoft.Extensions.Logging;
  10. using Microsoft.Extensions.Options;
  11. using Expo.Server.Client;
  12. using Expo.Server.Models;
  13. using FMSAdmin.Data;
  14. namespace FMSAdmin.Helpers {
  15. public class PushHelper {
  16. private readonly ILogger<PushHelper> _logger;
  17. private readonly FMSContext _context;
  18. public PushHelper(
  19. ILogger<PushHelper> logger,
  20. FMSContext context
  21. ) {
  22. _logger = logger;
  23. _context = context;
  24. }
  25. public void SendToSiteUsers(int siteId, string title, string message, object data) {
  26. var tokens = _context.CmUser.Where(
  27. x => x.SiteId == siteId
  28. && x.IsUse == true
  29. && !string.IsNullOrEmpty(x.Devicetoken)
  30. ).Select(x => x.Devicetoken).ToList();
  31. _logger.LogInformation("<<<<<<<< SendToSiteUsers");
  32. _logger.LogInformation("Title : " + title);
  33. _logger.LogInformation("Message : " + message);
  34. _logger.LogInformation("Tokens => ");
  35. foreach (var token in tokens) {
  36. _logger.LogInformation(token);
  37. }
  38. _logger.LogInformation(">>>>>>>>>>>>>>>>>>>>>>>>");
  39. var expoClient = new PushApiClient();
  40. var request = new PushTicketRequest() {
  41. PushTo = tokens,
  42. PushTitle = title,
  43. PushBody = message,
  44. PushData = data
  45. };
  46. var result = expoClient.PushSendAsync(request).GetAwaiter().GetResult();
  47. if (result?.PushTicketErrors?.Count() > 0) {
  48. foreach (var error in result.PushTicketErrors) {
  49. _logger.LogError($"SendToSiteUsers Error : {error.ErrorCode} - {error.ErrorMessage}");
  50. }
  51. }
  52. }
  53. public void SendToAllUsers(string title, string message, object data) {
  54. var tokens = _context.CmUser.Where(
  55. x => x.IsUse == true
  56. && !string.IsNullOrEmpty(x.Devicetoken)
  57. ).Select(x => x.Devicetoken).ToList();
  58. var expoClient = new PushApiClient();
  59. var request = new PushTicketRequest() {
  60. PushTo = tokens,
  61. PushTitle = title,
  62. PushBody = message,
  63. PushData = data
  64. };
  65. var result = expoClient.PushSendAsync(request).GetAwaiter().GetResult();
  66. if (result?.PushTicketErrors?.Count() > 0) {
  67. foreach (var error in result.PushTicketErrors) {
  68. _logger.LogError($"SendToAllUsers Error : {error.ErrorCode} - {error.ErrorMessage}");
  69. }
  70. }
  71. }
  72. }
  73. }