예제 #1
0
        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);
        }
예제 #2
0
        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();
        }