public ActionResult <string> Post( string callTypeAPI, string weatherObjIdToAssign, string callParameter1, string callParameter2 = "" ) { string responseStr = null; switch (callTypeAPI) { case CITY_NAME: // param1: city name; param2?: country code if (callParameter2 != "") { callParameter2 = "," + callParameter2; } string cityNameUrl = "weather?q=" + callParameter1 + callParameter2; var responseName = weatherAPI.GetWeatherObjectFromAPI(cityNameUrl); if (responseName != null) { responseStr = responseName.Result; } break; case CITY_ID: // param1: city id if (callParameter2 == "") { string cityIdUrl = "weather?id=" + callParameter1; var responseId = weatherAPI.GetWeatherObjectFromAPI(cityIdUrl); if (responseId != null) { responseStr = responseId.Result; } } break; case COORD: // param1: lat; param2: lon if (callParameter2 != "") { string coordUrl = "weather?lat=" + callParameter1 + "&lon=" + callParameter2; var responseCoord = weatherAPI.GetWeatherObjectFromAPI(coordUrl); if (responseCoord != null) { responseStr = responseCoord.Result; } } break; default: return(BadRequest(new { message = "Check callTypeAPI parameter(s)" })); } if (responseStr == null) { return(BadRequest(new { message = "API call failed" })); } var newWeatherObj = weatherAPI.ParseWeatherDataObject(responseStr); var wo = _weatherService.GetObject(WEATHER_OBJECT, weatherObjIdToAssign); if (wo != null) // weather object already exists, update { if (!_weatherService.UpdateWeatherObject(newWeatherObj, weatherObjIdToAssign)) { return(BadRequest(new { message = "Object to update not found in database" })); } } else // new weather object { _weatherService.AddWeatherObject(newWeatherObj, weatherObjIdToAssign); } return(Ok(responseStr)); }