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 PaybackCalculator(CreatePaybackCalculationWebshopInputViewModel model)
        {
            if (!ModelState.IsValid || !IsFeaturesSelectionValid(model.Features))
            {
                return(View(model));
            }

            if (model.Features == null)
            {
                model.Features = new List <Guid>();
            }
            model.Features                  = model.Features.Concat(new[] { BusinessConstants.WebshopFeatureId.Standard });
            model.IterationNumber           = Framework.Context.IterationNumber;
            model.OfflineUsersCount         = model.GetOfflineUsersCount();
            model.OfflineAverageOrderAmount = model.AverageOrderValue;

            var webshop = Mapper.Map <Webshop>(model);

            webshop.ProjectId = Framework.Context.ProjectId.Value;
            Framework.Webshops.Create(webshop);

            return(RedirectToAction("Index"));
        }