示例#1
0
        /// <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);
        }
示例#2
0
 public CashierExchangeService(List <DeviceCashier> deviceCashiers, DeviceCashier adminCashier, ushort timeRespone, string logName)
 {
     _deviceCashiers    = deviceCashiers;
     _adminCashier      = adminCashier;
     _timeRespone       = timeRespone;
     _logName           = logName;
     _loggerCashierInfo = new Log(_logName);
 }