public CategoryAreaDataWriter(IAreasReader areasReader, IGroupDataReader groupDataReader, WorksheetInfo worksheet,
            ProfileDataWriter profileDataWriter, CategoryAreaType categoryAreaType)
            : base(areasReader, groupDataReader, worksheet, profileDataWriter)
        {
            _categoryAreaTypeId = categoryAreaType.CategoryTypeId;

            categories = areasReader.GetCategories(_categoryAreaTypeId);

                subnationalCategoryIdToCategoryAreaMap = categories
                    .ToDictionary<Category, int, IArea>(
                    category => category.Id,
                    category => CategoryArea.New(category)
                    );
        }
 protected ParentDataWriter(IAreasReader areasReader, IGroupDataReader groupDataReader, WorksheetInfo worksheetInfo, ProfileDataWriter profileDataWriter)
 {
     AreasReader = areasReader;
     GroupDataReader = groupDataReader;
     Worksheet = worksheetInfo;
     ProfileDataWriter = profileDataWriter;
 }
 public void TestNextRow()
 {
     WorksheetInfo wi = new WorksheetInfo();
     Assert.AreEqual(0, wi.NextRow);
     Assert.AreEqual(1, wi.NextRow);
     Assert.AreEqual(2, wi.NextRow);
 }
 public static ParentDataWriter New(IAreasReader areasReader, IGroupDataReader groupDataReader, WorksheetInfo worksheetInfo, 
     ProfileDataWriter profileDataWriter, IAreaType parentAreaType)
 {
     var categoryAreaType = parentAreaType as CategoryAreaType;
     return categoryAreaType != null
         ? (ParentDataWriter)new CategoryAreaDataWriter(areasReader, groupDataReader, worksheetInfo, profileDataWriter, categoryAreaType)
         : (ParentDataWriter)new SubnationalAreaDataWriter(areasReader, groupDataReader, worksheetInfo, profileDataWriter, parentAreaType);
 }
 public void AddCategorisedData(WorksheetInfo ws, RowLabels rowLabels, IList<CoreDataSet> dataList,
     Dictionary<int, IArea> categoryIdToAreaMap)
 {
     IRange cells = ws.Worksheet.Cells;
     foreach (CoreDataSet data in dataList)
     {
         IArea area = categoryIdToAreaMap[data.CategoryId];
         AddDataRow(ws, rowLabels, area, data, cells, null, null);
     }
 }
 public void TestIsWorksheetEmpty()
 {
     WorksheetInfo wi = new WorksheetInfo();
     int row = wi.NextRow;
     Assert.IsTrue(wi.IsWorksheetEmpty);
     row = wi.NextRow;
     Assert.IsFalse(wi.IsWorksheetEmpty);
     row = wi.NextRow;
     Assert.IsFalse(wi.IsWorksheetEmpty);
 }
 public void WriteChildTrendMarkers(WorksheetInfo worksheetInfo,
     Dictionary<string, TrendMarkerResult> trendMarkerResults, IList<string> childAreaCodes)
 {
     int rowOffset = childAreaCodes.Count;
     foreach (var childAreaCode in childAreaCodes.OrderBy(x => x))
     {
         var trendLabel = GetLabel(trendMarkerResults[childAreaCode]);
         _profileDataWriter.AddTrendMarker(trendLabel, rowOffset, worksheetInfo);
         rowOffset--;
     }
 }
        public void AddData(WorksheetInfo ws, RowLabels rowLabels, IList<CoreDataSet> dataList,
            Dictionary<string, IArea> areaCodeToAreaMap, Dictionary<string, Area> areaCodeToParentMap)
        {
            IRange cells = ws.Worksheet.Cells;
            foreach (CoreDataSet data in dataList)
            {
                IArea area = areaCodeToAreaMap[data.AreaCode];
                Area parentArea;

                string parentAreaName = "",
                    parentAreaCode = "";

                if (areaCodeToParentMap.TryGetValue(data.AreaCode, out parentArea))
                {
                    parentAreaCode = areaCodeToParentMap[data.AreaCode].Code;
                    parentAreaName = areaCodeToParentMap[data.AreaCode].Name;
                }

                AddDataRow(ws, rowLabels, area, data, cells, parentAreaCode, parentAreaName);
            }
        }
 public void WriteNationalTrendMarkers(WorksheetInfo worksheetInfo,
     Dictionary<string, TrendMarkerResult> trendMarkerResults, string areaCode)
 {
 }
        private static void AddDataRow(WorksheetInfo ws, RowLabels rowLabels, IArea area, CoreDataSet coreData,
            IRange cells, string parentAreaCode, string parentAreaName)
        {
            try
            {
                int rowIndex = ws.NextRow;
                int column = 0;

                // Indicator / time period
                cells[rowIndex, column++].Value = rowLabels.IndicatorName;
                cells[rowIndex, column++].Value = rowLabels.TimePeriod;

                // Parent area
                cells[rowIndex, column++].Value = parentAreaCode ?? string.Empty;
                cells[rowIndex, column++].Value = parentAreaName ?? string.Empty;

                // Area code
                var category = area as CategoryArea;
                if (category != null)
                {
                    AddValue(cells[rowIndex, column++], Convert.ToDouble(category.CategoryId));
                }
                else
                {
                    cells[rowIndex, column++].Value = area.Code;
                }

                // Area name
                cells[rowIndex, column++].Value = area.Name;

                // Value / CIs
                AddValue(cells[rowIndex, column++], coreData.Value);
                AddValue(cells[rowIndex, column++], coreData.LowerCI);
                AddValue(cells[rowIndex, column++], coreData.UpperCI);

                // Count
                if (coreData.IsCountValid)
                {
                    AddValue(cells[rowIndex, column], coreData.Count.Value);
                }
                column++;

                // Denominator
                AddValue(cells[rowIndex, column++], coreData.Denominator);

                // Sex / age
                cells[rowIndex, column++].Value = rowLabels.Sex;
                cells[rowIndex, column++].Value = rowLabels.Age;

                // Value note
                if (coreData.ValueNoteId > 0)
                {
                    cells[rowIndex, column].Value = rowLabels.ValueNoteLookUp[coreData.ValueNoteId];
                }
            }
            catch (Exception ex)
            {
                ExceptionLog.LogException(ex, "");
            }
        }
 public void WriteNationalTrendMarkers(WorksheetInfo worksheetInfo,
     Dictionary<string, TrendMarkerResult> trendMarkerResults, string areaCode)
 {
     var label = GetLabel(trendMarkerResults[areaCode]);
     _profileDataWriter.AddTrendMarker(label, RowOffsetForOneArea, worksheetInfo);
 }
 public void AddTrendMarker(TrendMarkerLabel trendMarkerLabel, int rowOffset, WorksheetInfo ws)
 {
     int currentRowIndex = ws.CurrentRow;
     int column = 0;
     IRange cells = ws.Worksheet.Cells;
     int rowIndex = currentRowIndex - rowOffset;
     if (rowIndex > 1)
     {
         cells[rowIndex, ColumnIndexes.RecentTrend].Value = trendMarkerLabel.Text;
     }
 }
        private static void AddDataHeader(WorksheetInfo ws)
        {
            int rowIndex = ws.NextRow;
            IRange row = ws.Worksheet.Cells[rowIndex, 0, rowIndex, 13];
            int column = 0;
            row[rowIndex, column++].Value = "Indicator";
            SetColumnAsText(row[rowIndex, column++], "Time Period");
            SetColumnAsText(row[rowIndex, column++], "Parent Code");
            SetColumnAsText(row[rowIndex, column++], "Parent Name");
            SetColumnAsText(row[rowIndex, column++], "Area Code");
            row[rowIndex, column++].Value = "Area Name";
            row[rowIndex, column++].Value = "Value";
            row[rowIndex, column++].Value = "Lower CI";
            row[rowIndex, column++].Value = "Upper CI";

            row[rowIndex, column++].Value = "Count";
            row[rowIndex, column++].Value = "Denominator";
            SetColumnAsText(row[rowIndex, column++], "Sex");
            SetColumnAsText(row[rowIndex, column++], "Age");

            SetColumnAsText(row[rowIndex, column++], "Note");
            SetColumnAsText(row[rowIndex, column], "Recent Trend");

            foreach (string range in new[] { "$G:$G", "$H:$I", "$I:$I", "$J:$J", "$K:$K" })
            {
                ws.Worksheet.Cells[range].NumberFormat = "0.00";
            }

            row.Font.Bold = true;

            SetColumnWidths(row, new[] { 45, 13, 10, 20, 10, 20, 13, 13, 13, 13, 13, 15, 15, 35, 30 });
        }
        public void WriteMultipleSubnationalTrendMarkers(WorksheetInfo worksheetInfo, Grouping grouping,
            IndicatorMetadata indicatorMetadata, CoreDataCollector coreDataCollector,
            IList<CategoryIdAndAreaCode> categoryIdAndAreaCodes)
        {
            int rowOffset = categoryIdAndAreaCodes.Count;

            foreach (var area in categoryIdAndAreaCodes)
            {
                var dataList = coreDataCollector.GetDataListForArea(area);
                var result = _trendMarkersProvider.GetTrendMarkerResult(indicatorMetadata, grouping, dataList);
                _profileDataWriter.AddTrendMarker(GetLabel(result), rowOffset, worksheetInfo);
                rowOffset--;
            }
        }
 public void WriteSingleSubnationalTrendMarker(WorksheetInfo worksheetInfo, Grouping grouping,
     IndicatorMetadata indicatorMetadata, CoreDataCollector coreDataCollector)
 {
     List<CoreDataSet> dataList = coreDataCollector.GetDataList();
     var result = _trendMarkersProvider.GetTrendMarkerResult(indicatorMetadata, grouping, dataList);
     _profileDataWriter.AddTrendMarker(GetLabel(result), RowOffsetForOneArea, worksheetInfo);
 }
 public void WriteChildTrendMarkers(WorksheetInfo worksheetInfo,
     Dictionary<string, TrendMarkerResult> trendMarkerResults, IList<string> childAreaCodes)
 {
 }
 public void AddData(WorksheetInfo ws, RowLabels rowLabels, CoreDataSet coreData, IArea area)
 {
     if (coreData != null)
     {
         IRange cells = ws.Worksheet.Cells;
         AddDataRow(ws, rowLabels, area, coreData, cells, null, null);
     }
 }
 public void WriteMultipleSubnationalTrendMarkers(WorksheetInfo worksheetInfo, Grouping grouping,
     IndicatorMetadata indicatorMetadata, CoreDataCollector coreDataCollector, IList<CategoryIdAndAreaCode> categoryIdAndAreaCodes)
 {
 }
 public void AddSheet(string sheetLabel)
 {
     var ws = new WorksheetInfo { Worksheet = workbook.Worksheets.Add() };
     ws.Worksheet.Name = sheetLabel;
     _wsDictionary.Add(sheetLabel, ws);
     AddDataHeader(ws);
 }
 public void WriteSingleSubnationalTrendMarker(WorksheetInfo worksheetInfo, Grouping grouping,
     IndicatorMetadata indicatorMetadata, CoreDataCollector coreDataCollector)
 {
 }