public ActionResult Post(ProjectsViewModel.Input model) { if (!ModelState.IsValid) return View("View"); var person = DbSession.GetCurrentPerson(); var project = Project.Forge(model.Name, model.Description); DbSession.Store(project); project.Grant(string.Empty, person); project.Initialize(DbSession); var projectViewModel = project.MapTo<ProjectsViewModel.Project>(); projectViewModel.People = new List<PersonViewModel> {person.MapTo<PersonViewModel>()}; if (Request.IsAjaxRequest()) return new JsonNetResult {Data = projectViewModel}; return RedirectToRoute("projects_get"); }
public ActionResult Put(ProjectsViewModel.Input model) { if (!ModelState.IsValid) return View("View"); var project = DbSession.Load<Project>(model.Id); project.Name = model.Name; project.Description = model.Description; return new JsonNetResult {Data = model}; }
public ActionResult Get(int page = 1) { RavenQueryStatistics stats; var projects = DbSession.Query<Project>() .Statistics(out stats) .Customize(c => c.Include<Project>(p => p.People)) .OrderByDescending(p => p.CreatedAt) .ToList(); var vm = new ProjectsViewModel { CurrentPage = page, TotalCount = stats.TotalResults, Projects = new List<ProjectsViewModel.Project>() }; if (projects.Count > 0) { var results = DbSession .Query<ProjectEntityCount.Result, ProjectEntityCount>() .Where(r => r.Project.In(projects.Select(p => p.Id))) .ToList(); foreach (var result in results) { var project = DbSession.Load<Project>(result.Project); var projectViewModel = result.MapTo<ProjectsViewModel.Project>(); projectViewModel.People = DbSession.Load<Person>(project.People) .Where(p => p != null).MapTo<PersonViewModel>(); projectViewModel.Name = project.Name; projectViewModel.Description = project.Description; vm.Projects.Add(projectViewModel); } } return View("View", vm); }