WP_Query within function within WP_Query

Using wp_reset_query() really just makes sense if you are using query_posts(), which you don’t need and shouldn’t do – see
When should you use WP_Query vs query_posts() vs get_posts()?
.

This means you should go with WP_Query and wp_reset_postdata() instead. Besides that you should give your custom, secondary queries a object, name differing from $query – like this:

$your_custom_query = new WP_Query($args);
while ($your_custom_query->have_posts()): $your_custom_query->the_post();
    //post stuff
endwhile; wp_reset_postdata(); endif;