예제 #1
0
        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"));
        }