import type { CollectionConfig } from 'payload'
import { anyone, isAdmin } from '../access/roles'
import { loc } from '../fields/localized'

// Markets carry money + coverage + contact data => ADMIN-owned (read by anyone).
export const Markets: CollectionConfig = {
  slug: 'markets',
  admin: { useAsTitle: 'name', group: 'Markets & Pricing', defaultColumns: ['code', 'name', 'hub'] },
  access: { read: anyone, create: isAdmin, update: isAdmin, delete: isAdmin },
  versions: { drafts: true },
  fields: [
    {
      name: 'code', type: 'select', required: true, unique: true,
      options: [{ label: 'Serbia (RS)', value: 'RS' }, { label: 'Bosnia & Herzegovina (BA)', value: 'BA' }],
    },
    { name: 'name', type: 'text', required: true, ...loc },
    { name: 'fullName', type: 'text', ...loc },
    { name: 'flag', type: 'text', admin: { description: 'Emoji flag, e.g. 🇷🇸' } },
    { name: 'currency', type: 'text', required: true, admin: { description: 'e.g. RSD, KM' } },
    { name: 'hub', type: 'text', required: true, ...loc },
    { name: 'hubAddress', type: 'text', ...loc },
    { name: 'partners', type: 'text', hasMany: true, admin: { description: 'e.g. Glovo, Wolt, Korpa.ba' } },
    { name: 'upcomingHubs', type: 'text', hasMany: true },
    { name: 'phone', type: 'text' },
    { name: 'email', type: 'email' },
    {
      name: 'fleetStats', type: 'group', fields: [
        { name: 'bikes', type: 'number' },
        { name: 'drivers', type: 'number' },
        { name: 'deliveries', type: 'number' },
        { name: 'uptime', type: 'text', admin: { description: 'e.g. 99.4%' } },
      ],
    },
    { name: 'heroImage', type: 'upload', relationTo: 'media', admin: { description: 'Optional market hero (Rental).' } },
    { name: 'heroKicker', type: 'text', ...loc },
  ],
}
