const SESSION_TYPE_TO_SPEC = {
  in_person: 'offline',
  online: 'online',
  video: 'content',
  audio: 'content',
  text: 'content',
  slide: 'content',
  pdf: 'content',
}

const makeSession = (overrides) => {
  const sessionType = overrides.sessionType ?? ''
  const sessionConfig = overrides.sessionConfig ?? {}
  const startsAt = overrides.startsAt ?? sessionConfig.startTime ?? null
  const endsAt = overrides.endsAt ?? sessionConfig.endTime ?? null
  const link = overrides.link ?? sessionConfig.meetingLink ?? null
  return {
    id: overrides.id,
    courseId: overrides.courseId ?? null,
    title: overrides.title ?? '',
    description: overrides.description ?? '',
    type: overrides.type ?? SESSION_TYPE_TO_SPEC[sessionType] ?? null,
    startsAt,
    endsAt,
    link,
    media: overrides.media ?? [],
    image: overrides.image ?? '',
    course: overrides.course ?? null,
    sessionType,
    sessionTypeFa: overrides.sessionTypeFa ?? '',
    contentType: overrides.contentType ?? '',
    contentMediaId: overrides.contentMediaId ?? null,
    durationMinutes: overrides.durationMinutes ?? 0,
    sessionConfig,
    usedInTerms: overrides.usedInTerms ?? [],
    createdAt: overrides.createdAt ?? '',
  }
}

export const adminSessions = [
  makeSession({
    id: 101,
    courseId: 11,
    title: 'مقدمه‌ای بر اخلاق اسلامی',
    description: 'جلسه نخست؛ تعاریف و چارچوب دوره.',
    image: 'https://picsum.photos/seed/session1/200/200',
    course: { id: 11, title: 'اصول اخلاق اسلامی - پاییز' },
    sessionType: 'in_person',
    sessionTypeFa: 'حضوری',
    durationMinutes: 90,
    order: 1,
    sessionConfig: {
      startTime: '2025-09-25T16:00:00.000Z',
      location: 'سالن آمفی‌تئاتر ۲ - مدرسه قم',
    },
    usedInTerms: [{ termId: 1 }],
    createdAt: '2025-09-10T08:00:00.000Z',
  }),
  makeSession({
    id: 102,
    courseId: 12,
    title: 'تفسیر سوره حمد',
    description: 'تحلیل آیات سوره حمد.',
    course: { id: 12, title: 'مفاهیم قرآنی - پاییز' },
    sessionType: 'online',
    sessionTypeFa: 'آنلاین',
    durationMinutes: 75,
    order: 1,
    sessionConfig: {
      meetingLink: 'https://meet.example.com/quran-1',
      platform: 'google_meet',
      startTime: '2025-10-04T19:00:00.000Z',
    },
    usedInTerms: [{ termId: 1 }],
    createdAt: '2025-09-25T08:00:00.000Z',
  }),
  makeSession({
    id: 103,
    courseId: 13,
    title: 'احکام نماز جماعت',
    description: 'مرور احکام و شرایط نماز جماعت.',
    course: { id: 13, title: 'فقه عبادات - زمستان' },
    sessionType: 'video',
    sessionTypeFa: 'ویدئو',
    durationMinutes: 50,
    order: 2,
    sessionConfig: {
      minWatchedPercent: 80,
      mustCompleteBeforeNext: true,
    },
    createdAt: '2026-01-12T08:00:00.000Z',
  }),
]

export { makeSession, SESSION_TYPE_TO_SPEC }

export const sessionAttendance = new Map([
  [
    101,
    [
      {
        id: 1,
        userId: 100,
        sessionId: 101,
        status: 'present',
        user: {
          id: 100,
          firstName: 'فاطمه',
          lastName: 'رضایی',
          fullName: 'فاطمه رضایی',
          avatarUrl: '',
          address: { province: { name: 'تهران' }, city: { name: 'تهران' } },
        },
      },
      {
        id: 2,
        userId: 102,
        sessionId: 101,
        status: 'absent',
        user: {
          id: 102,
          firstName: 'مریم',
          lastName: 'احمدی',
          fullName: 'مریم احمدی',
          avatarUrl: '',
          address: { province: { name: 'اصفهان' }, city: { name: 'اصفهان' } },
        },
      },
      {
        id: 3,
        userId: 103,
        sessionId: 101,
        status: 'late',
        user: {
          id: 103,
          firstName: 'علی',
          lastName: 'علوی',
          fullName: 'علی علوی',
          avatarUrl: '',
          address: { province: { name: 'تهران' }, city: { name: 'تهران' } },
        },
      },
    ],
  ],
])
