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 _logger; private SongResolver songResolver; private string _submitUrl; public SubmitSongsModel(ILogger 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);; } }