public async Task <ActionResult> Notifications()
        {
            string          customerId      = GetUserId();
            UserCounterData userCounterData = userRedisRepository.GetUserCounterData(customerId);

            userRedisRepository.MarkAllAsRead(customerId);
            await CheckUserCounterData();

            return(View(userCounterData));
        }
示例#2
0
        public void MarkAllAsRead(string customerId)
        {
            UserCounterData userCounterData = GetUserCounterData(customerId);

            foreach (var notification in
                     userCounterData.Notifications.Where(n => !n.DateVisualized.HasValue))
            {
                notification.DateVisualized = DateTime.Now;
            }
            UpdateUserCounterData(customerId, userCounterData);
        }
        public async Task <ActionResult> Notificacoes()
        {
            string          clienteId       = GetUserId();
            UserCounterData userCounterData = await userRedisRepository.GetUserCounterDataAsync(clienteId);

            await userRedisRepository.MarkAllAsReadAsync(clienteId);

            await CheckUserCounterData();

            return(View(userCounterData));
        }
示例#4
0
        public async Task MarkAllAsReadAsync(string clienteId)
        {
            UserCounterData userCounterData = await GetUserCounterDataAsync(clienteId);

            foreach (var notification in
                     userCounterData.Notifications.Where(n => !n.DateVisualized.HasValue))
            {
                notification.DateVisualized = DateTime.Now;
            }
            await UpdateUserCounterDataAsync(clienteId, userCounterData);
        }
示例#5
0
        private void UpdateUserCounterData(string customerId, UserCounterData userCounterData)
        {
            if (userCounterData == null)
            {
                throw new ArgumentNullException();
            }

            if (userCounterData.BasketCount < 0)
            {
                throw new ArgumentOutOfRangeException();
            }

            if (_database.ContainsKey(customerId))
            {
                _database[customerId] = userCounterData;
                return;
            }
            _database.Add(customerId, userCounterData);
        }
示例#6
0
        public UserCounterData GetUserCounterData(string customerId)
        {
            if (string.IsNullOrWhiteSpace(customerId))
            {
                throw new ArgumentException();
            }

            _database.TryGetValue(customerId, out UserCounterData data);
            if (data == null)
            {
                List <UserNotification> userNotifications = new List <UserNotification>();
                data = new UserCounterData(userNotifications, 0);
                UpdateUserCounterData(customerId, data);
                return(data);
            }

            data.Notifications = data.Notifications.OrderByDescending(n => n.DateCreated).ToList();
            return(data);
        }
示例#7
0
        public async Task <UserCounterData> GetUserCounterDataAsync(string clienteId)
        {
            if (string.IsNullOrWhiteSpace(clienteId))
            {
                throw new ArgumentException();
            }

            UserCounterData userCounterData;
            var             data = await _database.StringGetAsync(clienteId);

            if (data.IsNullOrEmpty)
            {
                List <UserNotification> userNotifications = new List <UserNotification>();
                userCounterData = new UserCounterData(userNotifications, 0);
                await UpdateUserCounterDataAsync(clienteId, userCounterData);

                return(userCounterData);
            }

            userCounterData = JsonConvert.DeserializeObject <UserCounterData>(data);
            userCounterData.Notifications = userCounterData.Notifications.OrderByDescending(n => n.DateCreated).ToList();
            return(userCounterData);
        }
示例#8
0
 private async Task UpdateUserCounterDataAsync(string clienteId, UserCounterData userCounterData)
 {
     var json = JsonConvert.SerializeObject(userCounterData);
     await _database.StringSetAsync(clienteId, json);
 }