Source Code

;; aid-basket -- emergency food basket distribution
(define-constant CONTRACT-OWNER tx-sender)
(define-constant ERR-AUTH (err u401))
(define-data-var basket-count uint u0)
(define-data-var total-baskets uint u0)
(define-map baskets uint { donor: principal, region: (string-ascii 30), qty: uint, delivered: bool })
(define-public (donate-baskets (region (string-ascii 30)) (qty uint))
  (let ((id (+ (var-get basket-count) u1)))
    (var-set basket-count id)
    (var-set total-baskets (+ (var-get total-baskets) qty))
    (map-set baskets id { donor: tx-sender, region: region, qty: qty, delivered: false }) (ok id)))
(define-public (mark-delivered (id uint))
  (let ((b (unwrap! (map-get? baskets id) (err u404))))
    (map-set baskets id (merge b { delivered: true })) (ok true)))
(define-read-only (get-basket (id uint)) (map-get? baskets id))
(define-read-only (get-total) (var-get total-baskets))

Functions (4)

FunctionAccessArgs
donate-basketspublicregion: (string-ascii 30
mark-deliveredpublicid: uint
get-basketread-onlyid: uint
get-totalread-only