Exemple #1
0
        public async Task <ViewResult> Search(TransactionSearchViewModel model)
        {
            var transactions  = repository.Search(model);
            var paginatedList = await PaginatedList <Transaction> .CreateAsync(transactions, 1, 5);

            return(View("List", paginatedList));
        }
Exemple #2
0
        public ActionResult Index(TransactionSearchViewModel viewModel)
        {
            var numberOfMonths = _dateTimeProvider.GetTotalNumberOfMonths(viewModel.StartDate, viewModel.EndDate);

            var data    = _transactionRepository.GetTransactions(viewModel.StartDate, viewModel.EndDate);
            var results = data.Select(item => _autoMapper.Map <TransactionData, TransactionViewModel>(item)).ToList();

            if (viewModel.ShowBuyTransactionsOnly)
            {
                var soldTransactions = results.Where(x => x.TransactionType == TransactionType.Sell);
                results = results.Where(x => x.TransactionType == TransactionType.Buy && String.IsNullOrEmpty(x.SellTransactionId)).ToList();
                foreach (var item in soldTransactions)
                {
                    results.Remove(results.FirstOrDefault(x => x.Id == item.SellTransactionId));
                }
            }

            var taxYearStartDate = _dateTimeProvider.GetTaxYearStartDate(viewModel.StartDate);
            var taxYearData      = _transactionRepository.GetTransactions(taxYearStartDate, viewModel.EndDate);

            var monthlyTargetSetting = _settingRepository.GetSettingByKey("DefaultMonthlyTarget");

            viewModel.Results           = results;
            viewModel.MonthlyTarget     = Decimal.Parse(monthlyTargetSetting.SettingsValue);
            viewModel.CumulativeTarget  = Decimal.Parse(monthlyTargetSetting.SettingsValue) * numberOfMonths;
            viewModel.TransactionPeriod = _transactionFactory.GetTransactionPeriodValue(data);
            viewModel.SinceStartTaxYear = _transactionFactory.GetTransactionPeriodValue(taxYearData);

            return(View(viewModel));
        }
Exemple #3
0
        public ActionResult Index()
        {
            var startDate      = _dateTimeProvider.GetTransactionStartDate(DateTime.UtcNow);
            var endDate        = _dateTimeProvider.GetTransactionEndDate(DateTime.UtcNow);
            var numberOfMonths = _dateTimeProvider.GetTotalNumberOfMonths(startDate, endDate);

            var data    = _transactionRepository.GetTransactions(startDate, endDate);
            var results = data.Select(item => _autoMapper.Map <TransactionData, TransactionViewModel>(item)).ToList();

            var taxYearStartDate = _dateTimeProvider.GetTaxYearStartDate(startDate);
            var taxYearData      = _transactionRepository.GetTransactions(taxYearStartDate, endDate);

            var monthlyTargetSetting = _settingRepository.GetSettingByKey("DefaultMonthlyTarget");

            var viewModel = new TransactionSearchViewModel
            {
                StartDate               = startDate,
                EndDate                 = endDate,
                Results                 = results,
                MonthlyTarget           = Decimal.Parse(monthlyTargetSetting.SettingsValue),
                CumulativeTarget        = Decimal.Parse(monthlyTargetSetting.SettingsValue) * numberOfMonths,
                TaxFreeAllowance        = Decimal.Parse(_settingRepository.GetSettingByKey("TaxFreeAllowance").SettingsValue),
                TransactionPeriod       = _transactionFactory.GetTransactionPeriodValue(data),
                SinceStartTaxYear       = _transactionFactory.GetTransactionPeriodValue(taxYearData),
                ShowBuyTransactionsOnly = false
            };

            return(View(viewModel));
        }
Exemple #4
0
 private IQueryable <TransactionViewModel> AddFilters(TransactionSearchViewModel request, IQueryable <Models.Transaction> transactions)
 {
     return(transactions
            .Where(c => !c.IsDeleted)
            .Where(c => c.UserId == UserId)
            .Where(c => c.AccountId == request.AccountId || c.ToAccountId == request.AccountId)
            .OrderByDescending(c => c.Date)
            .ThenByDescending(c => c.Id)
            .ProjectTo <TransactionViewModel>(mapper.ConfigurationProvider));
 }
Exemple #5
0
        /// <inheritdoc />
        public PagingResponse <TransactionRequestModel> GetModified(TransactionSearchViewModel request)
        {
            var query = dataContext.Transactions
                        .Where(c => c.UpdatedTime > request.LastSyncTime)
                        .Where(c => c.UserId == UserId)
                        .ProjectTo <TransactionRequestModel>(mapper.ConfigurationProvider);

            var response = PagingResponse(request, query, query);

            return(response);
        }
Exemple #6
0
        /// <inheritdoc />
        public PagingResponse <TransactionViewModel> Get(TransactionSearchViewModel request)
        {
            var raw = dataContext.Transactions.FromSqlRaw(@"SELECT `t`.`AccountId`,`t`.`Amount`, `t`.`CreatedTime`, COALESCE(`t`.`Date`, '0001-01-01 00:00:00.000000') AS `c`,
`t`.`Id`, `t`.`IsDeleted`, `t`.`Notes`, `t`.`PayeeId`, `t`.`SubCategoryId`, `t`.`ToAccountId`, `t`.`Date`, `t`.`Number`, `t`.`Status`, `t`.`ToAmount`,
`t`.`Type`, `t`.`UpdatedTime`, `t`.`UserId`, getTotal({0},{1},t.date,t.AccountId,t.ToAccountId,t.Id) as Balance FROM `Transactions` AS `t`", request.AccountId, UserId)
                      .AsNoTracking();

            var dataQuery  = AddFilters(request, raw);
            var countQuery = AddFilters(request, dataContext.Transactions.AsNoTracking());
            var response   = PagingResponse(request, countQuery, dataQuery);

            return(response);
        }
        protected override void Given()
        {
            base.Given();

            _viewModel = new TransactionSearchViewModel
            {
                StartDate = _startDate,
                EndDate   = _endDate,
                ShowBuyTransactionsOnly = true
            };

            GetMock <ITransactionRepository>()
            .Setup(m => m.GetTransactions(_startDate, _endDate))
            .Returns(new List <TransactionData>
            {
                _buyTransactionData,
                _sellTransactionData,
                _buyTransactionData2
            });

            GetMock <IAutoMapper>()
            .Setup(m => m.Map <TransactionData, TransactionViewModel>(_buyTransactionData))
            .Returns(_buyTransactionViewModel);

            GetMock <IAutoMapper>()
            .Setup(m => m.Map <TransactionData, TransactionViewModel>(_sellTransactionData))
            .Returns(_soldTransactionViewModel);

            GetMock <IAutoMapper>()
            .Setup(m => m.Map <TransactionData, TransactionViewModel>(_buyTransactionData2))
            .Returns(_buytransactionvViewModel2);

            GetMock <ISettingRepository>()
            .Setup(m => m.GetSettingByKey("DefaultMonthlyTarget"))
            .Returns(_monthlyTargetSettingData);

            GetMock <IDateTimeProvider>()
            .Setup(m => m.GetTotalNumberOfMonths(_startDate, _endDate))
            .Returns(2);

            GetMock <IDateTimeProvider>()
            .Setup(m => m.GetTaxYearStartDate(_startDate))
            .Returns(_taxYearStartDate);

            GetMock <ITransactionRepository>()
            .Setup(m => m.GetTransactions(_taxYearStartDate, _endDate))
            .Returns(_taxYearTransactions);
        }
Exemple #8
0
        public IQueryable <Transaction> Search(TransactionSearchViewModel model)
        {
            var query = "SELECT * FROM dbo.Transactions WHERE ";

            if (model.TransactionType != null)
            {
                query += "TransactionType = @p0 AND ";
            }
            if (model.Max != null)
            {
                query += "Value < @p1 AND ";
            }
            if (model.Min != null)
            {
                query += "Value > @p2 AND ";
            }
            if (model.Days != null)
            {
                query += "DAY([Date]) < @p3 AND ";
            }
            query += "1 = 1";
            return(applicationContext.Transactions.FromSql(query, model.TransactionType, model.Max, model.Min, model.Days));
        }
Exemple #9
0
 public PagingResponse <TransactionRequestModel> GetModifiedRecords([FromQuery] TransactionSearchViewModel request)
 {
     return(service.GetModified(request));
 }
Exemple #10
0
 public PagingResponse <TransactionViewModel> Get([FromQuery] TransactionSearchViewModel request)
 {
     return(service.Get(request));
 }