public IActionResult GetTimetable([FromBody] GetTimetableModel model) { var claims = User.Claims; var userId = claims.FirstOrDefault().Value; var now = DateTime.Now; if (!string.IsNullOrEmpty(model.Month)) { now = new DateTime(now.Year, int.Parse(model.Month), 1); } var group = _context.Groups.FirstOrDefault(x => x.Id == _context.GroupsToStudents.FirstOrDefault(t => t.StudentId == userId && t.Group.YearTo.Year >= now.Year).GroupId).Name; var lessons = _context.Lessons.Where(x => x.Group.Name == group).Where(x => x.LessonDate.Month == now.Month && x.LessonDate.Year == now.Year); List <TimetableModel> timetable = new List <TimetableModel>(); timetable = lessons.Select(t => new TimetableModel() { AuditoriumNumber = "ауд " + t.Auditorium.Number.ToString(), LessonDate = t.LessonDate.Date.ToString(), TeacherName = t.Teacher.BaseProfile.Name + " " + t.Teacher.BaseProfile.LastName, LessonNumber = t.LessonNumber, Day = t.LessonDate.Day.ToString(), SubjectName = t.Subject.Name, LessonTimeGap = t.LessonTimeGap, Topic = t.JournalColumn.Topic }).OrderBy(x => x.LessonDate).ToList(); var result = new TimetableViewModel() { DayOfWeek = new DateTime(now.Year, now.Month, 1).DayOfWeek.ToString(), DaysInMonth = DateTime.DaysInMonth(now.Year, now.Month).ToString(), Timetable = timetable, Month = now.Month.ToString() }; return(Ok(result)); }
public ActionResult AddTimetable(TimetableViewModel model) { //View("Add"); timetableView = model; Update(); SelectType(); if (!ModelState.IsValid) { return(View("Add", model)); } Timetable timetable = new Timetable { TrainNumber = model.TrainNumber, Way = model.Way, Platform = model.Platform, Destination = model.Destination, DepartureTime = model.DepartureTime, ArrivalTime = model.ArrivalTime, Type = model.Type, WagonCount = model.WagonCount }; _context.Timetables.Add(timetable); _context.SaveChanges(); // ViewBag.Timetables.Add(timetable); return(RedirectToAction("Index", "Timetable")); }
public CreateNewEventDialog(TimetableViewModel tvm, string username, int id) { eventID = id; this.tvm = tvm; this.username = username; this.InitializeComponent(); }
public TimetablePage(Stops station, Routes route, int?direction) { _viewModel = new TimetableViewModel(station, route, direction, TinyIoCContainer.Current.Resolve <IDataProvider>(), new FavoritesManager()); InitializeComponent(); BindingContext = _viewModel; Title = station.Stop_Name; SetupToolbar(); }
// //if user not logged in then need redirect to login page // return View(); //} public ActionResult Timetable() { TimetableViewModel timetableData = new TimetableViewModel(); List <Lecturer> lecturers = db.Lecturers.ToList(); timetableData.lecturers = lecturers; ViewData.Model = timetableData; return(View()); }
public ViewResult CreateTimetable() { var timetableViewModel = new TimetableViewModel { Timetable = new Timetable(), Disciplines = new SelectList(disciplineRepository.Disciplines.Select(d => d.Name).ToList()), Teachers = new SelectList(teacherRepository.Teachers.Select(t => t.Name).ToList()), Groups = new SelectList(groupRepository.Groups.Select(g => g.Name).ToList()) }; return(View(nameof(EditTimetable), timetableViewModel)); }
protected override void OnAttached() { animatedElement = AssociatedObject; animationParametersTargetElement = animatedElement.FindLogicalParent(AnimationParametersTarget); dataContext = AssociatedObject.DataContext as TimetableViewModel; animationParametersTargetElement.Loaded += OnLoaded; if (dataContext != null) { dataContext.PropertyChanged += OnPropertyChanged; } }
public IActionResult Timetable() { var timetable = CurrnetTimetable; var records = db.Records.Where(r => timetable.FirstOrDefault(tt => tt.RecordId == r.RecordId) != null); var subjects = db.Subjects.Where(s => records.FirstOrDefault(r => r.SubjectId == s.SubjectId) != null); TimetableViewModel model = new TimetableViewModel { Timetable = timetable, Records = records, Subjects = subjects }; return(View("Timetable", model)); }
public ViewResult EditTimetable(int timetableId) { var timetable = timetableRepository.Timetables.FirstOrDefault(t => t.TimetableId == timetableId); var timetableViewModel = new TimetableViewModel { Timetable = timetable, Disciplines = new SelectList(disciplineRepository.Disciplines.Select(d => d.Name).ToList()), Teachers = new SelectList(teacherRepository.Teachers.Select(t => t.Name).ToList()), Groups = new SelectList(groupRepository.Groups.Select(g => g.Name).ToList()), SelectedDiscipline = timetable?.Discipline?.Name, SelectedTeacher = timetable?.Teacher?.Name, SelectedGroup = timetable?.Group?.Name }; return(View(timetableViewModel)); }
public IActionResult Timetable() { var records = db.Records.Where(r => r.StudentAccountId == CurrentUser.AccountId); var subjects = db.Subjects.Where(s => records.FirstOrDefault(r => r.SubjectId == s.SubjectId) != null); var timetable = db.Timetable.Where(t => records.FirstOrDefault(r => r.RecordId == t.RecordId) != null); var teachers = db.Teachers.Where(t => timetable.FirstOrDefault(tt => tt.TeacherAccountId == t.AccountId) != null); TimetableViewModel model = new TimetableViewModel { Records = records, Subjects = subjects, Timetable = timetable, Teachers = teachers }; return(View("Timetable", model)); }
protected override void OnAttached() { listView = AssociatedObject as ListView; parentListView = listView.FindVisualParent <ListView>(); dataContext = (TimetableViewModel)parentListView.DataContext; MoveOnNextPageCommand = dataContext.MoveToNextPageCommand; if (!MoveOnNextPageCommand.CanExecute(null)) { return; } footer = parentListView.FindVisualParent <TimetableView>().FindVisualChild <FrameworkElement>("Footer"); listView.Loaded += OnLoaded; }
public ActionResult CreateTimetable(TimetableViewModel timetable) { try { var timetableDto = new TimetableDTO { DoctorId = timetable.DoctorId, PatientId = timetable.PatientId, StartTime = timetable.StartTime, EndTime = timetable.EndTime }; timetableService.CreateTimetable(timetableDto); return(RedirectToAction("Timetables")); } catch (ValidationException ex) { ModelState.AddModelError(ex.Property, ex.Message); } return(View(timetable)); }
void EditTimetable(object parameter) { if (!ValidateParams(parameter)) { ShowInfoWindow("Podaj poprawne dane"); return; } var values = (object[])parameter; //int matchTimetable = Int32.Parse(values[0].ToString()); MatchViewModel currentMatch = (MatchViewModel)values[0]; //int refereeTimetable = Int32.Parse(values[1].ToString()); ReffereViewModel currentReferee = (ReffereViewModel)values[1]; TimetableViewModel currentTimetable = (TimetableViewModel)values[2]; if (timetableService.EditTimetable(currentMatch.ID, currentReferee.ID, currentTimetable.ID)) { RefereshAll(); } }
public IActionResult EditTimetable(TimetableViewModel timetableViewModel) { if (ModelState.IsValid) { timetableViewModel.Timetable.Discipline = disciplineRepository.Disciplines .FirstOrDefault(d => d.Name == timetableViewModel.SelectedDiscipline); timetableViewModel.Timetable.Teacher = teacherRepository.Teachers .FirstOrDefault(d => d.Name == timetableViewModel.SelectedTeacher); timetableViewModel.Timetable.Group = groupRepository.Groups .FirstOrDefault(d => d.Name == timetableViewModel.SelectedGroup); timetableRepository.SaveTimetable(timetableViewModel.Timetable); TempData["message"] = $"Timetable {timetableViewModel.Timetable.TimetableId} has been saved"; return(RedirectToAction(nameof(Timetables))); } else { return(View(timetableViewModel)); } }
public override void Initialize(TimetableParameter timetableParam) { if (timetableParam.Stop == null) { timetableParam.Stop = timetableParam.Route.TravelRoute.First().Stop; NoInitialStop = true; } Timetable = new TimetableViewModel(); Timetable.Initialize(timetableParam); AddTasksToSchedule(Timetable.TasksToSchedule); var nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 0, 1).Single(); if (nextTrip == null) { nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 1, 0).Single(); } if (nextTrip == null) { nextTrip = Tuple.Create(DateTime.Now, timetableParam.Route.Trips.First()); } this.TripParam = new TripParameter { Trip = nextTrip.Item2, Stop = timetableParam.Stop, DateTime = timetableParam.SelectedTime }; Trip = new TripViewModel(); Trip.Initialize(TripParam); AddTasksToSchedule(Trip.TasksToSchedule); setTripList(); Trip.PropertyChanged += (sender, args) => { if (args.PropertyName == "ItemsSource") { setTripList(); } }; }
public ActionResult ChangeTimetable(TimetableViewModel model) { timetableView = model; Update(); var timetableInDb = _context.Timetables.First(timetable => timetable.Id == model.Id); if (ModelState.IsValid) { timetableInDb.TrainNumber = model.TrainNumber; timetableInDb.Way = model.Way; timetableInDb.Platform = model.Platform; timetableInDb.Destination = model.Destination; timetableInDb.DepartureTime = model.DepartureTime; timetableInDb.ArrivalTime = model.ArrivalTime; timetableInDb.Type = model.Type; timetableInDb.WagonCount = model.WagonCount; _context.SaveChanges(); return(View("Index", model)); } return(View("Index", model)); }
public TimetablePage() { InitializeComponent(); BindingContext = new TimetableViewModel(this); }
public DeleteEventDialog(TimetableViewModel tvm, string username) { this.tvm = tvm; this.username = username; this.InitializeComponent(); }
// GET: Gym/ClassesDetails/5 public ActionResult Timetable(int?Id) { var currentLocation = db.Location.First(); if (Id == null) { ViewBag.Location = "Welcome to Geronimo Hotel"; } else { currentLocation = db.Location.Find(Id); ViewBag.Location = currentLocation; } var locationTimetable = currentLocation.GymOverview.Timetable; //monday classes var monday = from day1 in locationTimetable where day1.Day == Day.MONDAY orderby day1.StartTime select day1; var tuesday = from day2 in locationTimetable where day2.Day == Day.TUESDAY orderby day2.StartTime select day2; var wednesday = from day3 in locationTimetable where day3.Day == Day.WEDNESDAY orderby day3.StartTime select day3; var thursday = from day4 in locationTimetable where day4.Day == Day.THURSDAY orderby day4.StartTime select day4; var friday = from day5 in locationTimetable where day5.Day == Day.FRIDAY orderby day5.StartTime select day5; var saturday = from day6 in locationTimetable where day6.Day == Day.SATURDAY orderby day6.StartTime select day6; var sunday = from day7 in locationTimetable where day7.Day == Day.SUNDAY orderby day7.StartTime select day7; TimetableViewModel slvm = new TimetableViewModel() { Monday = monday.ToList(), Tuesday = tuesday.ToList(), Wednesday = wednesday.ToList(), Thursday = thursday.ToList(), Friday = friday.ToList(), Saturday = saturday.ToList(), Sunday = sunday.ToList(), }; breadcrumbs = new string[][] { new string [] { "Geronimo Hotel", "../../Hotel/Index/" + Id }, new string [] { "Gym", "../../Gym/Index/" + Id } }; ViewBag.Collection = breadcrumbs; return(View(slvm)); }
private async Task <IndexViewModel> GenerateTimetablesAsync() { Random random = new Random(DateTime.Now.Second + DateTime.Now.Millisecond); List <Grades> grades = await _context.Grades .Include(g => g.GradeSubject) .OrderBy(g => g.GradeId) .ToListAsync(); // Calculating sum GradeSubjects Hours List <int> HoursNumber = grades .Select(g => g.HoursNumber) .ToList(); // Calculating maxHoursPerDay List <int> maxHoursPerDay = HoursNumber .Select(h => (h / DAYSNUM)) .ToList(); List <List <List <List <TeacherSubjectGroup> > > > timetables = new List <List <List <List <TeacherSubjectGroup> > > >(); // Generation blank timetables for (int i = 0; i < grades.Count; i++) { timetables.Add(new List <List <List <TeacherSubjectGroup> > >()); for (int j = 0; j < 7; j++) { timetables[i].Add(new List <List <TeacherSubjectGroup> >()); for (int k = 0; k < 5; k++) { timetables[i][j].Add(new List <TeacherSubjectGroup>()); } } } // Grade - Subject: HoursNumber List <GradeSubject> gradeSubjects = await _context.GradeSubject.ToListAsync(); #region SingleGroupTypes List <int> singleGroupTypes = new List <int>(); var conn = _context.Database.GetDbConnection(); try { await conn.OpenAsync(); using (var command = conn.CreateCommand()) { string query = "SELECT gt.GroupTypeId, COUNT(SubjectId) FROM GroupTypes gt " + "RIGHT JOIN GroupTypeSubject gts ON gts.GroupTypeId = gt.GroupTypeId " + "GROUP BY gt.GroupTypeId " + "HAVING COUNT(SubjectId) = 1;"; command.CommandText = query; DbDataReader reader = await command.ExecuteReaderAsync(); if (reader.HasRows) { while (await reader.ReadAsync()) { singleGroupTypes.Add(reader.GetInt32(0)); } } reader.Dispose(); } } finally { conn.Close(); } #endregion // TeacherSubjectGroups for real group List <TeacherSubjectGroup> tsubGroups = await _context.TeacherSubjectGroup .Include(tsg => tsg.Group) .Include(tsg => tsg.Group.Grade) .Include(tsg => tsg.TeacherSubject) .Include(tsg => tsg.TeacherSubject.Teacher) .Include(tsg => tsg.TeacherSubject.Subject) .Where(tsg => tsg.Group.GroupTypeId != null) .ToListAsync(); #region Groups: double // TeacherSubjectGroup for group with couple subjects List <TeacherSubjectGroup> tsubgroupsDouble = tsubGroups.Where( tsg => !singleGroupTypes.Contains((int)tsg.Group.GroupTypeId)) .ToList(); // Operating by grade for (int gradeIndex = 0; gradeIndex < grades.Count(); gradeIndex++) { // TeacherSubjectGroup for current grade List <TeacherSubjectGroup> currentGroups = tsubgroupsDouble.Where(tsg => tsg.Group.GradeId == grades[gradeIndex].GradeId) .ToList(); List <int> currentTypeGroupsId = currentGroups.Select(tsg => (int)tsg.Group.GroupTypeId) .Distinct() .ToList(); List <GradeSubject> currentGradeSubjects = gradeSubjects .Where(gs => gs.GradeId == grades[gradeIndex].GradeId) .ToList(); // Operating by TypeGroup foreach (var currentGroupTypeId in currentTypeGroupsId) { List <TeacherSubjectGroup> currentTypeGroup = currentGroups.Where(tsg => (int)tsg.Group.GroupTypeId == currentGroupTypeId) .OrderBy(tsg => tsg.TeacherSubject.SubjectId) .ThenBy(tsg => tsg.GroupId) .ToList(); int firstTime = currentGradeSubjects.Find( gs => gs.SubjectId == currentTypeGroup[0] .TeacherSubject.SubjectId)?.HoursNumber ?? 0; int secondTime = currentGradeSubjects.Find( gs => gs.SubjectId == currentTypeGroup[2] .TeacherSubject.SubjectId)?.HoursNumber ?? 0; int minHoursNumber = Math.Min(firstTime, secondTime); // Different Subjects List <TeacherSubjectGroup> firstSet = new List <TeacherSubjectGroup> { currentTypeGroup[0], currentTypeGroup[3] }; List <TeacherSubjectGroup> secondSet = new List <TeacherSubjectGroup> { currentTypeGroup[1], currentTypeGroup[2] }; int mask = SetPartTimetable(timetables, gradeIndex, minHoursNumber, firstSet, random, maxHoursPerDay[gradeIndex]); mask = SetPartTimetable(timetables, gradeIndex, minHoursNumber, secondSet, random, maxHoursPerDay[gradeIndex], mask); // Same Subjects firstSet = new List <TeacherSubjectGroup> { currentTypeGroup[0], currentTypeGroup[1] }; secondSet = new List <TeacherSubjectGroup> { currentTypeGroup[2], currentTypeGroup[3] }; mask = SetPartTimetable(timetables, gradeIndex, firstTime - minHoursNumber, firstSet, random, maxHoursPerDay[gradeIndex], mask); mask = SetPartTimetable(timetables, gradeIndex, secondTime - minHoursNumber, secondSet, random, maxHoursPerDay[gradeIndex], mask); } } #endregion #region Groups: single // TeacherSubjectGroup for group with single subject List <TeacherSubjectGroup> tsubgroupsSingle = tsubGroups.Where( tsg => singleGroupTypes.Contains((int)tsg.Group.GroupTypeId)) .ToList(); // Operating by grade for (int gradeIndex = 0; gradeIndex < grades.Count(); gradeIndex++) { // TeacherSubjectGroup for current grade List <TeacherSubjectGroup> currentGroups = tsubgroupsSingle.Where(tsg => tsg.Group.GradeId == grades[gradeIndex].GradeId) .ToList(); List <int> currentTypeGroupsId = currentGroups.Select(tsg => (int)tsg.Group.GroupTypeId) .Distinct() .ToList(); List <GradeSubject> currentGradeSubjects = gradeSubjects .Where(gs => gs.GradeId == grades[gradeIndex].GradeId) .ToList(); // Operating by TypeGroup foreach (var currentGroupTypeId in currentTypeGroupsId) { List <TeacherSubjectGroup> currentTypeGroup = currentGroups.Where(tsg => (int)tsg.Group.GroupTypeId == currentGroupTypeId) .OrderBy(tsg => tsg.TeacherSubject.SubjectId) .ThenBy(tsg => tsg.GroupId) .ToList(); int time = currentGradeSubjects .Find(gs => gs.SubjectId == currentTypeGroup[0] .TeacherSubject.SubjectId) ?.HoursNumber ?? 0; // Same Subjects SetPartTimetable(timetables, gradeIndex, time, currentTypeGroup, random, maxHoursPerDay[gradeIndex]); } } #endregion #region DeltaHours for (int i = 0; i < grades.Count(); i++) { } #endregion #region Simple List <TeacherSubjectGroup> tsubGrades = await _context.TeacherSubjectGroup .Include(tsg => tsg.Group) .Include(tsg => tsg.Group.Grade) .Include(tsg => tsg.TeacherSubject) .Include(tsg => tsg.TeacherSubject.Teacher) .Include(tsg => tsg.TeacherSubject.Subject) .Where(tsg => tsg.Group.GroupTypeId == null) .OrderBy(tsg => tsg.Group.GradeId) .ToListAsync(); // Operating by grade for (int gradeIndex = 0; gradeIndex < grades.Count(); gradeIndex++) { // TeacherSubjectGroup for current grade // Teacher - Subject - Group (Grade) List <TeacherSubjectGroup> currentGroups = tsubGrades.Where(tsg => tsg.Group.GradeId == grades[gradeIndex].GradeId) .ToList(); // HoursNumber for each subject List <GradeSubject> currentGradeSubjects = gradeSubjects .Where(gs => gs.GradeId == grades[gradeIndex].GradeId) .ToList(); List <Teachers> currentTeachers = currentGroups .Select(gts => gts.TeacherSubject.Teacher) .Distinct() .ToList(); // Operating by TypeGroup foreach (var teacher in currentTeachers) { List <TeacherSubjectGroup> tsgForTeacher = currentGroups .Where(tsg => tsg.TeacherSubject.Teacher.TeacherId == teacher.TeacherId) .ToList(); int mask = 0; foreach (var currentTeacherSubjectGroup in tsgForTeacher) { int time = currentGradeSubjects .Find(gs => gs.SubjectId == currentTeacherSubjectGroup .TeacherSubject.SubjectId) ?.HoursNumber ?? 0; // Same Subjects mask = SetPartTimetable(timetables, gradeIndex, time, new List <TeacherSubjectGroup>() { currentTeacherSubjectGroup }, random, maxHoursPerDay[gradeIndex], mask); } } } #endregion List <TimetableViewModel> result = new List <TimetableViewModel>(); for (int i = 0; i < grades.Count(); ++i) { TimetableViewModel timetableViewModel = new TimetableViewModel { timetable = timetables[i], grade = grades[i] }; result.Add(timetableViewModel); } IndexViewModel indexViewModel = new IndexViewModel() { timetables = result, generationTime = DateTime.Now }; return(indexViewModel); }
public Timetable() { InitializeComponent(); BindingContext = viewModel = new TimetableViewModel(); }