コード例 #1
0
        public void GuestCountTest()
        {
            //arrange
            List <Person> guests = new List <Person>();
            Person        person = new Person();

            person.Name = "John";
            GuestDecorator guest = new GuestDecorator("ABC123456", 21);

            guest.SetComponent(person);
            guests.Add(guest);
            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest2 = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest2);
            int     expectedCount = 2;
            Booking booking       = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(6)),
                                                client, guests, 2);
            BreakfastDecorator breakfastDecorator = new BreakfastDecorator();

            breakfastDecorator.SetComponent(booking);

            // act
            int actualCount = breakfastDecorator.GuestCount();

            //assert
            Assert.AreEqual(expectedCount, actualCount, 0, "GuestCount not working properly");
        }
コード例 #2
0
        public void CalculateCost1()
        {
            //arrange
            List <Person> guests = new List <Person>();
            Person        person = new Person();

            person.Name = "John";
            GuestDecorator guest = new GuestDecorator("ABC123456", 21);

            guest.SetComponent(person);
            guests.Add(guest);
            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest2 = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest2);
            double  expectedAmount = 360;
            Booking booking        = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(6)),
                                                 client, guests, 2);


            //act
            double actualAmount = booking.CalculateCost();

            //assert
            Assert.AreEqual(expectedAmount, actualAmount, 0, "CalculateCost method not working properly");
        }
コード例 #3
0
        public void TotalPriceTest3()
        {
            //arrange
            List <Person>  guests = new List <Person>();
            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest  = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest);
            double  expectedAmount = 580;
            Booking booking        = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(4)),
                                                 client, guests, 2);
            EveningMealDecorator eveningMeal = new EveningMealDecorator();

            eveningMeal.SetComponent(booking);
            CarHireDecorator carHireDecorator = new CarHireDecorator();

            carHireDecorator.StartDate = DateTime.Today;
            carHireDecorator.EndDate   = DateTime.Today.Add(TimeSpan.FromDays(4));
            carHireDecorator.SetComponent(eveningMeal);


            // act
            double actualAmount = carHireDecorator.TotalPriece();

            //assert
            Assert.AreEqual(expectedAmount, actualAmount, 0, "TotalPrice method working properly");
        }
コード例 #4
0
        string oldPassportNo; // used when updating guest's passport number
        public CustomerDetails()
        {
            InitializeComponent();
            // below code retreives customer's details from database and displays it in the window
            List <Person> clientList = DataLayerFacade.GetCustomer(CustomerL.customerNumber);

            this.Topmost = true;
            Client client = (Client)clientList.ElementAt(0);

            textBoxName.Text         = client.Name;
            textBoxAddress.Text      = client.Address;
            textBoxPassNo.MaxLength  = 10;
            textBoxAddress.MaxLength = 150;
            textBoxName.MaxLength    = 50;
            lblCustNumb.Content      = client.CustomerNumber;
            List <Person> guestDecorator = DataLayerFacade.GetGuestDecorator(CustomerL.customerNumber, 0);

            if (guestDecorator.Count == 0)
            {
                textBoxPassNo.Visibility = Visibility.Hidden;
                textBoxAge.Visibility    = Visibility.Hidden;
                lblPassNo.Visibility     = Visibility.Hidden;
                lblAge.Visibility        = Visibility.Hidden;
            }
            else
            {
                // if the customer is also a guest, the guest's details are also displayed
                GuestDecorator guest = (GuestDecorator)guestDecorator.ElementAt(0);
                guest.SetComponent(client);
                textBoxPassNo.Text = guest.PassportNumber;
                oldPassportNo      = guest.PassportNumber;
                textBoxAge.Text    = guest.Age.ToString();
            }
        }
コード例 #5
0
        public void TotalPriceTest2()
        {
            //arrange
            List <Person> guests = new List <Person>();
            Person        person = new Person();

            person.Name = "John";
            GuestDecorator guest1 = new GuestDecorator("ABC123456", 21);

            guest1.SetComponent(person);
            guests.Add(guest1);
            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest  = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest);
            double  expectedAmount = 390;
            Booking booking        = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(3)),
                                                 client, guests, 2);
            EveningMealDecorator eveningMeal = new EveningMealDecorator();

            eveningMeal.SetComponent(booking);


            // act
            double actualAmount = eveningMeal.TotalPriece();

            //assert
            Assert.AreEqual(expectedAmount, actualAmount, 0, "TotalPrice method working properly");
        }
コード例 #6
0
 // logic for selecting a guest from the guest list. Set the selected guest and enables edit and
 //delete buttons
 private void listBoxGuests_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (listBoxGuests.SelectedIndex == -1)
     {
         return;
     }
     foreach (var guest in booking.GuestList)
     {
         if ((string)listBoxGuests.SelectedItem == guest.Name)
         {
             selectedGuest = (GuestDecorator)guest;
         }
     }
     btnDelGuest.IsEnabled   = true;
     btnAmendGuest.IsEnabled = true;
 }
コード例 #7
0
 // populates guest details if client is also a guest
 private void checkBoxGuest_Checked(object sender, RoutedEventArgs e)
 {
     txtBoxGuestName.Text = txtBoxCustName.Text;
     if (checkBoxExistCust.IsChecked == true)
     {
         // for an existing customer a check is done if he/she was also a guest so the
         // guest details can be used in a new booking
         var selectedCustomer = DataLayerFacade.GetOneCustomerDetails(txtBoxCustName.Text);
         var guestDetailsList = DataLayerFacade.GetGuestDecorator(selectedCustomer.Id, 0);
         if (guestDetailsList.Count != 0)
         {
             GuestDecorator guest = (GuestDecorator)guestDetailsList.ElementAt(0);
             txtBoxGuestAge.Text     = guest.Age.ToString();
             txtBoxGuestPasspNo.Text = guest.PassportNumber;
         }
     }
 }
コード例 #8
0
        // if a customer is also a guest it retreives a customer object wrapped in a guest decorator
        public static List <Person> GetGuestDecorator(int customerNmber, int bookingRef)
        {
            List <Person>    guestList     = new List <Person>();
            List <GuestItem> guestItemList = DatabaseCalls.GetGuestsDetails(customerNmber, bookingRef);

            if (guestItemList.Count == 0)
            {
                return(guestList);
            }
            foreach (var item in guestItemList)
            {
                Person person = new Person {
                    Name = item.Name
                };
                GuestDecorator guest = new GuestDecorator(item.PassportNumber, item.Age);
                guest.SetComponent(person);
                guestList.Add(guest);
            }
            return(guestList);
        }
コード例 #9
0
        public void TotalPriceTest1()
        {
            //arrange
            List <Person> guests = new List <Person>();

            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest  = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest);
            double  expectedAmount = 595;
            Booking booking        = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(7)),
                                                 client, guests, 2);


            // act
            double actualAmount = booking.TotalPriece();

            //assert
            Assert.AreEqual(expectedAmount, actualAmount, 0, "TotalPrice method working properly");
        }
コード例 #10
0
        // retreives all information for a booking and reconstructs it into an object
        public static AbstractBooking RetreiveBooking(int bookingId)
        {
            Client                  customer       = null;
            List <Person>           guestList      = new List <Person>();
            int                     customerRef    = DatabaseCalls.GetCustIdForBooking(bookingId);
            CustomerItem            customerItem   = DatabaseCalls.GetCustomersDetails(customerRef).ElementAt(0);
            BusinessFacadeSingleton businessFacade = BusinessFacadeSingleton.Instance();

            customer = businessFacade.CreateClient(customerItem.Id, customerItem.Name, customerItem.Address);

            foreach (var guestItem in DatabaseCalls.GetGuestsDetails(0, bookingId))
            {
                GuestDecorator guest = businessFacade.CreateGuest(guestItem.Name, guestItem.PassportNumber, guestItem.Age);
                if (DatabaseCalls.IsCustomer(guest.Name))
                {
                    guest.SetComponent(customer);
                }
                guestList.Add(guest);
            }
            BookingItem bookingItem = DatabaseCalls.GetBookingDetails(bookingId);
            CarHireItem carHireItem = DatabaseCalls.GetCarHireDetails(bookingId);
            bool        carHire     = false;
            string      driver      = "";
            DateTime    hireStart   = DateTime.Today;
            DateTime    hireEnd     = DateTime.Today;

            if (carHireItem != null)
            {
                carHire   = true;
                driver    = carHireItem.Driver;
                hireStart = carHireItem.HireStart;
                hireEnd   = carHireItem.HireEnd;
            }
            var booking = businessFacade.CreateBooking(bookingId, bookingItem.Arrival, bookingItem.Departure, customer, guestList,
                                                       bookingItem.ChaletId, bookingItem.EveningMeal, bookingItem.Breakfast, carHire, hireStart,
                                                       hireEnd, driver);

            return(booking);
        }
コード例 #11
0
        public void NightCountTest()
        {
            //arrange
            List <Person> guests = new List <Person>();

            Client         client = new Client(1, "Marry", "Edinburgh");
            GuestDecorator guest  = new GuestDecorator("XYZ987456", 25);

            guest.SetComponent(client);
            guests.Add(guest);
            int     expectedCount = 6;
            Booking booking       = new Booking(1, DateTime.Today, DateTime.Today.Add(TimeSpan.FromDays(6)),
                                                client, guests, 2);
            EveningMealDecorator eveningMeal = new EveningMealDecorator();

            eveningMeal.SetComponent(booking);

            //act
            int actualCount = eveningMeal.NightCount();

            //assert
            Assert.AreEqual(expectedCount, actualCount, 0, "NightCount method not working properly");
        }
コード例 #12
0
 // savel all booking data in the database tables
 public static void SaveBooking(AbstractBooking booking, bool breakfast, bool eveningMeal)
 {
     DatabaseCalls.AddBooking(booking.BookingRefNo, booking.ArrivalDate, booking.DepartureDate,
                              booking.ChaletId, breakfast, eveningMeal);
     DatabaseCalls.CreateCustomer(booking.Client.CustomerNumber, booking.Client.Name,
                                  booking.Client.Address);
     DatabaseCalls.LinkClientToBooking(booking.BookingRefNo, booking.Client.CustomerNumber);
     foreach (var guest in booking.GuestList) // each guest is saved separately in the database
     {
         GuestDecorator guestDec = (GuestDecorator)guest;
         DatabaseCalls.CreateGuest(guestDec.Name, guestDec.PassportNumber,
                                   guestDec.Age);
         DatabaseCalls.LinkGuestToBooking(booking.BookingRefNo, guestDec.PassportNumber);
         if (guestDec.Component != null)
         {
             DatabaseCalls.LinkCustomerGuest(booking.Client.CustomerNumber, guestDec.PassportNumber);
         }
     }
     if (booking.GetType() == typeof(CarHireDecorator))
     {
         DatabaseCalls.AddCarHire(((CarHireDecorator)booking).Driver, booking.BookingRefNo,
                                  ((CarHireDecorator)booking).StartDate, ((CarHireDecorator)booking).EndDate);
     }
 }
コード例 #13
0
        // logic for add guest button. Adds a guest to guest list
        private void btnAddGuest_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtBoxGuestName.Text.Equals(String.Empty) ||
                    txtBoxGuestAge.Text.Equals(String.Empty) ||
                    txtBoxGuestPasspNo.Text.Equals(String.Empty))
                {
                    MessageBox.Show("Please provide all guest's details");
                    return;
                }
                string guestName  = txtBoxGuestName.Text;
                string passportNo = txtBoxGuestPasspNo.Text;
                int    age;
                try
                {
                    age = Convert.ToInt32(txtBoxGuestAge.Text);
                }
                catch (Exception)
                {
                    MessageBox.Show("Please provide age up to 101 as a number.");
                    return;
                }

                string         address = txtBoxCustAddress.Text;
                var            facade  = BusinessFacadeSingleton.Instance();
                GuestDecorator guest   = null;
                // below code checks retreives details of an existing customer(s) if an existing customer
                // wished to make a new booking
                if (checkBoxAddAsGuest.IsChecked == true && checkBoxExistCust.IsChecked == false)
                {
                    if (txtBoxCustName.Text == String.Empty || txtBoxCustAddress.Text == String.Empty)
                    {
                        MessageBox.Show("Please provide customer details.");
                        return;
                    }
                    int customerNumber = DataLayerFacade.GetNextCustomerNumber();
                    client = facade.CreateClient(customerNumber, guestName, address);
                    guest  = facade.CreateClientGuest(client, passportNo, age);
                }
                else
                {
                    guest = facade.CreateGuest(guestName, passportNo, age);
                    if (client == null)
                    {
                        // checks if the existing customer was also a guest so the guest details can be used
                        if (checkBoxExistCust.IsChecked == true)
                        {
                            var existingCustomerDetails = DataLayerFacade.GetOneCustomerDetails(txtBoxCustName.Text);
                            existingClient = new Client(existingCustomerDetails.Id, existingCustomerDetails.Name, existingCustomerDetails.Address);
                            if (existingClient == null)
                            {
                                MessageBox.Show("Please provide client's details.");
                                return;
                            }
                            client = existingClient;
                        }
                        else
                        {
                            if (txtBoxCustName.Text == String.Empty || txtBoxCustAddress.Text == String.Empty)
                            {
                                MessageBox.Show("Please provide customer details.");
                                return;
                            }
                            int    customerNumber = DataLayerFacade.GetNextCustomerNumber();
                            string clientName     = txtBoxCustName.Text;
                            string clinetAddress  = txtBoxCustAddress.Text;
                            client = facade.CreateClient(customerNumber, clientName, clinetAddress);
                        }
                    }
                }
                guests.Add(guest);
                if (guests.Count == 6)
                {
                    MessageBox.Show("You have reached the maxumum number of guests");
                    txtBoxGuestName.IsReadOnly    = true;
                    txtBoxGuestAge.IsReadOnly     = true;
                    txtBoxGuestPasspNo.IsReadOnly = true;
                }

                listBoxGuestList.Items.Add(guestName);
                comBoxDriver.Items.Add(guestName);// ads the name to a combo box so it can be selected as a driver
                txtBoxGuestName.Text         = "";
                txtBoxGuestPasspNo.Text      = "";
                txtBoxGuestAge.Text          = "";
                checkBoxAddAsGuest.IsChecked = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }