private IssueType CheckFreeAbonementRights(BJExemplarInfo scannedExemplar, ReaderInfo scannedReader) { if (scannedExemplar.ExemplarAccess.Access.In(new[] { 1000, 1006 })) { if (scannedReader.Rights[ReaderRightsEnum.FreeAbonement] == null) { throw new Exception("C019"); } else { if (scannedReader.Rights[ReaderRightsEnum.FreeAbonement].DateEndReaderRight <= DateTime.Now) { throw new Exception("C020"); } else { return(IssueType.AtHome); } } } else { return(IssueType.InHall); } }
// 0 - ok // 1 - нужно спросить на бронеполку возвращают или нет internal int RecieveBookFromReader(BJExemplarInfo exemplar, OrderInfo oi, BJUserInfo bjUser) { if (oi.StatusCode == CirculationStatuses.IssuedInHall.Id) { if (exemplar.Fields["921$c"].ToString() == "ДП") { if (exemplar.Fields["899$a"].ToString() != bjUser.SelectedUserStatus.DepName) { throw new Exception("C022"); } this.ChangeOrderStatusReturn(bjUser, oi.OrderId, CirculationStatuses.Finished.Value); } else { return(1); } } else { if (exemplar.Fields["899$a"].ToString().ToLower().Contains("книгохранен")) { this.ChangeOrderStatusReturn(bjUser, oi.OrderId, CirculationStatuses.ForReturnToBookStorage.Value); } else { this.ChangeOrderStatusReturn(bjUser, oi.OrderId, CirculationStatuses.Finished.Value); } } return(0); //loader.RecieveBookFromReader(bar,bjUser,statusName); }
public void InsertIntoUserBasket(ImpersonalBasket request) { if (request.BookIdArray.Count == 0) { return; } List <BasketInfo> UserBasket = new List <BasketInfo>(); //ищем в списке аллигаты. если такие есть, то заменяем их на конволют. foreach (string pin in request.BookIdArray) { //("BJVVV_1444973"); <---Аллигат BasketInfo item = new BasketInfo(); item.ReaderId = request.ReaderId; BJBookInfo book = BJBookInfo.GetBookInfoByPIN(pin); List <BJExemplarInfo> exemplars = book.Exemplars.ConvertAll(x => (BJExemplarInfo)x); BJExemplarInfo convolute = exemplars.FirstOrDefault(x => x.ConvolutePin != null); if (convolute != null) { item.BookId = convolute.ConvolutePin; item.AlligatBookId = book.Id; } else { item.BookId = book.Id; } UserBasket.Add(item); } //request.BookIdArray = PinsWithConvoluteID; loader.InsertIntoUserBasket(UserBasket); }
private void button1_Click(object sender, EventArgs e) { //MessageBox.Show("Thanks!"); CirculationInfo ci = new CirculationInfo(); List <OrderInfo> list = ci.GetOrders(CirculationStatuses.ForReturnToBookStorage.Value); foreach (OrderInfo o in list) { BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(o.ExemplarId, o.Fund); if (o.IssueDate == null) { List <OrderFlowInfo> ofi = ci.GetOrdersFlowByOrderId(o.OrderId); OrderFlowInfo f = ofi.Find(x => x.StatusName.Contains("ыдано")); if (f != null) { } } if (exemplar.Fields["921$c"].ToString() == "ДП") { //ci.ChangeOrderStatusReturn() } } }
internal int NewOrder(BJExemplarInfo exemplar, ReaderInfo reader, int ReturnInDays, string StatusName, string AlligatBookId, int IssuingDepId) { int OrderId; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(); command.Connection = connection; command.Connection.Open(); command.CommandText = Queries.NEW_ORDER; command.Parameters.Clear(); command.Parameters.Add("ReaderId", SqlDbType.Int).Value = reader.NumberReader; command.Parameters.Add("BookId", SqlDbType.NVarChar).Value = exemplar.BookId; command.Parameters.Add("AlligatBookId", SqlDbType.NVarChar).Value = (object)AlligatBookId ?? DBNull.Value; command.Parameters.Add("IssuingDepId", SqlDbType.Int).Value = IssuingDepId; command.Parameters.Add("ExemplarId", SqlDbType.Int).Value = exemplar.IdData; command.Parameters.Add("ReturnInDays", SqlDbType.Int).Value = ReturnInDays;//(orderType == "На дом") ? 30 : 4; command.Parameters.Add("StatusName", SqlDbType.NVarChar).Value = StatusName; command.Parameters.Add("Fund", SqlDbType.NVarChar).Value = exemplar.Fund; command.Parameters.Add("Barcode", SqlDbType.NVarChar).Value = exemplar.Fields["899$w"].ToString(); OrderId = Convert.ToInt32(command.ExecuteScalar()); } this.ChangeOrderStatus(OrderId, StatusName, 1, 2033, null); this.DeleteFromBasket(reader.NumberReader, new List <string>() { exemplar.BookId }); return(OrderId); }
private void bShowHistory_Click(object sender, EventArgs e) { dgOrderFlow.Rows.Clear(); lbOrders.Items.Clear(); //GetBookInfoByInventoryNumber - это полный шлак а не метод... переписать, чтобы сам искал по всех фондах! BJBookInfo book = BJBookInfo.GetBookInfoByInventoryNumber(tbInvNumber.Text, "BJVVV"); if (book == null) { book = BJBookInfo.GetBookInfoByInventoryNumber(tbInvNumber.Text, "REDKOSTJ"); } if (book == null) { book = BJBookInfo.GetBookInfoByInventoryNumber(tbInvNumber.Text, "BJACC"); } if (book == null) { book = BJBookInfo.GetBookInfoByInventoryNumber(tbInvNumber.Text, "BJFCC"); } if (book == null) { book = BJBookInfo.GetBookInfoByInventoryNumber(tbInvNumber.Text, "BJSCC"); } if (book == null) { label3.Text = "Не найдено"; lbOrders.Items.Clear(); dgOrderFlow.Rows.Clear(); MessageBox.Show("Инвентарный номер не найден ни в одной базе!"); return; } BJExemplarInfo exemplar = (BJExemplarInfo)book.Exemplars.Find(x => ((BJExemplarInfo)x).Fields["899$p"].ToString() == tbInvNumber.Text); if (exemplar == null) { label3.Text = "Не найдено"; lbOrders.Items.Clear(); dgOrderFlow.Rows.Clear(); MessageBox.Show("Инвентарный номер не найден ни в одной базе!"); return; } else { label3.Text = book.Fields["200$a"].ToString(); CirculationInfo ci = new CirculationInfo(); List <OrderInfo> orders = ci.GetOrders(exemplar.IdData, exemplar.Fund); lbOrders.Items.Clear(); foreach (OrderInfo order in orders) { lbOrders.Items.Add(order.OrderId); } if (lbOrders.Items.Count != 0) { lbOrders.SelectedIndex = 0; } } }
//прямая выдача книги. заказ ещё не создан internal void IssueBookToReader(BJExemplarInfo scannedExemplar, ReaderInfo scannedReader, IssueType issueType, BJUserInfo bjUser) { int ReturnInDays = (issueType == IssueType.AtHome) ? 30 : 10;//30 дней на дом. 10 дней бронеполка. string statusName = (issueType == IssueType.AtHome) ? CirculationStatuses.IssuedAtHome.Value : CirculationStatuses.IssuedInHall.Value; int deptId = KeyValueMapping.BJDepartmentIdToUnifiedLocationId[bjUser.SelectedUserStatus.DepId]; dbWrapper.IssueBookToReader(scannedExemplar, scannedReader.NumberReader, ReturnInDays, bjUser.Id, deptId, statusName); }
internal OrderInfo FindOrderByExemplar(BJExemplarInfo scannedExemplar) { DataTable table = dbWrapper.FindOrderByExemplar(scannedExemplar.IdData, scannedExemplar.Fund); if (table.Rows.Count == 0) { return(null); } return(FillOrderFromDataRow(table.Rows[0])); }
internal List <BJExemplarInfo> GetBooksPerYear(int year, string prefix) { DataTable table = db.GetBooksPerYear(year, prefix); List <BJExemplarInfo> result = new List <BJExemplarInfo>(); foreach (DataRow row in table.Rows) { BJExemplarInfo b = BJExemplarInfo.GetExemplarByIdData((int)row["IDDATA"], Fund); result.Add(b); } return(result); }
internal DataTable IsExemplarIssued(BJExemplarInfo bJExemplarInfo) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter dataAdapter = new SqlDataAdapter(Queries.IS_ALREADY_ISSUED, connection); dataAdapter.SelectCommand.Parameters.Add("BookId", SqlDbType.NVarChar).Value = bJExemplarInfo.BookId; dataAdapter.SelectCommand.Parameters.Add("ExemplarId", SqlDbType.Int).Value = bJExemplarInfo.IdData; DataTable table = new DataTable(); int cnt = dataAdapter.Fill(table); return(table); } }
internal List <BJExemplarInfo> GetBooksPerYearInActNameAnotherFundholder(int year) { DataTable table = db.GetBooksPerYearInActNameAnotherFundholder(year); List <BJExemplarInfo> result = new List <BJExemplarInfo>(); foreach (DataRow row in table.Rows) { BJExemplarInfo b = BJExemplarInfo.GetExemplarByIdData((int)row["IDDATA"], Fund); result.Add(b); } return(result); }
internal BJBookInfo GetBookInfoByPIN(int pin) { DataTable table = dbWrapper.GetBJRecord(pin); BJBookInfo result = new BJBookInfo(); result.Id = $"{Fund}_{pin}"; result.ID = pin; result.Fund = Fund; //BJExemplarInfo exemplar = new BJExemplarInfo(0); int CurrentIdData = 0; foreach (DataRow row in table.Rows) { if ((int)row["IDBLOCK"] != 260) { if ((int)row["IDBLOCK"] == 270)//если есть гиперссылка { result.DigitalCopy = new BJElectronicExemplarInfo(pin, Fund); } else { result.Fields.AddField(row["PLAIN"].ToString(), (int)row["MNFIELD"], row["MSFIELD"].ToString()); } } else { if (CurrentIdData != (int)row["IDDATA"]) { CurrentIdData = (int)row["IDDATA"]; result.Exemplars.Add(BJExemplarInfo.GetExemplarByIdData(CurrentIdData, Fund)); //exemplar = new BJExemplarInfo((int)row["IDDATA"]); //exemplar.Fields.AddField(row["PLAIN"].ToString(), (int)row["MNFIELD"], row["MSFIELD"].ToString()); } else { //exemplar.Fields.AddField(row["PLAIN"].ToString(), (int)row["MNFIELD"], row["MSFIELD"].ToString()); } } } table = dbWrapper.GetRTF(pin); if (table.Rows.Count != 0) { RichTextBox rtb = new RichTextBox(); rtb.Rtf = table.Rows[0][0].ToString(); result.RTF = rtb.Text; rtb.Dispose(); } return(result); }
private int CreateOrd(string idreader, string iddata) { BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(int.Parse(iddata), "BJVVV"); SqlCommand command = new SqlCommand(); ZCon.Open(); command = new SqlCommand("insert into Reservation_E..Orders (ID_Reader, ID_Book_EC, Status, Start_Date, InvNumber, Form_Date, IDDATA, ID_Book_CC, Duration, DepId) " + "values (@IDREADER, @IDMAIN, 0, getdate(), @INV, getdate(), @IDDATA , 0, 4 , @DepId )", ZCon); command.Parameters.Add("IDREADER", SqlDbType.Int).Value = int.Parse(idreader); command.Parameters.Add("IDMAIN", SqlDbType.Int).Value = exemplar.IDMAIN; command.Parameters.Add("INV", SqlDbType.NVarChar).Value = exemplar.Fields["899$p"].ToString(); command.Parameters.Add("IDDATA", SqlDbType.Int).Value = exemplar.IdData; command.Parameters.Add("DepId", SqlDbType.Int).Value = bjUser.SelectedUserStatus.DepId; command.ExecuteNonQuery(); ZCon.Close(); return(exemplar.IDMAIN); }
public void RecieveBook(string fromPort) { BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByBar(fromPort); OrderInfo oi = ci.FindOrderByExemplar(exemplar); if (ci.RecieveBookFromReader(exemplar, oi, bjUser) == 1) { DialogResult dr = MessageBox.Show("Читатель сдаёт книгу на бронеполку?", "Внимание!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (dr == DialogResult.Yes) { ci.ChangeOrderStatusReturn(bjUser, oi.OrderId, CirculationStatuses.InReserve.Value); } else if (dr == DialogResult.No) { ci.ChangeOrderStatusReturn(bjUser, oi.OrderId, CirculationStatuses.ForReturnToBookStorage.Value); } } }
/// <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); } }
public void RecieveBookInBookkeeping(OrderInfo order, BJUserInfo bjUser) { if (order == null) { throw new Exception("C025"); } //проверка ДП BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(order.ExemplarId, order.Fund); if (exemplar.Fields["921$c"].ToString() == "Для выдачи") { ChangeOrderStatus(bjUser, order.OrderId, CirculationStatuses.Finished.Value); } else { throw new Exception("C021"); } }
private int GetFirstIssueDepartmentId(BookExemplarBase exemplar) { BJExemplarInfo e = (BJExemplarInfo)exemplar; int IssuingDepartmentId = KeyValueMapping.AccessCodeToIssuingDeparmentId[e.ExemplarAccess.Access]; if (IssuingDepartmentId == 0) { //тут вопросики возникают. ExemplarSimpleView es = ViewFactory.GetExemplarSimpleView(e); if (es == null) { IssuingDepartmentId = 2007;//по умолчанию } else { IssuingDepartmentId = es.LocationCode; } } return(IssuingDepartmentId); }
private bool isWrongFloorPredicate(string depName, OrderInfo order) { if (order.ExemplarId == 0) { return(true); } BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(order.ExemplarId, order.Fund); if (exemplar == null) { return(true); } if (exemplar.Fields["899$a"].ToString() == depName) { return(false); } else { return(true); } }
public void InsertExemplar(BJExemplarInfo exemplar, BJBookInfo book, int RowIndex) { _countPerPage++; SetRowIncrement(_pageNumber); string Title = GetTitle(book); double RowHeight = GetMeasuredRowHeight(Title); _pageHeight += RowHeight + 5; if (_pageHeight > 620) { InsertPageSumm(); MakeNewPage(); SetRowIncrement(_pageNumber); AddEmptyRow(_currentWS); InsertRowData(RowIndex, Title, exemplar, book, RowHeight); } else { AddEmptyRow(_currentWS); InsertRowData(RowIndex, Title, exemplar, book, RowHeight); } }
private void InsertRowData(int RowIndex, string Title, BJExemplarInfo exemplar, BJBookInfo book, double RowHeight) { _currentWS.Range[$"A{_countPerPage + _rowIncrement}"].Value = RowIndex; _currentWS.Range[$"F{_countPerPage + _rowIncrement}"].Value = exemplar.Fields["899$p"].ToString(); _currentWS.Range[$"T{_countPerPage + _rowIncrement}"].Value = Title; _currentWS.Range[$"T{_countPerPage + _rowIncrement}"].WrapText = true; _currentWS.Range[$"BA{_countPerPage + _rowIncrement}"].Value = "шт"; _currentWS.Range[$"BK{_countPerPage + _rowIncrement}"].Value = 1; decimal Price = 0; string Currency = ""; if (exemplar.Fields["922$c"].ToString() == string.Empty) { if (book.Fields["101$a"].ToString() == "Рус.") { Price = 261; Currency = "RUB"; } else { Price = 1475; Currency = "RUB"; } } else { string str = exemplar.Fields["922$c"].ToString(); Currency = exemplar.Fields["922$d"].ToString(); Price = Decimal.Parse(str.Replace(".", ",")); } _currentWS.Range[$"BS{_countPerPage + _rowIncrement}"].Value = Price.ToString("0.00"); _cost += Price; _costPerPage += Price; _currentWS.Range[$"CL{_countPerPage + _rowIncrement}"].Value = Price.ToString("0.00"); _currentWS.Range[$"T{_countPerPage + _rowIncrement}"].RowHeight = RowHeight + 5; }
internal void IssueBookToReader(BJExemplarInfo scannedExemplar, int numberReader, int returnInDays, int userId, int deptId, string statusName) { int OrderId; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(); command.Connection = connection; command.Connection.Open(); command.CommandText = Queries.NEW_ORDER_ISSUE_BOOK; command.Parameters.Clear(); command.Parameters.Add("ReaderId", SqlDbType.Int).Value = numberReader; command.Parameters.Add("IssueDepId", SqlDbType.Int).Value = deptId; command.Parameters.Add("BookId", SqlDbType.NVarChar).Value = scannedExemplar.BookId; command.Parameters.Add("IssuingDepId", SqlDbType.Int).Value = deptId; command.Parameters.Add("ExemplarId", SqlDbType.Int).Value = scannedExemplar.IdData; command.Parameters.Add("ReturnInDays", SqlDbType.Int).Value = returnInDays; command.Parameters.Add("StatusName", SqlDbType.NVarChar).Value = statusName; command.Parameters.Add("Fund", SqlDbType.NVarChar).Value = scannedExemplar.Fund; command.Parameters.Add("Barcode", SqlDbType.NVarChar).Value = scannedExemplar.Fields["899$w"].ToString(); OrderId = Convert.ToInt32(command.ExecuteScalar()); } this.ChangeOrderStatus(OrderId, statusName, userId, deptId, null); }
private IssueType GetIssueType(BJExemplarInfo scannedExemplar, ReaderInfo scannedReader) { if (scannedReader.Rights[ReaderRightsEnum.Employee] != null) { if (scannedExemplar.Fields["921$c"].ToString() == "ДП") { return(IssueType.InHall); } else { return(IssueType.AtHome); } } else if (scannedReader.Rights[ReaderRightsEnum.PaidAbonement] != null) { if (scannedReader.Rights[ReaderRightsEnum.PaidAbonement].DateEndReaderRight > DateTime.Now) { if (scannedExemplar.Fields["921$c"].ToString() == "ДП") { return(IssueType.InHall); } else { return(IssueType.AtHome); } } else { return(CheckFreeAbonementRights(scannedExemplar, scannedReader)); } } else { return(CheckFreeAbonementRights(scannedExemplar, scannedReader)); } }
void pd_PrintPage(object sender, PrintPageEventArgs e) { Rectangle rectangle; StringFormat format; Font printFont = new Font("Arial Unicode MS", 11f, FontStyle.Bold); format = new StringFormat(StringFormatFlags.NoClip); format.LineAlignment = StringAlignment.Near; format.Alignment = StringAlignment.Near; F1.SqlDA.SelectCommand = new SqlCommand(); F1.SqlDA.SelectCommand.Connection = F1.SqlCon; F1.SqlDA.SelectCommand.CommandText = "select * from Readers..ReaderRight where IDReaderRight = 3 and IDReader = " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); DataSet DS = new DataSet(); int t = 0; int cc = F1.SqlDA.Fill(DS, "t"); if (cc != 0) { #region читатель-сотрудник string str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); //string inv = DS.Tables["t"].Rows[0][1].ToString(); string dep = GetDepartment(DS.Tables["t"].Rows[0]["IDOrganization"].ToString()); string abonement = GetAbonement(dg.SelectedRows[0].Cells["readerid"].Value.ToString()); int CurrentY = 0; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "НА ДОМ\n до:"; e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); rectangle = new Rectangle(70, CurrentY, 245, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = DateTime.Now.AddDays(30).ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 10f); str = F1.user.SelectedUserStatus.DepName.Substring(F1.user.SelectedUserStatus.DepName.IndexOf("-") + 2); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 13f); str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select FamilyName+' ' +substring([Name],1,1)+'. ' + substring(ISNULL(FatherName,' '),1,1)+case when FatherName is null then '' else '.' end " + " from Readers..Main where NumberReader =" + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); printFont = new Font("Arial Unicode MS", 10f); str = "Фамилия: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 10f); e.Graphics.DrawString("Сотрудник отдела: " + dep, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Шифр: " + dg.SelectedRows[0].Cells["cipher"].Value.ToString();; printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); if (dg.SelectedRows[0].Cells["note"].Value.ToString() == string.Empty) { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString(); } else { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString() + "; метка: " + dg.SelectedRows[0].Cells["note"].Value.ToString(); } printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); /*rectangle = new Rectangle(158, 175, 315, 25); * str = dg.SelectedRows[0].Cells["note"].Value.ToString(); * printFont = new Font("Arial Unicode MS", 10f); * e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format);*/ CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Автор: " + dg.SelectedRows[0].Cells["author"].Value.ToString(); printFont = new Font("Arial Unicode MS", 10f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 75); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Заглавие: " + dg.SelectedRows[0].Cells["title"].Value.ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 75; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select Plng.PLAIN " + "from BJVVV..DATAEXT A " + "left join BJVVV..DATAEXT lng on A.IDMAIN = lng.IDMAIN and lng.MNFIELD = 101 and lng.MSFIELD = '$a' " + "left join BJVVV..DATAEXTPLAIN Plng on Plng.IDDATAEXT = lng.ID " + "where A.IDMAIN = " + dg.SelectedRows[0].Cells["pin"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); str = "Язык: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select (case when Plng.PLAIN is null then '<нет>' else Plng.PLAIN end) as first," + " (case when Ptom.PLAIN is null then '<нет>' else Ptom.PLAIN end) as second, Pmesto.PLAIN mesto " + "from BJVVV..DATAEXT A " + "left join BJVVV..DATAEXT lng on A.IDMAIN = lng.IDMAIN and lng.MNFIELD = 2100 and lng.MSFIELD = '$d' " + "left join BJVVV..DATAEXTPLAIN Plng on Plng.IDDATAEXT = lng.ID " + "left join BJVVV..DATAEXT mesto on A.IDMAIN = mesto.IDMAIN and mesto.MNFIELD = 210 and mesto.MSFIELD = '$a' " + "left join BJVVV..DATAEXTPLAIN Pmesto on Pmesto.IDDATAEXT = mesto.ID " + "left join BJVVV..DATAEXT tom on A.IDMAIN = tom.IDMAIN and tom.MNFIELD = 225 and tom.MSFIELD = '$h' " + "left join BJVVV..DATAEXTPLAIN Ptom on Ptom.IDDATAEXT = tom.ID " + "where A.IDMAIN = " + dg.SelectedRows[0].Cells["pin"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); str = "Год: " + DS.Tables["t"].Rows[0][0].ToString() + " Том: " + DS.Tables["t"].Rows[0][1].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Место издания: " + DS.Tables["t"].Rows[0]["mesto"].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); //rectangle = new Rectangle(0, 325, 315, 25); //e.Graphics.DrawRectangle(Pens.Black, rectangle); //str = "Подпись читателя"; //e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = DateTime.Now.Date.ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 75); e.Graphics.DrawRectangle(Pens.Black, rectangle); //========вторая часть требования DS = new DataSet(); t = 0;// Conn.SQLDA.Fill(DS, "t"); str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); CurrentY += 75; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select ISNULL(FamilyName+' ' +substring([Name],1,1)+'. ',' ') + substring(ISNULL(FatherName,' '),1,1)+ " + " case when FatherName is null then '' else '.' end from Readers..Main where NumberReader =" + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); printFont = new Font("Arial Unicode MS", 10f); str = "Фамилия: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 10f); e.Graphics.DrawString("Сотрудник отдела: " + dep, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "НА ДОМ"; printFont = new Font("Arial Unicode MS", 11f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Шифр: " + dg.SelectedRows[0].Cells["cipher"].Value.ToString();; printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); if (dg.SelectedRows[0].Cells["note"].Value.ToString() == string.Empty) { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString(); } else { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString() + "; метка: " + dg.SelectedRows[0].Cells["note"].Value.ToString(); } printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; printFont = new Font("Arial Unicode MS", 10f); rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = DateTime.Now.Date.ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; #endregion } else { #region обычный читатель //BJBookInfo Book = BJBookInfo.GetBookInfoByInventoryNumber(dg.SelectedRows[0].Cells["inv"].Value.ToString(), "BJVVV"); //BJExemplarInfo Exemplar = BJExemplarInfo.GetExemplarByInventoryNumber(dg.SelectedRows[0].Cells["inv"].Value.ToString(), "BJVVV"); CirculationInfo ci = new CirculationInfo(); OrderInfo order = ci.GetOrder(Convert.ToInt32(dg.SelectedRows[0].Cells["orderid"].Value)); BJExemplarInfo Exemplar = BJExemplarInfo.GetExemplarByIdData(order.ExemplarId, order.Fund); //BJBookInfo Book = BJBookInfo.GetBookInfoByPIN(order.BookId); if (Exemplar == null) { throw new Exception("Ошибка при печати заказа. Обработайте этот заказ вручную, пока мы не устраним ошибку с печатью этого заказа."); //MessageBox.Show("Ошибка при печати заказа. Обработайте этот заказ вручную, пока мы не устраним ошибку с печатью этого заказа."); //return; } string abonement = GetAbonement(dg.SelectedRows[0].Cells["readerid"].Value.ToString()); string str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); //string inv = DS.Tables["t"].Rows[0][1].ToString(); int CurrentY = 0; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = (Exemplar.ExemplarAccess.Access == 1000) ? "НА ДОМ\n до:" : "ЧЗ\nдо:"; //1000 - на дом if (abonement.Contains("Платный")) { str = "НА ДОМ\n до:"; } e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); rectangle = new Rectangle(70, CurrentY, 245, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = (Exemplar.ExemplarAccess.Access == 1000) ? DateTime.Now.AddDays(30).ToString("dd.MM.yyyy") : DateTime.Now.AddDays(3).ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 10f); str = F1.user.SelectedUserStatus.DepName.Substring(F1.user.SelectedUserStatus.DepName.IndexOf("-") + 2); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 13f); str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select FamilyName+' ' +substring([Name],1,1)+'. ' + substring(ISNULL(FatherName, ' '),1,1)+ " + " case when FatherName is null then '' else '.' end from Readers..Main where NumberReader =" + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); printFont = new Font("Arial Unicode MS", 10f); str = "Фамилия: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 11f); e.Graphics.DrawString(abonement, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Шифр: " + dg.SelectedRows[0].Cells["cipher"].Value.ToString();; printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); if (dg.SelectedRows[0].Cells["note"].Value.ToString() == string.Empty) { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString(); } else { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString() + "; метка: " + dg.SelectedRows[0].Cells["note"].Value.ToString(); } printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); /*rectangle = new Rectangle(158, 175, 315, 25); * str = dg.SelectedRows[0].Cells["note"].Value.ToString(); * printFont = new Font("Arial Unicode MS", 10f); * e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format);*/ CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Автор: " + dg.SelectedRows[0].Cells["author"].Value.ToString(); printFont = new Font("Arial Unicode MS", 10f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 75); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Заглавие: " + dg.SelectedRows[0].Cells["title"].Value.ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 75; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select Plng.PLAIN " + "from BJVVV..DATAEXT A " + "left join BJVVV..DATAEXT lng on A.IDMAIN = lng.IDMAIN and lng.MNFIELD = 101 and lng.MSFIELD = '$a' " + "left join BJVVV..DATAEXTPLAIN Plng on Plng.IDDATAEXT = lng.ID " + "where A.IDMAIN = " + dg.SelectedRows[0].Cells["pin"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); str = "Язык: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select (case when Plng.PLAIN is null then '<нет>' else Plng.PLAIN end) as first," + " (case when Ptom.PLAIN is null then '<нет>' else Ptom.PLAIN end) as second, Pmesto.PLAIN mesto " + "from BJVVV..DATAEXT A " + "left join BJVVV..DATAEXT lng on A.IDMAIN = lng.IDMAIN and lng.MNFIELD = 2100 and lng.MSFIELD = '$d' " + "left join BJVVV..DATAEXTPLAIN Plng on Plng.IDDATAEXT = lng.ID " + "left join BJVVV..DATAEXT mesto on A.IDMAIN = mesto.IDMAIN and mesto.MNFIELD = 210 and mesto.MSFIELD = '$a' " + "left join BJVVV..DATAEXTPLAIN Pmesto on Pmesto.IDDATAEXT = mesto.ID " + "left join BJVVV..DATAEXT tom on A.IDMAIN = tom.IDMAIN and tom.MNFIELD = 225 and tom.MSFIELD = '$h' " + "left join BJVVV..DATAEXTPLAIN Ptom on Ptom.IDDATAEXT = tom.ID " + "where A.IDMAIN = " + dg.SelectedRows[0].Cells["pin"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); str = "Год: " + DS.Tables["t"].Rows[0][0].ToString() + " Том: " + DS.Tables["t"].Rows[0][1].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Место издания: " + DS.Tables["t"].Rows[0]["mesto"].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = DateTime.Now.Date.ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 75); e.Graphics.DrawRectangle(Pens.Black, rectangle); //========вторая часть требования DS = new DataSet(); t = 0;// Conn.SQLDA.Fill(DS, "t"); str = "Билет № " + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); CurrentY += 75; rectangle = new Rectangle(0, CurrentY, 70, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(70, CurrentY, 245, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); F1.SqlDA.SelectCommand.CommandText = "select ISNULL(FamilyName+' ' +substring([Name],1,1)+'. ',' ') + substring(ISNULL(FatherName, ' '),1,1)+ " + " case when FatherName is null then '' else '.' end from Readers..Main where NumberReader =" + dg.SelectedRows[0].Cells["readerid"].Value.ToString(); DS = new DataSet(); t = F1.SqlDA.Fill(DS, "t"); printFont = new Font("Arial Unicode MS", 10f); str = "Фамилия: " + DS.Tables["t"].Rows[0][0].ToString(); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = (Exemplar.ExemplarAccess.Access == 1000) ? "НА ДОМ:" : "ЧЗ"; //1000 - на дом if (abonement.Contains("Платный")) { str = "НА ДОМ\n до:"; } printFont = new Font("Arial Unicode MS", 11f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = "Шифр: " + dg.SelectedRows[0].Cells["cipher"].Value.ToString();; printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 50; rectangle = new Rectangle(0, CurrentY, 315, 25); e.Graphics.DrawRectangle(Pens.Black, rectangle); if (dg.SelectedRows[0].Cells["note"].Value.ToString() == string.Empty) { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString(); } else { str = "Инв. № " + dg.SelectedRows[0].Cells["inv"].Value.ToString() + "; метка: " + dg.SelectedRows[0].Cells["note"].Value.ToString(); } printFont = new Font("Arial Unicode MS", 13f); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; printFont = new Font("Arial Unicode MS", 10f); rectangle = new Rectangle(0, CurrentY, 315, 50); e.Graphics.DrawRectangle(Pens.Black, rectangle); str = DateTime.Now.Date.ToString("dd.MM.yyyy"); e.Graphics.DrawString(str, printFont, Brushes.Black, rectangle, format); CurrentY += 25; #endregion } }
private void AddExemplarFields(int idmain, VufindDoc result, string fund) { DataTable table = BJLoader.GetIdDataOfAllExemplars(idmain); if (table.Rows.Count == 0) { if (!BJLoader.IsElectronicCopyExists(idmain)) { return;//все списано и нет электронных копий. } } int IDMAIN = idmain; StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); JsonWriter writer = new JsonTextWriter(sw); writer.WriteStartObject(); DataTable exemplar; int cnt = 1; string CarrierCode = ""; List <DateTime> ExemplarsCreatedDateList = new List <DateTime>(); foreach (DataRow iddata in table.Rows) { exemplar = BJLoader.GetExemplar((int)iddata["IDDATA"]); BJExemplarInfo bjExemplar = BJExemplarInfo.GetExemplarByIdData((int)iddata["IDDATA"], this.Fund); if (bjExemplar.ExemplarAccess.Access == 1020)//экстремистская литература. не выгружаем такое. { continue; } writer.WritePropertyName(cnt++.ToString()); writer.WriteStartObject(); //ExemplarInfo bjExemplar = new ExemplarInfo((int)iddata["IDDATA"]); BJExemplarInfo Convolute = null; #region FieldAnalyse foreach (DataRow r in exemplar.Rows) { string code = r["MNFIELD"].ToString() + r["MSFIELD"].ToString(); switch (code) { case "899$a": string plain = r["PLAIN"].ToString(); string check = r["NAME"].ToString(); string UL = KeyValueMapping.UnifiedLocation.GetValueOrDefault(r["NAME"].ToString(), "отсутствует в словаре"); int LocationCode = KeyValueMapping.UnifiedLocationCode.GetValueOrDefault(UL, 2999); writer.WritePropertyName("exemplar_location"); writer.WriteValue(LocationCode); result.Location.Add(LocationCode.ToString()); break; case "482$a": writer.WritePropertyName("exemplar_interlaced_to"); writer.WriteValue(r["PLAIN"].ToString()); writer.WritePropertyName("exemplar_convolute"); Convolute = BJExemplarInfo.GetExemplarByInventoryNumber(r["PLAIN"].ToString(), this.Fund); if (Convolute == null) { writer.WriteValue("Ошибка заполнения библиографического описания конволюта"); errors.Add(this.Fund + "_" + idmain); } else { writer.WriteValue(this.Fund + "_" + Convolute.IDMAIN); } break; case "899$b": //тут надо оставить только коллекции string fnd = r["PLAIN"].ToString(); writer.WritePropertyName("exemplar_collection"); writer.WriteValue(r["PLAIN"].ToString()); break; case "899$c": writer.WritePropertyName("exemplar_rack_location"); writer.WriteValue(r["PLAIN"].ToString()); break; case "899$d": writer.WritePropertyName("exemplar_direction_temporary_storage"); writer.WriteValue(r["PLAIN"].ToString()); break; case "899$j": result.PlacingCipher.Add(r["PLAIN"].ToString()); writer.WritePropertyName("exemplar_placing_cipher"); writer.WriteValue(r["PLAIN"].ToString()); break; case "899$p": writer.WritePropertyName("exemplar_inventory_number"); writer.WriteValue(r["PLAIN"].ToString()); ExemplarsCreatedDateList.Add((DateTime)r["Created"]); break; case "899$w": writer.WritePropertyName("exemplar_barcode"); writer.WriteValue(r["PLAIN"].ToString()); ExemplarsCreatedDateList.Add((DateTime)r["Created"]); break; case "899$x": writer.WritePropertyName("exemplar_inv_note"); writer.WriteValue(r["PLAIN"].ToString()); break; case "921$a": writer.WritePropertyName("exemplar_carrier"); CarrierCode = KeyValueMapping.CarrierNameToCode.GetValueOrDefault(r["PLAIN"].ToString(), 3001).ToString(); writer.WriteValue(CarrierCode); break; case "921$c": writer.WritePropertyName("exemplar_class_edition"); writer.WriteValue(r["PLAIN"].ToString()); break; case "921$d": break; //case "922$b": //Exemplar += "Трофей\\Принадлежность к:" + r["PLAIN"].ToString() + "#"; //writer.WritePropertyName("exemplar_trophy"); // writer.WriteValue(r["PLAIN"].ToString()); // break; case "3300$a": writer.WritePropertyName("exemplar_binding_kind"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$b": writer.WritePropertyName("exemplar_binding_age"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$c": writer.WritePropertyName("exemplar_binding_type"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$d": writer.WritePropertyName("exemplar_cover_material"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$e": writer.WritePropertyName("exemplar_material_on_cover"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$f": writer.WritePropertyName("exemplar_spine_material"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$g": writer.WritePropertyName("exemplar_bandages"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$h": writer.WritePropertyName("exemplar_stamping_on_cover"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$i": writer.WritePropertyName("exemplar_embossing_on_spine"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$j": writer.WritePropertyName("exemplar_fittings"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$k": writer.WritePropertyName("exemplar_bugs"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$l": writer.WritePropertyName("exemplar_forth"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$m": writer.WritePropertyName("exemplar_cutoff"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$n": writer.WritePropertyName("exemplar_condition"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$o": writer.WritePropertyName("exemplar_case"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$p": writer.WritePropertyName("exemplar_embossing_on_edge"); writer.WriteValue(r["PLAIN"].ToString()); break; case "3300$r": writer.WritePropertyName("exemplar_binding_note"); writer.WriteValue(r["PLAIN"].ToString()); break; } } #endregion //Exemplar += "exemplar_id:" + ds.Tables["t"].Rows[0]["IDDATA"].ToString() + "#"; writer.WritePropertyName("exemplar_id"); writer.WriteValue(iddata["IDDATA"].ToString()); result.MethodOfAccess.Add(bjExemplar.ExemplarAccess.MethodOfAccess.ToString()); writer.WritePropertyName("exemplar_access"); writer.WriteValue(bjExemplar.ExemplarAccess.Access); writer.WritePropertyName("exemplar_access_group"); writer.WriteValue(KeyValueMapping.AccessCodeToGroup[bjExemplar.ExemplarAccess.Access]); result.Exemplars.Add(bjExemplar); writer.WriteEndObject(); } //смотрим есть ли гиперссылка и запись в таблице электронных копий table = BJLoader.GetHyperLink(IDMAIN); //здесь надо сделать так, чтобы просто строка возвращалась DataTable hyperLinkTable = BJLoader.GetBookScanInfo(IDMAIN); //здесь надо сделать так, чтобы возвращалась структура сканИнфо if (table.Rows.Count == 1 && hyperLinkTable.Rows.Count == 1) //если есть - вставляем отдельным экземпляром. после электронной инвентаризации этот кусок можно будет убрать { //ExemplarInfo bjExemplar = new ExemplarInfo(-1); writer.WritePropertyName(cnt++.ToString()); writer.WriteStartObject(); writer.WritePropertyName("exemplar_electronic_copy"); writer.WriteValue("да"); writer.WritePropertyName("exemplar_hyperlink"); writer.WriteValue(table.Rows[0]["PLAIN"].ToString()); writer.WritePropertyName("exemplar_hyperlink_newviewer"); writer.WriteValue("/Bookreader/Viewer?bookID=" + result.id + "&view_mode=HQ"); result.HyperLinkNewViewer.Add("/Bookreader/Viewer?bookID=" + result.id + "&view_mode=HQ"); BJElectronicExemplarAvailabilityCodes ElectronincAccessLevel = BJLoader.GetElectronicExemplarAccessLevel(IDMAIN, 1);//IDProject = 1 это значит для библиотеки. 2 - для НЭБ writer.WritePropertyName("exemplar_copyright"); writer.WriteValue((ElectronincAccessLevel == BJElectronicExemplarAvailabilityCodes.vloginview) ? "есть" : "нет"); writer.WritePropertyName("exemplar_old_original"); writer.WriteValue(((hyperLinkTable.Rows[0]["OldBook"].ToString() == "1") ? "да" : "нет")); writer.WritePropertyName("exemplar_PDF_exists"); writer.WriteValue(((hyperLinkTable.Rows[0]["PDF"].ToString() == "1") ? "да" : "нет")); writer.WritePropertyName("exemplar_access"); writer.WriteValue( (ElectronincAccessLevel == BJElectronicExemplarAvailabilityCodes.vloginview) ? "1002" : "1001"); //"Для прочтения онлайн необходимо положить в корзину и заказать через личный кабинет"); //"Для прочтения онлайн необходимо перейти по ссылке" writer.WritePropertyName("exemplar_access_group"); writer.WriteValue((ElectronincAccessLevel == BJElectronicExemplarAvailabilityCodes.vloginview) ? KeyValueMapping.AccessCodeToGroup[1002] : KeyValueMapping.AccessCodeToGroup[1001]); writer.WritePropertyName("exemplar_carrier"); writer.WriteValue("3011"); result.format.Add("3011"); writer.WritePropertyName("exemplar_id"); writer.WriteValue("ebook");//для всех у кого есть электронная копия. АПИ когда это значение встретит, сразу вернёт "доступно" writer.WritePropertyName("exemplar_location"); writer.WriteValue("2030"); writer.WriteEndObject(); result.MethodOfAccess.Add("4002"); BJElectronicExemplarInfo ElExemplar = new BJElectronicExemplarInfo(idmain, fund);//фейковый электронный экземпляр. если его не добавить и если бумажных экземпляров нет, то будет 0 экземпляров и документ не попадёт в индекс, хотя етсь электронный экземпляр result.Exemplars.Add(ElExemplar); //определить структуру, в которую полностью запись ложится и здесь её проверять, чтобы правильно вычисляемые поля проставить. } writer.WriteEndObject(); writer.Flush(); writer.Close(); result.ExemplarsJSON = sb.ToString(); if (ExemplarsCreatedDateList.Count != 0) { result.NewArrivals = ExemplarsCreatedDateList.Min(); } }
private int GetExemplarAcceptableOrderType(BJExemplarInfo exemplar) { return(KeyValueMapping.AccessCodeToOrderTypeId.GetValueOrDefault(exemplar.ExemplarAccess.Access, 0)); }
internal bool IsIssuedToReader(BJExemplarInfo exemplar) { return(loader.IsIssuedToReader(exemplar)); }
public OrderInfo FindOrderByExemplar(BJExemplarInfo scannedExemplar) { return(loader.FindOrderByExemplar(scannedExemplar)); }
internal void IssueBookToReader(BJExemplarInfo scannedExemplar, ReaderInfo scannedReader, BJUserInfo bjUser) { //метод выдаёт книгу, либо возвращает исключения //ищем заказ с таким экземпляром. OrderInfo order = this.FindOrderByExemplar(scannedExemplar); //получаем способ выдачи для этого экземпляра. на дом или в зал. зависит от книги и от читателя. IssueType issueType = GetIssueType(scannedExemplar, scannedReader); if (order == null)//если заказа нет, то просто выдать. создать заказ со статусом выдано. { loader.IssueBookToReader(scannedExemplar, scannedReader, issueType, bjUser); return; } if (order.ReaderId != scannedReader.NumberReader)//заказ делал не этот читатель. завершить текущий заказ и выдать этому читателю { this.FinishOrder(order, bjUser); this.IssueBookToReader(scannedExemplar, scannedReader, bjUser); return; } switch (order.StatusName) { case CirculationStatuses.ElectronicIssue.Value: //сотрудник на кафедре не может считать штрихкод электронной копии. пропускаем break; case CirculationStatuses.EmployeeLookingForBook.Value: //книга в руках у сотрудника, значит надо принять на кафедру. можно автоматически loader.IssueBookToReader(order, issueType, bjUser); break; case CirculationStatuses.ForReturnToBookStorage.Value: //читатель тот же. можно просто снова выдать loader.IssueBookToReader(order, issueType, bjUser); break; case CirculationStatuses.InReserve.Value: //книга на бронеполке. читатель тот же. выдаём. loader.IssueBookToReader(order, issueType, bjUser); break; case CirculationStatuses.IssuedAtHome.Value: //такого быть не может break; case CirculationStatuses.IssuedFromAnotherReserve.Value: //выдача с чужой бронеполки - это зло неимоверное... //пока выдача с чужой бронеполки будет так: завершаем заказ хозяина бронеполки и выдаём другому читателю. break; case CirculationStatuses.IssuedInHall.Value: //такого быть не может break; case CirculationStatuses.OrderIsFormed.Value: // такого по идее не может быть break; case CirculationStatuses.SelfOrder.Value: loader.IssueBookToReader(order, issueType, bjUser); break; case CirculationStatuses.WaitingFirstIssue.Value: loader.IssueBookToReader(order, issueType, bjUser); break; } //switch (scannedExemplar.ExemplarAccess.Access) //{ // case 1000://Взять на дом Заказать через личный кабинет, для получения на дом пройти в { { location_2006} } // break; // case 1001://Свободый электронный доступ // break; // case 1002://Электронный доступ через авторизацию читателя(удаленного читателя) // break; // case 1003://Электронный доступ в электронном зале НЭБ, читальные зал(3 этаж) // break; // case 1004://ЛитРес: Иностранка // break; // case 1005://В помещении бибилотеки Заказать через личный кабинет, для получения заказа пройти в { { location_2007} } // break; // case 1006://Взять на дом Проследовать в { { exemplar_location} } для получения книги на дом // break; // case 1007://В помещении бибилотеки Проследовать в { { exemplar_location} }, взять самостоятельно для чтения книги в помещении // break; // case 1008://Удалённый доступ Pearson: Иностранка // break; // case 1009:// Печать по требованию Печать по требованию // break; // case 1010://Уточнить доступ Проследовать в { { exemplar_location} }. Возможность выдачи уточните у сотрудника // break; // case 1011://В помещении бибилотеки Книга находится на выставке в { { exemplar_location} } // break; // case 1012://В помещении бибилотеки СПВ. Заказать через личный кабинет, проследовать в { { location_2007} }. Сотрудник поможет Вам с дополнительным оборудованием для просмотра. // break; // case 1013://Уточнить доступ Книга находится в обработке // break; // case 1014://В помещении бибилотеки Редкая книга.Проследовать в { { location_2009} } // break; // case 1016://Уточнить доступ Проследовать в { { location_2009} }. Возможность доступа уточните у сотрудника. // break; // case 1017://Уточнить доступ Проследовать в { { location_2007} }. Возможность доступа уточните у сотрудника. // break; // case 1020://Уточнить доступ Экстремистская литература. Не попадает в индекс. Обрабатывать не нужно. // break; // case 1999://Уточнить доступ Проследовать в { { location_2007} }. Возможность доступа уточните у сотрудника. // break; //} }
public void ShowReaderOrders() { dgwReaders.Rows.Clear(); dgwReaders.Columns.Clear(); KeyValuePair <string, string>[] columns = { new KeyValuePair <string, string> ("pin", "ПИН"), new KeyValuePair <string, string> ("author", "Автор"), new KeyValuePair <string, string> ("title", "Заглавие"), new KeyValuePair <string, string> ("inv", "Инв. номер"), new KeyValuePair <string, string> ("cipher", "Расст. шифр"), new KeyValuePair <string, string> ("readerid", "Номер читателя"), new KeyValuePair <string, string> ("fio", "ФИО читателя"), new KeyValuePair <string, string> ("startdate", "Дата формирования заказа"), new KeyValuePair <string, string> ("orderid", "orderid"), new KeyValuePair <string, string> ("status", "Статус заказа"), new KeyValuePair <string, string> ("note", "Инв. метка"), new KeyValuePair <string, string> ("pubdate", "Дата издания"), new KeyValuePair <string, string> ("refusual", "Причина отказа"), new KeyValuePair <string, string> ("iddata", "iddata") }; foreach (var c in columns) { dgwReaders.Columns.Add(c.Key, c.Value); } dgwReaders.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dgwReaders.RowTemplate.DefaultCellStyle.WrapMode = System.Windows.Forms.DataGridViewTriState.True; dgwReaders.Columns["startdate"].DefaultCellStyle.Format = "dd.MM.yyyy HH:mm"; dgwReaders.Columns["pin"].Width = 74; dgwReaders.Columns["author"].Width = 125; dgwReaders.Columns["title"].Width = 265; dgwReaders.Columns["inv"].Width = 80; dgwReaders.Columns["cipher"].Width = 100; dgwReaders.Columns["readerid"].Width = 80; dgwReaders.Columns["fio"].Width = 120; dgwReaders.Columns["startdate"].Width = 80; dgwReaders.Columns["orderid"].Visible = false; dgwReaders.Columns["status"].Width = 100; dgwReaders.Columns["note"].Width = 60; dgwReaders.Columns["pubdate"].Visible = false; dgwReaders.Columns["iddata"].Visible = false; CirculationInfo circulation = new CirculationInfo(); List <OrderInfo> orders = circulation.GetOrdersForStorage(bjUser.SelectedUserStatus.DepId, bjUser.SelectedUserStatus.DepName, CirculationStatuses.EmployeeLookingForBook.Value); if (bjUser.SelectedUserStatus.DepId == 8)//0 и 4 этаж должны получать заказы в одну точку { List <OrderInfo> orders1 = circulation.GetOrdersForStorage(15, "…Хран… Сектор книгохранения - 0 этаж"); foreach (OrderInfo o in orders1) { orders.Add(o); } } if (bjUser.SelectedUserStatus.DepId == 15) { List <OrderInfo> orders1 = circulation.GetOrdersForStorage(8, "…Хран… Сектор книгохранения - 4 этаж"); foreach (OrderInfo o in orders1) { orders.Add(o); } } foreach (var order in orders) { BJExemplarInfo exemplar = BJExemplarInfo.GetExemplarByIdData(order.ExemplarId, order.Fund); ReaderInfo reader = ReaderInfo.GetReader(order.ReaderId); dgwReaders.Rows.Add(); var row = dgwReaders.Rows[dgwReaders.Rows.Count - 1]; row.Cells["startdate"].Value = order.StartDate; row.Cells["pin"].Value = order.BookId.Substring(order.BookId.IndexOf("_") + 1); row.Cells["author"].Value = order.Book.Author; row.Cells["title"].Value = order.Book.Title; row.Cells["inv"].Value = exemplar.Fields["899$p"].ToString(); row.Cells["cipher"].Value = exemplar.Cipher; row.Cells["readerid"].Value = order.ReaderId; row.Cells["fio"].Value = (string.IsNullOrEmpty(reader.FatherName)) ? $"{reader.FamilyName} {reader.Name.Substring(0, 1)}." : $"{reader.FamilyName} {reader.Name.Substring(0, 1)}. { reader.FatherName.Substring(0, 1)}."; row.Cells["orderid"].Value = order.OrderId; row.Cells["status"].Value = order.StatusName; row.Cells["note"].Value = exemplar.Fields["899$x"].ToString(); row.Cells["pubdate"].Value = order.Book.PublishDate; row.Cells["iddata"].Value = order.ExemplarId; row.Cells["refusual"].Value = string.IsNullOrEmpty(order.Refusual) ? "<нет>" : order.Refusual; } }
internal bool IsIssuedToReader(BJExemplarInfo exemplar) { DataTable table = dbWrapper.IsIssuedToReader(exemplar.IdData, exemplar.Fund); return((table.Rows.Count != 0) ? true : false); }