public IActionResult ShowChord([FromQuery] ShowChordParams parameters) { if (string.IsNullOrWhiteSpace(parameters.root)) { return(RedirectToAction("Index")); } try { var id = $"{parameters.root}{parameters.@type}"; Chord chord; if (!Chord.TryParse(id, parameters.conv, out chord)) { TempData["ErrorMessage"] = $"{id} is not a valid chord"; return(RedirectToAction("Index")); } var chordDecorator = new ChordDecorator(chord, parameters.conv); parameters.root = chord.Root.ToString(parameters.conv); parameters.@type = chord.ChordType.ToDescription(); ViewData["parameters"] = parameters; return(View(chordDecorator)); } catch (Exception ex) { TempData["ErrorMessage"] = ex.Message; return(RedirectToAction("Index")); } }
public IActionResult ShowChordLayouts([FromQuery] ShowChordParams parameters) { if (string.IsNullOrWhiteSpace(parameters.root)) { return(BadRequest()); } if (!IsAjax()) { return(BadRequest()); } var cacheId = parameters.ToString(); var result = _cache.GetOrCreate(cacheId, entry => { try { var chordSymbol = $"{parameters.root}{parameters.@type}"; Chord chord; if (!Chord.TryParse(chordSymbol, parameters.conv, out chord)) { return(null); } var chordDecorator = new ChordDecorator(chord, parameters.conv); var layouts = chordDecorator.GenerateLayouts(true, parameters.special, parameters.@partial, 10); return(layouts); } catch (Exception) { return(null); } }); if (result == null) { return(BadRequest()); } return(PartialView(result)); }