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 }); }
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); } }