public IActionResult Need() { var items = this.itemService.MapAll <SelectedItemsInputModel>(); var viewModel = new NeedHelpFormInputModel { Items = items, }; return(this.View(viewModel)); }
public async Task CreateNeedAsync(NeedHelpFormInputModel input, [CallerMemberName] string callerMethodName = "") { var helpTask = new HelpTask { Title = input.Title, Description = input.Description, Location = input.Location, ImageName = input.ImageName, Type = input.TaskType, Creator = input.Creator, }; // get selected items by their id's. var mandatoryItems = this.itemService.GetAll().Where(i => input.MandatoryItemsId.Contains(i.Id)).ToList(); var helpfulItems = this.itemService.GetAll().Where(i => input.HelpfulItemsId.Contains(i.Id)).ToList(); // add mandatory items to database . foreach (var item in mandatoryItems) { helpTask.Items.Add(new HelpTaskItems() { ItemId = item.Id, ItemUseType = ItemUseType.Mandatory, }); } // add helpfull items to database. foreach (var item in helpfulItems) { helpTask.Items.Add(new HelpTaskItems() { ItemId = item.Id, ItemUseType = ItemUseType.Helpful, }); } await this.helpTaskRepo.AddAsync(helpTask); await this.helpTaskRepo.SaveChangesAsync(); }
public async Task <IActionResult> Need(NeedHelpFormInputModel input) { if (!this.ModelState.IsValid) { return(this.View(input)); } // get selected items Id's to list. var selectedMandatory = input.Items.Where(i => i.SelectedAsMandatory).Select(i => i.Id).ToList(); var selectedHelpful = input.Items.Where(i => i.SelectedAsHelpful).Select(i => i.Id).ToList(); // remove items selected as helpfull if selected as mandatory too. foreach (var itemId in selectedMandatory) { if (selectedHelpful.Contains(itemId)) { selectedHelpful.Remove(itemId); } } input.MandatoryItemsId = selectedMandatory; input.HelpfulItemsId = selectedHelpful; // save image in root folder and get it's name. if (input.Image != null) { input.ImageName = this.SaveImage(input.Image); } input.Creator = await this.userManager.GetUserAsync(this.User); input.TaskType = TaskType.Need; await this.helpTaskService.CreateNeedAsync(input); return(this.RedirectToAction("Index", "Profile")); }