Пример #1
0
        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 }) }));
        }
Пример #2
0
        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);
        }