/// <summary> /// Készít egy új projektet /// </summary> /// <param name="model">Az új projekt modelje</param> /// <returns></returns> public async Task<IServiceResult> CreateProject(ProjectEditViewModel model) { var result = new ServiceResult<ProjectEditViewModel>(); try { await TestProjectStore.InsertAsync(Mapper.Map<ProjectEditViewModel, Project>(model)); } catch (Exception e) { Log.Error(e.Message, e); result.AddError("", e.Message); } return result; }
public async Task<ActionResult> Edit(ProjectEditViewModel model) { if (ModelState.IsValid) { var result = await ProjectService.UpdateProject(model); if (result.Succeeded) { return RedirectToAction("DetailsOverview", new { id = model.Id }); } else { AddModelErrors(result.Errors); return View("Edit", await ProjectService.FillAllPlatforms(model)); } } return View("Edit", await ProjectService.FillAllPlatforms(model)); }
public async Task<ActionResult> Create(ProjectEditViewModel model) { if (ModelState.IsValid) { var result = await ProjectService.CreateProject(model); if (result.Succeeded) { return RedirectToAction("Index"); } else { AddModelErrors(result.Errors); return View("Edit", await ProjectService.FillAllPlatforms(model)); } } return View("Edit", await ProjectService.FillAllPlatforms(model)); }
/// <summary> /// Frissít egy már meglévő projektet /// </summary> /// <param name="model">A frissítendő projekt modelje</param> /// <returns></returns> public async Task<IServiceResult> UpdateProject(ProjectEditViewModel model) { var result = new ServiceResult<ProjectEditViewModel>(); try { var current = await TestProjectStore.GetAll().Include(p => p.Platforms).SingleOrDefaultAsync(p => p.Id == model.Id); var edited = Mapper.Map<ProjectEditViewModel, Project>(model); edited.Platforms = current.Platforms; var currentPlatformIds = current.Platforms.Select(p => p.Id); var toaddids = model.SelectedPlatforms.Where(s => !currentPlatformIds.Contains(s)); var todeleteids = currentPlatformIds.Where(s => !model.SelectedPlatforms.Contains(s)); var toadd = await TestPlatformStore.GetAll(p => toaddids.Contains(p.Id)).ToListAsync(); var todelete = await TestPlatformStore.GetAll(p => todeleteids.Contains(p.Id)).ToListAsync(); toadd.ForEach(p => edited.Platforms.Add(p)); todelete.ForEach(p => edited.Platforms.Remove(p)); await TestProjectStore.UpdateAsync(edited); } catch (Exception e) { Log.Error(e.Message, e); result.AddError("", e.Message); } return result; }
/// <summary> /// Feltölti az AllPlatforms tulajdonségot /// </summary> /// <param name="vm">Ennek a objektumnak tölti fel a tulajdonságát</param> /// <param name="currentPlatforms">Azoknak a platformoknak az id-ja amelyek már ki vannak választva a projekthez</param> /// <returns></returns> public async Task<ProjectEditViewModel> FillAllPlatforms(ProjectEditViewModel vm, IEnumerable<int> currentPlatforms = null) { vm.AllPlatforms = (await TestPlatformStore.GetAll().ToListAsync()).Select(p => new SelectListItem { Value = p.Id.ToString(), Text = p.Name, Selected = currentPlatforms != null ? currentPlatforms.Contains(p.Id) : false }).ToList(); return vm; }