public void BuildTable1() { holder1.Controls.Clear(); DABasket.SelectCommand = new SqlCommand("select * from Basket where IDREADER = 1" /*+ HttpContext.Current.User.Identity.Name*/, con); //con.Open(); DSetBasket = new DataSet(); DABasket.Fill(DSetBasket, "Basket"); DABasket.SelectCommand = new SqlCommand("select R.IDMAIN idm, ZAG.PLAIN zag, INV.PLAIN inv, MHRAN.NAME mhran, KLASS.PLAIN klass from Reservation..Basket R " + "join BJVVV..DATAEXT DZAG on R.IDMAIN = DZAG.IDMAIN " + "join BJVVV..DATAEXT DINV on R.IDMAIN = DINV.IDMAIN " + "join BJVVV..DATAEXT DMHRAN on R.IDMAIN = DMHRAN.IDMAIN " + "join BJVVV..DATAEXTPLAIN ZAG on DZAG.ID = ZAG.IDDATAEXT " + "JOIN BJVVV..DATAEXTPLAIN INV on DINV.ID = INV.IDDATAEXT " + "JOIN BJVVV..DATAEXTPLAIN MHRANshort on DMHRAN.ID = MHRANshort.IDDATAEXT " + "join BJVVV..LIST_8 MHRAN on MHRANshort.PLAIN = MHRAN.SHORTNAME " + "join BJVVV..DATAEXT DKLASS on R.IDMAIN = DKLASS.IDMAIN " + "join BJVVV..DATAEXTPLAIN KLASS on DKLASS.ID = KLASS.IDDATAEXT " + "where (DZAG.MNFIELD = 200 and DZAG.MSFIELD = '$a' ) " + "and (DINV.MNFIELD = 899 and DINV.MSFIELD = '$p') " + "and (DMHRAN.MNFIELD = 899 and DMHRAN.MSFIELD = '$a') " + "and (DKLASS.MNFIELD = 921 and DKLASS.MSFIELD = '$c') " + "and DINV.IDDATA = DMHRAN.IDDATA and R.IDREADER = 1"/*+ HttpContext.Current.User.Identity.Name*/, con); int excnt = DABasket.Fill(DSetBasket, "ExactlyBasket"); long idmainConst = (System.Int64)DSetBasket.Tables["ExactlyBasket"].Rows[0]["idm"]; long idmain = idmainConst; //bool FoundWithoutOrder = false; //bool FoundInRH = false; //bool FoundWithoutOrderTsokol = false; List <Book> BooksForTable = new List <Book>(); List <InvOfBook> InvsForDates = new List <InvOfBook>(); List <InvOfBook> InvsForTable = new List <InvOfBook>(); Book bookForTable = null; InvOfBook InvForTableKN = null; InvOfBook InvForTableKNTS = null; //InvOfBook InvForTableCHZ; foreach (DataRow r in DSetBasket.Tables["ExactlyBasket"].Rows)//ЦИКЛ НЕ РАБОЧИЙ НАДО ИСПРАВЛЯТЬ. ПРОСКАКИВАЕТ СТРОКИ ШО ПЕПЕЦ!!!!!!!!!!! { //Type p = r["idm"].GetType(); idmain = (System.Int64)r["idm"];///ЦИКЛ НЕ РАБОЧИЙ НАДО ИСПРАВЛЯТЬ. ПРОСКАКИВАЕТ СТРОКИ ШО ПЕПЕЦ!!!!!!!!!!! if (idmainConst == idmain) { InvOfBook inv = new InvOfBook(r["inv"].ToString(), r["mhran"].ToString(), r["klass"].ToString()); int test = inv.mhr.IndexOf("Кнохранение"); test = inv.mhr.IndexOf("этаж"); bookForTable = new Book(r["zag"].ToString()); bookForTable.InvsOfBook.Add(inv); if ((inv.mhr.IndexOf("Книгохранение") != -1) && (inv.mhr.IndexOf("этаж") != -1)) {//этаж имеет преимущестов над цоколем if (bookForTable.FoundWithoutOrder) { continue; } if (inv.Ordered) { //запомнить номер и перейти к след книге InvsForDates.Add(inv); } else { //запомнить все для занесения в таблицу. //InvsForTable = new List<InvOfBook>(); //InvsForTable.Add(inv); InvForTableKN = inv; bookForTable.FoundWithoutOrder = true; } } else { if ((inv.mhr.IndexOf("Книгохранение") != -1) && (inv.mhr.IndexOf("цоколь") != -1)) {//цоколь if (bookForTable.FoundWithoutOrder) { continue; } if (bookForTable.FoundWithoutOrderTsokol) { continue; } if (inv.Ordered) { //запомнить номер и перейти к след книге InvsForDates.Add(inv); } else { //запомнить все для занесения в таблицу. InvForTableKNTS = inv; bookForTable.FoundWithoutOrderTsokol = true; } } else { if ((inv.mhr.IndexOf("Информационный") != -1) || (inv.mhr.IndexOf("Комплексный") != -1) || (inv.mhr.IndexOf("Религиозной") != -1) || (inv.mhr.IndexOf("детской") != -1) || (inv.mhr.IndexOf("языкознанию") != -1) || (inv.mhr.IndexOf("общий читальный") != -1) || (inv.mhr.IndexOf("периодических") != -1) || (inv.mhr.IndexOf("лингвистический") != -1) || (inv.mhr.IndexOf("восточных") != -1) || (inv.mhr.IndexOf("правовой") != -1)) { InvsForTable.Add(inv); } else { //книга в отделе из которого нельзя выдавать } } } } else { idmainConst = idmain; /*if ((bookForTable.FoundWithoutOrder) && (!bookForTable.FoundWithoutOrderTsokol)) * { * //все инвентари это книги заказаны при месте хранения равно книгохранение. еще будет ЧЗ и цоколь. если из хранения все заказаны, то можно и из цоколя на крайняк * bookForTable.InvsOfBook = InvsForDates; * bookForTable.AllInvsOrdered = true; * } * else * { * bookForTable.InvsOfBook = InvsForTable; * bookForTable.AllInvsOrdered = false; * }*/ if (bookForTable == null) { continue; } if (bookForTable.FoundWithoutOrder) { InvsForTable.Add(InvForTableKN); bookForTable.InvsOfBook = InvsForTable; } else { if (bookForTable.FoundWithoutOrderTsokol) { InvsForTable.Add(InvForTableKNTS); bookForTable.InvsOfBook = InvsForTable; } else { InvsForDates.AddRange(InvsForTable); bookForTable.InvsOfBook = InvsForDates; } } BooksForTable.Add(bookForTable); InvForTableKNTS = null; InvForTableKN = null; //bookForTable = new Book(r["zag"].ToString()); InvsForDates = new List <InvOfBook>(); InvsForTable = new List <InvOfBook>(); } } DABasket.SelectCommand.CommandText = "select * from Status"; DABasket.Fill(DSetBasket, "Status"); DABasket.SelectCommand.CommandText = "select * from Orders"; DABasket.Fill(DSetBasket, "Orders"); OleDA.SelectCommand = new OleDbCommand(); OleDA.SelectCommand.Connection = OleCon; OleDA.SelectCommand.CommandText = "select * from MAIN where NumberReader = 1"; //+ HttpContext.Current.User.Identity.Name;// +" and Family = '" + TextBox2.Text + "'"; DataSet DS = new DataSet(); int recc = OleDA.Fill(DS, "Surname"); if (recc == 0) { OleDA.SelectCommand.CommandText = "select * from MAIN where NumberSC = " + HttpContext.Current.User.Identity.Name;// +" and Family = '" + TextBox2.Text + "'"; recc = OleDA.Fill(DS, "Surname"); if (recc == 0) { throw new Exception("Быть такого не может! " + HttpContext.Current.User.Identity.Name); } } //Label7.Text = ch.GetNameReader("1"); //SqlDataAdapter NameReader = new SqlDataAdapter("select r1.FamilyName from Readers..Main as r1 left join Reservation..Basket as r on r.id = r1.NumberReader where r.id = " + "1", con); //NameReader.Fill(DS, "Name"); Label1.Text = "Личный кабинет пользователя " + DS.Tables["Surname"].Rows[0]["FamilyName"].ToString() + " " + DS.Tables["Surname"].Rows[0]["Name"].ToString() + " " + DS.Tables["Surname"].Rows[0]["FatherName"].ToString(); Checkboxes = new CheckBox[DSetBasket.Tables["Basket"].Rows.Count]; Clntid = new String[DSetBasket.Tables["Basket"].Rows.Count]; CalendarTexts = new TextBox[DSetBasket.Tables["Basket"].Rows.Count]; HF = new HiddenField[DSetBasket.Tables["Basket"].Rows.Count]; Calendars = new CalendarExtender[DSetBasket.Tables["Basket"].Rows.Count]; CalendarsOrd = new CalendarExtender[DSetBasket.Tables["Basket"].Rows.Count]; bs = new Button[DSetBasket.Tables["Basket"].Rows.Count]; // for (int i = 0; i < Table1.Rows.Count; i++) // Table1.Rows.RemoveAt(0); Table1.Rows.Clear(); Table1.Style["left"] = "30px"; Table1.Style["top"] = "50px"; TableRow row = new TableRow(); TableCell cell = new TableCell(); cell.HorizontalAlign = HorizontalAlign.Center; Table1.BorderColor = System.Drawing.Color.Black; Table1.BorderWidth = 3; Table1.Rows.Add(row); row.Cells.Add(cell); Table1.Rows[0].Cells[0].ColumnSpan = 5; Table1.Rows[0].Cells[0].Text = "<b>КОРЗИНА</b>"; row = new TableRow(); //cell = new TableCell(); //cell.Width = 400; //cell.Text = ""; //row.Cells.Add(cell); cell = new TableCell(); cell.Width = 250; cell.HorizontalAlign = HorizontalAlign.Center; cell.ColumnSpan = 2; cell.Text = "<b>Название книги</b>"; row.Cells.Add(cell); //String f = Table1.Rows[0].Cells[0].Width.ToString(); cell = new TableCell(); cell.HorizontalAlign = HorizontalAlign.Center; cell.Text = "<b>Дата заказа</b>"; cell.Width = 110; row.Cells.Add(cell); cell = new TableCell(); cell.HorizontalAlign = HorizontalAlign.Center; cell.Text = "<b>Местонахождение</b>"; row.Cells.Add(cell); Table1.Rows.Add(row); DSetBasket.Tables.Add("Books"); string scriptTemplate = @" <script language=""javascript"" type=""text/javascript""> var id1 = [{0}]; var id2 = [{1}]; var id3 = [{2}]; var sp = [{3}]; //var i = 0; for (i = 0; i < id1.length; i++){{ // var SPECIAL_DAYS = sp[i]; // newCal(id1[i], id2[i], i); //if (id2[i].value = '') id2[i].value = Date(); //<%CalendarTexts[i].Text = %> }}; </script>"; StringBuilder id1 = new StringBuilder(); StringBuilder id2 = new StringBuilder(); StringBuilder id3 = new StringBuilder(); StringBuilder bd = new StringBuilder(); String[] Month; Month = new String[12]; for (int i = 0; i < DSetBasket.Tables["Basket"].Rows.Count; i++) { Checking ch = new Checking(DSetBasket.Tables["Basket"].Rows[i][2].ToString(), "1" /*HttpContext.Current.User.Identity.Name*/);//DSetBasket.Tables["Basket"].Rows[i][1].ToString()); //ch.Ord("1111"); row = new TableRow(); Table1.Rows.Add(row); cell = new TableCell(); //cell.Width = Unit.Percentage(40); row.Cells.Add(cell); cell = new TableCell(); row.Cells.Add(cell); //cell.Width = Unit.Percentage(20); cell = new TableCell(); row.Cells.Add(cell); //cell.Width = Unit.Percentage(40); cell = new TableCell(); row.Cells.Add(cell); row.VerticalAlign = VerticalAlign.Middle; Table1.Rows[i + 2].Cells[1].Text = ch.GetZaglavie();//DSetBasket.Tables["Books"].Rows[0][1].ToString(); Table1.Rows[i + 2].Cells[1].Width = 240; Checkboxes[i] = new CheckBox(); Checkboxes[i].ID = "ch" + i.ToString(); Clntid[i] = Checkboxes[i].ClientID; //holder1.Controls.Add(Checkboxes[i]); Table1.Rows[i + 2].Cells[0].Controls.Add(Checkboxes[i]); HF[i] = new HiddenField(); HF[i].ID = "hf" + i.ToString(); holder1.Controls.Add(HF[i]); CalendarTexts[i] = new TextBox(); CalendarTexts[i].ID = "сtb" + i.ToString(); CalendarTexts[i].Text = string.Empty; //DateTime.Today.ToString("dd.MM.yyyy"); //CalendarTexts[i].ReadOnly = true; //CalendarTexts[i].Attributes.Add("onChange", "focus()"); Table1.Rows[i + 2].Cells[2].Controls.Add(CalendarTexts[i]); //CalendarTexts[i].Attributes.Add("onprerender", ""); CalendarTexts[i].Style["z-index"] = "1"; CalendarTexts[i].Width = 70; //EventArgs ev = new EventArgs(); CalendarTexts[i].TextChanged += new EventHandler(Default_TextChanged); //CalendarTexts[i].TextChanged += new EventHandler(ctb_TextChanged); //CalendarTexts[i].TextChanged += new EventHandler(_Default_TextChanged); //disable занятые даты ArrayList BusDats = ch.DisableBusyDates(); //Session.Clear(); for (int h = 0; h < Month.Length; h++) { Month[h] = ""; } ; for (int Dat = 0; Dat < BusDats.Count; Dat++) { DateTime BusDat = (DateTime)BusDats[Dat]; Month[BusDat.Month - 1] += BusDat.Day.ToString() + ","; } ; bd.Append("["); for (int h = 0; h < Month.Length; h++) { if (Month[h].Length != 0) { Month[h] = Month[h].Remove(Month[h].Length - 1, 1); } Month[h] = "[" + Month[h]; Month[h] += "]"; bd.Append(Month[h] + ","); } ; bd.Remove(bd.Length - 1, 1); bd.Append("],"); //int h = Session.Count; /* bs[i] = new Button(); * bs[i].ID = "myb"+i.ToString(); * bs[i].Width = 17; * * bs[i].Text = "..."; * //bs[i].Attributes.Add("onclick", "newCal(\"" + bs[i].ClientID + "\",\"" + CalendarTexts[i].ClientID + "\",\"" + "ff" + "\");return false;"); * bs[i].Attributes.Add("onmouseup", "newCal(\"TabContainer1_TabPanel1_" + bs[i].ID + "\",\"TabContainer1_TabPanel1_" + CalendarTexts[i].ID + "\",\"" + "ff" + "\");return false;"); * //bs[i].Attributes.Add("onclick","return false;"); * //bs[i].Attributes.Add("onmouseover", ""); * //holder1.Controls.Add(b); * Table1.Rows[i + 2].Cells[2].Controls.Add(bs[i]);*/ bs[i] = new Button(); //bs[i].Attributes.Clear(); bs[i].ID = "bs" + i.ToString(); bs[i].Text = "..."; //bs[i].Attributes.Add("type", "button"); //string s = bs[i].ClientID.ToString(); Table1.Rows[i + 2].Cells[2].Controls.Add(bs[i]); //bs[i].Attributes.Add("onmouseup", "updatePanel();alert('ahh...');return false;"); //Button1.Attributes.Add("onmouseup", "updatePanel();alert('ahh...');return false;"); bs[i].Attributes.Add("onmouseover", "SPECIAL_DAYS = sp[" + i.ToString() + "]"); bs[i].Attributes.Add("UseSubmitBehavior", "false"); Button1.Attributes.Add("onmousedown", "isDateSelected()"); //UpdatePanel1.Triggers.Add(bs[i]); //bs[i].Attributes["type"] = "button"; butt.type = 'button';//в IE type нельзя менять bs[i].Attributes.Add("onclick", "var ct = document.getElementById('" + CalendarTexts[i].ClientID.ToString() + "');var butt = document.getElementById('" + bs[i].ClientID.ToString() + "');apiCal(id1[" + i.ToString() + "],id2[" + i.ToString() + "],ct.value);"); //HF[i].Value = "g"; //CalendarTexts[i].Text = CalendarTexts[i].Text; //CalendarTexts[i].Text = Session["my"].ToString(); //bs[i].Attributes.Add("onmouseout", "cl.hide();"); //Button2.Attributes.Add("onmouseover", "apiCal(" + bs[i].ClientID.ToString() + "," + CalendarTexts[i].ClientID.ToString() + ");"); //bs[i].Attributes.Add("onload", "newCal(\"" + bs[i].ClientID + "\",\"" + CalendarTexts[i].ClientID + "\",\"" + "ff" + "\");return false;"); id1.AppendFormat("\"{0}\",", bs[i].ClientID); id2.AppendFormat("\"{0}\",", CalendarTexts[i].ClientID); id3.AppendFormat("\"{0}\",", Checkboxes[i].ClientID); //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //начало алгоритма проверки возможности выдачи книги на указанное число///////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// /* в каком фонде книга? пока муляж не рабочий.. * if (ch.GetWhere(DSetBasket.Tables["Basket"].Rows[i][2].ToString())== "Основной фонд") * if (ch.GetWhere(DSetBasket.Tables["Basket"].Rows[i][2].ToString())== "Подсобный фонд") * if (ch.GetWhere(DSetBasket.Tables["Basket"].Rows[i][2].ToString())== "Открытый доступ") */ //здесь проверить в свободном фонде ли? если да - не дать возможность заказать и вывести сообщение //проверка не заказана ли уже эта книга этим же читателем? if (ch.IsAlreadyInOrder()) { Table1.Rows[i + 2].Cells[3].Text = "Книга уже заказана Вами. Вы не можете заказать книгу второй раз."; Checkboxes[i].Enabled = false; //bs[i].Enabled = false; Table1.Rows[i + 2].BackColor = ColorTranslator.FromHtml("#FFAAAA"); continue; } //если есть свободные инвентари - то все ок if (ch.GetInv() != "") { Table1.Rows[i + 2].Cells[3].Text = ch.GetWhere();// "Есть возможность заказать книгу на указанную дату."; писать не статус а местонахождение //где то здесь надо запомнить этот свободный инвентарь continue; } //если нет свободных инвентарей //CalendarTexts[i].Text = CalendarTexts[i].Text; else if (ch.GetInv() == "") { //есто ли какой нибудь инвентарь не попадающий на указанную дату? // if (CalendarTexts[i].Text == "") CalendarTexts[i].Text = DateTime.Today.ToString(); ch.FreeBestCopy(CalendarTexts[i].Text); if ((ch.GetFreeBestCopy().First.ToString() == "-1") || (ch.GetFreeBestCopy().First.ToString() == "0" && ch.GetFreeBestCopy().Second.ToString() == "уже нельзя")) { Table1.Rows[i + 2].Cells[3].Text = ch.GetWhere(); //"Нет возможности заказать книгу на указанную дату."; Checkboxes[i].Enabled = false; //bs[i].Enabled = false; Table1.Rows[i + 2].BackColor = ColorTranslator.FromHtml("#FFAAAA"); } if (ch.GetFreeBestCopy().First.ToString() == "0" && ch.GetFreeBestCopy().Second.ToString() != "уже нельзя") { Table1.Rows[i + 2].Cells[3].Text = ch.GetWhere() + "; Книга уже заказана другим читателем, но Вы можете заказать книгу сегодня до его прихода. Для получения книги пройдите в указанный зал такойто."; continue; } if (ch.GetFreeBestCopy().First.ToString() == "1") { Table1.Rows[i + 2].Cells[3].Text = "Есть возможность заказать книгу на указанную дату сроком на 1 день (сегодня)."; continue; } if (ch.GetFreeBestCopy().First.ToString() == "2") { Table1.Rows[i + 2].Cells[3].Text = "Есть возможность заказать книгу на указанную дату сроком на 2 дня (включая текущий)."; continue; } if (ch.GetFreeBestCopy().First.ToString() == "3") { Table1.Rows[i + 2].Cells[3].Text = "Есть возможность заказать книгу на указанную дату сроком на 3 дня (включая текущий)."; continue; } if (ch.GetFreeBestCopy().First.ToString() == "4") { Table1.Rows[i + 2].Cells[3].Text = "Есть возможность заказать книгу на указанную дату."; continue; } } //////////////////////////////////////////////////////////////////////////////////////////////// //конец алгоритма проверки возможности выдачи книги на указанное число///////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// } if (id1.Length != 0) { id1.Remove(id1.Length - 1, 1); } if (id2.Length != 0) { id2.Remove(id2.Length - 1, 1); } if (id3.Length != 0) { id3.Remove(id3.Length - 1, 1); } if (bd.Length != 0) { bd.Remove(bd.Length - 1, 1); } string tmp = "";//исправить баг чтобы даты по всем годам не ходили!!! script = string.Format(scriptTemplate, id1, id2, id3, bd, tmp); ClientScript.RegisterStartupScript(GetType(), "InitializeCalendars", script); }
static void Main(string[] args) { /***************************************************** * SEED DATA - Could be read in as Json, XML, etc... *****************************************************/ //Items1 List <Item> items1 = new List <Item>(); items1.Add(new Item { Id = 1, Name = "book", Price = 12.49M, Quantity = 1, IsImported = false, Type = ItemType.Book }); items1.Add(new Item { Id = 2, Name = "music CD", Price = 14.99M, Quantity = 1, IsImported = false, Type = ItemType.Other }); items1.Add(new Item { Id = 3, Name = "chocolate bar", Price = 0.85M, Quantity = 1, IsImported = false, Type = ItemType.Food }); //Items2 List <Item> items2 = new List <Item>(); items2.Add(new Item { Id = 4, Name = "imported box of chocolates", Price = 10.00M, Quantity = 1, IsImported = true, Type = ItemType.Food }); items2.Add(new Item { Id = 5, Name = "imported bottle of purfume", Price = 47.50M, Quantity = 1, IsImported = true, Type = ItemType.Other }); //Items3 List <Item> items3 = new List <Item>(); items3.Add(new Item { Id = 6, Name = "imported bottle of perfume", Price = 27.99M, Quantity = 1, IsImported = true, Type = ItemType.Other }); items3.Add(new Item { Id = 7, Name = "bottle of perfume", Price = 18.99M, Quantity = 1, IsImported = false, Type = ItemType.Other }); items3.Add(new Item { Id = 8, Name = "packet of headache pills", Price = 9.75M, Quantity = 1, IsImported = false, Type = ItemType.Medical }); items3.Add(new Item { Id = 9, Name = "imported box of chocolates", Price = 11.25M, Quantity = 1, IsImported = true, Type = ItemType.Food }); //Basket1 Basket basket1 = new Basket { Id = 0, Items = items1 }; //Basket2 Basket basket2 = new Basket { Id = 0, Items = items2 }; //Basket3 Basket basket3 = new Basket { Id = 0, Items = items3 }; //Populate Basket List List <Basket> baskets = new List <Basket>(); baskets.Add(basket1); baskets.Add(basket2); baskets.Add(basket3); /********************************** * PROCESS BASKETS & PRINT RECIPTS **********************************/ //StringBuilder used to print receipts to console StringBuilder sbBaskets = new StringBuilder().AppendLine("INPUT"); StringBuilder sbReceipts = new StringBuilder().AppendLine("OUTPUT"); foreach (var basket in baskets) { try { // Print current basket sbBaskets.AppendLine(basket.PrintBasket()); // Process the basket, apply tax calculation, receipt is returned Receipt receipt = basket.ProcessBasket(); // Save updated Basket & Receipt DABasket.UpsertBasket(basket); DAReceipt.UpsertReceipt(receipt); // Print Receipts sbReceipts.AppendLine(receipt.PrintReceipt()); } catch (Exception e) { } finally { } } // Write to console Console.SetWindowSize(50, 50); Console.Write(sbBaskets.ToString()); Console.Write(sbReceipts.ToString()); // Pause for input Console.ReadLine(); }