public IActionResult Create(CreatureDetailsModel model, IFormFile upload) { var creature = new Creature(); if (!ModelState.IsValid) { model = GetCreatureModel(creature, model); return(View(model)); } SaveCreatureData(creature, model, upload); return(RedirectToAction("Index", "Creature", new { Area = "Admin", Id = model.SubcategoryId })); }
public IActionResult Create(Guid id) { var subcategory = _subcategoryRepository.GetSubcategory(id); var vm = new CreatureDetailsModel() { SubcategoryId = subcategory.Id, SubcategoryCommonName = subcategory.CommonName, CategoryId = subcategory.Category.Id, CategoryName = subcategory.Category.Name, }; vm = GetCreatureModel(null, vm); return(View(vm)); }
public async Task <IActionResult> Edit(CreatureDetailsModel model, IFormFile upload) { if (!model.Id.HasValue) { return(RedirectToAction("Index", "Home")); } var creature = await _creatureRepository.GetCreatureAsync(model.Id.Value); if (!ModelState.IsValid) { model = GetCreatureModel(creature, model); return(View(model)); } SaveCreatureData(creature, model, upload); return(RedirectToAction("Index", "Creature", new { Area = "Admin", Id = model.SubcategoryId })); }
private CreatureDetailsModel GetCreatureModel(Creature creature, CreatureDetailsModel vm) { vm.DifficultyItems = _enumService.GetDifficulties(); vm.ReefCompatabilityItems = _enumService.GetReefCompatability(); vm.SpecialRequirementItems = _enumService.GetSpecialRequirements(); vm.TemperamentItems = _enumService.GetTemperament(); vm.TagList = new Guid[0]; vm.TagItems = new List <TagTypeViewModel>(); var tagsByTagType = _tagRepository.FindAll().GroupBy(x => EnumHelper <TagType> .GetDisplayValue(x.TagType)); foreach (var tagType in tagsByTagType) { var tagtypeModel = new TagTypeViewModel() { Name = tagType.Key, Tags = tagType.Select(x => x).ToList(), }; vm.TagItems.Add(tagtypeModel); } if (creature != null) { if (creature.CreatureTags.Any()) { vm.TagList = new Guid[creature.CreatureTags.Count]; } var index = 0; foreach (var creatureTag in creature.CreatureTags) { vm.TagList[index] = creatureTag.TagId; index++; } } return(vm); }
private CreatureDetailsModel GetCreatureModel(Creature creature, CreatureDetailsModel vm) { var category = _categoryRepository.GetCategory(vm.CategoryId); vm.SubcategoryItems = _subcategoryRepository.GetSubcategories(category.Id).ToList(); vm.DifficultyItems = _enumService.GetDifficulties(); vm.ReefCompatabilityItems = _enumService.GetReefCompatability(); vm.SpecialRequirementItems = _enumService.GetSpecialRequirements(); vm.TemperamentItems = _enumService.GetTemperament(); vm.TagItems = new List <TagTypeViewModel>(); var tagsByTagType = _tagRepository.FindAll().GroupBy(x => EnumHelper <TagType> .GetDisplayValue(x.TagType)).ToList(); foreach (var tagType in tagsByTagType) { var tagtypeModel = new TagTypeViewModel() { Name = tagType.Key, Tags = tagType.Select(x => x).ToList(), }; vm.TagItems.Add(tagtypeModel); } if (vm.TagList == null) { vm.TagList = new Guid[0]; if (creature != null && creature.CreatureTags.Any()) { vm.TagList = creature.CreatureTags.Select(x => x.TagId).ToArray(); } } return(vm); }
private void SaveCreatureData(Creature creature, CreatureDetailsModel model, IFormFile upload) { creature.CommonName = model.CommonName; creature.Description = model.Description; creature.Diet = model.Diet; creature.DifficultyDescription = model.DifficultyDescription; creature.Difficulty = model.Difficulty; creature.Genus = model.Genus; creature.Species = model.Species; creature.Length = model.Length; creature.Origin = model.Origin; creature.ReefCompatability = model.ReefCompatability; creature.Temperament = model.Temperament; creature.Volume = model.Volume; creature.SpecialRequirements = model.SpecialRequirements; creature.SubcategoryId = model.SubcategoryId; //Update creature image. if (upload != null) { var webRoot = _hostingEnvironment.WebRootPath + Directory; var path = Path.Combine(webRoot, upload.FileName); if (!System.IO.File.Exists(path)) { using (var fs = System.IO.File.Create(path)) { upload.CopyTo(fs); fs.Flush(); fs.Close(); } } if (creature.Media == null) { var media = new Media() { ContentType = upload.ContentType, Filename = upload.FileName, Url = Directory }; creature.Media = media; } if (upload.FileName != creature.Media?.Filename) { creature.Media.ContentType = upload.ContentType; creature.Media.Filename = upload.FileName; creature.Media.Url = Directory; } } var creatureTags = creature.CreatureTags.ToList(); if (creatureTags.Any()) { var itemsToDelete = new List <CreatureTag>(); if (model.TagList != null && model.TagList.Any()) { itemsToDelete = creatureTags.Where(x => !model.TagList.Contains(x.TagId)).ToList(); } foreach (var tag in itemsToDelete) { _creatureRepository.DeleteCreatureTag(tag); creatureTags.Remove(tag); } } if (model.TagList != null) { // Check which tags are already coupled to this creature and which tags stay coupled. these can be ignored. var newTagIds = model.TagList.Where(x => creatureTags.All(sa => sa.TagId != x)).ToList(); //Couple checked activities to the student group. foreach (var tagId in newTagIds) { var creatureTag = new CreatureTag() { CreatureId = creature.Id, TagId = tagId, }; _creatureTagRepository.Add(creatureTag); } } _creatureRepository.Save(creature); }