public async Task <IActionResult> PlayedTrack( [FromQuery] string app_type, [FromQuery] int?track_id = null, [FromQuery] string track_uuid = null, [FromQuery] string user_uuid = null ) { if (app_type != "ios" && app_type != "web" && app_type != "sonos") { return(BadRequest()); } if (track_id == null && track_uuid == null) { return(BadRequest()); } Guid track_guid = Guid.Empty; if (track_uuid != null && !Guid.TryParse(track_uuid, out track_guid)) { return(BadRequest("Invalid track_uuid format")); } var telementry = new TelemetryClient(); telementry.TrackEvent("played_track", new Dictionary <string, string> { { "app_type", app_type }, }); SourceTrack track = null; if (track_uuid != null && track_guid != Guid.Empty) { track = await _sourceTrackService.ForUUID(track_guid); } else if (track_id != null) { track = await _sourceTrackService.ForId(track_id.Value); } if (track == null) { return(JsonNotFound(false)); } var stp = new SourceTrackPlay { source_track_uuid = track.uuid, app_type = SourceTrackPlayAppTypeHelper.FromString(app_type), user_uuid = user_uuid != null?Guid.Parse(user_uuid) : (Guid?)null }; return(JsonSuccess(await _sourceTrackPlaysService.RecordPlayedTrack(stp))); }
public async Task <SourceTrackPlay> RecordPlayedTrack(SourceTrackPlay track) { return(await db.WithConnection(con => con.QuerySingleAsync <SourceTrackPlay>(@" INSERT INTO source_track_plays ( source_track_uuid, user_uuid, app_type ) VALUES ( @source_track_uuid, @user_uuid, @app_type ) RETURNING * " , track))); }