Example #1
0
        public ActionResult LoadProject(int projectId)
        {
            ProjectRepository repo = new ProjectRepository();

            dynamic config;
            Project project = repo.LoadProject(projectId, out config);

            if (project == null)
            {
                return(HttpNotFound());
            }

            if (!project.IsSample)
            {
                if (!User.Identity.IsAuthenticated)
                {
                    return(HttpNotFound()); //td: right error
                }
                if (User.Identity.GetUserId() != project.UserID)
                {
                    return(HttpNotFound()); //td: right error
                }
            }

            var path = new Scope(null) as dynamic;

            path.ToolPath = Path.Combine(Server.MapPath("~/App_Data"), "Tools");

            IRuntimeProject runtime = _manager.createRuntime(project.ProjectType, project.Name, config, path, new ProjectStorage(project));

            foreach (var file in project.ProjectFiles)
            {
                runtime.add(file.Name, file.ID, file.Contents);
            }

            Session["project"] = runtime;

            if (!project.IsSample)
            {
                Session["projectId"] = project.ID;
            }
            else
            {
                Session["SampleProjectId"] = project.ID;
            }

            return(Json(new
            {
                defaultFile = runtime.defaultFile(),
                tree = new[] { projectTree(project, runtime) }
            }, JsonRequestBehavior.AllowGet));
        }