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!")
Example #2
0
def ubahjumlah(role):
	# mengubah jumlah barang dalam inventory

	# KAMUS LOKAL
	# id, csv_file, nama : string
	# id_idx, col, jml, jml_awal : integer

	# ALGORITMA
	
	# validasi role Admin
	if (role == "Admin"):

		id = input("Masukkan ID: ")

		# validasi format ID
		if (id[0] == "G") | (id[0] == "C"):

			if id[0] == "G":
				csv_file = "gadget.csv"
			else: # id[0] == "C"
				csv_file = "consumable.csv"

			id_idx = getRow(csv_file, id)

			# validasi keberadaan id di inventory

			if id_idx != None: # id ada di inventory

				col = getCol(csv_file, "jumlah")
				jml = int(input("Masukkan jumlah: "))
				nama = readCSVdata(csv_file, id_idx, getCol(csv_file, "nama"))
				stok = int(readCSVdata(csv_file, id_idx, getCol(csv_file, "jumlah")))

				# validasi jumlah dan stok
				if stok + jml > 0:

					editCSVdata(csv_file, id_idx, col, str(stok + jml))

					if jml > 0: # menambah item
						print(abs(jml), nama, "berhasil ditambahkan.", end=" ")
					elif jml < 0: # mengurang item
						print(abs(jml), nama, "berhasil dibuang.", end=" ")
					else: # jml == 0
						print("Stok", nama, "tetap sama.", end=" ")

					print("Stok sekarang:", readCSVdata(csv_file, id_idx, getCol(csv_file, "jumlah")), "\n")

				else:  # stok + jml < 0
					print(abs(jml), nama, "gagal dibuang karena stok kurang.", end=" ")
					print("Stok sekarang:", str(stok), "( <", str(abs(jml)), ")\n")

			else:  # id tidak ada di inventory
				print("Tidak ada item dengan ID tersebut!\n")

		else: # format id salah
			print("Tidak ada item dengan ID tersebut!\n")

	else: # role != "Admin"
		print("Anda tidak dapat melakukan perubahan pada item!\n")
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 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 hapusitem(role):
	# menghapus item di database

	# KAMUS LOKAL
	# id, csv_file, nama, prompt : string
	# header : array of string
	# datas : array of ada string ada integer

	# ALGORITMA

	# validasi role Admin
	if (role == "Admin"):

		id = input("Masukkan ID item: ")

		# validasi format id
		if (id[0] == 'G') | (id[0] == 'C'):

			if id[0] == 'G':
				csv_file = "gadget.csv"
			else: # id[0] == 'C'
				csv_file = "consumable.csv"

			# validasi keberadaan id di inventory
			if getRow(csv_file, id) != None: # id ada di inventory

				nama = readCSVdata(csv_file, getRow(csv_file, id), getCol(csv_file, "nama"))
				prompt = input("Apakah anda yakin ingin menghapus " + nama + " (Y/N)? ")

				if prompt in 'Yy': # delete
					delCSVdata(csv_file, getRow(csv_file, id))
					print("Item telah berhasil dihapus dari database.\n")

				else: # prompt not in 'Yy'
					print("Proses dibatalkan.\n")

			else: # id tidak ada di inventory
				print("Tidak ada item dengan ID tersebut!\n")

		else: # format ID tidak valid
			print("Tidak ada item dengan ID tersebut!\n")

	else: # role != "Admin"
		print("Anda tidak dapat melakukan perubahan pada item!\n")
Example #6
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")
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 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.")