private void SetStringArrayJS(IncomeStatementTab expenses, string ConnectionString)
        {
            //Writing an array with this format for the chart

            /*['Month', 'Bolivia', 'Ecuador', 'Madagascar', 'Papua New Guinea', 'Rwanda'],
             *         ['2004/05', 165, 938, 522, 998, 450],
             *         ['2005/06', 135, 1120, 599, 1268, 288],
             *         ['2006/07', 157, 1167, 587, 807, 397],
             *         ['2007/08', 139, 1110, 615, 968, 215],
             *         ['2008/09', 136, 691, 629, 1026, 366] */

            var mostExpensiveCategories = (from ex in expenses.report
                                           where ex.bitmap == 1
                                           orderby ex.total descending
                                           select ex.category).Take(4);


            var ado = new AdoRepository <POCO.yearlyExpensePerCategoryLine>(ConnectionString);

            _yearlyExpensePerCategoryLines = ado.YearlyExpensePerCategory(_dossierId,
                                                                          mostExpensiveCategories.ElementAt(0),
                                                                          mostExpensiveCategories.ElementAt(1),
                                                                          mostExpensiveCategories.ElementAt(2),
                                                                          mostExpensiveCategories.ElementAt(3),
                                                                          true);

            StringBuilder sb = new StringBuilder();

            //header
            sb.Append("['year'");
            foreach (var cat in mostExpensiveCategories)
            {
                sb.Append(",'" + cat + "'");
            }
            sb.Append("]");

            _JSDataArray += sb.ToString() + "\n";

            sb = new StringBuilder();

            for (int i = _beginYear; i <= _endYear; i++)
            {
                sb.Append(",['" + i + "'");
                foreach (var cat in mostExpensiveCategories)
                {
                    decimal tot = (from line in _yearlyExpensePerCategoryLines
                                   where line.year == i && line.category == cat
                                   select line.total).FirstOrDefault();

                    string strTot = tot.ToString().Replace(',', '.');

                    sb.Append("," + strTot);
                }
                sb.Append("]");

                _JSDataArray += sb.ToString() + "\n";
                sb            = new StringBuilder();
            }
        }
        private void SetPageElems()
        {
            _Categories    = _context.recordCategories.Where(ec => ec.dossierId == _dossierId).ToList();
            _Subcategories = GetListExpenseSubcategories(_dossierId);

            _ReportExpenses = new IncomeStatementTab(_dossierId, beginDate, endDate, true);
            _ReportRevenues = new IncomeStatementTab(_dossierId, beginDate, endDate, false);

            _emptyRecordForEdit = new RecordModel(_dossierId);
        }
        public DossierDetailsModel(int dossierId, string ConnectionString = "")
        {
            _dossier = (from d in _context.dossiers
                        where d.dossierId == dossierId
                        select new POCO.dossier {
                dossierId = d.dossierId,
                creationDate = d.creationDate,
                dossierName = d.dossierName,
                userId = d.userId
            }).FirstOrDefault();

            _dossierId = dossierId;

            //userName

            _userName = (from d in _context.dossiers
                         join u in _context.AspNetUsers on d.userId equals u.Id
                         where d.dossierId == dossierId
                         select u.UserName).Single();



            _RecordCategories = (from sc in (_context.recordCategories.Where(ec => ec.dossierId == dossierId).ToList())
                                 select new POCO.recordCategory
            {
                description = sc.description,
                dossierId = sc.dossierId,
                isExpense = sc.isExpense,
                recordCategoryId = sc.recordCategoryId,
            }).ToList();



            //TODO: test both methods
            _endYear   = StoreProcedures.GetMaxYearDossier(dossierId);
            _beginYear = StoreProcedures.GetMinYearDossier(dossierId);


            var _RecordSubcategoriesResult = _context.GetrecordSubcategoriesByDossierId(dossierId);

            _RecordSubcategories = (from rscr in _RecordSubcategoriesResult
                                    select new POCO.recordSubcategory
            {
                description = rscr.description,
                recordCategoryId = rscr.recordCategoryId,
                recordSubcategoryId = rscr.recordCategoryId
            }).ToList();


            var myDate  = DateTime.Now;
            var newDate = myDate.AddYears(-1);

            newDate = newDate.AddDays(1);

            string beginDate365dd = Utils.Utils.FormatDate(newDate);
            string endDate365dd   = Utils.Utils.FormatDate(DateTime.Now);

            IncomeStatementTab expenses = new IncomeStatementTab(dossierId, beginDate365dd, endDate365dd, true);
            IncomeStatementTab revenues = new IncomeStatementTab(dossierId, beginDate365dd, endDate365dd, false);

            try
            {
                if (!string.IsNullOrEmpty(ConnectionString))
                {
                    SetStringArrayJS(expenses, ConnectionString);
                }
            }
            catch (Exception)
            {
            }

            _overallExpensesLast365 = expenses.totalDec;
            _overallRevenuesLast365 = revenues.totalDec;


            //var mostExpensiveCategories = (from ex in expenses.report
            //                                where ex.bitmap == 1
            //                                orderby ex.total descending
            //                                select ex.category).Take(4);


            //var ado = new AdoRepository<POCO.yearlyExpensePerCategoryLine>(ConnectionString);



            //_yearlyExpensePerCategoryLines = ado.YearlyExpensePerCategory(dossierId,
            //                                                              mostExpensiveCategories.ElementAt(0),
            //                                                              mostExpensiveCategories.ElementAt(1),
            //                                                              mostExpensiveCategories.ElementAt(2),
            //                                                              mostExpensiveCategories.ElementAt(3),
            //                                                              true);
        }