public async Task <IActionResult> Offer(OfferHelpFormInputModel input)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(input));
            }

            // get selected items Id's to list.
            var selectedAvailable = input.Items.Where(i => i.SelectedAsAvailable).Select(i => i.Id).ToList();

            // save image in root folder and get it's name.
            if (input.Image != null)
            {
                this.SaveImage(input.Image);
            }

            input.Creator = await this.userManager.GetUserAsync(this.User);

            input.TaskType         = TaskType.Offer;
            input.AvailableItemsId = selectedAvailable;

            await this.helpTaskService.CreateOfferAsync(input);

            return(this.RedirectToAction("Index", "Profile"));
        }
        public async Task CreateOfferAsync(OfferHelpFormInputModel 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 availableItems = this.itemService.GetAll().Where(i => input.AvailableItemsId.Contains(i.Id)).ToList();

            // add available items to database.
            foreach (var item in availableItems)
            {
                helpTask.Items.Add(new HelpTaskItems()
                {
                    ItemId      = item.Id,
                    ItemUseType = ItemUseType.Available,
                });
            }

            await this.helpTaskRepo.AddAsync(helpTask);

            await this.helpTaskRepo.SaveChangesAsync();
        }
        public IActionResult Offer()
        {
            var items     = this.itemService.MapAll <SelectedItemsInputModel>();
            var viewModel = new OfferHelpFormInputModel
            {
                Items = items,
            };

            return(this.View(viewModel));
        }