Esempio n. 1
0
        public ActionResult Create(DonationCreateViewModel newData)
        {
            ValidateDonationLogEntry(newData);

            var donor = bddb.Donor.Where(d => d.Email == SessionState.Current.UserEmail).FirstOrDefault();

            if (ModelState.IsValid)
            {
                if (newData.IsSuccessful)
                {
                    CalculateNextDonationDate(newData, donor);
                }
                else
                {
                    if (newData.NextDate == DateTime.MinValue)
                    {
                        return(PartialView("_Create_AddNextDate", newData));
                    }

                    ValidateManualNextDate(newData);

                    if (!ModelState.IsValid)
                    {
                        return(PartialView("_Create_AddNextDate", newData));
                    }
                }

                var newDonationLogEntry = new DonationLog
                {
                    DonorId          = donor.Id,
                    DonationCenterId = newData.DonationCenterId,
                    DonationDate     = newData.DonationDate,
                    IsSuccessful     = newData.IsSuccessful,
                    NextDate         = newData.NextDate,
                    Comments         = newData.Comments
                };

                using (var transaction = bddb.Database.BeginTransaction())
                {
                    bddb.DonationLog.Add(newDonationLogEntry);
                    bddb.SaveChanges();
                    transaction.Commit();
                    return(Json(new { success = true }));
                }
            }

            AddToViewBag_DonationCenterList();

            return(PartialView("_Create", newData));
        }
Esempio n. 2
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(await OnGetAsync(Donation.Id));
            }


            var entity = DbContext.Donations.Find(Donation.Id);

            var log = new DonationLog
            {
                Title      = entity.Title,
                Content    = entity.Content,
                DonationId = Donation.Id
            };

            DbContext.DonationLogs.Add(log);
            await TryUpdateModelAsync(entity, nameof(Donation));

            try
            {
                await DbContext.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DonationExists(Donation.Id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(RedirectToPage("./Details", new { id = Donation.Id }));
        }