// MessageBox.Show("No WeekTable Found\r\nCourse:" + SelectedCourse.Course[course].Name); void Find(WeekTable WT, int courseID) { if (courseID == SelectedCourse.Course.Count)//success { WeekTableList.Add(WT); return; } WeekTable tWT; for (int i = 0; i < SelectedCourse.Course[courseID].Group.Count; i++) { tWT = WT.Copy(); if (tWT.TryAdd(courseID, i, ref SelectedCourse)) { Find(tWT, courseID + 1); } } //Find(WT.Copy(), courseID + 1, 0); //if (!WT.TryAdd(courseID, group, ref SelectedCourse)) // return; //if (SelectedCourse.Course[courseID].Group.Count < group) // Find(WT.Copy(), courseID, group + 1); }
private void Start() { mChooseCards = new ChoiceCard[3]; GameEvent.Instance.SubscribeMonthEvent(ShowUpChoiceCards); mStartByWeekTable = GameEvent.Instance.GetWeek.GetWeekTable; SortCardArray(TrainCards, mDayCondition = 0); }
/// <summary> /// 建立傳統周課表 - 一筆傳統周課表 /// </summary> /// <returns></returns> public WeekTable CreateWeekData(string token, string circleKey, int classWeekType, string place, DateTime startDate, DateTime endDate) { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token).Result; if (tokenInfo == null) { return(null); } var learningCircleService = new LearningCircleService(); var learningCircleinfo = learningCircleService.GetDetailByOuterKey(circleKey); if (learningCircleinfo == null) { return(null); } var startHour = Convert.ToInt32(startDate.ToString("HH")); var endHour = Convert.ToInt32(endDate.ToString("HH")); var dayOfWeekService = new Utility.DayOfWeekTools(); var week = dayOfWeekService.ChangeToCht(startDate.DayOfWeek); //9點以前都是第一節,9點以後都(目前小時-7)節 startHour = startHour <= 9 ? 1 : startHour - 7; endHour = endHour <= 9 ? 1 : endHour - 7; var entity = new WeekTable() { ClassWeekType = classWeekType, CreateUtcDate = DateTime.UtcNow, Creator = tokenInfo.MemberId, EndPeriod = endHour, EndTime = endDate.ToUniversalTime(), LearningCircleId = learningCircleinfo.Id, Place = place, StartPeriod = startHour, StartTime = startDate.ToUniversalTime(), Week = week }; try { var db = _uow.DbContext; db.WeekTable.Add(entity); db.SaveChanges(); return(entity); } catch (Exception ex) { return(null); } }
private bool[] NormalWeekTable() { var result = new bool[9]; result.Select(r => r = false); if (WeekTable == "По чётным дням") { result[8] = true; return(result); } else if (WeekTable == "По нечётным дням") { result[7] = true; return(result); } else { string[] strWeekArr = WeekTable.Split(' '); if (strWeekArr.Contains("Пн.")) { result[0] = true; } if (strWeekArr.Contains("Вт.")) { result[1] = true; } if (strWeekArr.Contains("Ср.")) { result[2] = true; } if (strWeekArr.Contains("Чт.")) { result[3] = true; } if (strWeekArr.Contains("Пт.")) { result[4] = true; } if (strWeekArr.Contains("Сб.")) { result[5] = true; } if (strWeekArr.Contains("Вс.")) { result[6] = true; } } return(result); }
private void Update() { WeekTable = GameEvent.Instance.GetWeek.GetWeekTable; if (GameEvent.Instance.GetResource.GetResourceTable.foodTable.Now <= 0 || GameEvent.Instance.GetResource.GetResourceTable.leaderShipTable.Now <= 0 || GameEvent.Instance.GetResource.GetResourceTable.populationTable.Now <= 0) { GameObject day = new GameObject("DaySaver", typeof(DaySaver)); day.GetComponent <DaySaver>().DaySave(SumDay, WeekTable); DontDestroyOnLoad(day); SceneManager.LoadScene(EndingIndex); } }
public List <WeekTable> Run(out AllCourseCls SelectedCourseOut) { SelectedCourseOut = null; //chec tmp req columns [Course Group Present Day Period Room] CourseC = GroupC = PresentC = DayC = PeriodC = RoomC = CourseR = GroupR = PresentR = DayR = PeriodR = RoomR = ThenR = -1; string tmp; for (int i = 0; i < AllCourseTable.Columns.Count; i++) { tmp = AllCourseTable[i, 0].Value.ToString(); if (tmp == Course) { CourseC = i; } else if (tmp == Group) { GroupC = i; } else if (tmp == Present) { PresentC = i; } else if (tmp == Day) { DayC = i; } else if (tmp == Period) { PeriodC = i; } else if (tmp == Room) { RoomC = i; } } for (int i = 0; i < AllRoles.Columns.Count; i++) { tmp = AllRoles.Columns[i].HeaderText.ToString(); if (tmp == Then) { ThenR = i; } else if (tmp == Course) { CourseR = i; } else if (tmp == Group) { GroupR = i; } else if (tmp == Present) { PresentR = i; } else if (tmp == Day) { DayR = i; } else if (tmp == Period) { PeriodR = i; } else if (tmp == Room) { RoomR = i; } } if ( (CourseC == -1) || (GroupC == -1) || (PresentC == -1) || (DayC == -1) || (PeriodC == -1) || (RoomC == -1) || (CourseR == -1) || (GroupR == -1) || (PresentR == -1) || (DayR == -1) || (PeriodR == -1) || (RoomR == -1) || (ThenR == -1) ) { MessageBox.Show("Error\r\nCheack : [Course, Group, Present, Day, Period, Room]"); return(null); } //split roles into (include/exclute) //DGVIncude.Rows.Clear(); //DGVIncude.Columns.Clear(); //DGVExclude.Rows.Clear(); //DGVExclude.Columns.Clear(); DGVIncude = new DataGridView(); DGVExclude = new DataGridView(); DGVIncude.AllowUserToAddRows = DGVExclude.AllowUserToAddRows = false; bool t = AllRoles.AllowUserToAddRows; AllRoles.AllowUserToAddRows = false; for (int i = 0; i < AllRoles.Columns.Count; i++) { DGVIncude.Columns.Add(AllRoles.Columns[i].Name, AllRoles.Columns[i].HeaderText); DGVExclude.Columns.Add(AllRoles.Columns[i].Name, AllRoles.Columns[i].HeaderText); } for (int i = 0; i < AllRoles.Rows.Count; i++) { List <string> tmpRow = new List <string>(); for (int k = 0; k < AllRoles.Rows[i].Cells.Count; k++) { tmpRow.Add((AllRoles.Rows[i].Cells[k].Value ?? "").ToString()); } if (AllRoles[ThenR, i].Value.ToString() == Include) { DGVIncude.Rows.Add(tmpRow.ToArray()); } else { DGVExclude.Rows.Add(tmpRow.ToArray()); } } AllRoles.AllowUserToAddRows = t; //build full table AllCourse = new AllCourseCls(); for (int i = 1; i < AllCourseTable.Rows.Count; i++)//Row { Debug.WriteLine("Start: " + i); DataGridViewRow r = AllCourseTable.Rows[i]; AllCourse.AddRow(r.Cells[CourseC].Value, r.Cells[GroupC].Value, r.Cells[PresentC].Value, r.Cells[DayC].Value, r.Cells[PeriodC].Value, r.Cells[RoomC].Value); Debug.WriteLine(" -DoneL" + i); } //delet all exc* from table for (int i = 0; i < DGVExclude.Rows.Count; i++)//R { string value; int CourseIndex, GroupIndex; value = (DGVExclude.Rows[i].Cells[CourseR].Value ?? "").ToString(); if (value != Any) { AllCourse.IsCourseIn(value, out CourseIndex); AllCourse.Course.RemoveAt(CourseIndex); } value = (DGVExclude.Rows[i].Cells[GroupR].Value ?? "").ToString(); if (value != Any) { while (AllCourse.IsGroupIn(value, out CourseIndex, out GroupIndex)) { AllCourse.Course[CourseIndex].Group.RemoveAt(GroupIndex); } } value = (DGVExclude.Rows[i].Cells[PresentR].Value ?? "").ToString(); if (value != Any) { while (AllCourse.IsPresentIn(value, out CourseIndex, out GroupIndex)) { AllCourse.Course[CourseIndex].Group.RemoveAt(GroupIndex); } } value = (DGVExclude.Rows[i].Cells[DayR].Value ?? "").ToString(); if (value != Any) { while (AllCourse.IsDayIn(value, out CourseIndex, out GroupIndex)) { AllCourse.Course[CourseIndex].Group.RemoveAt(GroupIndex); } } value = (DGVExclude.Rows[i].Cells[PeriodR].Value ?? "").ToString(); if (value != Any) { while (AllCourse.IsPeriodIn(value, out CourseIndex, out GroupIndex)) { AllCourse.Course[CourseIndex].Group.RemoveAt(GroupIndex); } } } //get just inc* from table SelectedCourse = new AllCourseCls(); for (int i = 0; i < DGVIncude.Rows.Count; i++)//R { string value; int CourseIndex = -1;// GroupIndex = -1; value = (DGVIncude.Rows[i].Cells[CourseR].Value ?? "").ToString(); if (value != Any) { AllCourse.IsCourseIn(value, out CourseIndex); SelectedCourse.Course.Add(AllCourse.Course[CourseIndex]); } } //check if bosibe for here for (int i = 0; i < SelectedCourse.Course.Count; i++) { if (SelectedCourse.Course[i].Group.Count == 0) { MessageBox.Show("there is no posible Programs\r\nCourse:" + SelectedCourse.Course[i].Name); return(null); } } //sort Selected Course for group count SelectedCourse.SortCourses(); //Find All Timetable WeekTableList = new List <WeekTable>(); WeekTable tmpWT = new WeekTable(); //WeekTableList.Add(new WeekTable()); Find(tmpWT, 0); SelectedCourseOut = SelectedCourse; return(WeekTableList); }
//override public void Initialize() { _weekTable = evt.InitWeekTable; }
/// <summary> /// 修改周課表 /// </summary> /// <param name="token"></param> /// <param name="circleKey"></param> /// <param name="place"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <param name="weeks"></param> /// <returns></returns> public bool UpdateWeekDatas(string token, string circleKey, string place, DateTime startDate, DateTime endDate, int classWeekType, List <int> weeks) { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token).Result; if (tokenInfo == null) { return(false); } var learningCircleService = new LearningCircleService(); var learningCircleinfo = learningCircleService.GetDetailByOuterKey(circleKey); if (learningCircleinfo == null) { return(false); } var startHour = Convert.ToInt32(startDate.ToString("HH")); var endHour = Convert.ToInt32(endDate.ToString("HH")); var dayOfWeekService = new Utility.DayOfWeekTools(); var startWeek = startDate.DayOfWeek; //9點以前都是第一節,9點以後都(目前小時-7)節 startHour = startHour <= 9 ? 1 : startHour - 7; endHour = endHour <= 9 ? 1 : endHour - 7; try { var db = _uow.DbContext; //排序 周日:0 ~周六:6 weeks = weeks.OrderBy(t => t).ToList(); //查看week是否有錯誤資料 var weekMax = weeks.Max(t => t); if (weekMax >= 7) { return(false); } //取得資料庫目前傳統課表 var sqlWeekTablesDatas = GetByLearningCircleId(learningCircleinfo.Id); //暫存作為刪除的資料 var tempWeekTableDatas = sqlWeekTablesDatas.ToList(); foreach (var week in weeks) { var weekInfo = (DayOfWeek)week; //踢出不要刪除的weekTable資訊 if (tempWeekTableDatas.Count() > 0) { var removeTempData = tempWeekTableDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString()); if (removeTempData != null) { tempWeekTableDatas.Remove(removeTempData); } } //設定開始日期 var _startDate = startDate; var checkWeek = week - (int)startWeek; if (checkWeek < 0) { _startDate = startDate.AddDays(7 + checkWeek); } else if (checkWeek > 0) { _startDate = startDate.AddDays(checkWeek); } //找出並修改要保留的資料 var editDataInfo = sqlWeekTablesDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString()); if (editDataInfo != null) { editDataInfo.Place = place; editDataInfo.StartTime = _startDate.ToUniversalTime(); editDataInfo.EndTime = endDate.ToUniversalTime(); editDataInfo.StartPeriod = startHour; editDataInfo.EndPeriod = endHour; editDataInfo.ClassWeekType = classWeekType; continue; } //資料庫無該資料,需要新增 var entity = new WeekTable() { ClassWeekType = classWeekType, CreateUtcDate = DateTime.UtcNow, Creator = tokenInfo.MemberId, EndPeriod = endHour, EndTime = endDate.ToUniversalTime(), LearningCircleId = learningCircleinfo.Id, Place = place, StartPeriod = startHour, StartTime = _startDate.ToUniversalTime(), Week = dayOfWeekService.ChangeToCht(weekInfo) }; db.WeekTable.Add(entity); } //刪除timeTable資訊 foreach (var deleteWeek in tempWeekTableDatas) { var timeTableInfo = db.TimeTable.Where(t => t.Course_No == circleKey).ToList(); var deleteTimeTableDatas = timeTableInfo.Where(t => t.StartDate.Value.DayOfWeek.ToString() == deleteWeek.StartTime.DayOfWeek.ToString()).ToList(); db.TimeTable.RemoveRange(deleteTimeTableDatas); } //刪除weektable資訊 db.WeekTable.RemoveRange(tempWeekTableDatas); db.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// 建立多筆傳統周課表 /// </summary> /// <param name="token"></param> /// <param name="circleKey"></param> /// <param name="classWeekType"></param> /// <param name="place"></param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <param name="weeks"></param> /// <returns></returns> public IEnumerable <WeekTable> CreateWeekDatas(string token, string circleKey, int classWeekType, string place, DateTime startDate, DateTime endDate, List <int> weeks) { var saveDatas = new List <WeekTable>(); if (weeks.Count <= 0) //只新增一筆 { var data = CreateWeekData(token, circleKey, classWeekType, place, startDate, endDate); if (data == null) { return(null); } saveDatas.Add(data); return(saveDatas); } var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token).Result; if (tokenInfo == null) { return(null); } var learningCircleService = new LearningCircleService(); var learningCircleinfo = learningCircleService.GetDetailByOuterKey(circleKey); if (learningCircleinfo == null) { return(null); } var startHour = Convert.ToInt32(startDate.ToString("HH")); var endHour = Convert.ToInt32(endDate.ToString("HH")); var dayOfWeekService = new Utility.DayOfWeekTools(); var startWeek = startDate.DayOfWeek; //9點以前都是第一節,9點以後都(目前小時-7)節 startHour = startHour < 9 ? 1 : startHour - 7; endHour = endHour < 9 ? 1 : endHour - 7; try { var db = _uow.DbContext; weeks = weeks.OrderBy(t => t).ToList(); var weekMax = weeks.Max(t => t); if (weekMax >= 7) { return(null); } foreach (var week in weeks) { var weekInfo = (DayOfWeek)week; var _startDate = startDate; var checkWeek = week - (int)startWeek; if (checkWeek < 0) { _startDate = startDate.AddDays(7 + checkWeek); } else if (checkWeek > 0) { _startDate = startDate.AddDays(checkWeek); } var entity = new WeekTable() { ClassWeekType = classWeekType, CreateUtcDate = DateTime.UtcNow, Creator = tokenInfo.MemberId, EndPeriod = endHour, EndTime = endDate.ToUniversalTime(), LearningCircleId = learningCircleinfo.Id, Place = place, StartPeriod = startHour, StartTime = _startDate.ToUniversalTime(), Week = dayOfWeekService.ChangeToCht(weekInfo) }; saveDatas.Add(entity); } db.WeekTable.AddRange(saveDatas); db.SaveChanges(); return(saveDatas); } catch (Exception ex) { return(null); } }
public void DaySave(int sumDay, WeekTable week) { mSumDay = sumDay; mWeekTable = week; }