public async Task <IActionResult> Upload(List <Models.RepaymentUpload> uploads) { var repaymentUploads = uploads.Select(u => new RepaymentUpload { Amount = u.Amount, CustomerId = u.CustomerId, Date = DateTime.ParseExact(u.Date, "d/M/yyyy", CultureInfo.CurrentUICulture), SeasonId = u.SeasonId }); var repayments = await _repaymentService.ProcessUploads(repaymentUploads); return(BaseApiSuccessResult(new { repayments = repayments.Select(r => new { r.Amount, r.CustomerId, r.SeasonId, r.ParentId, r.Date }) })); }
public async Task UploadMultiple() { var mockRepaymentUploads = new List <RepaymentUpload> { new RepaymentUpload { CustomerId = 1, Amount = 1500, Date = DateTime.Now }, new RepaymentUpload { CustomerId = 3, Amount = 300, SeasonId = 2, Date = DateTime.Now } }; var repayments = await _repaymentService.ProcessUploads(mockRepaymentUploads); Assert.NotNull(repayments); Assert.Equal(4, repayments.Count); Assert.Equal(1500, repayments[0].Amount); Assert.Null(repayments[0].ParentId); Assert.Equal(1, repayments[0].SeasonId); Assert.Equal(-700, repayments[1].Amount); Assert.Equal(1, repayments[1].SeasonId); Assert.Equal(repayments[0].Id, repayments[1].ParentId); Assert.Equal(700, repayments[2].Amount); Assert.Equal(2, repayments[2].SeasonId); Assert.Equal(repayments[0].Id, repayments[2].ParentId); Assert.Equal(300, repayments[3].Amount); Assert.Null(repayments[3].ParentId); Assert.Equal(2, repayments[3].SeasonId); var summaryAfterUploadsForCustomer1 = await _dbContext.CustomerSummaries .Where(cs => cs.CustomerId == 1) .OrderBy(cs => cs.Season.StartDate) .ToListAsync(); Assert.Equal(2, summaryAfterUploadsForCustomer1.Count); Assert.Equal(1000, summaryAfterUploadsForCustomer1[0].TotalRepaid); Assert.Equal(1400, summaryAfterUploadsForCustomer1[1].TotalRepaid); var summaryAfterUploadsForCustomer3 = await _dbContext.CustomerSummaries .FirstOrDefaultAsync(cs => cs.CustomerId == 3 && cs.SeasonId == 2); Assert.Equal(800, summaryAfterUploadsForCustomer3.TotalRepaid); }