def hapus_pelanggan(id, phone_number): message = [] respon_pelanggan = requests.post(app.config['URL']+"/customer/all", headers={"Authorization": "Bearer "+ save_redis.get("%s::token" %(phone_number))}) respon_pelanggan = respon_pelanggan.json() no_pelanggan = re.findall("hapus.+", id.lower()) no_pelanggan = regex_num(no_pelanggan[0]) if int(no_pelanggan) <= len(respon_pelanggan['data']['records']): id_pelanggan = respon_pelanggan['data']['records'][int(no_pelanggan)-1]['id'] hapus = requests.delete(app.config['URL']+"/customer/" + str(id_pelanggan), headers={"Authorization": "Bearer "+ save_redis.get("%s::token" %(phone_number))}) if hapus.status_code == 200: message.append("Pelanggan berhasil dihapus!") else: message.append("Pelanggan gagal dihapus! ") else: message.append("Nomor Pelanggan yang Anda masukkan salah") message.append("Silahkan ulangi kembali") pesan = [] pesan.append("Ketik *Pelanggan* untuk kembali ke halaman Pelanggan") pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(("\n").join(pesan)) save_redis.set("%s::menu" %(phone_number), "pelanggan") return message
def hapus_jenis_unit(id, phone_number): message = [] id = id.lower() respon_jenis_unit = requests.post(app.config['URL']+"/unit_type/all", headers={"Authorization": "Bearer " + save_redis.get("%s::token" %(phone_number))}) respon_jenis_unit = respon_jenis_unit.json() no_jenis_unit = re.findall("hapus.+", id.lower()) no_jenis_unit = regex_num(no_jenis_unit[0]) if int(no_jenis_unit) <= len(respon_jenis_unit['data']['records']): id_jenis_produk = respon_jenis_unit['data']['records'][int(no_jenis_unit)-1]['id'] hapus = requests.delete(app.config['URL']+"/unit_type/" + str(id_jenis_produk), headers={"Authorization": "Bearer " + save_redis.get("%s::token" %(phone_number))}) if hapus.status_code == 200: message.append("Jenis Unit berhasil dihapus") else: message.append("Jenis Unit gagal dihapus") message.append(hapus.json()["message"]["body"]) else: message.append("Nomor Jenis Unit yang Anda masukkan salah") message.append("Silahkan ulangi kembali") pesan = [] pesan.append("Ketik *Jenis Unit* untuk kembali ke halaman Jenis Unit") pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(('\n').join(pesan)) save_redis.set("%s::menu" %(phone_number), "jenis_unit") return message
def jenis_unit(incoming_msg, phone_number, bot_responses): respon_jenis_unit = requests.post(app.config['URL']+"/unit_type/all", headers={"Authorization": "Bearer " + save_redis.get("%s::token" %(phone_number))}) respon_jenis_unit = respon_jenis_unit.json() list_jenis_unit = respon_jenis_unit["data"]['records'] message = [] if "jenis_unit" in save_redis.get("%s::menu" %(phone_number)): if "tambah" in incoming_msg.lower(): message = tambah_jenis_unit(incoming_msg, phone_number) elif "ubah" in incoming_msg.lower(): incoming_msg = incoming_msg.lower() no_jenis_unit = re.findall("ubah.+", incoming_msg.lower()) no_jenis_unit = regex_num(no_jenis_unit[0]) if int(no_jenis_unit) > len(respon_jenis_unit['data']['records']): message.append("Nomor Jenis Unit yang Anda masukkan tidak tersedia!") message.append("") message.append("Silahkan ketik *Jenis Unit* untuk kembali ke halaman sebelumnya") else: id_jenis_produk = respon_jenis_unit['data']['records'][int(no_jenis_unit)-1]['id'] message = ubah_jenis_unit(incoming_msg, phone_number, id_jenis_produk) elif "hapus" in incoming_msg.lower(): message = hapus_jenis_unit(incoming_msg, phone_number) elif save_redis.get("%s::menu" %(phone_number)) == "jenis_unit": if respon_jenis_unit["data"]["count"] != 0: message_bubble = [bot_responses] all_bubble = [] for index, item in enumerate(list_jenis_unit): tiap_data = [] tiap_data.append("%s. Nama: %s" % (index+1, item['name'])) tiap_data.append(" Produk: %s" % (item['product_name'])) tiap_data.append(" Deskripsi: %s \n" % (item['description'])) tiap_data = ('\n').join(tiap_data) if len(message_bubble[0]) + len(tiap_data) < 1600: message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] else: all_bubble.append(message_bubble) message_bubble = [''] message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] all_bubble.append(message_bubble) for bubble in all_bubble: message.append(bubble) else: message.append("Anda belum mengisi jenis unit!") pesan = [] pesan.append("Silahkan ketik menu berikut ini") pesan.append("- Ketik *tambah* untuk menambahkan Jenis Unit") pesan.append("- Ketik *ubah* <spasi> *no_jenis_unit* untuk mengubah Jenis Unit") pesan.append("- Ketik *hapus* <spasi> *no_jenis_unit* untuk menghapus Jenis Unit") pesan.append("") pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke Menu") message.append(("\n").join(pesan)) else: read = json.loads(save_redis.get("%s::menu" %(phone_number))) if 'tambah' in read["jenis_unit"]: message = tambah_jenis_unit(incoming_msg, phone_number) elif 'ubah' in read["jenis_unit"]: message = ubah_jenis_unit(incoming_msg, phone_number, id=None) return message
def unit(incoming_msg, phone_number, bot_responses): respon_unit = requests.post(app.config['URL'] + "/unit/all", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }) respon_unit = respon_unit.json() list_unit = respon_unit["data"]['records'] message = [] if "unit" in save_redis.get("%s::menu" % (phone_number)): # ketika user BELUM mengetikkan "tambah"/"ubah"/"hapus" if "tambah" in incoming_msg.lower(): message = tambah_unit(incoming_msg, phone_number) elif "ubah" in incoming_msg.lower(): no_unit = re.findall("ubah.+", incoming_msg.lower()) no_unit = regex_num(no_unit[0]) if int(no_unit) > len(list_unit): message.append( "Nomor Produk yang Anda masukkan tidak tersedia!") message.append("") message.append( "Silakan ketik *Unit* untuk kembali ke halaman sebelumnya") else: id_unit = respon_unit['data']['records'][int(no_unit) - 1]['id'] message = ubah_unit(incoming_msg, phone_number, id_unit) elif "hapus" in incoming_msg.lower(): save_redis.set("%s::unit" % (phone_number), "hapus") message = hapus_unit(incoming_msg, phone_number) # ketika user SUDAH mengetikkan "tambah"/"ubah"/"hapus" elif save_redis.get("%s::menu" % (phone_number)) == "unit": if respon_unit["data"]["count"] != 0: message_bubble = [bot_responses] all_bubble = [] for index, item in enumerate(list_unit): tiap_data = [] tiap_data.append("%s. Nama: %s" % (index + 1, item['name'].capitalize())) tiap_data.append(" Produk: %s" % (item['product_name'].capitalize())) tiap_data.append(" Jenis Unit: %s" % (item['unit_type_name'].capitalize())) tiap_data.append(" Nama Pelanggan: %s" % (item['customer_name'].capitalize())) tiap_data.append( " Periode Penyewaan: %s" % (item['mapping_period_name'].capitalize())) tiap_data.append(" Ukuran Unit: %s m2" % (item['size'])) tiap_data.append(" Alamat Unit: %s" % (item['address'].capitalize())) tiap_data.append("") tiap_data = ('\n').join(tiap_data) if len(message_bubble[0]) + len(tiap_data) >= 1600: all_bubble.append(message_bubble) message_bubble = [''] message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] all_bubble.append(message_bubble) for bubble in all_bubble: message.append(bubble) else: message.append("Anda belum mengisi unit!") pesan = [] pesan.append("Apa yang bisa Hedwig bantu?") pesan.append("- Ketik *tambah* untuk menambahkan unit") pesan.append( "- Ketik *ubah* <spasi> *no_unit* untuk mengubah unit") pesan.append( "- Ketik *hapus* <spasi> *no_unit* untuk menghapus unit") pesan.append("") pesan.append( "Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(("\n").join(pesan)) else: read = json.loads(save_redis.get("%s::menu" % (phone_number))) if 'tambah' in read['unit']: message = tambah_unit(incoming_msg, phone_number) elif 'ubah' in read['unit']: message = ubah_unit(incoming_msg, phone_number, id=None) return message
def pelanggan(incoming_msg, phone_number, bot_responses): respon_pelanggan = requests.post(app.config['URL']+"/customer/all", headers={"Authorization": "Bearer " + save_redis.get("%s::token" %(phone_number))}) respon_pelanggan = respon_pelanggan.json() list_pelanggan = respon_pelanggan["data"]['records'] message = [] if "pelanggan" in save_redis.get("%s::menu" %(phone_number)): if "tambah" in incoming_msg.lower(): message = tambah_pelanggan(incoming_msg, phone_number) elif "ubah" in incoming_msg.lower(): no_pelanggan = re.findall("ubah.+", incoming_msg.lower()) no_pelanggan = regex_num(no_pelanggan[0]) if int(no_pelanggan) > len(list_pelanggan): message.append("Nomor Pelanggan yang " + save_redis.get("%s::name" %(phone_number)) +" masukkan tidak tersedia!") message.append("") message.append("Ketik *Pelanggan* untuk kembali ke halaman sebelumnya") else: id_pelanggan = respon_pelanggan['data']['records'][int(no_pelanggan)-1]['id'] message = ubah_pelanggan(incoming_msg, phone_number,id_pelanggan) elif "hapus" in incoming_msg.lower(): save_redis.set("%s::menu" %(phone_number), json.dumps({"pelanggan":"hapus"})) message = hapus_pelanggan(incoming_msg, phone_number) elif save_redis.get("%s::menu" %(phone_number)) == "pelanggan": if respon_pelanggan["data"]["count"] != 0: message_bubble = [bot_responses] all_bubble = [] for index, item in enumerate(list_pelanggan): tiap_data = [] tiap_data.append("%s. Nama: %s" % (index+1, item['name'])) tiap_data.append(" Email: %s" %(item['email'])) tiap_data.append(" No Telepon: %s" % (item['phone'])) tiap_data.append(" KTP: %s" % (item['ktp'])) tiap_data.append(" Produk: %s\n" % (item['product_name'])) tiap_data = ('\n').join(tiap_data) if len(message_bubble[0]) + len(tiap_data) < 1600: message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] else: all_bubble.append(message_bubble) message_bubble = [''] message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] all_bubble.append(message_bubble) for bubble in all_bubble: message.append(bubble) else: message.append("Anda belum mengisi Pelanggan!") pesan = [] message.append("Apa yang bisa Hedwig bantu?") pesan.append("- Ketik *tambah* untuk menambahkan Pelanggan") pesan.append("- Ketik *ubah* <spasi> *no_pelanggan* untuk mengubah Pelanggan") pesan.append("- Ketik *hapus* <spasi> *no_pelanggan* untuk menghapus Pelanggan") pesan.append("") pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(("\n").join(pesan)) save_redis.delete("%s::nama" %(phone_number), "") save_redis.delete("%s::email" %(phone_number), "") save_redis.delete("%s::telepon" %(phone_number), "") save_redis.delete("%s::ktp" %(phone_number), "") save_redis.delete("%s::pelanggan" %(phone_number), "") else: read = json.loads(save_redis.get("%s::menu" %(phone_number))) if 'tambah' in read['pelanggan']: message = tambah_pelanggan(incoming_msg, phone_number) elif 'ubah' in read['pelanggan']: message = ubah_pelanggan(incoming_msg, phone_number,id=None) return message
def tagihan(incoming_msg, phone_number, bot_responses): respon_produk = requests.post( app.config['URL'] + "/product/all", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }) respon_produk = respon_produk.json() list_produk = respon_produk["data"]['records'] unit = requests.post(app.config['URL'] + "/unit/all", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }) respon_unit = unit.json() list_unit = respon_unit['data']['records'] message = [] if save_redis.get("%s::menu" % (phone_number)) == "tagihan": if respon_produk["data"]["count"] != 0: message_bubble = [ "Ini adalah daftar Produknya %s: " % (save_redis.get("%s::name" % (phone_number))) ] all_bubble = [] for index, item in enumerate(list_produk): tiap_data = [] tiap_data.append("%s. Nama: %s" % (index + 1, item['name'])) tiap_data = ('\n').join(tiap_data) if len(message_bubble[0]) + len(tiap_data) < 1600: message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] else: all_bubble.append(message_bubble) message_bubble = [''] message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] all_bubble.append(message_bubble) for bubble in all_bubble: message.append(bubble) message.append( "Sekarang, ketik no produk yang ingin dibuat tagihannya") else: message.append( "Anda belum mengisi produk! Isi dulu yuk produknya..") pesan = [] pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(("\n").join(pesan)) save_redis.set("%s::menu" % (phone_number), json.dumps({"tagihan": "tambah"})) elif json.loads(save_redis.get("%s::menu" % (phone_number)))['tagihan'] == 'tambah': no_produk = re.findall(".+", incoming_msg) no_produk = regex_num(no_produk[0]) if int(no_produk) > len(list_produk): message.append( "Nomor Produk yang Anda masukkan tidak ada! Isi lagi yuk pakai Nomor Produk yang lain.." ) message.append("") message.append( "Atau Anda bisa ketik *tagihan* untuk kembali ke halaman sebelumnya" ) else: save_redis.set("%s::id_produk" % (phone_number), list_produk[int(no_produk) - 1]['id']) message.append("Selanjutnya, pilih nomor Unit Anda") jml_unit = 0 pesan = [] for index, unit in enumerate(list_unit): if list_produk[int(no_produk) - 1]['id'] == unit['product_id']: pesan.append("%s. %s" % (index + 1, unit['name'])) jml_unit += 1 message.append("\n".join(pesan)) if jml_unit == 0: message.append("Belum ada Unit untuk Produk: %s" % (list_produk[int(no_produk) - 1]['name'])) pesan = [] pesan.append( "Anda belum mengisi unit, silakan isi unit terlebih dahulu!" ) message.append("\n".join(pesan)) save_redis.set("%s::menu" % (phone_number), json.dumps({"tagihan": "tambah_dua"})) elif json.loads(save_redis.get("%s::menu" % (phone_number)))['tagihan'] == 'tambah_dua': no_unit = re.findall(".+", incoming_msg) no_unit = regex_num(no_unit[0]) if int(no_unit) > len(list_unit): message.append( "Nomor Unit yang Anda masukkan tidak tersedia! Isi lagi yuk pakai Nomor Unit yang lain.." ) message.append("") message.append( "Ketik *Tagihan* untuk kembali ke halaman sebelumnya") message.append( "Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") message.append("Ketik *Beranda* untuk kembali ke halaman Beranda") else: save_redis.set("%s::id_unit" % (phone_number), list_unit[int(no_unit) - 1]['id']) message.append( "Sekarang Hedwig tahu kapan *Mulai Waktu Tagihan*?") message.append("Tulisnya pakai format *(yyyy-mm-dd)* ya") save_redis.set("%s::menu" % (phone_number), json.dumps({"tagihan": "tambah_tiga"})) elif json.loads(save_redis.get( "%s::menu" % (phone_number)))['tagihan'] == 'tambah_tiga': mulai_waktu = re.findall(".+", incoming_msg) mulai_waktu = mulai_waktu[0] message.append("Kalau *Selesai Waktu Tagihan* nya kapan?") message.append("Ini juga pakai format *(yyyy-mm-dd)* ya") save_redis.set("%s::mulai_waktu" % (phone_number), mulai_waktu) save_redis.set("%s::menu" % (phone_number), json.dumps({"tagihan": "tambah_empat"})) elif json.loads(save_redis.get( "%s::menu" % (phone_number)))['tagihan'] == "tambah_empat": selesai_waktu = re.findall(".+", incoming_msg) selesai_waktu = selesai_waktu[0] unit_id = int(save_redis.get("%s::id_unit" % (phone_number))) if "aturtagihan" in app.config['URL']: unit_id = [unit_id] tambah = requests.post( app.config['URL'] + "/billing/generate", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }, json={ "product_id": int(save_redis.get("%s::id_produk" % (phone_number))), "periode": save_redis.get("%s::mulai_waktu" % (phone_number)), "unit_id": unit_id, "start_date": save_redis.get("%s::mulai_waktu" % (phone_number)), "end_date": selesai_waktu }) resp_tambah = tambah.json() if tambah.status_code != 200: message.append(resp_tambah["message"]["body"]) message.append( "Tagihan gagal dibuat! Anda harus aktivasi rekening Anda terlebih dahulu atau lengkapi informasi properti Anda!" ) else: for indeks in range(len(resp_tambah['data'])): if resp_tambah['data'][indeks]['unit_id'] == int( save_redis.get("%s::id_unit" % (phone_number))): billing_id = resp_tambah['data'][indeks]['id'] print('BILLING ID', billing_id) link = requests.post( app.config['URL'] + "/canopus/user_payment/" + str(billing_id), headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }) send_wa = requests.post( app.config['URL'] + "/billing/send/wa", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }, json={"billing_id": int(billing_id)}) respon_link = link.json() send_wa = send_wa.json()["data"]["wa_template"] send_wa = send_wa.replace(" ", "%20") if link.status_code == 200: message.append("Tagihan berhasil dibuat!") message.append( "Klik tautan di bawah ini untuk mengirim Link Tagihan ke pelanggan Anda melalui whatsapp" ) message.append(send_wa) message.append( "Atau kirim Link Tagihan berikut ini ke pelanggan Anda secara manual" ) message.append(respon_link['data']) else: message.append(respon_link["message"]["body"]) message.append( "Link Tagihan gagal dibuat! Anda harus melengkapi informasi tagihan di menu *Pengaturan* dan verifikasi rekening untuk mengaktifkan pembayaran digital!" ) pesan = [] pesan.append("Ketik *Tagihan* untuk kembali ke halaman sebelumnya") pesan.append("Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke halaman Beranda") message.append(("\n").join(pesan)) save_redis.set("%s::menu" % (phone_number), 'tagihan') return message
def produk(incoming_msg, phone_number, bot_responses): respon_produk = requests.post( app.config['URL'] + "/product/all", headers={ "Authorization": "Bearer " + save_redis.get("%s::token" % (phone_number)) }) respon_produk = respon_produk.json() list_produk = respon_produk["data"]['records'] message = [] if 'produk' in save_redis.get("%s::menu" % (phone_number)): if "tambah" in incoming_msg.lower(): message = tambah_produk(incoming_msg, phone_number) elif "ubah" in incoming_msg.lower(): no_produk = re.findall("ubah.+", incoming_msg.lower()) no_produk = regex_num(no_produk[0]) if int(no_produk) > len(respon_produk['data']['records']): message.append( "Nomor Produk yang Anda masukkan tidak tersedia!") message.append("") message.append( "Silakan ketik *Produk* untuk kembali ke halaman sebelumnya" ) else: id_produk = respon_produk['data']['records'][int(no_produk) - 1]['id'] message = ubah_produk(incoming_msg, phone_number, id_produk) elif "hapus" in incoming_msg.lower(): save_redis.set("%s::produk" % (phone_number), "hapus") message = hapus_produk(incoming_msg, phone_number) elif (save_redis.get("%s::menu" % (phone_number))) == "produk": if respon_produk["data"]["count"] != 0: message_bubble = [bot_responses] all_bubble = [] for index, item in enumerate(list_produk): tiap_data = [] tiap_data.append("%s. Nama: %s" % (index + 1, item['name'])) tiap_data.append(" Jenis Produk: %s" % (item['product_type_name'])) tiap_data.append(" Alamat: %s" % (item['description'])) tiap_data.append( " Bank: %s %s a.n %s \n" % (item['bank_name'], item['account_number'], item['account_name'])) tiap_data = ('\n').join(tiap_data) if len(message_bubble[0]) + len(tiap_data) < 1600: message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] else: all_bubble.append(message_bubble) message_bubble = [''] message_bubble.append(tiap_data) message_bubble = ('\n').join(message_bubble) message_bubble = [message_bubble] all_bubble.append(message_bubble) for bubble in all_bubble: message.append(bubble) else: message.append("Anda belum mengisi produk!") pesan = ["Apa yang bisa Hedwig bantu?"] pesan.append("- Ketik *tambah* untuk menambahkan Produk") pesan.append( "- Ketik *ubah* <spasi> *no_produk* untuk mengubah Produk") pesan.append( "- Ketik *hapus* <spasi> *no_produk* untuk menghapus Produk") pesan.append("") pesan.append( "Ketik *Pengaturan* untuk kembali ke halaman Pengaturan") pesan.append("Ketik *Beranda* untuk kembali ke Menu") message.append(("\n").join(pesan)) else: read = json.loads(save_redis.get("%s::menu" % (phone_number))) if 'tambah' in read["produk"]: message = tambah_produk(incoming_msg, phone_number) elif 'ubah' in read["produk"]: message = ubah_produk(incoming_msg, phone_number, id=None) return message