private void StockGenerator() { int dayCount = 0; while (dayCount < 30) { int hourCount = 0; DateTimeOffset now = DateTimeOffset.Now.Date; while (hourCount < 24) { AvailableDateStock stock = new AvailableDateStock() { AvailableDate = now.AddDays(dayCount).AddHours(hourCount), Type = TimeStockType.Course }; foreach (MemberWorkTime teacher in Teachers) { MemberWorkTimeItem match = teacher.Times.Where(x => x.Weekday == stock.AvailableDate.DayOfWeek && x.Time.Hours == stock.AvailableDate.Hour).FirstOrDefault(); if (match != null) { stock.Members.Add(new AvailableDateStockMember() { AvailableDate = stock.AvailableDate, Type = TimeStockType.Course, MemberId = teacher.MemberId }); } } AvailableDateStock.Add(stock); hourCount++; } dayCount++; } }
private void _removeStock(MemberWorkTimeItem item) { AvailableDateStock stock = Model.AvailableDateStock.FirstOrDefault(x => x.AvailableDate.DayOfWeek == item.Weekday && x.AvailableDate.Hour == item.Time.Hours); if (stock != null) { AvailableDateStockMember member = stock.Members.FirstOrDefault(x => x.MemberId == item.MemberId); stock.Members.Remove(member); } }
public void MakePair(MemberBooking model, out bool isSuccess) { if (model != null) { TimeSpan machTime = model.StartDate.TimeOfDay; DayOfWeek machWeek = model.StartDate.DayOfWeek; MemberBookingAssigner assigner = model.Assigners.LastOrDefault(); if (_CheckAssignStatus(assigner)) { isSuccess = true; return; } foreach (MemberWorkTime teacher in Model.Teachers) { MemberWorkTimeItem item = teacher.Times.FirstOrDefault(x => x.Time == machTime && x.Weekday == machWeek); if (item != null) { if (item.Exceptions.Count > 0) { if (item.Exceptions.LastOrDefault().Status == Status.Disabled) { continue; } } model.Assigners.Add(new MemberBookingAssigner() { Id = PublicMethod.GetToken(), MemberId = item.MemberId, MemberBookingId = model.Id, Role = AssignerRole.Teacher, Status = AssignStatus.Assigned }); model.Status = BookingStatus.Confirm; _removeStock(item); break; } } assigner = model.Assigners.LastOrDefault(); if (_CheckAssignStatus(assigner)) { isSuccess = true; } else { isSuccess = false; } } else { isSuccess = false; } }
private void _addStock(MemberWorkTimeItem item) { AvailableDateStock stock = Model.AvailableDateStock.FirstOrDefault(x => x.AvailableDate.DayOfWeek == item.Weekday && x.AvailableDate.Hour == item.Time.Hours); if (stock != null) { stock.Members.Add(new AvailableDateStockMember() { AvailableDate = stock.AvailableDate, Type = TimeStockType.Course, MemberId = item.MemberId }); } }
private MemberWorkTime TeacherGenerator() { Random rm = new Random(); string memberId = PublicMethod.GetToken(); MemberWorkTime Teacher = new MemberWorkTime() { MemberId = memberId, ReadyTime = rm.Next(0, 13), Status = Status.Enabled, EffectiveDate = DateTimeOffset.Now }; for (int i = 0; i < 7; i++) { for (int j = 0; j < 24; j++) { if (rm.Next(0, 3) == 2) { MemberWorkTimeItem work = new MemberWorkTimeItem() { Id = PublicMethod.GetToken(), MemberId = memberId, Weekday = (DayOfWeek)i, Time = TimeSpan.FromHours(j), EffectiveDate = DateTime.Now }; Teacher.Times.Add(work); } } } Schedules.Add(new Schedule() { Id = PublicMethod.GetToken(), MemberId = memberId, Name = "Chinese Class", Type = ScheduleType.Class, Color = "#F4A460", Visibled = true, IsSystem = false }); return(Teacher); }