72 lines
1.7 KiB
C#
72 lines
1.7 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using Microsoft.VisualBasic;
|
|
|
|
namespace sotd.Pages;
|
|
|
|
public class SubmitSongsModel : PageModel
|
|
{
|
|
private readonly ILogger<UserModel> _logger;
|
|
|
|
private SongResolver songResolver;
|
|
|
|
private string _submitUrl;
|
|
|
|
public SubmitSongsModel(ILogger<UserModel> logger, SongResolver songResolver)
|
|
{
|
|
_logger = logger;
|
|
this.songResolver = songResolver;
|
|
}
|
|
|
|
[BindProperty]
|
|
public bool IsValidUrl { get; set; } = true;
|
|
|
|
[BindProperty]
|
|
public string SubmitUrl {
|
|
get {
|
|
return _submitUrl;
|
|
}
|
|
set {
|
|
_submitUrl = value.ToString();
|
|
Uri? newValue = default;
|
|
try {
|
|
newValue = new Uri(_submitUrl);
|
|
}
|
|
catch (UriFormatException)
|
|
{
|
|
IsValidUrl = false;
|
|
return;
|
|
}
|
|
|
|
IsValidUrl = true;
|
|
|
|
if(this.songResolver.CanValidate(newValue))
|
|
{
|
|
this.SongData = this.songResolver.ResolveSongAsync(newValue).Result;
|
|
}
|
|
}
|
|
}
|
|
|
|
[BindProperty]
|
|
public bool CanSubmit { get {
|
|
return !string.IsNullOrEmpty(SongData?.Artist) && ! string.IsNullOrEmpty(SongData?.Name);
|
|
} }
|
|
|
|
[BindProperty]
|
|
public Song SongData { get; set; }
|
|
|
|
public void OnPost()
|
|
{
|
|
// Todo implement save submission
|
|
var x = SongData.Name;
|
|
}
|
|
|
|
public IActionResult OnGetUpdate()
|
|
{
|
|
var songUrl = Request.Query["SubmitUrl"];
|
|
this.SubmitUrl = songUrl.ToString();
|
|
return Partial("_SongPartial", SongData);;
|
|
}
|
|
}
|