public static void DisRec() { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("ALL RECORDS AND AVAILABLE SPACE" + Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; //check the available space in the berth double spaceAvailable = MarinaTools.spaceAvailable(); Console.WriteLine("The current available space in the berth is " + spaceAvailable + "m" + Environment.NewLine); Console.WriteLine("All the bookings:" + Environment.NewLine); Console.ForegroundColor = ConsoleColor.Yellow; //Call a method to read from the list of all records RecordList recordsList = MarinaTools.readList(); //Print all the records foreach (var item in recordsList) { Console.WriteLine(item + Environment.NewLine); } Console.WriteLine(Environment.NewLine + "Press enter to go back to the main menu"); Console.ResetColor(); MarinaTools.goBackMainMenu(); }
public static void deleteByNames() { Console.Clear(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("DELETE A RECORD" + Environment.NewLine); //Call a method to read from the list of all records RecordList recordsList = MarinaTools.readList(); Console.WriteLine("In order to delete your booking we need you to input some information: " + Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; bool repeat; string oName, bName; do { Console.WriteLine("Name of the owner > "); oName = Console.ReadLine(); repeat = MarinaTools.checkStringInput(oName); } while (repeat == true); do { Console.WriteLine("Name of the boat > "); bName = Console.ReadLine(); repeat = MarinaTools.checkStringInput(bName); } while (repeat == true); //find the records that contain the inserted owner name and owner boat IEnumerable <RecordNode> delList = recordsList.Where(record => (record.getName() == oName) && (record.getBoat() == bName)); if (delList.Count() != 0) { Console.WriteLine(String.Join(Environment.NewLine, delList)); Console.WriteLine("Insert the position number that you want to delete >"); string inputNumber; do { inputNumber = Console.ReadLine(); }while (repeat == true); int delNumber = int.Parse(inputNumber); finalDelCheck(delNumber, recordsList); } else { Console.WriteLine("The entered details have 0 matches. Press enter to go back to the main menu."); MarinaTools.goBackMainMenu(); } }
public static void checkBoatDraft(double draft) //check the draft of the boat and if it is over tha max go back to the main menu { int maxDraft = 5; if (draft > maxDraft) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("We are sorry but the boat is too deep. Press enter to go back to the main menu"); MarinaTools.goBackMainMenu(); } }
public static void checkBoatLength(double lenght) //check the lenght of the boat and if it is too big go back to the main menu { int maxLength = 15; if (lenght > maxLength) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("We are sorry but the boat is too long. Press enter to go back to the main menu"); MarinaTools.goBackMainMenu(); } }
public static void deleteRecord(int number, RecordList list) // removes a record from the list and displays the boats that have to be moved in the holding bay { int count = list.Count(); int movments = count - number - 1; IEnumerable <RecordNode> movList = list.Where(record => (record.getPosition() > number)); Console.Clear(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("DELETE A RECORD" + Environment.NewLine); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("The record has been succesfully deleted." + Environment.NewLine); if (movList.Count() != 0) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("In order to leave access out to that boat, you have to move in the holding bay the following " + movments + " boat/s:" + Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; Console.WriteLine(String.Join(Environment.NewLine, movList)); } else { Console.WriteLine("There is no need to move any other boat to leave access out to this one."); } Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(Environment.NewLine + "Press enter to go back to the main menu."); list.removeRecordAt(number); if (list.EmptyCheck() != 0) // check if the list is empty { MarinaTools.writeList(list); } else { MarinaTools.writeEmptyList(); //if the last record has been removed, clear all the text in the file. Using the binary formatter in this case, leaves some strings in the file that interfer with the creation of new records. } MarinaTools.goBackMainMenu(); }
public static void finalDelCheck(int number, RecordList list) // the user is asked to confirm the deleting { bool repeat = false; do { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Are you sure to delete record number " + number + " ? Typet Y to confirm or N to go back to the main menu."); Console.ForegroundColor = ConsoleColor.White; string inputDecision = Console.ReadLine(); //converting every input to low case to avoid errors due to input format string lowDecision = inputDecision.ToLower(new CultureInfo("en-US", false)); char decision = lowDecision[0]; switch (decision) { case 'n': Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("No record has been deleted. Press enter to go back to the main menu. Thank you"); MarinaTools.goBackMainMenu(); break; case 'y': DeleteRecords.deleteRecord(number, list); break; default: Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("You did not insert a valid option. Try again"); Console.ForegroundColor = ConsoleColor.White; repeat = true; break; } }while (repeat == true); }
public static void recordValidation() // the boat measures are checked and the rental price is offered { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("BOOKING PAGE" + Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; bool repeat; //variable used to control the following loops string inputLength, inputDraft; do { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Insert the boat length in meters > "); inputLength = Console.ReadLine(); //check if the input is valid or restart the loop repeat = MarinaTools.checkDoubleInput(inputLength); }while (repeat == true); double length = double.Parse(inputLength.Trim()); //check that the boat is not too long MarinaTools.checkBoatLength(length); do { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Insert the boat draft in meters > "); inputDraft = Console.ReadLine(); repeat = MarinaTools.checkDoubleInput(inputDraft); }while (repeat == true); double draft = double.Parse(inputDraft.Trim()); //check that the boat is not to deep MarinaTools.checkBoatDraft(draft); // check if there is space available double spaceAvailable = MarinaTools.spaceAvailable(); if (length > spaceAvailable) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("We are sorry but there is no space available for your boat. Press enter to go back to the main menu"); MarinaTools.goBackMainMenu(); } //calculation of the rent price for the chosen period string inputMonths; do { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Input the duration of your stay in months >"); Console.ForegroundColor = ConsoleColor.White; inputMonths = Console.ReadLine(); repeat = MarinaTools.checkIntInput(inputMonths); } while(repeat == true); int months = int.Parse(inputMonths.Trim()); double price = months * length * 10; // formula to calculate the rental price Console.WriteLine("The price of the stay is " + price + "$"); DateTime now = DateTime.Now; string rentEnd = now.AddMonths(months).ToString(); //user can decide to accept or deny the offer do { string inputDecision; do //validate the input { Console.WriteLine("Enter Y to confirm the booking or N to reject it >"); inputDecision = Console.ReadLine(); repeat = MarinaTools.checkStringInput(inputDecision); } while (repeat == true); string lowDecision = inputDecision.ToLower(new CultureInfo("en-US", false)); char decision = lowDecision[0]; switch (decision) { case 'n': Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("No record has been booked. Press enter to go back to the main menu. Thank you"); MarinaTools.goBackMainMenu(); break; case 'y': RecordNode lenghtAndPriceAndDate = new RecordNode(length, price, rentEnd); newRecord(); break; default: Console.WriteLine("You did not insert a valid option. Try again"); repeat = true; break; } }while (repeat == true); }
public static void newRecord() // here is where the user input the information for the new object and where I create the record objects and the list { Console.ForegroundColor = ConsoleColor.White; Console.Clear(); // user inputs info for his booking record Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("In order to complete the booking you have to to input some information: " + Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; bool repeat; string oName, bName; char bType; do { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Name of the owner > "); oName = (Console.ReadLine()).Trim(); repeat = MarinaTools.checkStringInput(oName); } while (repeat == true); do { Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Name of the boat > "); bName = (Console.ReadLine()).Trim(); repeat = MarinaTools.checkStringInput(bName); } while (repeat == true); string inputType; do { Console.WriteLine("input the type of the boat: N for narrow, S for sailing, M for motor > "); inputType = Console.ReadLine(); repeat = MarinaTools.checkBoatType(inputType); //method that validates the user input for the boat type } while (repeat == true); string lowInputType = inputType.ToLower(new CultureInfo("en-US", false)); bType = lowInputType[0]; //reads the list from the file or creates a new one RecordList recordsList = MarinaTools.readList(); //counts the number of records in the list in order to assign a position to the current object int bPosition = recordsList.Count(); //Creates an object containing all the customer information RecordNode record = new RecordNode(oName, bName, bType, bPosition); //adds the current object at the end of the list recordsList.addRecordAtEnd(record); //Serializes and rewrite the list in the file of booking MarinaTools.writeList(recordsList); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Your booking is confirmed. Press enter to go back to the main menu."); MarinaTools.goBackMainMenu(); }