/// <summary>
        /// Gets the list of categories for a single user.
        /// </summary>
        /// <param name="userId">The user id that owns the category.</param>
        /// <returns>A Collection of Category summaries. An instance of the <see cref="CategorySummaryCollection"/> class.</returns>
        public async Task <CategorySummaryCollection> ListCategoriesAsync(string userId)
        {
            var documentUri = UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName);

            // create a query to just get the document ids
            var query = DocumentClient
                        .CreateDocumentQuery <CategoryDocument>(documentUri)
                        .Where(d => d.UserId == userId)
                        .Select(d => new CategorySummary {
                Id = d.Id, Name = d.Name
            })
                        .AsDocumentQuery();

            // iterate until we have all of the ids
            var list = new CategorySummaryCollection();

            while (query.HasMoreResults)
            {
                var summaries = await query.ExecuteNextAsync <CategorySummary>().ConfigureAwait(false);

                list.AddRange(summaries);
            }

            return(list);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets a list of categories.
        /// </summary>
        /// <param name="userId">The user id to get the categories for.</param>
        /// <returns>Collection of category summaries.</returns>
        public Task <CategorySummaryCollection> ListCategoriesAsync(string userId)
        {
            var list = this.CategoryDocuments
                       .Where(d => d.UserId == userId)
                       .Select(d => new CategorySummary {
                Id = d.Id, Name = d.Name
            })
                       .ToList();
            var categorySummaries = new CategorySummaryCollection();

            categorySummaries.AddRange(list);
            return(Task.FromResult(categorySummaries));
        }
        /// <summary>
        /// Creates a <see cref="HaushaltsRechner.Business.Reporting.CategorySummaryCollection"/>
        /// for the given <see cref="HaushaltsRechner.Business.SearchParameter.ReportingSearchParameter"/>.
        /// </summary>
        /// <param name="para">The parameter.</param>
        /// <returns></returns>
        public static CategorySummaryCollection GetCategorySummaray(ReportingSearchParameter para)
        {
            var catSumList = new CategorySummaryCollection();

            using (var en = new HaushaltsrechnerEntities())
            {
                //Account
                var movements = en.MOVEMENT.AsQueryable();

                if (para.Accounts.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Accounts.Contains(m.ACCOUNT_ID));
                }

                //Reason
                if (para.Reasons.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Reasons.Contains(m.REASON_ID));
                }

                //DirectionType
                switch (para.DirectionType)
                {
                case ReportingSearchParameterDirectionType.Incomming:
                    movements = movements.Where(
                        m => m.AMOUNT >= 0);
                    break;

                case ReportingSearchParameterDirectionType.Outgoing:
                    movements = movements.Where(
                        m => m.AMOUNT < 0);
                    break;
                }

                //DateAdded
                if (para.DateFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_ADDED >= para.DateFrom);
                }

                if (para.DateTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_ADDED <= date);
                }

                //DateEdited
                if (para.EditFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_EDIT >= para.EditFrom);
                }

                if (para.EditTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_EDIT <= date);
                }

                //Amount
                if (para.AmountFrom != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT >= para.AmountFrom);
                }

                if (para.AmountTo != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT <= para.AmountTo);
                }

                var categories = movements.Select(m => m.CATEGORY).Distinct();

                foreach (var cat in categories)
                {
                    var movInCat = movements.Where(
                        m =>
                        m.CATEGORY_ID == cat.ID);

                    var movInCatsGridMovementList = new List <GridMovement>();

                    foreach (var m in movInCat)
                    {
                        movInCatsGridMovementList.Add(new GridMovement
                        {
                            ID           = m.ID,
                            Amount       = m.AMOUNT,
                            CategoryName = m.CATEGORY.NAME,
                            ReasonText   = m.REASON.TEXT,
                            UserName     = m.USER.NAME,
                            AccountName  = m.ACCOUNT.NAME,
                            DateAdded    = m.DATE_ADDED.ToShortDateString(),
                            DateEdit     = m.DATE_EDIT.HasValue ? m.DATE_EDIT.Value.ToShortDateString() : string.Empty,
                            Message      = m.MESSAGE,
                            CategoryID   = m.CATEGORY_ID,
                            ReasonID     = m.REASON_ID,
                            AccountID    = m.ACCOUNT_ID
                        });
                    }

                    var catSum = new CategorySummary(cat.ID, cat.NAME, movInCatsGridMovementList);
                    catSumList.Add(catSum);
                }
            }
            return(catSumList);
        }
        /// <summary>
        /// Creates a <see cref="HaushaltsRechner.Business.Reporting.CategorySummaryCollection"/>
        /// for the given <see cref="HaushaltsRechner.Business.SearchParameter.ReportingSearchParameter"/>.
        /// </summary>
        /// <param name="para">The parameter.</param>
        /// <returns></returns>
        public static CategorySummaryCollection GetCategorySummaray(ReportingSearchParameter para)
        {
            var catSumList = new CategorySummaryCollection();

            using (var en = new HaushaltsrechnerEntities())
            {
                //Account
                var movements = en.MOVEMENT.AsQueryable();

                if (para.Accounts.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Accounts.Contains(m.ACCOUNT_ID));
                }

                //Reason
                if (para.Reasons.Count > 0)
                {
                    movements = movements.Where(
                        m => para.Reasons.Contains(m.REASON_ID));
                }

                //DirectionType
                switch (para.DirectionType)
                {
                    case ReportingSearchParameterDirectionType.Incomming:
                        movements = movements.Where(
                            m => m.AMOUNT >= 0);
                        break;
                    case ReportingSearchParameterDirectionType.Outgoing:
                        movements = movements.Where(
                            m => m.AMOUNT < 0);
                        break;
                }

                //DateAdded
                if (para.DateFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_ADDED >= para.DateFrom);
                }

                if (para.DateTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_ADDED <= date);
                }

                //DateEdited
                if (para.EditFrom != DateTime.MinValue)
                {
                    movements = movements.Where(
                        m => m.DATE_EDIT >= para.EditFrom);
                }

                if (para.EditTo != DateTime.MinValue)
                {
                    var date = para.EditTo.AddDays(23.99);
                    movements = movements.Where(
                        m => m.DATE_EDIT <= date);
                }

                //Amount
                if (para.AmountFrom != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT >= para.AmountFrom);
                }

                if (para.AmountTo != decimal.MinValue)
                {
                    movements = movements.Where(
                        m => m.AMOUNT <= para.AmountTo);
                }

                var categories = movements.Select(m => m.CATEGORY).Distinct();

                foreach (var cat in categories)
                {
                    var movInCat = movements.Where(
                        m =>
                            m.CATEGORY_ID == cat.ID);

                    var movInCatsGridMovementList = new List<GridMovement>();

                    foreach (var m in movInCat)
                    {
                        movInCatsGridMovementList.Add(new GridMovement
                        {
                            ID = m.ID,
                            Amount = m.AMOUNT,
                            CategoryName = m.CATEGORY.NAME,
                            ReasonText = m.REASON.TEXT,
                            UserName = m.USER.NAME,
                            AccountName = m.ACCOUNT.NAME,
                            DateAdded = m.DATE_ADDED.ToShortDateString(),
                            DateEdit = m.DATE_EDIT.HasValue ? m.DATE_EDIT.Value.ToShortDateString() : string.Empty,
                            Message = m.MESSAGE,
                            CategoryID = m.CATEGORY_ID,
                            ReasonID = m.REASON_ID,
                            AccountID = m.ACCOUNT_ID
                        });
                    }

                    var catSum = new CategorySummary(cat.ID, cat.NAME, movInCatsGridMovementList);
                    catSumList.Add(catSum);
                }
            }
            return catSumList;
        }