Exemple #1
0
        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"));
            }
        }
Exemple #2
0
        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));
        }