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)));
        }
Beispiel #2
0
        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)));
        }