public override void addExpense(ExpenseDetails expDetails)
        {
            SqlCommand insertCommand = new SqlCommand(INSERT_EXPENSE_SP.SP_NAME, connection);

            insertCommand.CommandType = System.Data.CommandType.StoredProcedure;
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.ID_PARAM, expDetails.getExpenseID()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.AMOUNT_PARAM, expDetails.getAmount()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.APARTMENT_ID_PARAM, Guid.Parse(expDetails.getApartment().getID())));

            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.MONTH_PARAM, expDetails.getMonth()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.NAME_PARAM, expDetails.getExpenseName()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.STATUS_PARAM, expDetails.GetExpenseStatus().ToString()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.TYPE_PARAM, expDetails.GetExpenseType().ToString()));
            insertCommand.Parameters.Add(new SqlParameter(INSERT_EXPENSE_SP.YEAR_PARAM, expDetails.getYear()));

            connection.Open();

            try
            {
                insertCommand.ExecuteNonQuery();
            }

            catch (SqlException e)
            {
                SqlCommand updateCommand = new SqlCommand(UPDATE_EXPENSE_DETAILS_SP.SP_NAME, connection);
                updateCommand.CommandType = System.Data.CommandType.StoredProcedure;
                updateCommand.Parameters.Add(new SqlParameter(UPDATE_EXPENSE_DETAILS_SP.AMOUNT_PARAM, expDetails.getAmount()));
                updateCommand.Parameters.Add(new SqlParameter(UPDATE_EXPENSE_DETAILS_SP.ID_PARAM, expDetails.getExpenseID()));
                updateCommand.Parameters.Add(new SqlParameter(UPDATE_EXPENSE_DETAILS_SP.NAME_PARAM, expDetails.getExpenseName()));

                updateCommand.ExecuteNonQuery();
            }

            finally
            {
                connection.Close();
            }
        }
        override public void deleteExpense(ExpenseDetails expense)
        {
            connection.Open();
            string     deleteQuery = "DELETE " + TABLE_EXPENSES.TABLE_NAME + " WHERE " + TABLE_EXPENSES.KEY_ID + " = '" + expense.getExpenseID().ToString() + "'";
            SqlCommand command     = new SqlCommand(deleteQuery, connection);

            try
            {
                command.ExecuteNonQuery();
            }

            catch (Exception es)
            {
                MessageBox.Show(es.Message);
            }
        }