;; Dua Journal - Personal dua recording
;; Halal - remembrance of Allah
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var global-count uint u0)
(define-map duas uint { author: principal, text: (string-utf8 200), category: (string-ascii 20), answered: bool, block: uint })
(define-map user-dua-count principal uint)
(define-public (record-dua (text (string-utf8 200)) (category (string-ascii 20)))
(let ((id (+ (var-get global-count) u1)) (prev (default-to u0 (map-get? user-dua-count tx-sender))))
(map-set duas id { author: tx-sender, text: text, category: category, answered: false, block: stacks-block-height })
(map-set user-dua-count tx-sender (+ prev u1))
(var-set global-count id) (ok id)))
(define-public (mark-answered (id uint))
(let ((d (unwrap! (map-get? duas id) ERR-NONE)))
(asserts! (is-eq tx-sender (get author d)) ERR-AUTH)
(map-set duas id (merge d { answered: true })) (ok true)))
(define-read-only (get-dua (id uint)) (map-get? duas id))
(define-read-only (get-user-count (who principal)) (ok (default-to u0 (map-get? user-dua-count who))))
(define-read-only (get-total) (ok (var-get global-count)))