def lihat_riwayat_pinjam_gadget( role): # Melihat riwayat pengambilan consumable if role == "Admin": # Validasi role Admin datas_gadget_borrow_history = readCSV("gadget_borrow_history.csv") datas_gadget = readCSV("gadget.csv") sort_data_date(datas_gadget_borrow_history[1] ) # Mengurutkan data terbaru berdasarkan tanggal if datas_gadget_borrow_history[ 1] == []: # gadget_borrow_history.csv kosong print("Belum ada peminjaman gadget") else: # gadget_borrow_history.csv tidak kosong if len(datas_gadget_borrow_history[1]) <= 5: # saat data <= 5 for i in range(len(datas_gadget_borrow_history[1])): print("ID Peminjaman : " + str(datas_gadget_borrow_history[1][i][0])) nama = readCSVdata( "user.csv", getRow("user.csv", int(datas_gadget_borrow_history[1][i][1])), 2) print("Nama Peminjam : " + nama) for j in range(len(datas_gadget[1])): if datas_gadget_borrow_history[1][i][ 2] == datas_gadget[1][j][0]: print("Nama Gadget : " + str(datas_gadget[1][j][1])) print("Tanggal Peminjam : " + str(datas_gadget_borrow_history[1][i][3])) print("Jumlah : " + str(datas_gadget_borrow_history[1][i][4])) print("") else: # saat data > 5 idx = 0 while idx < 5: print("ID Peminjaman : " + str(datas_gadget_borrow_history[1][idx][0])) nama = readCSVdata( "user.csv", getRow("user.csv", int(datas_gadget_borrow_history[1][idx][1])), 2) print("Nama Peminjam : " + nama) for j in range(len(datas_gadget[1])): if datas_gadget_borrow_history[1][idx][ 2] == datas_gadget[1][j][0]: print("Nama Gadget : " + str(datas_gadget[1][j][1])) print("Tanggal Peminjaman : " + str(datas_gadget_borrow_history[1][idx][3])) print("Jumlah : " + str(datas_gadget_borrow_history[1][idx][4])) print("") idx += 1 else: # Role != Admin print("Anda tidak bisa mengakses riwayat!")
def lihat_riwayat_consumable(role): # Melihat riwayat pengambilan consumable if role == "Admin": # Validasi role = Admin datas_consumable_history = readCSV("consumable_history.csv") if datas_consumable_history[1] == []: print("Belum ada pengambilan consumable") else: sort_data_date(datas_consumable_history[1] ) # mengurutkan data terbaru berdasarkan tanggal if len(datas_consumable_history[1]) <= 5: # saat data <= 5 for i in range(len(datas_consumable_history[1])): print("ID Pengambilan : " + str(datas_consumable_history[1][i][0])) nama = readCSVdata( "user.csv", getRow("user.csv", int(datas_consumable_history[1][i][1])), 2) print("Nama Pengambil : " + nama) #print("Nama Pengambil : " + str(datas_consumable_history[1][i][1])) cons = readCSVdata( "consumable.csv", getRow("consumable.csv", str(datas_consumable_history[1][i][2])), getCol("consumable.csv", "nama")) print("Nama Consumable : " + cons) #print("Nama Consumable : " + str(datas_consumable_history[1][i][2])) print("Tanggal Pengambilan : " + str(datas_consumable_history[1][i][3])) print("Jumlah : " + str(datas_consumable_history[1][i][4])) print("") else: # saat data > 5 idx = 0 while idx < 5: print("ID Pengambilan : " + str(datas_consumable_history[1][idx][0])) nama = readCSVdata( "user.csv", getRow("user.csv", int(datas_consumable_history[1][idx][1])), 2) print("Nama Pengambil : " + nama) #print("Nama Pengambil : " + str(datas_consumable_history[1][idx][1])) cons = readCSVdata( "consumable.csv", getRow("consumable.csv", str(datas_consumable_history[1][idx][2])), getCol("consumable.csv", "nama")) print("Nama Consumable : " + cons) #print("Nama Consumable : " + str(datas_consumable_history[1][idx][2])) print("Tanggal Pengambilan : " + str(datas_consumable_history[1][idx][3])) print("Jumlah : " + str(datas_consumable_history[1][idx][4])) print("") idx += 1 else: # Role != Admin print("Anda tidak bisa mengakses riwayat!")
def cari_gadget_tahun(): # Menampilkan gadget berdasarkan tahun ditemukan datas_gadget = readCSV("gadget.csv") input_tahun = int(input("Masukkan tahun: ")) input_kategori = input("Masukkan kategori: ") print("") print("Hasil pencarian") print("") print_gadget_tahun(datas_gadget, input_tahun, input_kategori)
def cari_gadget_rarity(): # Menampilkan gadget berdasarkan rarity datas_gadget = readCSV("gadget.csv") input_rarity = str(input("Masukkan rarity: ")) if (input_rarity not in 'CBAS'): print("Rarity tidak valid!") else: print("") print("Hasil pencarian:") print("") print_gadget_rarity(datas_gadget, input_rarity)
def check_regis(reg_username): # -> bool data = readCSV("user.csv") database = data[1] # Simplifikasi indeks kolom username = 1 # Validasi username x = False for i in range(len(database)): if (database[i][username] == reg_username): x = True return x
def searchrarity(rarity): # -> array of array of any # mencari item di consumable.csv dengan rarity tertentu # KAMUS LOKAL # items, datas : array of array of any # i : integer # ALGORITMA items = [] datas = readCSV("consumable.csv")[1] for i in range(len(datas)): if datas[i][getCol("consumable.csv", "rarity")] == rarity: items.append(datas[i]) return items
def filteritem(user_id): # -> array of array of any # mengembalikan data consumable milik user yang pernah diambil # KAMUS LOKAL # datas_all, inventory : array of array of any # item_id, stok, item_numambil, item_name, item_rarity : string # ALGORITMA datas_all = readCSV("consumable_history.csv")[1] inventory = [] for i in range(len(datas_all)): if datas_all[i][1] == user_id: # ada pengambilan dari user item_id = datas_all[i][2] stok = datas_all[i][4] item_numambil = datas_all[i][0] item_name = readCSVdata("consumable.csv", getRow("consumable.csv", item_id), getCol("consumable.csv", "nama")) item_rarity = readCSVdata("consumable.csv", getRow("consumable.csv", item_id), getCol("consumable.csv", "rarity")) inventory.append([item_id, item_name, item_rarity, stok, item_numambil]) return inventory
def register(role): # -> () # Validasi status login if (role == ""): print("Silahkan login terlebih dahulu!") return # Sudah login sebagai Admin elif (role == "Admin"): reg_nama = input("Masukkan nama : ") reg_username = input("Masukkan username : "******"Username tidak tersedia.") return else: reg_password = input("Masukkan password : "******"Masukkan alamat : ") data = readCSV("user.csv") database = data[1] header = data[0] reg_id = database[-1][0] + 1 reg_array = [ reg_id, reg_username, reg_nama.title(), reg_password, reg_alamat, "User" ] database += [reg_array] saveCSV(header, database, "user.csv") print("User " + reg_username + " telah berhasil register ke dalam Kantong Ajaib.") return else: # Sudah login sebagai User print("Anda tidak dapat melakukan registrasi, harap hubungi Admin.")
def check_login(log_username, log_password): # -> (bool,string,int) data = readCSV("user.csv") database = data[1] # Simplifikasi indeks kolom id_user = 0 username = 1 password = 4 role = 5 # Validasi role dan id user x = False y = "" z = 0 for i in range(len(database)): if (database[i][username] == log_username and database[i][password] == log_password): x = True y = database[i][role] z = database[i][id_user] return x, y, z
def kembalikan(role, user_id): # mengembalikan seluruh barang. khusus user. # KAMUS # datas : array of any # gadget_dipinjam : array of array[1..3] of string # id_peminjam_col, id_gadget, nama_gadget, tgl : string # id_peminjaman, no, jml_pinjam, jml_awal, id : integer # ALGORITMA if role == "User": datas = readCSV("gadget_borrow_history.csv")[1] id_peminjam_col = getCol("gadget_borrow_history.csv", "id_peminjam") # cari data yang idnya segitu # memasukkan daftar gadget yang dipinjam dalam array # format -> [id_peminjaman, id_gadget, nama_gadget] gadget_dipinjam = [] for i in range(len(datas)): # iterasi tiap row dalam datas # untuk setiap pinjam dari user isnt_returned = readCSVdata( "gadget_borrow_history.csv", i, getCol("gadget_borrow_history.csv", "is_returned")) == "0" if (readCSVdata("gadget_borrow_history.csv", i, id_peminjam_col) == str(user_id)) & isnt_returned: # ambil id peminjaman id_peminjaman = readCSVdata( "gadget_borrow_history.csv", i, getCol("gadget_borrow_history.csv", "id")) # ambil namanya id_gadget = readCSVdata( "gadget_borrow_history.csv", i, getCol("gadget_borrow_history.csv", "id_gadget")) nama_gadget = readCSVdata("gadget.csv", getRow("gadget.csv", id_gadget), getCol("gadget.csv", "nama")) gadget_dipinjam.append([id_peminjaman, id_gadget, nama_gadget]) # cek barang pinjaman if len(gadget_dipinjam) > 0: # print seluruh data for i in range(len(gadget_dipinjam)): print(str(i + 1) + ".", gadget_dipinjam[i][2]) print() no = int(input("Masukkan nomor peminjaman: ")) - 1 # validasi nomor peminjaman if (no >= 0) and (no < len(gadget_dipinjam)): id_peminjaman = gadget_dipinjam[no - 1][0] id_gadget = gadget_dipinjam[no - 1][1] nama_gadget = gadget_dipinjam[no - 1][2] # ubah kalo mau bonus jml_pinjam = readCSVdata( "gadget_borrow_history.csv", getRow("gadget_borrow_history.csv", id_peminjaman), getCol("gadget_borrow_history.csv", "jumlah")) tgl = input("Tanggal pengembalian: ") # validasi tanggal if isTglValid(tgl): # ubah jumlah di gadget.csv jml_awal = readCSVdata("gadget.csv", getRow("gadget.csv", id_gadget), getCol("gadget.csv", "jumlah")) editCSVdata("gadget.csv", getRow("gadget.csv", id_gadget), getCol("gadget.csv", "jumlah"), jml_awal + jml_pinjam) # catat di gadget_return_history.csv if len(readCSV("gadget_return_history.csv") [1]) == 0: # jika ini entry pertama addCSVdata("gadget_return_history.csv", [0, id_peminjaman, tgl]) else: # jika ini entry selanjutnya id = int( readCSVdata("gadget_return_history.csv", (len( readCSV("gadget_return_history.csv")[1])) - 1, 0)) + 1 addCSVdata("gadget_return_history.csv", [id, id_peminjaman, tgl]) # edit is_returned di gadget_borrow_history.csv editCSVdata( "gadget_borrow_history.csv", getRow("gadget_borrow_history.csv", id_peminjaman), getCol("gadget_borrow_history.csv", "is_returned"), 1) print("Item", nama_gadget, "(x" + str(jml_pinjam) + ") telah dikembalikan.\n") # hapus gadget di inventori user inventori = "inventori_" + str(user_id) + ".csv" delCSVdata(inventori, getRow(inventori, id_gadget)) else: # isTglValid(tgl) == False print("Tanggal tidak valid!\n") else: # ~((no >= 1) & (no <= len(gadget_dipinjam))) print("Tidak ada barang dengan nomor peminjaman tersebut!\n") else: # len(data_dipinjam) print("Anda belum pernah meminjam gadget apapun.\n") else: # role != "User" print("Admin tidak perlu mengembalikan barang.\n")
def ambil_consumable(role, user_id): if (role == "Admin"): # Validasi role user print("Admin tidak bisa mengambil consumable") else: # Role = User datas_consumable = readCSV("consumable.csv") datas_consumable_history = readCSV("consumable_history.csv") datas_user = readCSV("user.csv") if datas_consumable[1] == []: # Data consumable kosong print("Belum ada consumable tersedia") else: # Data consumable tidak kosong minta_id = input("Masukkan ID item: ") # Input id consumable yang ingin diambil count_check = 0 loop = True history_id_consumable = "" while loop: # Looping untuk validasi input id for i in range(len(datas_consumable[1])): if minta_id == datas_consumable[1][i][0]: count_check += 1 history_id_consumable = datas_consumable[1][i][0] if count_check > 0: loop = False else: print("ID item tidak ada, ulangi!") minta_id = input("Masukkan ID item: ") minta_jumlah = int(input("Jumlah: ")) # Input jumlah consumable yang ingin diambil amount_check = 0 loop = True history_jumlah = 0 while loop: # Looping untuk validasi input jumlah dengan jumlah consumable yang ada for i in range(len(datas_consumable[1])): if minta_id == datas_consumable[1][i][0]: amount_check = datas_consumable[1][i][3] if 0 <= minta_jumlah <= amount_check: history_jumlah = minta_jumlah loop = False else: print("Jumlah yang diambil tidak valid dengan stok yang ada, ulangi!") minta_jumlah = int(input("Jumlah: ")) minta_tanggal = input("Tanggal pengambilan: ") # Input tanggal pengambilan consumable while not(isTglValid(minta_tanggal)): # Validasi tanggal print("Tanggal tidak valid, ulangi!") minta_tanggal = input("Tanggal peminjaman: ") history_tanggal = minta_tanggal item = "" for i in range(len(datas_consumable[1])): if minta_id == datas_consumable[1][i][0]: item = datas_consumable[1][i][1] jumlah = int(datas_consumable[1][i][3]) - minta_jumlah datas_consumable[1][i][3] = jumlah print("") print("Item '" + str(item) + " (x" + str(minta_jumlah) + ")' telah berhasil diambil!") # update inventori user inventori = "inventori_" + str(user_id) + ".csv" idx = getRow(inventori, minta_id) if idx != None: # ID item ada di inventori new_val = int(readCSVdata(inventori, idx, 3)) + minta_jumlah # jumlah consumable ditambah editCSVdata(inventori, idx, 3, str(new_val)) # diedit jumlahnya pada inventori else: # ID item tidak ada di inventori rarity = readCSVdata("consumable.csv", getRow("consumable.csv", minta_id), 4) addCSVdata(inventori, [minta_id, item, rarity, str(minta_jumlah)]) # ditambahkan ke dalam inventori if datas_consumable_history[1] == []: # Saat consumable_history.csv masih kosong history_id = 1 else: # Saat ada data di consumable_history.csv history_id = datas_consumable_history[1][-1][0] + 1 history = [history_id, user_id, history_id_consumable, history_tanggal, history_jumlah] datas_consumable_history[1].append(history) # Menggabungkan history ke csv history consumable # Simpan pengubahan pada ke-2 csv saveCSV(datas_consumable[0], datas_consumable[1], "consumable.csv") # saveCSV(datas_consumable_history[0], datas_consumable_history[1], "consumable_history.csv")
def pinjam(role, user_id): # meminjam gadget. khusus user # KAMUS LOKAL # item_id, tgl, item # id, jml_pinjam, stok : int # ALGORITMA # validasi role User if role == "User": item_id = input("Masukkan ID item: ") if getRow("gadget.csv", item_id) != None: # ID item ada di database # cek lagi dipinjam atau ga if getRow("inventori_" + str(user_id) + ".csv", item_id) == None: # ID item tidak ada di inventori user tgl = input("Tanggal peminjaman: ") # validasi tanggal if isTglValid(tgl): jml_pinjam = int(input("Jumlah peminjaman: ")) if jml_pinjam > 0: if getRow("gadget.csv", item_id) != None: # ID item ada di database item = readCSVdata("gadget.csv", getRow("gadget.csv", item_id), getCol("gadget.csv", "nama")) stok = int( readCSVdata("gadget.csv", getRow("gadget.csv", item_id), getCol("gadget.csv", "jumlah"))) # validasi jumlah peminjaman if stok >= jml_pinjam: # ubah jumlah di gadget.csv editCSVdata("gadget.csv", getRow("gadget.csv", item_id), getCol("gadget.csv", "jumlah"), str(stok - jml_pinjam)) # catat ke gadget_borrow_history id = int( len( readCSV("gadget_borrow_history.csv") [1]) + 1) addCSVdata( "gadget_borrow_history.csv", [id, user_id, item_id, tgl, jml_pinjam, 0]) # catat ke inventory user rarity = readCSVdata( "gadget.csv", getRow("gadget.csv", item_id), 4) addCSVdata( "inventori_" + str(user_id) + ".csv", [item_id, item, rarity, str(jml_pinjam)]) print("Item", item, "(x" + str(jml_pinjam) + ")", "berhasil dipinjam!\n") elif stok == 0: print("Item", item, "gagal dipinjam karena stok habis.\n") else: # stok < jml_pinjam print( "Item", item, "gagal dipinjam karena jumlah peminjaman melebihi stok.\n" ) else: # jml_pinjam < 0 print("Jumlah peminjaman tidak valid!\n") else: # isTglValid(tgl) == False print("Tanggal tidak valid!\n") else: # ID item ada di inventori user print("Tidak bisa meminjam gadget yang sedang dipinjam") else: # ID tidak ada di database print("Tidak ada item dengan ID tersebut!\n") else: # role == "Admin" print("Admin tidak perlu melakukan peminjaman pada item.\n")
def lihat_riwayat_kembalikan_gadget( role): # Melihat riwayat pengambilan consumable if role == "Admin": # Validasi role Admin datas_gadget_return_history = readCSV("gadget_return_history.csv") datas_gadget_borrow_history = readCSV("gadget_borrow_history.csv") datas_gadget = readCSV("gadget.csv") if datas_gadget_return_history[1] == []: # Data kosong print("Belum ada gadget yang dikembalikan") else: # Data tidak kosong sort_data_date_1(datas_gadget_return_history[1] ) # Mengurutkan data terbaru berdasarkan tanggal if len(datas_gadget_return_history[1]) <= 5: # saat data <= 5 for i in range(len(datas_gadget_return_history[1])): # Menampilkan ID pengambilan print("ID Pengembalian : " + str(datas_gadget_return_history[1][i][0])) for j in range(len(datas_gadget_borrow_history[1])): if datas_gadget_return_history[1][i][ 1] == datas_gadget_borrow_history[1][j][0]: # Menampilkan nama Pengambil nama = readCSVdata( "user.csv", getRow( "user.csv", int(datas_gadget_borrow_history[1][j][1])), 2) print("Nama Pengambil : " + nama) #print("Nama Pengambil : " + str(datas_gadget_borrow_history[1][j][1])) for k in range(len(datas_gadget_borrow_history[1])): if datas_gadget_return_history[1][i][ 1] == datas_gadget_borrow_history[1][k][0]: for l in range(len(datas_gadget[1])): if datas_gadget_borrow_history[1][k][ 2] == datas_gadget[1][l][0]: # Menampilkan nama gadget yang diambil print("Nama Gadget : " + str(datas_gadget[1][l][1])) # Menampilkan tanggal print("Tanggal Pengembalian : " + str(datas_gadget_return_history[1][i][2])) print("") else: # saat data > 5 idx = 0 while idx < 5: # Menampilkan ID pengambilan print("ID Pengambilan : " + str(datas_gadget_return_history[1][idx][0])) for j in range(len(datas_gadget_borrow_history[1])): if datas_gadget_return_history[1][idx][ 1] == datas_gadget_borrow_history[1][j][0]: # Menampilkan nama Pengambil nama = readCSVdata( "user.csv", getRow( "user.csv", int(datas_gadget_borrow_history[1][j][1])), 2) print("Nama Pengambil : " + nama) #print("Nama Pengambil : " + str(datas_gadget_borrow_history[1][j][1])) for k in range(len(datas_gadget_borrow_history[1])): if datas_gadget_return_history[1][idx][ 1] == datas_gadget_borrow_history[1][k][0]: for l in range(len(datas_gadget[1])): if datas_gadget_borrow_history[1][k][ 2] == datas_gadget[1][l][0]: # Menampilkan nama gadget yang diambil print("Nama Gadget : " + str(datas_gadget[1][l][1])) print("Tanggal Pengembalian : " + str(datas_gadget_return_history[1][idx][2])) print("") idx += 1 else: # Role != Admin print("Anda tidak bisa mengakses riwayat!")
def gacha(role, user_id): # memberikan barang tertentu ke user secara pseudo-random. # chance dapat ditingkatkan dengan menambahkan barang dari inventory # KAMUS LOKAL # rarity: array[1..3] of array[1..2] of any # inventory: array of array of any # prompt, rarity_result: character # result, bekal: array[1..2] of any # gacha_result: array of any # stok_database, jml_result, id: integer # tgl: string # ALGORITMA # validasi role User if role == "User": rarity = [['B', 0], ['A', 0], ['S', 0]] inventory = filteritem(str(user_id)) # validasi inventory if len(inventory) > 0: prompt = 'y' while prompt in "Yy": # tambah chance dengan item di inventory result = korbaninitem(user_id, inventory) bekal = result[0] # rarity + persentase inventory = result[1] # sisa inventory # persentase ditambahkan ke rarity if bekal[0] == 'B': rarity[0][1] += bekal[1] elif bekal[0] == 'A': rarity[1][1] += bekal[1] elif bekal[0] == 'S': rarity[2][1] += bekal[1] # prompt mengulang tambah chance item prompt = input("Tambahkan item lagi? (y/n): ") if prompt not in 'YyNn': prompt = input("Tambahkan item lagi? (y/n): ") print("\nRolling...") time.sleep(2) # pilih rarity rarity_result = raritychooser(rarity) # pilih item dengan rarity sesuai gacha_result = chooser(searchrarity(rarity_result)) # cek stok database stok_database = int(readCSVdata("consumable.csv", getRow("consumable.csv", gacha_result[0]), getCol("consumable.csv", "jumlah"))) # pilih jumlah item yang diberikan sesuai stok database jml_result = numchooser(stok_database) # validasi jumlah yang diberikan if jml_result > 0: print("Selamat, anda mendapatkan", jml_result, gacha_result[1], "(Rank " + rarity_result + ")!") else: # jml_result == 0 print("Maaf, anda sedang tidak beruntung. Coba lagi.") # kurangi jumlah item hasil gacha di consumable.csv editCSVdata("consumable.csv", getRow("consumable.csv", gacha_result[0]), getCol("consumable.csv", "jumlah"), stok_database-jml_result) # tambah entry hasil gacha ke consumable_history.csv id = int(len(readCSV("consumable_history.csv")[1])+1) tgl = datetime.datetime.now().strftime('%d/%m/%Y') addCSVdata("consumable_history.csv", [id, user_id, gacha_result[0], tgl, jml_result]) else: # len(inventory) == 0 print("Inventory kosong. Anda tidak dapat melakukan gacha.") else: # role != user print("Admin tidak dapat melakukan gacha.")