gelistirici:wsapi:devdaysornek_3

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)