示例#1
0
        public async Task <IActionResult> Create(DonationCreateViewModel vm)
        {
            if (vm == null)
            {
                throw new ArgumentNullException(nameof(vm));
            }
            vm.Donation.DonationDate = DateTimeOffset.Now;
            var donor = await GetDonor();

            vm.Donation.DonorId = donor.Id;
            if (vm.Donation.FundraiserId == Guid.Empty)
            {
                vm.Donation.FundraiserId = vm.FundraiserId;
            }

            var donation = mapper.Map <Models.Donation>(vm.Donation);

            if (ModelState.IsValid)
            {
                donationService.AddDonation(donation);
                await donationService.SaveChangesAsync();

                await fundraiserService.UpdateFundTotalAsync(vm.Donation.FundraiserId, vm.Donation.Amount);

                vm.Donation.Donor = donor;
                await signalHub.Clients.All.SendAsync("NewDonation", vm.Donation);

                return(RedirectToAction("DonateComplete"));
            }
            return(View(vm));
        }