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"));
        }
Beispiel #3
0
 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();
 }
Beispiel #5
0
        //    //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());
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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));
        }
Beispiel #9
0
        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));
 }
Beispiel #13
0
        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();
            }
        }
Beispiel #14
0
        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));
            }
        }
Beispiel #15
0
            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));
        }
Beispiel #17
0
 public TimetablePage()
 {
     InitializeComponent();
     BindingContext = new TimetableViewModel(this);
 }
 public DeleteEventDialog(TimetableViewModel tvm, string username)
 {
     this.tvm      = tvm;
     this.username = username;
     this.InitializeComponent();
 }
Beispiel #19
0
        // 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();
        }