예제 #1
0
        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"));
        }
예제 #2
0
        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"));
        }
예제 #3
0
        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);
        }
예제 #5
0
        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());
        }
예제 #6
0
        public IActionResult Add(int gameId)
        {
            var model = new CharacterEditViewModel()
            {
                GameId = gameId,
            };

            return(View("Edit", model));
        }
예제 #7
0
        private void CancelEditCharacter()
        {
            _editHasUnsavedChanges  = false;
            _characterEditViewModel = null;

            OnPropertyChanged(nameof(EditingCharacter));
            OnPropertyChanged(nameof(IsEditingCharacter));
            OnPropertyChanged(nameof(HasUnsavedChanges));
        }
예제 #8
0
        private void EditCharacter(CharacterViewModel characterModel)
        {
            _characterEditViewModel = new CharacterEditViewModel(characterModel.CharacterModel, false);
            _characterEditViewModel.PropertyChanged += _characterEditViewModel_PropertyChanged;

            SelectInfoEdit();

            OnPropertyChanged(nameof(EditingCharacter));
            OnPropertyChanged(nameof(IsEditingCharacter));
        }
예제 #9
0
        public IActionResult Create()
        {
            var model = new CharacterEditViewModel()
            {
                Character         = new Character(),
                SelectedEquipment = new Dictionary <string, bool>()
            };

            SelectEquipmentItems(model.Character, model.SelectedEquipment);
            return(View(model));
        }
예제 #10
0
        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));
        }
예제 #11
0
        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));
        }
예제 #12
0
        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);
        }
예제 #14
0
        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"));
        }
예제 #15
0
        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 }));
        }
예제 #16
0
        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));
            }
        }