예제 #1
0
        public override async Task SendData(
            IAsyncStreamReader <MyMessage> requestStream,
            IServerStreamWriter <MyMessage> responseStream,
            ServerCallContext context)
        {
            var httpContext = context.GetHttpContext();

            _logger.LogInformation($"Connection id: {httpContext.Connection.Id}");

            if (!await requestStream.MoveNext())
            {
                return;
            }

            var user = requestStream.Current.Name;

            _logger.LogInformation($"{user} connected");
            var subscriber = new SubscribersModel
            {
                Subscriber = responseStream,
                Name       = user
            };

            _serverGrpcSubscribers.AddSubscriber(subscriber);

            do
            {
                await _serverGrpcSubscribers.BroadcastMessageAsync(requestStream.Current);
            } while (await requestStream.MoveNext());

            _serverGrpcSubscribers.RemoveSubscriber(subscriber);
            _logger.LogInformation($"{user} disconnected");
        }
예제 #2
0
        // [HttpPost]
        public ActionResult SaveSubscribers(bool status, Guid?UserId)
        {
            SubscribersModel model = new SubscribersModel();

            if (UserId == null)
            {
                model.ProfileUserId = User.Identity.GetUserId();
            }
            else
            {
                model.ProfileUserId = UserId.ToString();
            }
            model.SubscriptionStatus = status;



            model.SubscriberUserId = User.Identity.GetUserId();
            try
            {
                var value = data.SaveSubscribers(SessionToken, model);

                return(Redirect(ControllerContext.HttpContext.Request.UrlReferrer.ToString()));
            }
            catch (Exception ex)
            {
                return(View("~/Views/Errorpage/Errorpage.cshtml"));
            }
        }
예제 #3
0
        public void AddSubscriber(SubscribersModel subscriber)
        {
            bool added = Subscribers.TryAdd(subscriber.Name, subscriber);

            _logger.LogInformation($"New subscriber added: {subscriber.Name}");
            if (!added)
            {
                _logger.LogInformation($"could not add subscriber: {subscriber.Name}");
            }
        }
예제 #4
0
 public RequestResult <SubscribersModel> SaveSubscribers(string sessionToken, SubscribersModel model)
 {
     try
     {
         return(_repository.SaveSubscribers(sessionToken, model));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #5
0
 public void RemoveSubscriber(SubscribersModel subscriber)
 {
     try
     {
         Subscribers.TryRemove(subscriber.Name, out SubscribersModel item);
         _logger.LogInformation($"Force Remove: {item.Name} - no longer works");
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, $"Could not remove {subscriber.Name}");
     }
 }
예제 #6
0
        public RequestResult <SubscribersModel> SaveSubscribers(string sessionToken, SubscribersModel model)
        {
            string parameters = $"/savecommonfunctionality/savesubscribers?sessionToken={sessionToken}";

            try
            {
                var serilizedData = JsonConvert.SerializeObject(model);
                return(PostAndGetData <RequestResult <SubscribersModel> >(sessionToken, parameters, serilizedData));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #7
0
        public ActionResult Subscribe([Bind(Include = "SubscriberEmail")] SubscribersModel subscribersModel)
        {
            var ReturnUrl = Request.Form["ReturnUrl"];

            if (string.IsNullOrEmpty(ReturnUrl))
            {
                ReturnUrl = "Index";
            }

            TempData["SubsAlertDiv"] = "SubsAlertDiv";
            if (ModelState.IsValid)
            {
                subscribersModel.Status = 1;

                if (db.Subcribers.Any(s => s.SubscriberEmail == subscribersModel.SubscriberEmail && s.Status != 0))
                {
                    TempData["ErrorMessage"] = "Already subscribed.";
                    return(Redirect(ReturnUrl));
                }
                else if (db.Subcribers.Any(s => s.SubscriberEmail == subscribersModel.SubscriberEmail && s.Status == 0))
                {
                    //Update status
                    if (AppFunctions.UpdateSubcriberStatus(subscribersModel.SubscriberEmail, 1))
                    {
                        TempData["SuccessMessage"] = "Subscription successfull.";
                        return(Redirect(ReturnUrl));
                    }
                    TempData["ErrorMessage"] = "Failed to re-subscribe.";
                    return(Redirect(ReturnUrl));
                }

                db.Subcribers.Add(subscribersModel);
                db.SaveChanges();
                TempData["SuccessMessage"] = "Subscription successfull.";

                if (!string.IsNullOrEmpty(ReturnUrl))
                {
                    return(Redirect(ReturnUrl));
                }
                return(RedirectToAction("Index", "Home"));
            }

            TempData["ErrorMessage"] = "Opps!an  error occured.";
            if (!string.IsNullOrEmpty(ReturnUrl))
            {
                return(Redirect(ReturnUrl));
            }
            return(RedirectToAction("Index", "Home"));
        }
예제 #8
0
        /// <summary>
        /// Получение списка потребителей
        /// </summary>
        /// <returns></returns>
        public static IEnumerable <Subscriber> GetSubscribers()
        {
            SubscribersModel model = null;

            model = GetDataFromArmtes <SubscribersModel>(@"SubscribersRegistryEdit/GetSubscribers?pagenum=0&pagesize=100000", needAuthorization: true);

            if (model != null)
            {
                return(model.Subscribers);
            }
            else
            {
                return(null);
            }
        }
예제 #9
0
        private async Task <SubscribersModel> SendMessageToSubscriber(SubscribersModel subscriber, MyMessage message)
        {
            try
            {
                _logger.LogInformation($"Broadcasting: {message.Name} - {message.Message}");
                await subscriber.Subscriber.WriteAsync(message);

                return(null);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Could not send");
                return(subscriber);
            }
        }
예제 #10
0
 public override bool Filter(SubscribersModel <ResponseMessage> subscriber, ResponseMessage message) => true;