public string getCalendarInfo()
        {
            rAjaxGetData<ApplyCalendar> rAjaxResult = new rAjaxGetData<ApplyCalendar>();

            try
            {
                ApplyCalendar calObj = null;
                var getLogic = openLogic();

                using (db0 = getLogic.getDB0)
                {

                    //參數:取得申請日期最大期限
                    int get_N_Max = (int)getLogic.getParmValue(ParmDefine.bufferNorth_Max);
                    int get_S_Max = (int)getLogic.getParmValue(ParmDefine.bufferSouth_Max);

                    int get_Apply_Max_Day = get_N_Max >= get_S_Max ? get_N_Max : get_S_Max;

                    //參數:取得申請人數最大上限
                    int get_N_num = (int)getLogic.getParmValue(ParmDefine.N_Max_joinnum);
                    int get_S_num = (int)getLogic.getParmValue(ParmDefine.S_Max_joinnum);

                    DateTime setWorkFistDay = DateTime.Now.AddDays(15);//提前七天才可申請
                    DateTime setWokrLastDay = setWorkFistDay.AddDays(get_Apply_Max_Day);

                    var item_apply = db0.Apply
                        .Where(x => x.event_strattime != null &&
                                  (DateTime)x.event_strattime >= setWorkFistDay &&
                                  (DateTime)x.event_strattime <= setWokrLastDay &&
                                   (x.audit_state == CodeSheet.audit_state.notaudit.Code ||
                                   x.audit_state == CodeSheet.audit_state.pass.Code))
                        .Select(x => new { x.apply_id, x.event_strattime, x.event_area, x.join_num, x.audit_state }).ToList(); //加ToList 強制把資料先讀取出來。

                    var item_calendar = db0.CalendarDate
                        .Where(x => x.set_date >= setWorkFistDay &&
                                    x.set_date <= setWokrLastDay)
                        .Select(x => new { x.calendardate_id, x.set_date, x.state, x.eventarea_code }).ToList();

                    #region 日期UI資料排列處理

                    var getCalendarFirstDay = setWorkFistDay.WeekFirstDay();
                    var getCalendarLastDay = setWokrLastDay.WeekLastDay();

                    var getDateSection = (getCalendarLastDay - getCalendarFirstDay).TotalDays + 1;

                    calObj = new ApplyCalendar()
                    {
                        year = DateTime.Now.Year,
                        month = DateTime.Now.Month
                    };

                    List<WeekObject> wObj = new List<WeekObject>();
                    WeekObject weekObject = null;

                    List<DayObject> dObj = new List<DayObject>();

                    for (int i = 0; i < getDateSection; i++)
                    {

                        var setDayObj = getCalendarFirstDay.AddDays(i);

                        if (setDayObj.DayOfWeek == DayOfWeek.Sunday) //遇到星期日 要製作新的Week物件
                        {
                            if (dObj.Count() > 0) //製作Week物件時 要將之前的資料取出來,但第一排第一天這時是不會有日期資料
                            {
                                weekObject.dayInfo = dObj.ToArray();
                                dObj.Clear();
                                wObj.Add(weekObject);
                            }

                            weekObject = new WeekObject(); //產生新的week物件
                        }

                        int getNCount = item_apply.Where(x => ((DateTime)x.event_strattime).Year == setDayObj.Year &&
                                                               ((DateTime)x.event_strattime).Month == setDayObj.Month &&
                                                               ((DateTime)x.event_strattime).Day == setDayObj.Day &&
                                                               (x.audit_state == CodeSheet.audit_state.notaudit.Code ||
                                                                x.audit_state == CodeSheet.audit_state.pass.Code) &&
                                                                x.event_area == CodeSheet.apply_area.bufferNorth.Code.CInt())
                                                  .Sum(x => x.join_num);
                        int getSCount = item_apply.Where(x => ((DateTime)x.event_strattime).Year == setDayObj.Year &&
                                                               ((DateTime)x.event_strattime).Month == setDayObj.Month &&
                                                               ((DateTime)x.event_strattime).Day == setDayObj.Day &&
                                                               (x.audit_state == CodeSheet.audit_state.notaudit.Code ||
                                                                x.audit_state == CodeSheet.audit_state.pass.Code) &&
                                                              x.event_area == CodeSheet.apply_area.bufferSouth.Code.CInt())
                                                  .Sum(x => x.join_num);
                        var NDayState = item_calendar.Where(x => x.set_date.Year == setDayObj.Year &&
                                                            x.set_date.Month == setDayObj.Month &&
                                                            x.set_date.Day == setDayObj.Day &&
                                                            x.eventarea_code == CodeSheet.apply_area.bufferNorth.Code.CInt());
                        var SDayState = item_calendar.Where(x => x.set_date.Year == setDayObj.Year &&
                                                                 x.set_date.Month == setDayObj.Month &&
                                                                 x.set_date.Day == setDayObj.Day &&
                                                                 x.eventarea_code == CodeSheet.apply_area.bufferSouth.Code.CInt());
                        int Nstate = 0;
                        int Sstate = 0;
                        if (NDayState.Any())
                        {
                            Nstate = 1;
                        }
                        if (SDayState.Any())
                        {
                            Sstate = 1;
                        }

                        dObj.Add(new DayObject()
                        {
                            apply_date = setDayObj,
                            isNowMonth = (setDayObj >= setWorkFistDay && setDayObj <= setWokrLastDay),
                            EventAreaNorth = new ApplyInfo() { code = CodeSheet.apply_area.bufferNorth.Code.CInt(), left_available = get_N_num - getNCount, dayState = Nstate },
                            EventAreaSouth = new ApplyInfo() { code = CodeSheet.apply_area.bufferSouth.Code.CInt(), left_available = get_S_num - getSCount, dayState = Sstate },
                        });
                    }

                    if (dObj.Count() > 0)
                    {
                        weekObject.dayInfo = dObj.ToArray();
                        dObj.Clear();
                        wObj.Add(weekObject);
                    }

                    calObj.weekInfo = wObj.ToArray();
                    rAjaxResult.data = calObj;
                    #endregion
                }

                rAjaxResult.result = true;
                return defJSON(rAjaxResult);
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
                return defJSON(rAjaxResult);
            }
        }
        public string getOptionInfo(int apply_area_id)
        {
            rAjaxGetData<IList<DayObject>> rAjaxResult = new rAjaxGetData<IList<DayObject>>();
            DateTime setWorkFistDay = DateTime.Now.AddDays(15);//提前七天才可申請
            try
            {
                var getLogic = openLogic();

                using (db0 = getLogic.getDB0)
                {
                    //參數:取得申請日期最大期限
                    int get_Max_Days = 0;
                    //參數:取得申請人數最大上限
                    int get_Max_num = 0;

                    if (apply_area_id == CodeSheet.apply_area.bufferNorth.Code.CInt())
                    {
                        get_Max_Days = (int)getLogic.getParmValue(ParmDefine.bufferNorth_Max);
                        get_Max_num = (int)getLogic.getParmValue(ParmDefine.N_Max_joinnum);
                    }
                    if (apply_area_id == CodeSheet.apply_area.bufferSouth.Code.CInt())
                    {
                        get_Max_Days = (int)getLogic.getParmValue(ParmDefine.bufferSouth_Max);
                        get_Max_num = (int)getLogic.getParmValue(ParmDefine.N_Max_joinnum);
                    }

                    DateTime setWokrLastDay = setWorkFistDay.AddDays(get_Max_Days);

                    var item_apply = db0.Apply
                        .Where(x => x.event_strattime != null &&
                                  (DateTime)x.event_strattime >= setWorkFistDay &&
                                  (DateTime)x.event_strattime <= setWokrLastDay &&
                                   (x.audit_state == CodeSheet.audit_state.notaudit.Code || x.audit_state == CodeSheet.audit_state.pass.Code) &&
                                   x.event_area == apply_area_id)
                        .Select(x => new { x.apply_id, x.event_strattime, x.event_area, x.join_num, x.audit_state }).ToList(); //加ToList 強制把資料先讀取出來。
                    var item_calendar = db0.CalendarDate
                       .Where(x => x.set_date >= setWorkFistDay &&
                                   x.set_date <= setWokrLastDay)
                       .Select(x => new { x.calendardate_id, x.set_date, x.state, x.eventarea_code }).ToList();

                    #region 日期UI資料排列處理

                    var getDateSection = (setWokrLastDay - setWorkFistDay).TotalDays + 1;

                    IList<DayObject> dObj = new List<DayObject>();

                    for (int i = 0; i < getDateSection; i++)
                    {
                        int getCount = 0;
                        Boolean state = true;
                        var setDayObj = setWorkFistDay.AddDays(i);
                        if (apply_area_id == CodeSheet.apply_area.bufferNorth.Code.CInt())
                        {
                            getCount = item_apply.Where(x => ((DateTime)x.event_strattime).ToString("yyyyMMdd") == setDayObj.ToString("yyyyMMdd") &&
                                                              x.event_area == CodeSheet.apply_area.bufferNorth.Code.CInt() &&
                                                              (x.audit_state == CodeSheet.audit_state.notaudit.Code ||
                                                                x.audit_state == CodeSheet.audit_state.pass.Code))
                                                             .Sum(x => x.join_num);
                            var getstate = item_calendar.Where(x => x.set_date.Year == setDayObj.Year &&
                                                            x.set_date.Month == setDayObj.Month &&
                                                            x.set_date.Day == setDayObj.Day &&
                                                            x.eventarea_code == CodeSheet.apply_area.bufferNorth.Code.CInt());
                            if (getstate.Any())
                            {
                                state = false;
                            }
                            if (state)
                            {
                                dObj.Add(new DayObject()
                                {
                                    apply_date = DateTime.Parse(setDayObj.ToOnlyStandardDate()),
                                    EventAreaWork = new ApplyInfo() { code = CodeSheet.apply_area.bufferNorth.Code.CInt(), left_available = get_Max_num - getCount }
                                });
                            }
                        }
                        if (apply_area_id == CodeSheet.apply_area.bufferSouth.Code.CInt())
                        {
                            getCount = item_apply.Where(x => ((DateTime)x.event_strattime).ToString("yyyyMMdd") == setDayObj.ToString("yyyyMMdd") &&
                                                               x.event_area == CodeSheet.apply_area.bufferSouth.Code.CInt() &&
                                                               (x.audit_state == CodeSheet.audit_state.notaudit.Code ||
                                                                x.audit_state == CodeSheet.audit_state.pass.Code)
                                                               ).Sum(x => x.join_num);
                            var getstate = item_calendar.Where(x => x.set_date.Year == setDayObj.Year &&
                                                            x.set_date.Month == setDayObj.Month &&
                                                            x.set_date.Day == setDayObj.Day &&
                                                            x.eventarea_code == CodeSheet.apply_area.bufferSouth.Code.CInt());
                            if (getstate.Any())
                            {
                                state = false;
                            }
                            if (state)
                            {
                                dObj.Add(new DayObject()
                                {
                                    apply_date = setDayObj,
                                    EventAreaWork = new ApplyInfo() { code = CodeSheet.apply_area.bufferSouth.Code.CInt(), left_available = get_Max_num - getCount }
                                });
                            }
                        }
                    }
                    rAjaxResult.data = dObj;
                    #endregion
                }

                rAjaxResult.result = true;
                return defJSON(rAjaxResult);
            }
            catch (Exception ex)
            {
                rAjaxResult.result = false;
                rAjaxResult.message = ex.Message;
                return defJSON(rAjaxResult);
            }
        }
 public async Task<string> aj_MasterGet(string sn)
 {
     var item = await roleManager.FindByIdAsync(sn);
     var r = new rAjaxGetData<IdentityRole>() { data = item };
     return defJSON(r);
 }
        public IHttpActionResult GetCheckApply([FromUri]q_Apply_Detail_Evaporate q)
        {
            using (db0 = getDB0())
            {
                string user_id = string.Empty;
                if (q.user_id == null)
                {
                    user_id = this.UserId;
                }
                else
                {
                    user_id = q.user_id;
                }

                rAjaxGetData<m_Apply> r = new rAjaxGetData<m_Apply>();
                r.hasData = db0.Apply.Any(x => x.y == allowApplyYear && x.userid == this.UserId);
                if (r.hasData)
                {
                    var md = db0.Apply
                        .Where(x => x.y == allowApplyYear && x.userid == this.UserId)
                        .Select(x => new m_Apply()
                        {
                            apply_id = x.apply_id,
                            doc_date = x.doc_date,
                            doc_gender = x.doc_gender,
                            doc_name = x.doc_name,
                            doc_rank = x.doc_rank,
                            doc_tel = x.doc_tel,
                            mng_gender = x.mng_gender,
                            mng_name = x.mng_name,
                            mng_rank = x.mng_rank,
                            mng_tel = x.mng_tel,
                            y = x.y,
                            userid = x.userid,
                            start_date = x.start_date,
                            end_date = x.end_date
                        }).FirstOrDefault();

                    var mds = db0.Apply_Detail_Evaporate.Where(x => x.apply_id == md.apply_id)
                        .Select(x => new m_Apply_Detail_Evaporate()
                        {
                            equipment_id = x.equipment_id,
                            equipment_sn = x.Equipment_Chiller.equipment_sn,
                            apply_detail_evaporate_id = x.apply_detail_evaporate_id,
                            td_set = x.td_set,
                            td_value_01 = x.td_value_01,
                            td_value_02 = x.td_value_02,
                            td_value_03 = x.td_value_03,
                            td_value_04 = x.td_value_04,
                            td_value_05 = x.td_value_05,
                            td_value_06 = x.td_value_06,
                            td_value_07 = x.td_value_07,
                            td_value_08 = x.td_value_08,
                            td_value_09 = x.td_value_09,
                            td_value_10 = x.td_value_10,
                            td_value_11 = x.td_value_11,
                            td_value_12 = x.td_value_12,
                            abnormal_01 = x.abnormal_01,
                            abnormal_02 = x.abnormal_02,
                            abnormal_03 = x.abnormal_03,
                            abnormal_04 = x.abnormal_04,
                            abnormal_05 = x.abnormal_05,
                            abnormal_06 = x.abnormal_06,
                            abnormal_07 = x.abnormal_07,
                            abnormal_08 = x.abnormal_08,
                            abnormal_09 = x.abnormal_09,
                            abnormal_10 = x.abnormal_10,
                            abnormal_11 = x.abnormal_11,
                            abnormal_12 = x.abnormal_12
                        });
                    var nds = db0.Apply_Detail_Condenser.Where(x => x.apply_id == md.apply_id)
                        .Select(x => new m_Apply_Detail_Condenser()
                        {
                            equipment_id = x.equipment_id,
                            equipment_sn = x.Equipment_Chiller.equipment_sn,
                            apply_detail_condenser_id = x.apply_detail_condenser_id,
                            td_set = x.td_set,
                            td_value_01 = x.td_value_01,
                            td_value_02 = x.td_value_02,
                            td_value_03 = x.td_value_03,
                            td_value_04 = x.td_value_04,
                            td_value_05 = x.td_value_05,
                            td_value_06 = x.td_value_06,
                            td_value_07 = x.td_value_07,
                            td_value_08 = x.td_value_08,
                            td_value_09 = x.td_value_09,
                            td_value_10 = x.td_value_10,
                            td_value_11 = x.td_value_11,
                            td_value_12 = x.td_value_12,
                            abnormal_01 = x.abnormal_01,
                            abnormal_02 = x.abnormal_02,
                            abnormal_03 = x.abnormal_03,
                            abnormal_04 = x.abnormal_04,
                            abnormal_05 = x.abnormal_05,
                            abnormal_06 = x.abnormal_06,
                            abnormal_07 = x.abnormal_07,
                            abnormal_08 = x.abnormal_08,
                            abnormal_09 = x.abnormal_09,
                            abnormal_10 = x.abnormal_10,
                            abnormal_11 = x.abnormal_11,
                            abnormal_12 = x.abnormal_12
                        });

                    md.apply_Detail_Evaporate = mds.ToList();
                    md.apply_Detail_Condenser = nds.ToList();

                    r.data = md;
                }
                else
                {
                    r.message = allowApplyYear + "年度尚未申報";
                }
                return Ok<rAjaxGetData<m_Apply>>(r);
            };
        }
        /// <summary>
        /// 2016/3/15 將負載調控改為同表二、表三方式
        /// </summary>
        /// <param name="q"></param>
        /// <returns></returns>
        public IHttpActionResult GetQueryLoadingYear([FromUri]q_Apply_Detail_Loading q)
        {
            #region 連接BusinessLogicLibary資料庫並取得資料
            rAjaxGetData<Apply_Detail_Loading> r = new rAjaxGetData<Apply_Detail_Loading>();
            using (db0 = getDB0())
            {
                var getUserIdCK = this.UserId;

                string getUserId = this.UserId == null ? q.user_id : this.UserId;
                r.data = db0.Apply_Detail_Loading
                    .Where(x => x.y == q.y && x.equipment_id == q.equipment_chiller_id).FirstOrDefault();

                r.hasData = r.data == null ? false : true;
                if (!r.hasData)
                    r.message = "查無資料";
                return Ok<rAjaxGetData<Apply_Detail_Loading>>(r);
            }
            #endregion
        }
        public IHttpActionResult GetCheckMonthAverage()
        {
            using (db0 = getDB0())
            {

                rAjaxGetData<IList<m_Apply_Detail_Condenser>> r = new rAjaxGetData<IList<m_Apply_Detail_Condenser>>();
                r.hasData = db0.Apply_Detail_Condenser.Any(x => x.y == allowApplyYear && x.userid == this.UserId);
                if (r.hasData)
                {
                    r.data = db0.Apply_Detail_Condenser
                        .Where(x => x.y == allowApplyYear && x.userid == this.UserId)
                        .Select(x => new m_Apply_Detail_Condenser()
                        {
                            equipment_id = x.equipment_id,
                            equipment_sn = x.Equipment_Chiller.equipment_sn,
                            td_value_01 = x.td_value_01,
                            td_value_02 = x.td_value_02,
                            td_value_03 = x.td_value_03,
                            td_value_04 = x.td_value_04,
                            td_value_05 = x.td_value_05,
                            td_value_06 = x.td_value_06,
                            td_value_07 = x.td_value_07,
                            td_value_08 = x.td_value_08,
                            td_value_09 = x.td_value_09,
                            td_value_10 = x.td_value_10,
                            td_value_11 = x.td_value_11,
                            td_value_12 = x.td_value_12

                        })
                        .OrderBy(x => x.equipment_id).ToList();
                }
                else
                {
                    r.message = allowApplyYear + "年度尚未申報";
                }
                return Ok<rAjaxGetData<IList<m_Apply_Detail_Condenser>>>(r);
            };
        }
 public async Task<IHttpActionResult> Get(string sn)
 {
     var item = await roleManager.FindByIdAsync(sn);
     var r = new rAjaxGetData<IdentityRole>() { data = item };
     return Ok(r);
 }