public async Task <int> AddContribution(ContributionsPostDto contributionsObj) { var recordExists = await _context.Subscriptions .AnyAsync(s => s.Name == contributionsObj.Month && s.Year == contributionsObj.Year && s.UserId == contributionsObj.UserId); if (recordExists == true) { throw new Exception("The contribution exists already."); } // Get the current year so as to filter only for current year var currentYear = DateTime.Now.ToString("yyyy"); var memberTotal = await _context.Subscriptions .Where(s => s.Year == contributionsObj.Year && s.UserId == contributionsObj.UserId) .SumAsync(s => s.Amount); var newSubscription = new Subscription(); newSubscription.Name = contributionsObj.Month; newSubscription.Amount = contributionsObj.Amount; newSubscription.DateEntered = contributionsObj.DateEntered; newSubscription.UserId = contributionsObj.UserId; newSubscription.Year = contributionsObj.Year; newSubscription.Total = memberTotal + contributionsObj.Amount; bool includeThisMonth = true; if ((int)System.DateTime.Now.DayOfWeek < 15) { includeThisMonth = false; } newSubscription.UptoDate = await checkContributionStatus(contributionsObj.UserId, newSubscription.Total, includeThisMonth); if (!String.IsNullOrWhiteSpace(contributionsObj.Comment)) { newSubscription.Comment = contributionsObj.Comment; } await _context.Subscriptions.AddAsync(newSubscription); var res = await _context.SaveChangesAsync(); if (!res.Equals(1)) { throw new Exception("No record was added for a new contribution"); } return(res); }
public async Task <ActionResult> AddContribution(ContributionsPostDto contributionsObj) { if (!ModelState.IsValid) { _logger.LogError("In contributions controller model state failed " + ModelState); return(BadRequest(ModelState)); } var num = await _contributionsRepo.AddContribution(contributionsObj); if (num != 1) { _logger.LogError("In contributions controller nothing returned from contributions saving"); return(BadRequest("The User Contribution was not updated")); } var confirm = _confirm.ConfirmResponse(true, "The user contribution has been added."); return(Ok(confirm)); }