;; Hijab Fund - Hijab distribution for sisters in need
;; Halal - modesty support
(define-constant CONTRACT-OWNER tx-sender)
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var request-count uint u0)
(define-data-var total-donated uint u0)
(define-map requests uint { requester: principal, quantity: uint, fulfilled: bool, block: uint })
(define-map hijab-donors principal uint)
(define-public (donate (amount uint))
(let ((prev (default-to u0 (map-get? hijab-donors tx-sender))))
(try! (stx-transfer? amount tx-sender CONTRACT-OWNER))
(map-set hijab-donors tx-sender (+ prev amount))
(var-set total-donated (+ (var-get total-donated) amount)) (ok amount)))
(define-public (request-hijab (quantity uint))
(let ((id (+ (var-get request-count) u1)))
(map-set requests id { requester: tx-sender, quantity: quantity, fulfilled: false, block: stacks-block-height })
(var-set request-count id) (ok id)))
(define-public (fulfill (id uint))
(let ((r (unwrap! (map-get? requests id) ERR-NONE)))
(asserts! (is-eq tx-sender CONTRACT-OWNER) ERR-AUTH)
(map-set requests id (merge r { fulfilled: true })) (ok true)))
(define-read-only (get-request (id uint)) (map-get? requests id))
(define-read-only (get-donor (who principal)) (ok (default-to u0 (map-get? hijab-donors who))))
(define-read-only (get-stats) (ok { requests: (var-get request-count), donated: (var-get total-donated) }))