/// <summary>
        /// Francis Mingomba
        /// Created: 2019/04/03
        ///
        /// Adds a vehicle checkout to database
        /// </summary>
        /// <param name="resortVehicleCheckout">resort vehicle checkout</param>
        /// <returns>returns an id for vehicle checkout</returns>
        public int AddVehicleCheckout(ResortVehicleCheckout resortVehicleCheckout)
        {
            int id;

            var conn = DBConnection.GetDbConnection();

            const string cmdText = @"sp_create_vehicle_checkout";

            var cmd = new SqlCommand(cmdText, conn)
            {
                CommandType = CommandType.StoredProcedure
            };

            cmd.Parameters.AddWithValue("@EmployeeId", resortVehicleCheckout.EmployeeId);
            cmd.Parameters.AddWithValue("@DateCheckedOut", resortVehicleCheckout.DateCheckedOut);
            cmd.Parameters.AddWithValue("@DateReturned", (object)resortVehicleCheckout.DateReturned ?? DBNull.Value);
            cmd.Parameters.AddWithValue("@DateExpectedBack", resortVehicleCheckout.DateExpectedBack);
            cmd.Parameters.AddWithValue("@Returned", resortVehicleCheckout.Returned);
            cmd.Parameters.AddWithValue("@ResortVehicleId", resortVehicleCheckout.ResortVehicleId);

            try
            {
                conn.Open();

                id = Convert.ToInt32(cmd.ExecuteScalar());
            }
            finally
            {
                conn.Close();
            }

            return(id);
        }
        /// <summary>
        /// Francis Mingomba
        /// Created: 2019/04/03
        ///
        /// Retrieves vehicle checkout from database by vehicle checkout id
        /// </summary>
        /// <param name="resortVehicleCheckoutId">resort vehicle checkout id</param>
        /// <returns>resort vehicle checkout object</returns>
        public ResortVehicleCheckout RetrieveVehicleCheckoutById(int resortVehicleCheckoutId)
        {
            ResortVehicleCheckout resortVehicleCheckout;

            var conn = DBConnection.GetDbConnection();

            const string cmdText = @"sp_select_vehicle_checkout_by_id";

            var cmd = new SqlCommand(cmdText, conn)
            {
                CommandType = CommandType.StoredProcedure
            };

            cmd.Parameters.AddWithValue("@VehicleCheckoutId", resortVehicleCheckoutId);

            try
            {
                conn.Open();

                SqlDataReader reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    reader.Read();

                    resortVehicleCheckout = new ResortVehicleCheckout()
                    {
                        VehicleCheckoutId = reader.GetInt32(0),
                        EmployeeId        = reader.GetInt32(1),
                        DateCheckedOut    = reader.GetDateTime(2),
                        DateReturned      = reader.IsDBNull(3) ? (DateTime?)null : reader.GetDateTime(3),
                        DateExpectedBack  = reader.GetDateTime(4),
                        Returned          = reader.GetBoolean(5),
                        ResortVehicleId   = reader.GetInt32(6)
                    };
                }
                else
                {
                    throw new ApplicationException("Vehicle Checkout record not found.");
                }

                reader.Close();
            }
            finally
            {
                conn.Close();
            }

            return(resortVehicleCheckout);
        }
예제 #3
0
        /// <summary author="Francis Mingomba" created="2019/04/24">
        /// Performs vehicle checkout and changes Resort Vehicle
        /// Status and Available fields
        /// required
        /// </summary>
        /// <param name="vehicleCheckout">Vehicle to Checkout</param>
        public void CheckoutVehicle(ResortVehicleCheckout vehicleCheckout)
        {
            try
            {
                _resortVehicleCheckoutAccessor.AddVehicleCheckout(vehicleCheckout);

                CheckoutResortVehicleInResortVehiclesTable(vehicleCheckout.ResortVehicleId);
            }
            catch (Exception ex)
            {
                ExceptionLogManager.getInstance().LogException(ex);
                throw ex;
            }
        }
예제 #4
0
        /// <summary author="Francis Mingomba" created="2019/04/03">
        /// Updates Vehicle Checkout
        /// </summary>
        /// <param name="old">Old Vehicle Checkout (database copy)</param>
        /// <param name="newResortVehicleCheckOut">New Vehicle Checkout (new copy)</param>
        public void UpdateVehicleCheckouts(ResortVehicleCheckout old, ResortVehicleCheckout newResortVehicleCheckOut)
        {
            try
            {
                this.MeetsValidationCriteria(newResortVehicleCheckOut, GetResortVehicleValidationCriteria());

                _resortVehicleCheckoutAccessor.UpdateVehicleCheckouts(old, newResortVehicleCheckOut);
            }
            catch (Exception ex)
            {
                ExceptionLogManager.getInstance().LogException(ex);
                throw ex;
            }
        }
        /// <summary>
        /// Francis Mingomba
        /// Created: 2019/04/03
        ///
        /// Updates vehicle checkout in database
        /// </summary>
        /// <param name="old">old vehicle checkout (current database copy)</param>
        /// <param name="newResortVehicleCheckOut">new vehicle checkout (updated copy)</param>
        public void UpdateVehicleCheckouts(ResortVehicleCheckout old, ResortVehicleCheckout newResortVehicleCheckOut)
        {
            var conn = DBConnection.GetDbConnection();

            const string cmdText = @"sp_update_vehicle_checkout";

            var cmd = new SqlCommand(cmdText, conn)
            {
                CommandType = CommandType.StoredProcedure
            };

            cmd.Parameters.AddWithValue("@VehicleCheckoutId", old.VehicleCheckoutId);

            cmd.Parameters.AddWithValue("@OldEmployeeId", old.EmployeeId);
            cmd.Parameters.AddWithValue("@OldDateCheckedOut", old.DateCheckedOut);
            cmd.Parameters.AddWithValue("@OldDateReturned", (object)old.DateReturned ?? DBNull.Value);
            cmd.Parameters.AddWithValue("@OldDateExpectedBack", old.DateExpectedBack);
            cmd.Parameters.AddWithValue("@OldReturned", old.Returned);
            cmd.Parameters.AddWithValue("@OldResortVehicleId", old.ResortVehicleId);

            cmd.Parameters.AddWithValue("@NewEmployeeId", newResortVehicleCheckOut.EmployeeId);
            cmd.Parameters.AddWithValue("@NewDateCheckedOut", newResortVehicleCheckOut.DateCheckedOut);
            cmd.Parameters.AddWithValue("@NewDateReturned", (object)newResortVehicleCheckOut.DateReturned ?? DBNull.Value);
            cmd.Parameters.AddWithValue("@NewDateExpectedBack", newResortVehicleCheckOut.DateExpectedBack);
            cmd.Parameters.AddWithValue("@NewReturned", newResortVehicleCheckOut.Returned);
            cmd.Parameters.AddWithValue("@NewResortVehicleId", newResortVehicleCheckOut.ResortVehicleId);

            try
            {
                conn.Open();

                int result = cmd.ExecuteNonQuery();

                if (result == 0)
                {
                    // .. resort property wasn't found or old and database copy did not match
                    throw new ApplicationException("Database: Vehicle resortVehicleCheckout not updated");
                }
                else if (result > 1)
                {
                    // .. protection against change in expected stored stored procedure behaviour
                    throw new ApplicationException("Fatal Error: More than one record updated!");
                }
            }
            finally
            {
                conn.Close();
            }
        }
예제 #6
0
        public void PerformVehicleCheckout(ResortVehicleCheckout vehicleCheckout)
        {
            try
            {
                _resortVehicleCheckoutManager.CheckoutVehicle(vehicleCheckout);
            }
            catch (Exception e)
            {
                MessageBox.Show($"Failed to check out vehicle\n");
            }

            RefreshDataGrids();

            MessageBox.Show("Success");
        }
예제 #7
0
        /// <summary author="Francis Mingomba" created="2019/04/03">
        /// Adds vehicle checkout to database
        /// </summary>
        /// <param name="checkout">vehicle checkout</param>
        /// <returns>id to new vehicle checkout</returns>
        public int AddVehicleCheckout(ResortVehicleCheckout checkout)
        {
            int checkoutId;

            try
            {
                this.MeetsValidationCriteria(checkout, GetResortVehicleValidationCriteria());

                checkoutId = _resortVehicleCheckoutAccessor.AddVehicleCheckout(checkout);
            }
            catch (Exception ex)
            {
                ExceptionLogManager.getInstance().LogException(ex);
                throw ex;
            }

            return(checkoutId);
        }
        private void BtnCheckout_OnClick(object sender, RoutedEventArgs e)
        {
            if (_caller == null)
            {
                MessageBox.Show("Unexpected usage: This form is to be " +
                                "primarily used by FrmResortCheckout");
                return;
            }

            if (!ValidateDate())
            {
                return;
            }

            ResortVehicleCheckout vehicleCheckout;

            try
            {
                vehicleCheckout = new ResortVehicleCheckout
                {
                    EmployeeId       = _checkingOutEmployee.EmployeeID,
                    ResortVehicleId  = _resortVehicle.Id,
                    DateCheckedOut   = DateTime.Now,
                    DateExpectedBack = (DateTime)dtReturnDate.SelectedDate
                };
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Unexpected error: {ex.Message}");
                return;
            }

            _caller.PerformVehicleCheckout(vehicleCheckout);

            this.Close();
        }