123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from consumer.connect import DataConsumer
- from consumer.credentials import getCredentials
- from basic_display import BasicDisplay
- from cli.select import Selecter
- from cli.pass_asker import PassAsker
- from cli.customer_action_asker import CustomerActionAsker
- from cli.book_asker import BookAsker
- from cli.product_select import ProductSelecter
- from cli.house_asker import HouseAsker
- from cli.confirm import Confirmer
- from cli.quantity_asker import QuantityAsker
- from datetime import date, timedelta
- display = BasicDisplay()
- display.title('Customer application')
- credentials = getCredentials()
- consumer = DataConsumer(credentials)
- companyAsker = Selecter('Choose your company')
- passAsker = PassAsker()
- actionAsker = CustomerActionAsker()
- bookAsker = BookAsker()
- productAsker = ProductSelecter()
- houseAsker = HouseAsker()
- confirmAsker = Confirmer()
- quantityAsker = QuantityAsker()
- # Login phase
- compList = consumer.getCompanyNames()
- compList.append('dev')
- login = companyAsker.selectInto(compList)
- pwd = passAsker.ask()
- # Dummy password check
- if pwd != "":
- print('Successfully logged as', login)
- else:
- print('Name', login, 'not recognized.')
- print('(dummy password check : enter an non-empty password)')
- exit()
- # Action phase
- running = True
- while running:
- ans = actionAsker.ask()
- action = ans['action']
-
- if action == 'quit':
- running = False
- elif action == 'list orders':
- bookList = consumer.getOrdersOfCompany(login)
- if len(bookList) == 0:
- display.error('No book order for', login, 'yet.')
- else:
- bookId = bookAsker.select(bookList)
- itemList = consumer.getItemsOfOrder(bookId)
- if len(itemList) == 0:
- display.error('No item found for order', bookId)
- else:
- display.orderedItemList(itemList)
- elif action == 'list warehouses':
- houseList = consumer.getWarehousesOfCompany(login)
- if len(houseList) == 0:
- display.error('No warehouse for', login, 'yet.')
- else:
- display.warehouseList(houseList)
- elif action == 'new order':
- houseList = consumer.getWarehousesOfCompany(login)
- targetHouseId = houseAsker.select(houseList)
- proList = consumer.getProductSet()
- proSelectNameList = productAsker.selectInto(proList)
- productQuantityList = quantityAsker.askForEachOf(proSelectNameList)
- dueDate = date.today() + timedelta(15)
- if (confirmAsker.confirm()):
- consumer.addOrder(login, targetHouseId, proSelectNameList, productQuantityList, dueDate)
- consumer.commit()
- else:
- display.error('Order creation aborted')
- else:
- display.notImplemented(action)
- display.end()
|