public async Task <IActionResult> Edit(EditDeveloperViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { var developer = await _context.Developers .SingleOrDefaultAsync(m => m.DeveloperId == model.DeveloperId); developer.Name = model.Name; _context.Update(developer); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!DeveloperExists(model.DeveloperId)) { return(View("NotFound")); } throw; } return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Put([FromRoute] string name, [FromBody] EditDeveloperViewModel updateModel) { if (await _developerRepo.Single(Decode(name)) is Developer original) { if (!await ValidateModel(updateModel, original)) { return(BadRequest(ModelState.GetValidationProblemDetails())); } //updates fields of orginal enitty updateModel.Tags = updateModel.Tags.Distinct().ToArray(); original.FullName = updateModel.FullName; original.Nickname = updateModel.Nickname; //remove foreach (var devTag in original.DeveloperTags.ToArray()) { if (!updateModel.Tags.Contains(devTag.Tag.Name)) { original.DeveloperTags.Remove(devTag); } } //add new tags foreach (var tagName in updateModel.Tags) { if (original.DeveloperTags.All(x => x.Tag.Name != tagName)) { original.DeveloperTags.Add( new DeveloperTag { Developer = original, Tag = new Tag { Name = tagName } }); } } await _developerRepo.Update(original); // ... await _developerRepo.SaveChangesAsync(); // returns updated entity return(Ok(original.GetVM(Encode(original.Nickname)))); } return(NotFound()); }
public ActionResult Edit(EditDeveloperViewModel model) { if (!ModelState.IsValid) { return(Edit(model.Id)); } var developer = mapper.Map <EditDeveloperViewModel, Developer>(model); developerService.UpdateDeveloper(developer); return(RedirectToAction(nameof(Index))); }
protected virtual async Task <bool> ValidateModel(EditDeveloperViewModel model, Developer original = null) { if ((original == null || model.Nickname != original.Nickname) && await _developerRepo.Exist(model.Nickname)) { ModelState.AddModelError(nameof(model.Nickname), String.Format("Developer with nickname {0} already exists", model.Nickname)); } if (Regex.IsMatch(model.Nickname, "-")) { ModelState.AddModelError(nameof(model.Nickname), String.Format("Developer nickname should not contain \"-\" (dash) character")); } return(ModelState.IsValid); }
public async Task <IActionResult> Post([FromBody] EditDeveloperViewModel model) { if (!ModelState.IsValid || !await ValidateModel(model)) { return(BadRequest(ModelState.GetValidationProblemDetails())); } var developer = model.GetInstance(); await _developerRepo.Add(developer); await _developerRepo.SaveChangesAsync(); return(new JsonResult(developer.GetVM(Encode(developer.Nickname)))); }
public static Developer GetInstance(this EditDeveloperViewModel model) { var instance = Mapper.Map <Developer>(model); instance.DeveloperTags = model.Tags. Select(x => new DeveloperTag { Developer = instance, Tag = new Tag { Name = x } }).ToList(); return(instance); }