/// <summary> /// Возвращаемые значения: /// 0 - Издание принято от читателя. Сдано. /// 1 - Штрихкод не найден ни в базе читателей ни в базе книг /// 2 - ожидался штрихкод читателя, а считан штрихкод издания /// 3 - ожидался штрихкод издания, а считан штрихкод читателя /// 4 - Издание подготовлено к выдаче. ожидаем штрихкод читателя /// 5 - Издание и читатель подготовлены к выдаче /// /// </summary> /// <param name="PortData"></param> public int Circulate(string PortData) { BARType ScannedType; if (ExpectedBar == ExpectingAction.WaitingConfimation)//если ожидается подтверждение выдачи { return(5); } if ((ScannedType = BookOrReader(PortData)) == BARType.NotExist)//существует ли такой штрихкод вообще либо в базе читателей либо в базе изданий { return(1); } if (ExpectedBar == ExpectingAction.WaitingBook) //если сейчас ожидается штрихкод книги { if (ScannedType == BARType.Reader) //выяснить какой штрихкод сейчас считан: читатель или книга { return(3); } this.ScannedBook = BJBookInfo.GetBookInfoByBAR(PortData); ScannedExemplar = (BJExemplarInfo)ScannedBook.Exemplars.Find(x => ((BJExemplarInfo)x).Bar == PortData); if (ci.IsIssuedToReader(ScannedExemplar)) { return(0); } else { ExpectedBar = ExpectingAction.WaitingReader; return(4); } } else //если сейчас ожидается штрихкод читателя { if (ScannedType == BARType.Book) //выяснить какой штрихкод сейчас считан: читатель или книга { return(2); } ScannedReader = ReaderInfo.GetReaderByBar(PortData);// new ReaderVO(PortData); ExpectedBar = ExpectingAction.WaitingConfimation; return(5); } }