public IActionResult PaybackCalculator([FromServices] ExecutionContextKeyHelper keyHelper)
        {
            // Ending existing game if there is any
            keyHelper.ClearExecutionContextId();

            // Starting new game
            var executionContextId = Guid.NewGuid();

            keyHelper.SetExecutionContextId(executionContextId);

            var defaultGame = new CreateProjectInputViewModel()
            {
                Name = DateTime.Now.ToString(), Budget = 100000
            };
            var project = Mapper.Map <Project>(defaultGame);

            project.Id = executionContextId;
            Framework.Projects.Create(project);

            var model = new CreatePaybackCalculationWebshopInputViewModel()
            {
                Name = "Payback calculation example",
                ProductCostPercentage        = 80,
                OfflineServiceCostPercentage = 2,
                OnlineServiceCostPercentage  = 1
            };

            return(View(model));
        }
        public IActionResult StartGame([FromServices] ExecutionContextKeyHelper keyHelper)
        {
            var executionContextId = Guid.NewGuid();

            keyHelper.SetExecutionContextId(executionContextId);

            var model = new CreateProjectInputViewModel()
            {
                Name = DateTime.Now.ToString(), Budget = 100000
            };
            var project = Mapper.Map <Project>(model);

            project.Id = executionContextId;
            Framework.Projects.Create(project);

            return(RedirectToAction("CreateWebshop"));
        }
        public async Task Invoke(HttpContext context, ExecutionContext executionContext, ExecutionContextKeyHelper keyHelper)
        {
            var projectId = keyHelper.GetExecutionContextId();

            if (projectId.HasValue)
            {
                var project = Framework.Projects.Get(projectId.Value);
                if (project != null)
                {
                    executionContext.ProjectId = projectId;
                    executionContext.Project   = project;
                }
            }

            await _next.Invoke(context);
        }
 public IActionResult EndGame([FromServices] ExecutionContextKeyHelper keyHelper)
 {
     keyHelper.ClearExecutionContextId();
     return(RedirectToAction("Index"));
 }