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