static void Main(string[] args) { BL.Ibl bl = new FactoryBL().GetBL(); SelectFunc choice = (SelectFunc)100; #region presentation Console.WriteLine("What do you want to do?"); Console.WriteLine("insert 1 to add guest request"); Console.WriteLine("insert 2 to update guest request"); Console.WriteLine("insert 3 to add hosting unit if the owner is exist in the system"); Console.WriteLine("insert" + SelectFunc.AddUnitOnly + "to add hosting unit if the owner isn't exist in the system"); Console.WriteLine("insert 4 to delete hosting unit"); Console.WriteLine("insert 5 to update hosting unit"); Console.WriteLine("insert 6 to add order"); Console.WriteLine("insert 7 to update order"); Console.WriteLine("insert 8 to get all hosting units"); Console.WriteLine("insert 9 to get all guest requests"); Console.WriteLine("insert 10 to get all orders"); Console.WriteLine("insert 11 to get all banks"); Console.WriteLine("insert 12 to get the possible units for certian date"); Console.WriteLine("insert 13 to get the days between two dates or" + "from some date to today"); Console.WriteLine("insert 14 to get all the orders the time from their creation" + "or mail was send is large or equal from number of days"); Console.WriteLine("insert 15 to get number of orders per guest requests"); Console.WriteLine("insert 16 to get number of orders per hosting unit"); Console.WriteLine("insert 17 to get all the guest request grouping by area"); Console.WriteLine("insert 18 to get all the guest request grouping by number of guests"); Console.WriteLine("insert 19 to get all the hosts grouping by the number of hosting units they own"); Console.WriteLine("insert 20 to get all the hosting unit grouping by area"); Console.WriteLine("insert 21 to get all the orders hey grouping by the hosting unit" + "of them"); Console.WriteLine("insert 0 to exit"); #endregion string input; input = Console.ReadLine(); choice = (SelectFunc)Convert.ToInt32(input); while (choice != 0) { switch (choice) { case SelectFunc.AddRequest: GuestRequest g = new GuestRequest(); Console.WriteLine("insert first name"); g.FirstName = Console.ReadLine(); Console.WriteLine("insert last name"); g.LastName = Console.ReadLine(); Console.WriteLine("insert mail adress"); g.MailAddress = Console.ReadLine(); Console.WriteLine("insert area:"); Console.WriteLine("insert 0 for all areas"); Console.WriteLine("insert 1 for north"); Console.WriteLine("insert 2 for south"); Console.WriteLine("insert 3 for center"); Console.WriteLine("insert 4 for jerusalem"); g.Area = (Areas)Convert.ToInt32(Console.ReadLine()); Console.WriteLine("insert sub area"); g.SubArea = Console.ReadLine(); Console.WriteLine("insert number of adults"); g.Adults = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("insert number of children"); g.Children = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("insert entry date"); g.EntryDate = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("insert release date"); g.ReleaseDate = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("For all the next questions:"); Console.WriteLine("insert 0 if it not necessary"); Console.WriteLine("insert 1 for possible"); Console.WriteLine("insert 2 if it necessary"); Console.WriteLine("Do you want children attractions?"); g.ChildrensAttractions = (Choice)Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Do you want a garden in the unit?"); g.Garden = (Choice)Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Do you want a jacuzzi?"); g.Jacuzzi = (Choice)Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Do you want swimming pool?"); g.Pool = (Choice)Convert.ToInt32(Console.ReadLine()); try { bl.AddRequest(g); } catch (InvalidEnumArgumentException ex) { Console.WriteLine(ex.Message); } catch (DuplicateWaitObjectException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.UpdateRequest: Console.WriteLine("insert the key number of request you want " + "to update"); long key = Convert.ToInt64(Console.ReadLine()); Console.WriteLine("insert the number of the new status"); Console.WriteLine("insert 1 if deal complete"); Console.WriteLine("insert 2 for timeOut"); int newStatus = Convert.ToInt32(Console.ReadLine()); try { bl.UpdateRequest(key, (GuestRequestStatus)newStatus); } catch (InvalidEnumArgumentException ex) { Console.WriteLine(ex.Message); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.AddUnitAndOwner: HostingUnit unit = new HostingUnit(); Console.WriteLine("insert hosting unit name"); unit.HostingUnitName = Console.ReadLine(); Console.WriteLine("Insert hosting unit area"); unit.Area = (Areas)Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Insert hosting unit sub area"); unit.SubArea = Console.ReadLine(); Host host = new Host(); Console.WriteLine("insert owner's first name"); host.FirstName = Console.ReadLine(); Console.WriteLine("insert owner's last name"); host.LastName = Console.ReadLine(); Console.WriteLine("insert owner's mail address"); host.MailAddress = Console.ReadLine(); Console.WriteLine("insert owner's phone number"); host.FhoneNumber = Convert.ToInt64(Console.ReadLine()); host.BankBranchDetails = new Bankdetails(); Console.WriteLine("insert owner's bank account number"); host.BankBranchDetails.BankAccountNumber = Convert.ToInt64(Console.ReadLine()); Console.WriteLine("Feel the bank branch details according this list"); foreach (var item in bl.GetAllBanks()) { Console.WriteLine(item); Console.WriteLine(); } Console.WriteLine("insert bank number"); int bankNumber = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("insert branch number"); int branchNumber = Convert.ToInt32(Console.ReadLine()); try { // host.BankBranchDetails = bl.FindBranch(bankNumber, branchNumber); bl.AddUnitAndHost(unit, host); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } catch (InvalidEnumArgumentException ex) { Console.WriteLine(ex.Message); } catch (DuplicateWaitObjectException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.AddUnitOnly: HostingUnit unit1 = new HostingUnit(); Console.WriteLine("insert hosting unit name"); unit1.HostingUnitName = Console.ReadLine(); Console.WriteLine("Insert hosting unit area"); unit1.Area = (Areas)Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Insert hosting unit sub area"); unit1.SubArea = Console.ReadLine(); Console.WriteLine("Insert owner's key"); try { unit1.Owner = bl.FindHostByKey(Convert.ToInt64(Console.ReadLine())); bl.AddUnit(unit1); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (InvalidEnumArgumentException ex) { Console.WriteLine(ex.Message); } catch (DuplicateWaitObjectException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.UpdateUnit: Console.WriteLine("insert the key of the hosting unit you want to update"); long hKey = Convert.ToInt64(Console.ReadLine()); DateTime date = new DateTime(); int days; Console.WriteLine("what do you want to do?"); Console.WriteLine("for change the diary insert 1"); Console.WriteLine("for change the hosting unit name insert 2"); Console.WriteLine("for end insert 0"); int switchOn = Convert.ToInt32(Console.ReadLine()); while (switchOn != 0) { switch (switchOn) { case 1: Console.WriteLine("Insert date of beginning and number of " + "days you want to close"); date = Convert.ToDateTime(Console.ReadLine()); days = Convert.ToInt32(Console.ReadLine()); try { bl.UpdateUnitDiary(hKey, date, days); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } catch (ArgumentNullException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } break; case 2: Console.WriteLine("Insert the new name"); try { bl.UpdateUnitName(hKey, Console.ReadLine()); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } catch (ArgumentNullException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } break; default: Console.WriteLine("ERROR"); break; } switchOn = Convert.ToInt32(Console.ReadLine()); } break; case SelectFunc.DeleteUnit: Console.WriteLine("insert the key of the hosting unit you want to delete"); try { bl.DeleteUnit(Convert.ToInt64(Console.ReadLine())); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentNullException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.AddOrder: Console.WriteLine("insert the key of the hosting unit you want to add order to" + "and the key of the guest request"); try { bl.AddOrder(Convert.ToInt64(Console.ReadLine()), Convert.ToInt64(Console.ReadLine())); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } catch (ArgumentNullException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } catch (DataException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.UpdateOrder: Console.WriteLine("insert the key of the order you want update and the new status"); Console.WriteLine("insert 1 to mail send"); Console.WriteLine("insert 2 if the order closed fbecause their was not respnse"); Console.WriteLine("insert 3 if the order canceled"); Console.WriteLine("insert 4 if dill was made"); try { bl.UpdateOrder(Convert.ToInt64(Console.ReadLine()) , (OrderStatus)Convert.ToInt16(Console.ReadLine())); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } catch (ArgumentOutOfRangeException ex) { Console.WriteLine(ex.Message); } catch (ArgumentNullException ex) { Console.WriteLine(ex.Message); } catch (ArgumentException ex) { Console.WriteLine(ex.Message); } catch (DataException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.GetAllUnits: foreach (var item in bl.GetAllUnits()) { Console.WriteLine(item); } break; case SelectFunc.GetAllRequests: foreach (var item in bl.GetAllRequests()) { Console.WriteLine(item); } break; case SelectFunc.GetAllOrders: foreach (var item in bl.GetAllOrders()) { Console.WriteLine(item); } break; case SelectFunc.GetAllBanks: foreach (var item in bl.GetAllBanks()) { Console.WriteLine(item); } break; case SelectFunc.PossibleHstUnt: Console.WriteLine("enter a date"); DateTime date2; date2 = Convert.ToDateTime(Console.ReadLine()); Console.WriteLine("enter number of days"); uint days1 = Convert.ToUInt32(Console.ReadLine()); try { foreach (var item in bl.PossibleHstUnt(date2, days1)) { Console.WriteLine(item); } } catch (IndexOutOfRangeException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.DaysBetween: Console.WriteLine("insert 1 to find the range between days and 2 " + "to find the range between date and today"); int switch_on = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("insert beginning date"); DateTime date1 = Convert.ToDateTime(Console.ReadLine()); DateTime date_2; switch (switch_on) { case 1: Console.WriteLine("insert end date"); date_2 = Convert.ToDateTime(Console.ReadLine()); bl.DaysBetween(date1, date_2); break; case 2: bl.DaysBetween(date1); break; } break; case SelectFunc.DaysExist: Console.WriteLine("insert number of days"); uint numOfDays = Convert.ToUInt32(Console.ReadLine()); foreach (var item in bl.DaysExist(numOfDays)) { Console.WriteLine(item); } break; case SelectFunc.NumOfOrdersPerReq: try { Console.WriteLine("insert key of guest request"); GuestRequest req = bl.FindReqByKey(Convert.ToInt64(Console.ReadLine())); Console.WriteLine(bl.NumOfOrdersPerReq(req)); } catch (KeyNotFoundException ex) { Console.WriteLine(ex.Message); } break; case SelectFunc.NumOfOrdersPerUnit: Console.WriteLine("insert key of hosting unit"); HostingUnit ho = bl.FindUnitByKey(Convert.ToInt64(Console.ReadLine())); Console.WriteLine(bl.NumOfOrdersPerUnit(ho)); break; case SelectFunc.HostsGroupByUnits: foreach (var group in bl.HostsGroupByUnits()) { foreach (var item in group) { Console.WriteLine(item); } Console.WriteLine(); } break; case SelectFunc.ReqGroupByArea: foreach (var group in bl.ReqGroupByArea()) { foreach (var item in group) { Console.WriteLine(item); } Console.WriteLine(); } break; case SelectFunc.ReqGroupByGuestNum: foreach (var group in bl.ReqGroupByGuestNum()) { foreach (var item in group) { Console.WriteLine(item); } Console.WriteLine(); } break; case SelectFunc.UnitsGroupByArea: foreach (var group in bl.UnitsGroupByArea()) { foreach (var item in group) { Console.WriteLine(item); } Console.WriteLine(); } break; case SelectFunc.OrdersGroupByUnit: foreach (var group in bl.OrdersGroupByUnit()) { foreach (var item in group) { Console.WriteLine(item); } Console.WriteLine(); } break; default: Console.WriteLine("ERROR"); break; } Console.WriteLine("Please enter your choice:"); input = Console.ReadLine(); choice = (SelectFunc)Convert.ToInt32(input); } }