refactor donations controller