Example #1
0
        public void BookSlotView()
        {
            SlotController slotController = new SlotController();

            RoomController    roomController    = new RoomController();
            StudentController studentController = new StudentController();

            bool   firstRoomTry = true;
            string roomId       = null;

            do
            {
                if (!firstRoomTry)
                {
                    Console.WriteLine($"Room {roomId} does not exists. Please try again!");
                }

                firstRoomTry = false;
                Console.WriteLine("Enter room name: ");
                roomId = Console.ReadLine();
            } while (!roomController.CheckIfRoomExists(roomId));

            bool   firstDateTry = true;
            string date         = null;

            do
            {
                if (!firstDateTry)
                {
                    Console.WriteLine($"{date} is not a valid date. Please try again!");
                }
                firstDateTry = false;

                Console.WriteLine("Enter date for slot (dd-mm-yyyy): ");
                date = Console.ReadLine();
            } while (!Utils.ValidateDate(date));

            bool   firstTimeTry = true;
            string time         = null;

            do
            {
                if (!firstTimeTry)
                {
                    Console.WriteLine($"{time} is not a valid time. Please try again!");
                }
                firstTimeTry = false;

                Console.WriteLine("Enter time for slot (hh:mm): ");
                time = Console.ReadLine();
            } while (!Utils.ValidateTime(time));

            DateTime starTime = DateTime.ParseExact($"{date} {time}:00", "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);

            SlotModel slot = slotController.GetSlot(roomId, starTime);

            if (slot != null)
            {
                if (slot.student == null)
                {
                    bool   firstStudentTry = true;
                    string studentId       = null;
                    do
                    {
                        if (!firstStudentTry)
                        {
                            Console.WriteLine($"{studentId} is not a valid staff. Please try again!");
                        }
                        firstStudentTry = false;

                        Console.WriteLine("Enter student ID: ");
                        studentId = Console.ReadLine();
                    } while (!(studentController.CheckIfUserExists(studentId) && studentId.StartsWith('s')));

                    slot.student = studentController.GetUser(studentId);


                    if (slotController.IsBookingAllowed(slot))
                    {
                        if (!slotController.HasExceededStaffBooking(slot))
                        {
                            slotController.BookSlot(slot);
                            Console.WriteLine("Slot has been booked successfully.");
                        }
                        else
                        {
                            Console.WriteLine($"Unable to book! Staff {slot.staff.userId} has already exceeded his booking capacity for {date}");
                        }
                    }
                    else
                    {
                        Console.WriteLine($"Unable to book! Student has already booked a slot for {date}");
                    }
                }
                else
                {
                    Console.WriteLine("Unable to book! Slot is already booked");
                }
            }
            else
            {
                Console.WriteLine("Unable to book! Slot does not exists!");
            }
        }