public async Task <Campaign> MatchUserToCampaign(List <Campaign> campaigns, MatchCampaignRequest request)
        {
            if (campaigns.Count == 0)
            {
                return(null);
            }

            if (request.Type == "Donation")
            {
                List <Campaign> sortedCampaigns = campaigns.OrderBy(x => x.CompletedCount).ToList();
                return(sortedCampaigns[0]);
            }
            else if (request.Type == "Volunteering")
            {
                var campaignsETA = new List <(double, Campaign)>();
                foreach (var campaign in campaigns)
                {
                    var eta = await _routingService.GetETA(request.Location, campaign.Location, request.TransportationType);

                    campaignsETA.Add((eta, campaign));
                }
                //Sort the campaigns from closest to farthest and choose the closest
                campaignsETA.Sort();
                return(campaignsETA[0].Item2);
            }
            else
            {
                throw new BadRequestException("Invalid Request Type");
            }
        }