Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/GridDemo.Wpf/Controls/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/GridDemo.Wpf/Controls/SalesByYearData.cs

using System;
using System.Collections.Generic;
using System.Windows;
using GridDemo;
using System.Collections;
using System.Globalization;
using DevExpress.Data;
using DevExpress.Xpf.DemoBase;
using DevExpress.Xpf.Grid;
using DevExpress.Xpf.Editors.Settings;
using DevExpress.Xpf.Editors;
using System.Windows.Controls;
using System.Data;

namespace GridDemo {
    public static class SalesByYearData {
        public static Type GetColumnType(string fieldName) {
            return fieldName.Contains("Date") ? typeof(DateTime) : typeof(int);
        }
        public static IList GetSalesByYearData(bool byMonthReport = false) {
            List<string> columns = new List<string>();
            columns.Add("Date");
            if(byMonthReport)
                columns.Add("DateMonth");
            foreach(DataRow row in NWindData.Employees.Table.Rows) {
                string name = (string)row["FirstName"] + " " + (string)row["LastName"];
                if(!columns.Contains(name))
                    columns.Add(name);
            }
            DataTable table = new DataTable();
            foreach(string employe in columns) {
                table.Columns.Add(new DataColumn(employe) { DataType = GetColumnType(employe) });
            }
            Random random = new Random();
            for(int yearIndex = 10; yearIndex > 0; yearIndex--) {
                int year = DateTime.Now.Year - yearIndex;
                for(int month = 1; month <= 12; month++) {
                    int daysCount = byMonthReport ? DateTime.DaysInMonth(year, month) : 1;
                    for(int day = 1; day <= daysCount; day++) {
                        DataRow row = table.NewRow();
                        row["Date"] = new DateTime(year, month, day);
                        int startColumnIndex = 1;
                        if(byMonthReport) {
                            row["DateMonth"] = row["Date"];
                            startColumnIndex++;
                        }
                        for(int columnIndex = startColumnIndex; columnIndex < columns.Count; columnIndex++)
                            row[columns[columnIndex]] = random.Next(30000 / daysCount);
                        table.Rows.Add(row);
                    }
                }
            }
            return table.DefaultView;

        }
    }
    public class SalesByYearDataColumnTemplateSelector : DataTemplateSelector {
        public override DataTemplate SelectTemplate(object item, DependencyObject container) {
            ColumnGeneratorItemContext context = (ColumnGeneratorItemContext)item;
            GridControl grid = (GridControl)container;
            return (DataTemplate)grid.Resources[context.PropertyDescriptor.Name == "Date" ? "DateColumnTemplate" : "EmployeeColumnTemplate"];
        }
    }
}