Esempio n. 1
0
    /// <summary>
    /// 組成套表所需的日期資料
    /// </summary>
    /// <param name="dateList">當月所有日期</param>
    /// <returns></returns>
    private static List <Dictionary <string, string> > getDutyReportDateDictionary(List <DateTime> dateList, Dictionary <DateTime, List <string> > empDictionary)
    {
        const string NEW_LINE_SYMBOL = "\n";
        List <Dictionary <string, string> > dateDatas = new List <Dictionary <string, string> >();
        var defaultData = new Dictionary <string, string>()
        {
            { "Date", "" },
            { "CWeek", "" },
            { "EWeek", "" },
            { "NWeek", "" },
            { "Emp", "" }
        };

        foreach (var item in dateList)
        {
            var emp = "";
            if (empDictionary != null && empDictionary.ContainsKey(item) && empDictionary[item].Count > 0)
            {
                emp = string.Join(NEW_LINE_SYMBOL, empDictionary[item]);
            }
            dateDatas.Add(
                new Dictionary <string, string>()
            {
                { "Date", item.ToString("MM/dd") },
                { "CWeek", DateUtility.GetDayOfWeek(item, "C") },
                { "EWeek", DateUtility.GetDayOfWeek(item, "E") },
                { "NWeek", DateUtility.GetDayOfWeek(item) },
                { "Emp", emp }
            });
        }
        if (dateDatas != null && dateDatas.Count > 0 && dateDatas[0]["NWeek"] != "")
        {
            int nWeek         = int.Parse(dateDatas[0]["NWeek"]);
            var dateDatas_New = new List <Dictionary <string, string> >();
            for (var i = 0; i < nWeek; i++)
            {
                dateDatas_New.Add(defaultData);
            }
            foreach (var item in dateDatas)
            {
                dateDatas_New.Add(item);
            }
            dateDatas = dateDatas_New;
        }
        var dateDatasCount = dateDatas.Count;

        for (var j = 0; j < (35 - dateDatasCount); j++)
        {
            dateDatas.Add(defaultData);
        }
        return(dateDatas);
    }