def addAttraction(self, idwahana, new): if (self.findAttraction(idwahana) == False): self.__idlist = elAdd(self.__idlist, idwahana) self.__attractions = elAdd(self.__attractions, new) return True else: return False
def load(self): self.__data = (self.__file).read() if panjangArray(self.__data) > 0: x = 0 for u in self.__data: newuser = User(u[0], u[1], int(u[2]), u[4], u[5], int(u[6])) self.__userids = elAdd(self.__userids, ((u[3]).lower())) self.__users = elAdd(self.__users, newuser)
def load(self): self.__data = (self.__file).read() if panjangArray(self.__data)> 0: for a in self.__data: try: # Jika ada error, maka akan diskip newattraction = Attraction(a[1], int(a[2]), a[3], a[4]) self.__idlist = elAdd(self.__idlist, a[0]) self.__attractions = elAdd(self.__attractions, newattraction) except: # error continue
def calcAge(self, tanggal): d = list(map(int, (self.__dobstr).strip().split('/'))) dt = list(map(int, tanggal.strip().split('/'))) s = selisihtgl(d,dt) self.__agecategory = [AgeRestriction.SemuaUmur] self.__age = int(s / (365.2425)) if (self.__age < 17): # Jika umur dibawah 17, tambahkan restriksi anak self.__agecategory = elAdd(self.__agecategory, AgeRestriction.Anak) else: # Jika umur diatas sama dengan 17, tambahkan restriksi dewasa self.__agecategory = elAdd(self.__agecategory, AgeRestriction.Dewasa)
def getAllUsersInventoryAsList(self): userids = ((self.__um).getAllUsers())[0] users = ((self.__um).getAllUsers())[1] result = [] for i in range(panjangArray(userids)): for idwahana in users[i].getTicketIDs(): if users[i].getTicket(idwahana) > 0: # Jika tiket positif tak nol result = elAdd(result, [userids[i], idwahana, users[i].getTicket(idwahana)]) return result
def load(self): self.__data = (self.__file).read() if panjangArray(self.__data) > 0: for c in self.__data: try: c[3] = int(c[3]) except ValueError as e: c[3] = 0 # Kalau Jumlah Tiket bukan Integer, maka akan diubah menjadi 0 self.__history = elAdd(self.__history, c)
def modify(self, username, idwahana, amount, normal=False, factor=100): user = (self.__um).getUser(username) attr = (self.__am).getAttraction(idwahana) if user != None: # User ditemukan inventory = user.getTickets() #mendapatkan array of int yg berisi jumlah tiket ids = user.getTicketIDs() index = cariArray(idwahana, ids) # cariArray akan menghasil kan index (int), None jika tidak ditemukan if index != None: # Sudah ada inventory[index] += amount # menambahkan jumlah else: # belum ada ids = elAdd(ids, idwahana) #tambah baru inventory = elAdd(inventory, amount) if normal: # Penjelasan normal ada di komentar diatas fungsi attr.newSale(amount) price = int(round(factor*attr.getTicketPrice()/100)) user.modifySaldo((-1)*amount*price) user.setTickets(inventory, ids)
def read(self): try: with open("Data/" + self.__file + '.csv', mode='r', newline='') as f: reader = csv.reader(f, dialect='excel') result = [] # Inisiasi Array Hasil i = 0 for row in reader: newrow = [] if (row != []): # Jika baris ada isi for x in range(panjangArray(row)): now = row[x] try: newrow = elAdd( newrow, int(now)) # coba convert ke integer except ValueError: newrow = elAdd( newrow, now) # kalau gagal convert jadi integer else: # Jika baris tidak ada isi for x in range(panjangArray(self.__defaultempty)): now = self.__defaultempty[x] try: newrow = elAdd( newrow, int(now)) # coba convert ke integer except ValueError: newrow = elAdd(newrow, (now).replace( "(index)", str(i) )) # kalau gagal convert jadi integer result += [newrow] i += 1 except: result = [ ] # Jika file tidak ditemukan, mengembalikan array kosong return result
def history(user, usermanager, attrmanager, usedmanager): if (user != None): # Jika user sudah login if (user.getRole() != Role.Admin): #Jika user bukan admin print("Maaf! Anda bukan admin.") else: # User adalah admin # Input idwahana = input("Masukkan ID Wahana\t\t\t: ") print() # Validasi untuk input ID Wahana # ID Wahana harus bisa ditemukan # Ketik 'exit' untuk membatalkan while not (attrmanager.findAttraction(idwahana)): print( "ID Wahana yang dimasukkan tidak valid.\nKetik 'exit' untuk membatalkan." ) idwahana = input("Masukkan ID Wahana\t\t\t: ") if idwahana.lower() == 'exit': print("Pembelian tiket dibatalkan.") return print() # Memanggil data dari ticketmanager penggunaan histories = usedmanager.get() # Inisiasi matrix kosong match = [] for each in histories: if each[2] == idwahana: # Jika idwahana sama dengan yang dicari match = elAdd(match, each) if panjangArray(match) == 0: # Jika tidak ditemukan apa-apa print("Belum ada yang bermain di wahana tersebut.") else: # Setidaknya ada satu penemuan print("Riwayat:") #judul for each in match: if panjangArray( each[0] ) < 8: # Jika panjang username kurang dari 8, tab 2x username = each[0] + "\t\t | \t " else: username = each[0] + "\t | \t " print(f"{each[1]}\t | \t{username}{each[3]}") else: # Jika belum login print("Anda belum login.")
def getAsListOfString(): result = [] for each in feedmanager.get(): if panjangArray( str(each[0] )) < 8: # Jika panjang username kurang dari 8, tab 2x username = str(each[0]) + "\t" else: username = str(each[0]) dstr = str(each[2]) + "\t\t | \t" + str( each[1]) + "\t | \t" + username + "\t | \t" + str(each[3]) result = elAdd(result, dstr) return result
def getUsersAsList(self): result = [] for i in range(panjangArray(self.__userids)): user = self.__users[i] arr = [] # ini adalah array dalam satu baris arr = elAdd(arr, user.getName()) # penambahan elemen tiap baris arr = elAdd(arr, user.getDOB()) # hal yang sama dengan atas arr = elAdd(arr, user.getHeight()) # hal yang sama dengan atas arr = elAdd(arr, (self.__userids[i]).lower()) # hal yang sama dengan atas arr = elAdd(arr, user.getPassword()) # hal yang sama dengan atas arr = elAdd(arr, user.getRole()) # hal yang sama dengan atas arr = elAdd(arr, user.getSaldo()) # hal yang sama dengan atas result = elAdd(result, arr) # masukkan kedalam kolom #print(result) return result
def getAttractionsAsList(self): result = [] for i in range(panjangArray(self.__idlist)): attr = self.__attractions[i] arr = [] # ini adalah array dalam satu baris arr = elAdd(arr, self.__idlist[i]) # penambahan elemen tiap baris arr = elAdd(arr, attr.getName()) # hal yang sama dengan atas arr = elAdd(arr, attr.getTicketPrice()) # hal yang sama dengan atas arr = elAdd(arr, attr.getAR()) # hal yang sama dengan atas arr = elAdd(arr, attr.getHR()) # hal yang sama dengan atas result = elAdd(result, arr) # masukkan kedalam kolom return result
def search(batasumur, batastinggi): result = [] attractionlist = (attrmanager.getAttractions())[1] attractionids = (attrmanager.getAttractions())[0] for i in range(panjangArray(attractionlist)): attr = attractionlist[i] idwahana = attractionids[i] if (attr.getAR() == AgeRestriction(batasumur)) and (attr.getHR( ) == HeightRestricton(batastinggi)): # Jika Wahana tersebut sesuai attrstr = str( idwahana ) + "\t\t | \t" # Formatting nama dengan tab supaya rapih if panjangArray( attr.getName()) < 8: # Jika panjang nama kurang dari 8 attrstr = attrstr + attr.getName() + "\t\t | \t" else: # panjang nama lebih dari 8 attrstr = attrstr + attr.getName() + "\t | \t" attrstr = attrstr + str(attr.getTicketPrice()) result = elAdd(result, attrstr) return result
def add(self, username, date, idwahana, amount): new = [username, date, idwahana, amount] self.__history = elAdd(self.__history, new)
def calcHeight(self): self.__heightcategory = [HeightRestricton.All] if (self.__height >= 170): # Tambahkan restriksi diatas sama dengan 170 saat tinggi diatas 170 self.__heightcategory = elAdd(self.__heightcategory, HeightRestricton.Above170)
def getSaleArray(): result = [] for attr in attractions: result = elAdd(result, attr.getSale()) return result
def add(self, username, date, idwahana, text): new = [username, date, idwahana, text] self.__critics = elAdd(self.__critics, new)
def addUser(self, username, new): if (self.findUser(username.lower()) == False): self.__users = elAdd(self.__users, new) self.__userids = elAdd(self.__userids, username)
def load(self): self.__data = (self.__file).read() if panjangArray(self.__data) > 0: for c in self.__data: self.__critics = elAdd(self.__critics, c)