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)); }