/// <summary> /// Транзакция на передачу билета кассиру. /// </summary> private async Task <bool> WriteTicketTransaction(DeviceCashier devCashier, CashierHandling handling, MasterSerialPort port, CancellationToken ct) { var item = devCashier.Cashier.StartHandling(); if (item == null) //БЛОКИРОВКА ТРАНЗАКЦИИ (билет уже используетсяв транзакции) { return(false); } var writeProvider = new Server2CashierWriteDataProvider(devCashier.AddresDevice, _logName) { InputData = item }; await port.DataExchangeAsync(_timeRespone, writeProvider, ct); if (writeProvider.IsOutDataValid) //ТРАНЗАКЦИЯ ЗАВЕРШЕНА УСПЕШНО (извлечем билет из очереди и присвоим кассиру) { devCashier.Cashier.StartHandlingSuccessful(); } else //ТРАНЗАКЦИЯ ЗАВЕРШЕНА С ОШИБКОЙ (снимем блокировку) { _loggerCashierInfo.Info($"НЕ УДАЧНАЯ ТРАНЗАКЦИЯ ПЕРЕДАЧИ БИЛЕТА КАССИРУ: Id= {devCashier.Cashier.Id} НА КОМАНДУ={handling}"); devCashier.Cashier.StartHandlingFaild(); return(false); } return(true); }
public CashierExchangeService(List <DeviceCashier> deviceCashiers, DeviceCashier adminCashier, ushort timeRespone, string logName) { _deviceCashiers = deviceCashiers; _adminCashier = adminCashier; _timeRespone = timeRespone; _logName = logName; _loggerCashierInfo = new Log(_logName); }