public IActionResult Place(string place)
        {
            var viewModel = new ExistenceModel();

            viewModel.KnownPlaces = _dataCache.GetAll <IPlace>();

            var self    = GetPersonaValues();
            var persona = GetPersona(self.Item1);

            viewModel.CurrentPlace = GetPlace(place);

            if (persona == null)
            {
                viewModel.Errors = "You must choose a persona first.";
            }
            else
            {
                if (!persona.Position.Equals(viewModel.CurrentPlace) || !viewModel.CurrentPlace.PersonaInventory.Contains(persona))
                {
                    viewModel.CurrentPlace.MoveInto(persona);
                }

                viewModel.NewToYou       = persona.AkashicRecord.Where(record => record.Timestamp >= self.Item3);
                viewModel.CurrentPersona = persona;
            }

            return(View("Place", viewModel));
        }
        public IActionResult Index()
        {
            var viewModel = new ExistenceModel();

            viewModel.KnownPlaces = _dataCache.GetAll <IPlace>();

            return(View(viewModel));
        }
        public IActionResult Input(string place, string input)
        {
            var viewModel = new ExistenceModel();

            viewModel.KnownPlaces = _dataCache.GetAll <IPlace>();

            var self    = GetPersonaValues();
            var persona = GetPersona(self.Item1);

            viewModel.CurrentPlace = GetPlace(place);

            if (persona == null)
            {
                viewModel.Errors = "You must choose a persona first.";
            }
            else
            {
                if (!persona.Position.Equals(viewModel.CurrentPlace))
                {
                    viewModel.CurrentPlace.MoveInto(persona);
                }

                viewModel.NewToYou       = persona.AkashicRecord.Where(record => record.Timestamp >= self.Item3);
                viewModel.CurrentPersona = persona;

                try
                {
                    viewModel.CurrentPlace.WriteTo(input, persona, self.Item2);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex);
                    viewModel.Errors = ex.Message;
                }
            }

            return(View("Place", viewModel));
        }