示例#1
0
        public async Task <ChatSessionDto> CreateSessionAsync(string userId)
        {
            var user = _context.ChatUsers.FirstOrDefault(u => u.Id == userId);

            if (user == null)
            {
                user = new ChatUser {
                    Id = userId
                };
                _context.Add(user);
            }
            else
            {
                _context.Entry(user).State = EntityState.Modified;
            }

            var chatEvent = new ChatEvent {
                EventType = EventType.Connected
            };

            _context.ChatEvents.Add(chatEvent);

            _context.ChatUserEvents.Add(new ChatUserEvent {
                User = user, Event = chatEvent
            });

            await _context.SaveChangesAsync();

            return(new ChatSessionDto
            {
                StartTime = chatEvent.CreatedAt,
                IdleSeconds = (int)TimeSpan.Zero.TotalSeconds,
                EndTime = DateTimeOffset.MinValue
            });
        }
示例#2
0
        public Session KeepAliveSession(Session session)
        {
            using (var dbContext = new SessionContext())
            {
                var sessionToKeepAlive = dbContext.Sessions.FirstOrDefault(x => x.SessionId == session.SessionId.ToString());

                sessionToKeepAlive.SessionId          = Guid.NewGuid().ToString();
                sessionToKeepAlive.MaximumSessionTime = sessionToKeepAlive.MaximumSessionTime.AddMinutes(30);

                dbContext.Add(sessionToKeepAlive);
                dbContext.SaveChanges();

                return(sessionToKeepAlive);
            }
        }