public async Task <IActionResult> Donate(DonationViewModel viewModel) { // checking modelState Errors var errors = ModelState .Where(x => x.Value.Errors.Count > 0) .Select(x => new { x.Key, x.Value.Errors }) .ToArray(); if (!ModelState.IsValid) { return(View(viewModel)); } var categories = viewModel.CheckBoxItems.Where(x => x.IsChecked).ToList(); var categoriesList = new List <DonationCategory>(); foreach (var category in categories) { categoriesList.Add(new DonationCategory { CategoryId = category.id, DonationId = viewModel.Id }); } //Handle for registered and logged user var user = await _userManager.GetUserAsync(User); if (user == null) { ModelState.AddModelError("", "Błąd w tworzenia darowizny"); return(View(viewModel)); } var donation = new Donation() { PhoneNumber = viewModel.PhoneNumber, City = viewModel.City, Street = viewModel.Street, ZipCode = viewModel.ZipCode, Quantity = viewModel.Quantity, PickUpDate = viewModel.PickUpDate, PickUpTime = viewModel.PickUpTime, PickUpComment = viewModel.PickUpComment, Categories = categoriesList, Institution = await _institutionService.GetAsync(viewModel.Institution.Id), User = await _userManager.GetUserAsync(User) }; var result = await _donationService.CreateAsync(donation); if (result == false) { ModelState.AddModelError("", "Błąd w tworzenia darowizny"); return(View(viewModel)); } return(RedirectToAction("Confirmation")); }