Exemplo n.º 1
0
        /// <summary>
        /// Use for transaction report
        /// </summary>
        /// <param name="filter">object with params for filtering</param>
        /// <returns>Return object with filtered transactions and families</returns>
        public TransactionReportResultDto FilterTransactionReport(FilterTransactionReport filter)
        {
            Mapper.Initialize(e => e.CreateMap <FilterTransactionReport, SelectTransactionsReportStoredProcedure>()
                              .ConstructUsing(r => QueryProvider.CreateQuery <SelectTransactionsReportStoredProcedure>(ConfigurationManager.AppSettings["schema"]))
                              .ForMember(t => t.MinAmount, r => r.MapFrom(w => w.MinSum)));
            var       queryMember = Mapper.Map <FilterTransactionReport, SelectTransactionsReportStoredProcedure>(filter);
            Stopwatch sw          = new Stopwatch();

            sw.Start();
            var resultqr = queryMember.Execute();

            sw.Stop();
            TimeSpan ts          = sw.Elapsed;
            string   elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                                 ts.Hours, ts.Minutes, ts.Seconds,
                                                 ts.Milliseconds / 10);

            Console.WriteLine($"Build response from database to DTO: {elapsedTime}");
            sw.Reset();
            var result = new TransactionReportResultDto();

            sw.Start();
            if (!resultqr.HasNoDataRows)
            {
                ConvertResultToTransactionReport(result, resultqr.ResultToArray <TransactionsReportDto>().ToList(), filter.ReportType, filter);
            }
            sw.Stop();
            ts          = sw.Elapsed;
            elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                        ts.Hours, ts.Minutes, ts.Seconds,
                                        ts.Milliseconds / 10);
            Console.WriteLine($"Preparing response from database to dto:{elapsedTime}");
            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Convert respose from db and convert to transaction report
        /// </summary>
        /// <param name="result">ref obj result</param>
        /// <param name="response">response from db</param>
        /// <param name="reportType">Report type: 1 - payment, 2 - bill</param>
        /// <param name="filter"></param>
        void ConvertResultToTransactionReport(TransactionReportResultDto result, IList <TransactionsReportDto> response, TransFilterType reportType, FilterTransactionReport filter)
        {
            List <TransactionsReportList> unassignedpayments;
            List <int> categoriesIds;
            var        familiesIds = response.AsParallel().Select(r => r.FamilyID).Distinct().ToList();

            result.Families           = FillFamilies(familiesIds, response);
            result.Transactions       = FillTransactions(response, reportType, out unassignedpayments, out categoriesIds).ToList();
            result.UnassignedPayments = unassignedpayments;
            result.CategoriesIDs      = categoriesIds;
            if (filter.ExcludeBillsWithCards != null && (bool)filter.ExcludeBillsWithCards)
            {
                result.Transactions = ExcludeAutoBills(result.Transactions);
            }
        }