コード例 #1
0
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!")
コード例 #2
0
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!")
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
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
コード例 #8
0
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.")
コード例 #9
0
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
コード例 #10
0
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")
コード例 #11
0
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")
コード例 #12
0
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")
コード例 #13
0
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!")
コード例 #14
0
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.")