def company_import(self, timestamp, id, name, date, address ): product_company_address = addresser.get_product_address(id) product = product_pb2.Product_company( id=id, name=name, date=date, address=address ) container = product_pb2.ProductCompanyContainer() state_entries = self._context.get_state( addresses=[product_company_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) container.entries.extend([product]) data = container.SerializeToString() updated_state = {} updated_state[product_company_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def update_employee(self, timestamp, id, position, salary ): product_address = addresser.get_product_address(id) employee = product_pb2.Product.Employee( timestamp = timestamp, position = position, salary = salary ) container = product_pb2.ProductContainer() state_entries = self._context.get_state( addresses=[product_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) for product in container.entries: if product.id == id: product.employees.extend([employee]) data = container.SerializeToString() updated_state = {} updated_state[product_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def update_location(self, timestamp, id, longitude, latitude ): product_address = addresser.get_product_address(id) location = product_pb2.Product.Location( timestamp = timestamp, longitude = longitude, latitude = latitude ) container = product_pb2.ProductContainer() state_entries = self._context.get_state( addresses=[product_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) for product in container.entries: if product.id == id: product.locations.extend([location]) data = container.SerializeToString() updated_state = {} updated_state[product_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def update_company(self, timestamp, id, address, price_IPO ): product_address = addresser.get_product_address(id) company = product_pb2.Product.Company( timestamp = timestamp, address = address, price_IPO = price_IPO ) container = product_pb2.ProductContainer() state_entries = self._context.get_state( addresses=[product_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) for product in container.entries: if product.id == id: product.companies.extend([company]) data = container.SerializeToString() updated_state = {} updated_state[product_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def make_company_import_transaction(transaction_signer, batch_signer, timestamp, id, name, date, address): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.CompanyImport(id=id, name=name, date=date, address=address) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.COMPANY_IMPORT, company_import=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def update_status(self, timestamp, id, quantity, price ): product_address = addresser.get_product_address(id) status = product_pb2.Product.Status( timestamp = timestamp, quantity = quantity, price = price ) container = product_pb2.ProductContainer() state_entries = self._context.get_state( addresses=[product_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) for product in container.entries: if product.id == id: product.statuss.extend([status]) data = container.SerializeToString() updated_state = {} updated_state[product_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def make_employee_import_transaction(transaction_signer, batch_signer, timestamp, id, name, age, address, email, company_id): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.EmployeeImport(id=id, name=name, age=age, address=address, email=email, company_id=company_id) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.EMPLOYEE_IMPORT, employee_import=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def get_product(self, id): address = addresser.get_product_address(id) state_entries = self._context.get_state( addresses=[address], timeout=self._timeout) if state_entries: container = product_pb2.ProductContainer() container.ParseFromString(state_entries[0].data) for product in container.entries: if product.id == id: return product return None
def make_get_transaction(transaction_signer, batch_signer, timestamp, id): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.GetDrug(id=id) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.make_get_transaction, get_transaction=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def make_createLc_transaction(transaction_signer, batch_signer, timestamp, content, publicKeyUser): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address() inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.Createlc(content=content, publicKeyUser=publicKeyUser) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.CREATELC, createLc=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def make_update_status_transaction(transaction_signer, batch_signer, timestamp, id, quantity, price): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.UpdateStatus(id=id, quantity=quantity, price=price) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.UPDATE_STATUS, update_status=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def createLc(self, timestamp, content, publicKeyUser ): product_address = addresser.get_product_address() product = product_pb2.Product( content=content, publicKeyUser=publicKeyUser ) container = product_pb2.ProductContainer() state_entries = self._context.get_state( addresses=[product_address], timeout=self._timeout) if state_entries: container.ParseFromString(state_entries[0].data) container.entries.extend([product]) data = container.SerializeToString() updated_state = {} updated_state[product_address] = data self._context.set_state(updated_state, timeout=self._timeout)
def make_update_location_transaction(transaction_signer, batch_signer, timestamp, id, longitude, latitude): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.UpdateLocation(id=id, longitude=longitude, latitude=latitude) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.UPDATE_LOCATION, update_location=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def make_update_employee_transaction(transaction_signer, batch_signer, timestamp, id, position, salary): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.UpdateEmployee(id=id, position=position, salary=salary) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.UPDATE_EMPLOYEE, update_employee=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)
def make_update_company_transaction(transaction_signer, batch_signer, timestamp, id, address, price_IPO): user_address = addresser.get_user_address( transaction_signer.get_public_key().as_hex()) product_address = addresser.get_product_address(id) inputs = [user_address, product_address] outputs = [product_address] action = payload_pb2.UpdateCompany(id=id, address=address, price_IPO=price_IPO) payload = payload_pb2.SimpleSupplyPayload( action=payload_pb2.SimpleSupplyPayload.UPDATE_COMPANY, update_company=action, timestamp=timestamp) payload_bytes = payload.SerializeToString() return _make_batch(payload_bytes=payload_bytes, inputs=inputs, outputs=outputs, transaction_signer=transaction_signer, batch_signer=batch_signer)