(ns claire-agent.intents.purchase-taric
  (:require
   [claire-common.utils :as utils]
   [claire-common.dialogflow :as df])
  (:require-macros
   [claire-common.flow :as flow]))

;; Intents Hooks
(defn purchase-taric-no-taric [intent query env pars]
  (utils/make-reply (utils/make-env {} :merge? false)
                    :say "Do you know the Taric code?"))

(defn purchase-taric-confirmation [intent query env pars]
  (let [env (utils/make-env env :context [] :merge? false)]
    (utils/make-reply env
                      :say "Confirm Taric code"
                      :state { :found false })))

(flow/make-flow
 (df/intent
   purchase-taric-no-taric
   ["I would like to place an order"]
   ["Sure. Do you know the Taric code of the product?"]
   {:followups
    [(df/intent
      purchase-ask-for-taric
      utils/yes
      ["Can you please say the Taric code or enter it manually?"]
      {:events ["purchase-ask-for-taric"]
       :followups
       [(df/intent
         purchase-taric-confirmation
         []
         ["Is Taric code correct?"]
         {:followups
          [(df/redirect utils/yes "purchase-lookup")
           (df/redirect utils/no
                        "purchase-ask-for-taric"
                        ["purchase-taric-no-taric-followup"])]})]})
     (df/redirect
      (concat utils/no ["I don't know the Taric code"])
      "purchase-product")]}))
