Exemplo n.º 1
0
        public async Task <IActionResult> Create(Screen screen)
        {
            screen.CreatedAt        = screen.ChangedAt = DateTime.Now;
            screen.CreatedBy        = screen.ChangedBy = _userManager.GetUserId(User);
            screen.UniqueIdentifier = Guid.NewGuid().ToString();
            ModelState.Clear();
            TryValidateModel(screen);
            if (ModelState.IsValid)
            {
                var guid = await _bll.Screens.AddAsync(screen);

                await _bll.SaveChangesAsync();

                var updatedScreen = _bll.Screens.GetUpdatesAfterUowSaveChanges(guid);

                await _bll.AppUsersScreens.AddAsync(new AppUsersScreen
                {
                    CreatedAt = DateTime.Now,
                    ChangedAt = DateTime.Now,
                    AppUserId = Guid.Parse(_userManager.GetUserId(User)),
                    ScreenId  = updatedScreen.Id
                });

                await _bll.SaveChangesAsync();

                await ScheduleUpdateService.GetAndSaveScheduleForScreen(_bll, _userManager.GetUserId(User), updatedScreen);

                return(RedirectToAction(nameof(Index)));
            }

            return(View(screen));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> RefreshSchedule(int scheduleId)
        {
            var scheduleInScreen = await _bll.ScheduleInScreens.FindByScheduleIdAsync(scheduleId);

            if (scheduleInScreen != null)
            {
                await ScheduleUpdateService.GetAndSaveScheduleForScreen(_bll, _userManager.GetUserId(User),
                                                                        scheduleInScreen.Screen);
            }
            return(RedirectToAction(nameof(Index)));
        }
Exemplo n.º 3
0
        // GET: Admin/Schedules
        public async Task <IActionResult> Index()
        {
            var user = await _userManager.GetUserAsync(User);

            var userScreen = (await _bll.AppUsersScreens.GetScreenForUserAsync(user.Id.ToString())).Screen;

            if (userScreen == null)
            {
                return(RedirectToAction("Create", "ScreenSettings"));
            }

            var scheduleInScreen = await
                                   _bll.ScheduleInScreens.FindForScreenForDateWithoutIncludesAsync(userScreen.Id, userScreen.Prefix, DateTime.Today);

            if (scheduleInScreen == null)
            {
                await ScheduleUpdateService.GetAndSaveScheduleForScreen(_bll, _userManager.GetUserId(User), userScreen);

                scheduleInScreen = await
                                   _bll.ScheduleInScreens.FindForScreenForDateWithoutIncludesAsync(userScreen.Id, userScreen.Prefix, DateTime.Today);
            }

            var vm = new ScheduleAndEventsIndexViewModel
            {
                ScheduleId   = scheduleInScreen.ScheduleId,
                WeekNumber   = scheduleInScreen.Schedule.WeekNumber,
                Subjects     = new List <SubjectForTimetableAndSettings>(),
                FutureEvents = new List <EventForSettings>()
            };
            var subjectsInSchedule = (await _bll.SubjectInSchedules.GetAllSubjectsForTimetableOrSettingsByScheduleIdAsync(scheduleInScreen.ScheduleId)).ToList();

            if (subjectsInSchedule.Any())
            {
                foreach (var lectureForTimetable in subjectsInSchedule)
                {
                    var teacherNames = new List <string>();
                    (await _bll.TeacherInSubjectEvents.GetAllTeachersForSubjectEventWithoutSubjInclude(lectureForTimetable.SubjectInScheduleId)).ToList().ForEach(e => teacherNames.Add(e.Teacher.TeacherName));
                    lectureForTimetable.Lecturers = string.Join(", ", teacherNames);
                }
                vm.Subjects = subjectsInSchedule;
            }

            var events = await _bll.Events.GetAllFutureEventsForSettingsAsync(DateTime.Today);

            if (events != null)
            {
                foreach (var eventToShow in events)
                {
                    vm.FutureEvents.Add(eventToShow);
                }
            }

            // Check user rights
            var userRoles = await _userManager.GetRolesAsync(user);

            vm.UserHasRightsToEditEvents = userRoles.Contains(nameof(RoleNamesEnum.EventSettingsAdmin)) ||
                                           userRoles.Contains(nameof(RoleNamesEnum.HeadAdmin));
            vm.UserHasRightsToEditSchedule = userRoles.Contains(nameof(RoleNamesEnum.ScheduleSettingsAdmin)) ||
                                             userRoles.Contains(nameof(RoleNamesEnum.HeadAdmin));

            return(View(vm));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Edit(int id, ScreenCreateEditViewModel vm)
        {
            if (id != vm.Screen.Id)
            {
                return(NotFound());
            }

            vm.Screen.ChangedAt = DateTime.Now;
            vm.Screen.ChangedBy = _userManager.GetUserId(User);

            // If there is no promotions - show schedule always
            vm.Screen.ShowScheduleSeconds = vm.ShowPromotionSecondsStringDictionary == null
                ? SecondsValueManager.GetSelectedValue(null, true)
                : vm.ShowScheduleSecondsString;

            if (vm.PictureInScreens == null)
            {
                vm.PictureInScreens = new List <PictureInScreen>();
            }

            if (vm.PromotionSecondsSelectListDictionary == null)
            {
                vm.PromotionSecondsSelectListDictionary = new Dictionary <int, SelectList>();
            }

            if (vm.ScheduleSecondsSelectList == null)
            {
                vm.ScheduleSecondsSelectList = new SelectList(SecondsValueManager.GetDictionaryKeysList(true));
            }

            if (vm.ShowPromotionSecondsStringDictionary != null)
            {
                foreach (var promotionId in vm.ShowPromotionSecondsStringDictionary.Keys)
                {
                    var promotion = await _bll.PictureInScreens.FindAsync(promotionId);

                    promotion.ShowAddSeconds = vm.ShowPromotionSecondsStringDictionary[promotionId];
                    vm.PictureInScreens.Add(promotion);
                }

                foreach (var pictureInScreen in vm.PictureInScreens)
                {
                    vm.PromotionSecondsSelectListDictionary[pictureInScreen.Id] = new SelectList(
                        SecondsValueManager.GetDictionaryKeysList(false),
                        vm.ShowPromotionSecondsStringDictionary[pictureInScreen.Id]);
                }
            }
            else
            {
                var promotions = (await _bll.PictureInScreens.GetAllPromotionsForScreenAsync(id)).ToList();
                await _bll.SaveChangesAsync();

                foreach (var promotion in promotions)
                {
                    promotion.ShowAddSeconds = SecondsValueManager.GetSelectedValue(0, false);
                    _bll.PictureInScreens.Update(promotion);
                }
            }

            // Before model validation set values to the following parameters to pass model validation.
            vm.ShowPromotionSecondsStringDictionary ??= new Dictionary <int, string>();
            vm.ShowScheduleSecondsString ??= SecondsValueManager.GetSelectedValue(null, true);

            ModelState.Clear();
            TryValidateModel(vm.Screen);
            if (ModelState.IsValid)
            {
                try
                {
                    foreach (var pictureInScreen in vm.PictureInScreens)
                    {
                        _bll.PictureInScreens.Update(pictureInScreen);
                    }

                    _bll.Screens.Update(vm.Screen);
                    await _bll.SaveChangesAsync();

                    if (vm.ScreenOldPrefix != vm.Screen.Prefix)
                    {
                        await ScheduleUpdateService.GetAndSaveScheduleForScreen(_bll, _userManager.GetUserId(User), vm.Screen);
                    }

                    return(RedirectToAction(nameof(Index)));
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ScreenExists(vm.Screen.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
            }

            return(RedirectToAction(nameof(Edit)));
        }