public String SaveAlertSetting(AlertSettingViewModel Setting)
        {
            String ret = "false";
            try
            {
                if (Setting.EventClass == null) {
                    SystemSetting setting = db.SystemSetting.Find(db.SystemSetting.Where(x => x.EventClass == null).Select(x => x.Seq).First());
                    setting.AlertTimes = Setting.AlertTimes;
                    db.SaveChanges();

                    var qry = db.AlertTimeSetting.Where(x => x.EventClass == null);
                    foreach (AlertTimeSetting o in qry) {
                        o.StartTime = Setting.TimeSetting[0].StartTime;
                        o.StartTime2 = Setting.TimeSetting[0].StartTime2;
                        o.StartTime3 = Setting.TimeSetting[0].StartTime3;
                        o.EndTime = Setting.TimeSetting[0].EndTime;
                        o.EndTime2 = Setting.TimeSetting[0].EndTime2;
                        o.EndTime3 = Setting.TimeSetting[0].EndTime3;
                        o.isAlert = Setting.TimeSetting[o.Week - 1].isAlert;
                    }

                    db.SaveChanges();

                    var qry2 = db.AlertHolidaySetting.Where(x => x.EventClass == null);
                    foreach (AlertHolidaySetting o in qry2) {
                        db.AlertHolidaySetting.Remove(o);
                    }
                    db.SaveChanges();

                    for (int k = 0; k < Setting.HolidaySetting.Count; k++) {
                        AlertHolidaySetting hSetting = new AlertHolidaySetting();
                                                
                        hSetting.EventClass = null;
                        hSetting.EndDate = Setting.HolidaySetting[k].EndDate.Date.AddHours(23).AddMinutes(59);
                        hSetting.isSysDefault = true;
                        hSetting.StartDate = Setting.HolidaySetting[k].StartDate.Date;
                        hSetting.isAlert = Setting.HolidaySetting[k].isAlert;
                        
                        db.AlertHolidaySetting.Add(hSetting);
                        db.SaveChanges();
                    }



                    for (int k = 0; k < Setting.DetailSetting.Count; k++) {
                        int temp = Setting.DetailSetting[k].AlertEvent;
                        var qry3 = db.AlertDetailSetting.Where(x => x.EventClass == null && x.AlertEvent == temp);
                        foreach (AlertDetailSetting o in qry3) {
                            o.FirstTime = Setting.DetailSetting[k].FirstTime;
                            if (Setting.DetailSetting[k].Memo == null)
                                o.Memo = "";
                            else
                                o.Memo = Setting.DetailSetting[k].Memo;
                            o.SecondTime = Setting.DetailSetting[k].SecondTime;
                            o.Times = Setting.DetailSetting[k].Times;
                        }
                        db.SaveChanges();
                    }

                    

                    ret = "true";
                }
                else {
                    if (Setting.isSysDefault) {
                        SystemSetting setting = new SystemSetting();

                        setting.EventClass = Setting.EventClass;
                        setting.AlertTimes = Setting.AlertTimes;
                        setting.SugArriveMin = db.SystemSetting.Where(x => x.EventClass == null).Select(x => x.SugArriveMin).First();
                        setting.SugFinishMin = db.SystemSetting.Where(x => x.EventClass == null).Select(x => x.SugFinishMin).First();
                        setting.isSysDefault = false;
                        
                        db.SystemSetting.Add(setting);
                        db.SaveChanges();

                        for (int k = 0; k < Setting.DetailSetting.Count; k++) {
                            AlertDetailSetting dSetting = new AlertDetailSetting();
                            dSetting.EventClass = Setting.DetailSetting[k].EventClass;
                            dSetting.AlertEvent = Setting.DetailSetting[k].AlertEvent;
                            dSetting.FirstTime = Setting.DetailSetting[k].FirstTime;
                            if (Setting.DetailSetting[k].Memo==null)
                                dSetting.Memo = "";
                            else
                                dSetting.Memo = Setting.DetailSetting[k].Memo;
                            dSetting.SecondTime = Setting.DetailSetting[k].SecondTime;
                            dSetting.isSysDefault = false;
                            dSetting.Times = Setting.DetailSetting[k].Times;

                            db.AlertDetailSetting.Add(dSetting);
                            db.SaveChanges();
                        }

                        ret = "true";

                    }
                    else {
                        SystemSetting setting = db.SystemSetting.Find(db.SystemSetting.Where(x => x.EventClass == Setting.EventClass).Select(x => x.Seq).First());
                        setting.AlertTimes = Setting.AlertTimes;

                        db.SaveChanges();

                        for (int k = 0; k < Setting.DetailSetting.Count; k++) {
                            int temp = Setting.DetailSetting[k].AlertEvent;
                            var qry = db.AlertDetailSetting.Where(x => x.EventClass == Setting.EventClass && x.AlertEvent == temp);
                            foreach (AlertDetailSetting o in qry) {
                                o.FirstTime = Setting.DetailSetting[k].FirstTime;
                                if (Setting.DetailSetting[k].Memo == null)
                                    o.Memo = "";
                                else
                                    o.Memo = Setting.DetailSetting[k].Memo;
                                o.SecondTime = Setting.DetailSetting[k].SecondTime;
                                o.Times = Setting.DetailSetting[k].Times;
                            }
                            db.SaveChanges();
                        }
                        ret = "true";
                    }

                    if (Setting.TimeSetting[0].isSysDefault) {
                        for (int k = 0; k < 7; k++) {
                            AlertTimeSetting aSetting = new AlertTimeSetting();
                            aSetting.EventClass = Setting.TimeSetting[k].EventClass;
                            aSetting.EndTime = Setting.TimeSetting[k].EndTime;
                            aSetting.EndTime2 = Setting.TimeSetting[k].EndTime2;
                            aSetting.EndTime3 = Setting.TimeSetting[k].EndTime3;
                            aSetting.isAlert = Setting.TimeSetting[k].isAlert;
                            aSetting.isSysDefault = false;
                            aSetting.StartTime = Setting.TimeSetting[k].StartTime;
                            aSetting.StartTime2 = Setting.TimeSetting[k].StartTime2;
                            aSetting.StartTime3 = Setting.TimeSetting[k].StartTime3;
                            aSetting.Week = Setting.TimeSetting[k].Week;

                            db.AlertTimeSetting.Add(aSetting);
                            db.SaveChanges();
                        }
                        ret = "true";
                    }
                    else {
                        var qry = db.AlertTimeSetting.Where(x => x.EventClass == Setting.EventClass);
                        foreach (AlertTimeSetting o in qry) {
                            o.StartTime = Setting.TimeSetting[0].StartTime;
                            o.StartTime2 = Setting.TimeSetting[0].StartTime2;
                            o.StartTime3 = Setting.TimeSetting[0].StartTime3;
                            o.EndTime = Setting.TimeSetting[0].EndTime;
                            o.EndTime2 = Setting.TimeSetting[0].EndTime2;
                            o.EndTime3 = Setting.TimeSetting[0].EndTime3;
                            o.isAlert = Setting.TimeSetting[o.Week - 1].isAlert;
                        }
                        db.SaveChanges();
                        ret = "true";
                    }

                    var qry2 = db.AlertHolidaySetting.Where(x => x.EventClass == Setting.EventClass);
                    foreach (AlertHolidaySetting o in qry2) {
                        db.AlertHolidaySetting.Remove(o);
                    }
                    db.SaveChanges();

                    for (int k = 0; k < Setting.HolidaySetting.Count; k++) {
                        AlertHolidaySetting hSetting = new AlertHolidaySetting();
                        
                        hSetting.EventClass = Setting.EventClass;
                        hSetting.EndDate = Setting.HolidaySetting[k].EndDate.Date.AddHours(23).AddMinutes(59);
                        hSetting.isSysDefault = false;
                        hSetting.StartDate = Setting.HolidaySetting[k].StartDate.Date;
                        hSetting.isAlert = Setting.HolidaySetting[k].isAlert;

                        db.AlertHolidaySetting.Add(hSetting);
                        db.SaveChanges();
                    }
                }

            }
            catch
            {
                ret = "false";
            }
            return ret;
        }
        public String SaveSystemSetting(SystemSettingViewModel Setting)
        {
            String ret = "false";
            try
            {
                if (Setting.EventClass == null)
                {                
                    SystemSetting setting = db.SystemSetting.Find(db.SystemSetting.Where(x => x.EventClass == null).Select(x => x.Seq).First());

                    setting.SugArriveMin = Setting.SugArriveMin;
                    setting.SugFinishMin = Setting.SugFinishMin;
                    setting.AnnexNeed = Setting.AnnexNeed;
                    //setting.AutoAssign = Setting.AutoAssign;
                    setting.AutoAssign = false;
                    //setting.AutoAssignUserType = Setting.AutoAssignUserType;
                    setting.AutoAssignUserType = 1;
                    setting.ScheduleStartDTNeed = Setting.ScheduleStartDTNeed;
                    setting.AssignUserType = Setting.AssignUserType;
                    setting.Alert43Day = Setting.Alert43Day;
                    setting.ExamineNeed = Setting.ExamineNeed;

                    db.SaveChanges();
                    ret = "true";
                }
                else
                {
                    if (Setting.isSysDefault)
                    {
                        SystemSetting setting = new SystemSetting();

                        setting.EventClass = Setting.EventClass;
                        setting.AlertTimes = db.SystemSetting.Where(x => x.EventClass == null).Select(x => x.AlertTimes).First();
                        setting.SugArriveMin = Setting.SugArriveMin;
                        setting.SugFinishMin = Setting.SugFinishMin;
                        setting.isSysDefault = false;
                        setting.AnnexNeed = Setting.AnnexNeed;
                        //setting.AutoAssign = Setting.AutoAssign;
                        setting.AutoAssign = false;
                        //setting.AutoAssignUserType = Setting.AutoAssignUserType;
                        setting.AutoAssignUserType = 1;
                        setting.ScheduleStartDTNeed = Setting.ScheduleStartDTNeed;
                        setting.AssignUserType = Setting.AssignUserType;
                        setting.Alert43Day = Setting.Alert43Day;
                        setting.ExamineNeed = Setting.ExamineNeed;


                        db.SystemSetting.Add(setting);
                        db.SaveChanges();

                        ret = "true";
                    }
                    else
                    {
                        SystemSetting setting = db.SystemSetting.Find(db.SystemSetting.Where(x => x.EventClass==Setting.EventClass).Select(x => x.Seq).First());

                        setting.SugArriveMin = Setting.SugArriveMin;
                        setting.SugFinishMin = Setting.SugFinishMin;
                        setting.AnnexNeed = Setting.AnnexNeed;
                        //setting.AutoAssign = Setting.AutoAssign;
                        setting.AutoAssign = false;
                        //setting.AutoAssignUserType = Setting.AutoAssignUserType;
                        setting.AutoAssignUserType = 1;
                        setting.ScheduleStartDTNeed = Setting.ScheduleStartDTNeed;
                        setting.AssignUserType = Setting.AssignUserType;
                        setting.Alert43Day = Setting.Alert43Day;
                        setting.ExamineNeed = Setting.ExamineNeed;

                        db.SaveChanges();
                        ret = "true";
                    }

                }
            }
            catch
            {
                ret = "false";
            }
            return ret;
        }