Örnek 8
Senaryo :
Müşterilere kiosk ekranından anketleri gösterelim ve seçtirelim, seçilen anketin soruları için cevapları alalım ve anket fişi oluşturalım.
Örnekler diadevdays sunucusu üzerinde çalışmaktadır.
Örnek Kod (python):
# coding=utf-8 import simplejson import base64 import urllib2 from datetime import datetime from pprint import pprint wsAdresMain = 'https://diadevdays.ws.dia.com.tr/api/v3/' firma_kodu = 4 donem_kodu = 1 apikey = "773f9085-9dc8-4f50-b34d-f7b56da33b5f" def callWs(wsAdres, postBody): try: postBody = simplejson.dumps(postBody, cls=simplejson.JSONEncoder) req = urllib2.Request(wsAdres, data=postBody, headers={"Content-Type": "application/json"}) content = urllib2.urlopen(req).read() except Exception, e: print("Exception: {}".format(repr(e))) wsResult = simplejson.loads(content) return wsResult loginBody = {"login" : {"username": "ws", "password": "ws", "disconnect_same_user": True, "lang": "tr", "params": {"apikey": apikey} } } loginResult = callWs(wsAdresMain + 'sis/json', loginBody) sessionID = loginResult['msg'] if not sessionID: print("Login yapilamadi") exit(0) anketiyapan = raw_input('Lütfen ad ve soyadınızı giriniz: ') postBody = {"ank_anketsablon_listele" : {"session_id": sessionID, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "filters": "", "sorts": "", "params": "", "limit": 10, "offset": 0 } } anketler = callWs(wsAdresMain + 'ank/json', postBody) anketler = anketler['result'] if anketler and len(anketler) > 0: secilenAnket = None for anket in anketler: print '%s - %s' % (anket['kodu'], anket['aciklama']) anketKodu = raw_input('Lütfen cevaplamak istediğiniz anket kodunu giriniz: ') for anket in anketler: if anket['kodu'] == anketKodu: secilenAnket = anket if secilenAnket: postBody = {"ank_anketsablon_getir" : {"session_id": sessionID, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "key": secilenAnket['_key'], "params": "" } } anket = callWs(wsAdresMain + 'ank/json', postBody) anket = anket['result'] cevaplar = [] if anket and anket.get('m_kalemler'): for soru in anket['m_kalemler']: cevap = {'_key_ank_anketsablonu_kalemi': soru['_key']} print '\n %s \n' % soru['soru'] for cevap in soru.get('m_cevaplar') or []: print '%s - %s' % (cevap['deger'], cevap['aciklama']) print '\n' cvp = raw_input('Cevabınız: ') for cevap in soru['m_cevaplar']: if cevap['deger'] == int(cvp): secilenCvp = cevap cevap['_key_ank_anketsablonu_kalemi_cevaplar'] = secilenCvp['_key'] cevaplar.append(cevap) postBody = { "ank_anket_fisi_ekle": { "session_id": sessionID, "firma_kodu": firma_kodu, "donem_kodu": donem_kodu, "kart": { "_key_scf_carikart": {"carikartkodu": "V0001"}, "_key_ank_anketsablonu": {"kodu": anketKodu}, "fisno": "001", "tarih": "2023-04-11", "saat": "13:00:00", "aciklama": "Anket fişi örnek açıklama", "bitistarihi": "2023-04-14", "bitissaati": "14:00:00", "anketiyapan": anketiyapan, "notlar": "Anket fişi örnek not", "m_kalemler": cevaplar } } } wsResult = callWs(wsAdresMain + 'ank/json', postBody) print u"%s" % wsResult['msg'] else: print 'Gecersiz anket kodu' exit(0)