/// <inheritdoc /> public ReservationConstraintsMessage PlaceReservation(int boatType, int memberId, DateTime reservationDate, TimeSpan duration) { var availableBoats = GetAvailableBoats(reservationDate, duration).Where(boat => boat.BoatTypeId == boatType && boat.Status != (int)BoatState.InService).ToList(); // Checks if the reservation doesn't violate any constraints var message = ReservationConstraints.IsValid(reservationDate, duration, this, memberId); if (!message.IsValid) { return(message); } // Check if there is an available boat if (availableBoats.Count > 0) { SailingBoat boatToReserve = null; // Take the boat with most reservations var max = int.MinValue; foreach (var boat in availableBoats) { if (boat.SailingReservations.Count >= max) { boatToReserve = boat; max = boat.SailingReservations.Count; } } //Create a reservation for this boat _context.Reservations.Add(new SailingReservation { Date = reservationDate, Duration = duration, ReservedByUserId = memberId, ReservedSailingBoatId = boatToReserve.Id }); _context.SaveChanges(); return(new ReservationConstraintsMessage(true, "Reservering is geplaatst")); } return(new ReservationConstraintsMessage(false, "Geen boten beschikbaar.")); }
public void SailingBoat_Constructor_Test() { // Assert.Pass(); // Arrange // expected IVehicle vehicle = new SailingBoat("ABC 123", "Röd", 2); // Act // actual string strActualRegistrationNumber = ((Vehicle)vehicle).RegistrationNumber; string strActualColor = ((Vehicle)vehicle).Color; int iActualNumberOfEngins = ((SailingBoat)vehicle).NumberOfEngines; // Assert Assert.AreEqual("ABC 123", strActualRegistrationNumber); Assert.AreEqual("RÖD", strActualColor); Assert.AreEqual(2, iActualNumberOfEngins); }
public Boat createBoat() { int boatLen = 0; int boatType = 0; int boatDraft = 0; string strBoatOwner = string.Empty; string strBoatName = string.Empty; Boat Boat = null; while (true) { Console.WriteLine("Enter Boat Length"); string strBoatLength = Console.ReadLine(); if (!string.IsNullOrEmpty(strBoatLength)) { int.TryParse(strBoatLength, out boatLen); } if (boatLen < 1) { Console.WriteLine("Boat Length Cannot be less tha 1 meter"); } if (boatLen > marinaLength || boatLen < 1) { Console.WriteLine("Boat Length Cannot be Greater than Marina Length or less than 1 meter"); } //else if(boatLen>(Marina.getCurrentCapacityMarinaLength()-Marina.MarinaLength)) else if (boatLen > (marinaLength - Marina.getCurrentCapacityMarinaLength())) { throw new ArgumentException("The current marina capacity of " + Marina.getCurrentCapacityMarinaLength().ToString() + " will not be enough to accomodate this boat"); } else { break; } } while (true) { Console.WriteLine("Enter Boat Draft"); string strBoatDraft = Console.ReadLine(); if (!string.IsNullOrEmpty(strBoatDraft)) { int.TryParse(strBoatDraft, out boatDraft); } if (boatDraft < 1) { Console.WriteLine("Boat Draft Cannot be less tha 1 meter"); } if (boatDraft > 5 || boatDraft < 1) { Console.WriteLine("Boat Draft Cannot be Greater than 5 meters or less than 1 meter"); } else { break; } } //check reservation here bool proceed = calculateBoatResrvation(); if (proceed) { while (true) { Console.WriteLine("Enter Boat Owner"); strBoatOwner = Console.ReadLine(); if (!string.IsNullOrEmpty(strBoatOwner)) { break; } } while (true) { Console.WriteLine("Enter Boat Name"); strBoatName = Console.ReadLine(); if (!string.IsNullOrEmpty(strBoatName)) { break; } } Console.WriteLine("Choose Boat Type:"); while (true) { try { boatType = DisplayManager.displayBoatTypesMenu(); break; } catch (Exception ex) { DisplayManager.displayMessage(ex.Message); } } switch (boatType) { case 1: MotorBoat MB = (Factory.MotorBoat)BoatFactory.BuildBoat(boatType); int mbSubtype = BoatFactory.BuildBoatSubTypes(boatType); MB.DriveType = MB.GetEnumNameFromValue(mbSubtype); Boat = MB; break; case 2: // NarrowBoat NB = new NarrowBoat("NarrowBoat", boatType); NarrowBoat NB = (Factory.NarrowBoat)BoatFactory.BuildBoat(boatType); int nbSubtype = BoatFactory.BuildBoatSubTypes(boatType); NB.SternType = NB.GetEnumNameFromValue(nbSubtype); Boat = NB; break; case 3: //SailingBoat SB = new SailingBoat("Sailing", boatType); SailingBoat SB = (Factory.SailingBoat)BoatFactory.BuildBoat(boatType); int sbSubtype = BoatFactory.BuildBoatSubTypes(boatType); SB.SailingType = SB.GetEnumNameFromValue(sbSubtype); Boat = SB; break; default: break; } if (Boat != null) { Boat.BoatLength = boatLen; Boat.NameOfBoat = strBoatName; Boat.NameOfOwner = strBoatOwner; Boat.BoatDraft = boatDraft; Factory.BoatHelperClass.showDetails(Boat); } } else { throw new Exception("User terminated Booking transaction"); } return(Boat); }