public IActionResult Update(CharacterEditViewModel viewModel) { var character = _context.Characters.Single(c => c.Name == viewModel.Character.Name);; // Validation if (!ModelState.IsValid) { return(View("Edit", viewModel)); } /* Add changes to equipment * Child data changes will not be registered by default * Setting the state to Modified only updates scalar and complex properties, * not your navigation properties. The following is a workaround: */ character.Equipment.Clear(); _context.Entry(character).State = EntityState.Modified; if (viewModel.SelectedEquipment != null) { foreach (var item in viewModel.SelectedEquipment.Where(e => e.Value == true).ToList()) { var equipment = _context.Equipment.Single(e => e.Name == item.Key); character.Equipment.Add(equipment); } } _context.SaveChanges(); return(RedirectToAction("Index")); }
public IActionResult Create(CharacterEditViewModel viewModel) { var character = viewModel.Character; // Validation if (!IsValidSubmission(character)) { return(View(viewModel)); } // Add changes to equipment character.Equipment.Clear(); if (viewModel.SelectedEquipment != null) { foreach (var item in viewModel.SelectedEquipment.Where(e => e.Value == true).ToList()) { var equipment = _context.Equipment.FirstOrDefault(e => e.Name == item.Key); character.Equipment.Add(equipment); } } _context.Characters.Add(character); _context.SaveChanges(); return(RedirectToAction("Index")); }
public async Task <IActionResult> Edit(CharacterEditViewModel vm) { if (!ModelState.IsValid) { return(View(vm)); } var game = await _gameService.GetByIdAsync(vm.GameId); if (game == null) { return(StatusCode((int)HttpStatusCode.NotFound)); } if (vm.Id.HasValue) { var character = await _characterService.GetByIdAsync(vm.Id.Value); if (character == null) { return(StatusCode((int)HttpStatusCode.NotFound)); } character.Name = vm.Name; character.Status = vm.Status; if (vm.IconImage != null) { if (character.IconImage != null) { character.IconImage.File = vm.IconImage.Getbytes(); character.IconImage.LastModified = DateTime.UtcNow; } else { character.IconImage = new ImageDto { File = vm.IconImage.Getbytes() }; } } await _characterService.EditAsync(character); } else { var character = new CharacterDto() { Name = vm.Name, IconImage = vm.IconImage != null ? new ImageDto { File = vm.IconImage.Getbytes() } : null, Status = vm.Status, GameId = game.Id }; await _characterService.AddAsync(character); } return(RedirectToAction("ListByGame", "Character", new { id = vm.GameId })); }
public async Task EditPost_Returns404_WhenCharacterDoesntExist() { //Arrange var model = new CharacterEditViewModel { Id = 0, Name = "Test" }; var game = new GameDto() { Name = "test" }; mockGameService.Setup(s => s.GetByIdAsync(It.IsAny <int>())).ReturnsAsync(game); mockCharacterService.Setup(s => s.GetByIdAsync(It.IsAny <int>())).ReturnsAsync((CharacterDto)null); //Act var result = await controller.Edit(model); //Assert var statusCodeResult = Assert.IsType <StatusCodeResult>(result); Assert.Equal(404, statusCodeResult.StatusCode); }
public IActionResult Edit(CharacterEditViewModel item) { // if (ModelState.IsValid) // { // Character character = _context.GetCharacter(item.Id); // character.Name = item.Name; // character.Email = item.Email; // character.AccountType = item.AccountType; // // if (item.Photo != null) // { // if (item.ExistingImagePath != null) // { // string filePath = Path.Combine(_hostingEnv.WebRootPath, "images", item.ExistingImagePath); // System.IO.File.Delete(filePath); // } // // character.ImagePath = ProcessUploadedFile(item); // } // // _context.Update(character); // return RedirectToAction("index"); // } return(View()); }
public IActionResult Add(int gameId) { var model = new CharacterEditViewModel() { GameId = gameId, }; return(View("Edit", model)); }
private void CancelEditCharacter() { _editHasUnsavedChanges = false; _characterEditViewModel = null; OnPropertyChanged(nameof(EditingCharacter)); OnPropertyChanged(nameof(IsEditingCharacter)); OnPropertyChanged(nameof(HasUnsavedChanges)); }
private void EditCharacter(CharacterViewModel characterModel) { _characterEditViewModel = new CharacterEditViewModel(characterModel.CharacterModel, false); _characterEditViewModel.PropertyChanged += _characterEditViewModel_PropertyChanged; SelectInfoEdit(); OnPropertyChanged(nameof(EditingCharacter)); OnPropertyChanged(nameof(IsEditingCharacter)); }
public IActionResult Create() { var model = new CharacterEditViewModel() { Character = new Character(), SelectedEquipment = new Dictionary <string, bool>() }; SelectEquipmentItems(model.Character, model.SelectedEquipment); return(View(model)); }
public IActionResult Edit(string name) { var model = new CharacterEditViewModel() { Character = _context.Characters.FirstOrDefault(c => c.Name == name), SelectedEquipment = new Dictionary <string, bool>() }; SelectEquipmentItems(model.Character, model.SelectedEquipment); ViewData["Title"] = "Edit " + model.Character.Name ?? string.Empty; return(View(model)); }
public IActionResult Edit(int id, int?gameID) { var model = new CharacterEditViewModel(); model.GameID = gameID; model.CharacterModel = CharacterModel.GenerateCharacterModelFromDTO(work.TemplateCharacterRepository.GetDTO(id)); model.Classes = work.ClassRepository.GetAll().Select(e => ClassModel.GenerateClassModelFromDTO(e)).ToList(); model.Races = work.RaceRepository.GetAll().Select(e => RaceModel.GenerateRaceModelFromDTO(e)).ToList(); model.BaseStats = work.BaseStatRepository.GetAll().Select(e => BaseStatModel.GeneralBaseStatModelFromDTO(e)).ToList(); return(View(model)); }
private bool SaveEditCharacter() { bool saved = false; if (_characterEditViewModel.CharacterModel != null) { if (String.IsNullOrWhiteSpace(_characterEditViewModel.Name)) { _dialogService.ShowConfirmationDialog("Required Field", "Name is required.", "OK", null, null); } else { _characterEditViewModel.CharacterModel.Id = _selectedCharacter.CharacterModel.Id; _compendium.UpdateCharacter(_characterEditViewModel.CharacterModel); _selectedCharacter = new CharacterViewModel(_characterEditViewModel.CharacterModel); if (_characterEditViewModel.IsNew) { _selectedCharacter.SetupNewlyCreatedCharacter(); } CharacterListItemViewModel oldListItem = _characters.FirstOrDefault(x => x.CharacterModel.Id == _characterEditViewModel.CharacterModel.Id); if (oldListItem != null) { if (_characterSearchService.SearchInputApplies(_characterSearchInput, _selectedCharacter.CharacterModel)) { oldListItem.UpdateModel(_characterEditViewModel.CharacterModel); } else { _characters.Remove(oldListItem); } } _characterEditViewModel = null; _editHasUnsavedChanges = false; SortCharacters(); _compendium.SaveCharacters(); OnPropertyChanged(nameof(SelectedCharacter)); OnPropertyChanged(nameof(EditingCharacter)); OnPropertyChanged(nameof(IsEditingCharacter)); OnPropertyChanged(nameof(HasUnsavedChanges)); saved = true; } } return(saved); }
public async Task EditPost_ReturnsView_WhenInvalidModel() { //Arrange var model = new CharacterEditViewModel() { Name = "Test" }; mockCharacterService.Setup(s => s.GetByIdAsync(It.IsAny <int>())).ReturnsAsync((CharacterDto)null); controller.ModelState.AddModelError("Test", ""); //Act var result = await controller.Edit(model); //Assert var viewResult = Assert.IsType <ViewResult>(result); Assert.Equal(model, viewResult.Model); }
public IActionResult Edit(CharacterEditViewModel model) { if (!ModelState.IsValid) { model.Races = work.RaceRepository.GetAll().Select(e => RaceModel.GenerateRaceModelFromDTO(e)).ToList(); model.Classes = work.ClassRepository.GetAll().Select(e => ClassModel.GenerateClassModelFromDTO(e)).ToList(); model.BaseStats = work.BaseStatRepository.GetAll().Select(e => BaseStatModel.GeneralBaseStatModelFromDTO(e)).ToList(); return(View(model)); } work.TemplateCharacterRepository.Update(CharacterModel.GenerateCharacterDTOFromModel(model.CharacterModel)); work.Save(); if (model.GameID != null) { return(RedirectToAction("AddCharacter", "Game", new { id = model.GameID })); } return(RedirectToAction("Index")); }
public IActionResult Edit(CharacterEditViewModel model, bool stayOnSamePage) { model.Character.RetirementDate = model.Retired ? DateTime.Today as DateTime? : null; var experienceForLevel = characterService.CalculateExperienceBasedOnLevel(model.Character.Level); if (model.Character.ExperiencePoints < experienceForLevel) { model.Character.ExperiencePoints = experienceForLevel; } using (var gloomhavenTrackerContext = (GloomhavenTrackerContext)provider.GetService(typeof(GloomhavenTrackerContext))) { gloomhavenTrackerContext.Characters.Update(model.Character); gloomhavenTrackerContext.SaveChanges(); } if (stayOnSamePage) { return(RedirectToAction("Edit", new { id = model.Character.Id })); } return(RedirectToAction("Detail", new { id = model.Character.Id })); }
private void Add() { bool addCharacter = true; if (_characterEditViewModel != null) { if (_editHasUnsavedChanges) { string body = String.Format("{0} has unsaved changes.{1}What would you like to do?", _selectedCharacter.Name, Environment.NewLine + Environment.NewLine); string accept = "Save and Continue"; string reject = "Discard Changes"; string cancel = "Cancel Navigation"; bool? result = _dialogService.ShowConfirmationDialog("Unsaved Changes", body, accept, reject, cancel); if (result == true) { if (!SaveEditCharacter()) { addCharacter = false; } } else if (result == false) { CancelEditCharacter(); } else { addCharacter = false; } } else { CancelEditCharacter(); } } if (addCharacter) { _characterEditViewModel = new CharacterEditViewModel(new CharacterModel(), true); _compendium.AddCharacter(_characterEditViewModel.CharacterModel); if (_characterSearchService.SearchInputApplies(_characterSearchInput, _characterEditViewModel.CharacterModel)) { CharacterListItemViewModel listItem = new CharacterListItemViewModel(_characterEditViewModel.CharacterModel); _characters.Add(listItem); foreach (CharacterListItemViewModel item in _characters) { item.IsSelected = false; } listItem.IsSelected = true; } _selectedCharacter = new CharacterViewModel(_characterEditViewModel.CharacterModel); _characterEditViewModel.PropertyChanged += _characterEditViewModel_PropertyChanged; SelectInfoEdit(); SortCharacters(); _compendium.SaveCharacters(); OnPropertyChanged(nameof(EditingCharacter)); OnPropertyChanged(nameof(IsEditingCharacter)); OnPropertyChanged(nameof(SelectedCharacter)); } }