Example #1
0
        public async void InstantiateToast(MessageModel model, Task <WaveChat.Areas.Identity.Data.WaveChatUser> user)
        {
            if (_notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).InstantiateToast is true)
            {
                //Serialize
                if (!(model is null))
                {
                    var first = await firebaseClient.Child("users/" + model.GUID).OrderByKey().LimitToFirst(1).OnceAsync <Areas.Identity.Data.FirebaseNameModel>();

                    var optionsBuilder = new DbContextOptionsBuilder <WaveChatContext>();
                    optionsBuilder.UseMySql("server=remotemysql.com;user=jyKYm15Znj;database=jyKYm15Znj;password=EbVGAPF1Wz;port=3306;persistsecurityinfo=True");
                    WaveChatContext context    = new WaveChatContext(optionsBuilder.Options);
                    ToastMessage    _initToast = new ToastMessage
                    {
                        Message   = model.Message,
                        Timestamp = model.Timestamp,
                        FirstName = first.First().Object.FirstName,
                        LastName  = first.First().Object.LastName,
                        UserID    = context.Users.Where(x => x.FirebaseGUID.Equals(model.GUID)).AsParallel().Select(m => m.Id).FirstOrDefault()
                    };

                    List <ToastMessage> ToastList = new List <ToastMessage>();

                    ToastList.Add(_initToast);

                    string output = JsonConvert.SerializeObject(ToastList);

                    await _notificationsMessageHandler.SendMessageAsync(user.Result.Id, output);
                }
            }
            else if (_notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).InstantiateToast is false)
            {
            }
        }
Example #2
0
        public async void LoadMessages(string ConfGUID, Task <WaveChat.Areas.Identity.Data.WaveChatUser> user)
        {
            _notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).TokenSource = new CancellationTokenSource();

            observable = firebaseClient
                         .Child("convs/" + ConfGUID).AsObservable <WaveChat.Models.MessageModel>()
                         .Subscribe(d => InstantiateToast(d.Object, user));
            _notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).TokenSource.Token.Register(() => observable.Dispose());

            var messageStack         = firebaseClient.Child("convs/" + ConfGUID).OrderByKey().OnceAsync <MessageModel>().Result;
            List <ToastMessage> list = new List <ToastMessage>();

            Stopwatch sw = Stopwatch.StartNew();

            Parallel.ForEach(messageStack, () => new List <ToastMessage>(), (item, pls, localObj) =>
            {
                var first = firebaseClient.Child("users/" + item.Object.GUID).OrderByKey().LimitToFirst(1).OnceAsync <Areas.Identity.Data.FirebaseNameModel>();
                var obj   = new ToastMessage
                {
                    Message   = item.Object.Message,
                    Timestamp = item.Object.Timestamp,
                    FirstName = first.Result.First().Object.FirstName,
                    LastName  = first.Result.First().Object.LastName,
                    //UserID = from m in _context.Users where m.FirebaseGUID.Equals(item.Object.GUID) select m.Id.FirstOrDefault()
                };
                //obj.UserID = _context.Users.Where(x => x.FirebaseGUID.Equals(item.Object.GUID)).AsParallel().Select(m => m.Id).FirstOrDefault();

                var optionsBuilder = new DbContextOptionsBuilder <WaveChatContext>();
                optionsBuilder.UseMySql("server=remotemysql.com;user=jyKYm15Znj;database=jyKYm15Znj;password=EbVGAPF1Wz;port=3306;persistsecurityinfo=True");
                WaveChatContext context = new WaveChatContext(optionsBuilder.Options);
                obj.UserID = context.Users.Where(x => x.FirebaseGUID.Equals(item.Object.GUID)).AsParallel().Select(m => m.Id).FirstOrDefault();

                localObj.Add(obj);
                return(localObj);
            },
                             localObj =>
            {
                foreach (var result in localObj)
                {
                    list.Add(result);
                }
            });

            var serialized = JsonConvert.SerializeObject(list.AsParallel().OrderBy(d => d.Timestamp));

            await _notificationsMessageHandler.SendMessageAsync(user.Result.Id, serialized);

            _notificationsMessageHandler._communicationManager.GetSocketById(user.Result.Id).InstantiateToast = true;
        }
Example #3
0
 public HomeController(WaveChatContext context, UserManager <WaveChat.Areas.Identity.Data.WaveChatUser> userManager, NotificationMessageHandler notificationsMessageHandler)
 {
     _context     = context;
     _userManager = userManager;
     _notificationsMessageHandler = notificationsMessageHandler;
 }