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)); }
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))); }
// 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)); }
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))); }