;; khatm-tracker -- Quran khatm (completion) tracking for groups
(define-constant CONTRACT-OWNER tx-sender)
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var group-count uint u0)
(define-map groups uint { organizer: principal, name: (string-utf8 100), juz-assigned: uint, completed-juz: uint, active: bool })
(define-map assignments { group-id: uint, reader: principal } uint)
(define-public (create-group (name (string-utf8 100)))
(let ((id (+ (var-get group-count) u1)))
(var-set group-count id)
(map-set groups id { organizer: tx-sender, name: name, juz-assigned: u0, completed-juz: u0, active: true })
(ok id)))
(define-public (assign-juz (group-id uint) (juz uint))
(begin (map-set assignments { group-id: group-id, reader: tx-sender } juz)
(let ((g (unwrap! (map-get? groups group-id) ERR-NONE)))
(map-set groups group-id (merge g { juz-assigned: (+ (get juz-assigned g) u1) }))
(ok juz))))
(define-public (mark-complete (group-id uint))
(let ((g (unwrap! (map-get? groups group-id) ERR-NONE)))
(map-set groups group-id (merge g { completed-juz: (+ (get completed-juz g) u1) }))
(ok true)))
(define-read-only (get-group (id uint)) (map-get? groups id))
(define-read-only (get-assignment (group-id uint) (reader principal)) (map-get? assignments { group-id: group-id, reader: reader }))