Source Code

;; Prayer Time - Salah time tracking and reminders
;; Halal - salah awareness
(define-constant CONTRACT-OWNER tx-sender)
(define-constant ERR-AUTH (err u401))
(define-constant ERR-NONE (err u404))
(define-data-var city-count uint u0)
(define-map cities uint { name: (string-utf8 100), timezone: (string-ascii 10), admin: principal })
(define-map prayer-logs { city-id: uint, date: uint } { fajr: uint, dhuhr: uint, asr: uint, maghrib: uint, isha: uint })
(define-public (add-city (name (string-utf8 100)) (timezone (string-ascii 10)))
  (let ((id (+ (var-get city-count) u1)))
    (asserts! (is-eq tx-sender CONTRACT-OWNER) ERR-AUTH)
    (map-set cities id { name: name, timezone: timezone, admin: tx-sender })
    (var-set city-count id) (ok id)))
(define-public (set-times (city-id uint) (date uint) (fajr uint) (dhuhr uint) (asr uint) (maghrib uint) (isha uint))
  (let ((c (unwrap! (map-get? cities city-id) ERR-NONE)))
    (asserts! (is-eq tx-sender (get admin c)) ERR-AUTH)
    (map-set prayer-logs { city-id: city-id, date: date } { fajr: fajr, dhuhr: dhuhr, asr: asr, maghrib: maghrib, isha: isha }) (ok true)))
(define-read-only (get-city (id uint)) (map-get? cities id))
(define-read-only (get-times (city-id uint) (date uint)) (map-get? prayer-logs { city-id: city-id, date: date }))
(define-read-only (get-city-count) (ok (var-get city-count)))

Functions (5)

FunctionAccessArgs
add-citypublicname: (string-utf8 100
set-timespubliccity-id: uint, date: uint, fajr: uint, dhuhr: uint, asr: uint, maghrib: uint, isha: uint
get-cityread-onlyid: uint
get-timesread-onlycity-id: uint, date: uint
get-city-countread-only