コード例 #1
0
 public PaymentCategoryCostsModel GetCostsByPaymentCategory(PaymentCategoryCostsQuery query)
 {
     EnsureIsValid(query);
     try
     {
         var card = _deps.UserCards.SurelyFind(query.CardId);
         var groups = _deps.CardPayments.Query(query.ToCardPaymentQuery()).GroupBy(x => x.Category);
         var model = new PaymentCategoryCostsModel
         {
             Card = card.ToModel<CardNameModel>(),
             Currency = card.Account.Currency.ToModel<CurrencyModel>(),
             Data = groups.Select(x => new PaymentCategoryCostsItemModel()
             {
                 Category = x.First().ToModel<PaymentCategoryModel>(),
                 Amount = - x.Sum(y => y.Withdrawal.AccountAmount)
             }).ToList()
         };
         model.Total = model.Data.Sum(x => x.Amount);
         return model;
     }
     catch (Exception ex)
     {
         throw new ServiceException("Can't get costs by payment category.", ex);
     }
 }
コード例 #2
0
 public PaymentCategoryCostsModel GetCostsByPaymentCategory(PaymentCategoryCostsQuery query)
 {
     EnsureIsValid(query);
     try
     {
         var card   = _deps.UserCards.SurelyFind(query.CardId);
         var groups = _deps.CardPayments.Query(query.ToCardPaymentQuery()).GroupBy(x => x.Category);
         var model  = new PaymentCategoryCostsModel
         {
             Card     = card.ToModel <CardNameModel>(),
             Currency = card.Account.Currency.ToModel <CurrencyModel>(),
             Data     = groups.Select(x => new PaymentCategoryCostsItemModel()
             {
                 Category = x.First().ToModel <PaymentCategoryModel>(),
                 Amount   = -x.Sum(y => y.Withdrawal.AccountAmount)
             }).ToList()
         };
         model.Total = model.Data.Sum(x => x.Amount);
         return(model);
     }
     catch (Exception ex)
     {
         throw new ServiceException("Can't get costs by payment category.", ex);
     }
 }
コード例 #3
0
 public static DbQuery <CardPayment> ToCardPaymentQuery(this PaymentCategoryCostsQuery query)
 {
     return(DbQuery.For <CardPayment>()
            .FilterBy(x => x.Card.Id == query.CardId)
            .AndFilterBy(x => x.CompletedDateUtc.HasValue &&
                         x.CompletedDateUtc >= query.From &&
                         x.CompletedDateUtc <= query.To));
 }
コード例 #4
0
        public IHttpActionResult GetCostsByPaymentCategory([FromUri] PaymentCategoryCostsQuery query)
        {
            var stats = _paymentStatisticsService.GetCostsByPaymentCategory(query);

            return(Ok(stats));
        }