示例#1
0
        // GET: Lesson/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Lesson lesson = db.Lessons.FirstOrDefault(l => l.ID == id);

            if (lesson == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            else
            {
                EditLessonViewModel model = new EditLessonViewModel();
                ViewBag.CourseName = lesson.Course.Title;
                model.LessonID     = lesson.ID;
                model.CourseID     = lesson.Course.CourseID;
                model.Launch       = lesson.Launch;
                model.Day          = lesson.Day;
                model.StartHour    = lesson.StartHour;
                model.EndHour      = lesson.EndHour;

                return(View(model));
            }
        }
示例#2
0
        public ActionResult Edit(EditLessonViewModel request)
        {
            if (ModelState.IsValid)
            {
                var lesson = db.Lessons.Find(request.Id);
                lesson.Name = request.Name;

                if (request.ImageFile != null)
                {
                    var    imageId        = Guid.NewGuid().ToString().Replace("-", "").ToLower();
                    var    imageExtension = Path.GetExtension(request.ImageFile.FileName);
                    var    imageName      = imageId + imageExtension;
                    string pic            = System.IO.Path.GetFileName(imageName);

                    string folderPath = "/img/lesson";
                    Directory.CreateDirectory(Server.MapPath("~" + folderPath));
                    string path = System.IO.Path.Combine(Server.MapPath("~" + folderPath), pic);
                    request.ImageFile.SaveAs(path);

                    lesson.ImageId        = imageId;
                    lesson.ImageExtension = imageExtension;
                }

                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(View(request));
        }
        public async Task <IActionResult> EditLesson(EditLessonViewModel inputModel)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(inputModel));
            }

            var userId = this.userManager.GetUserId(this.User);

            await this.lessonsService.EditLesson(inputModel.Id, inputModel.Name, inputModel.Description, userId);

            return(this.RedirectToAction("EditSegments", "Segments", new { lessonId = inputModel.Id, courseId = inputModel.CourseId }));
        }
示例#4
0
        public ActionResult Edit(int id = 0)
        {
            var lesson = db.Lessons.Find(id);

            if (lesson == null)
            {
                return(HttpNotFound());
            }

            var response = new EditLessonViewModel
            {
                Id       = lesson.Id,
                Name     = lesson.Name,
                ImageUrl = lesson.ImageUrl
            };

            return(View(response));
        }
示例#5
0
        public ActionResult EditLesson(EditLessonViewModel newLesson)
        {
            // TODO Move entitie code to another layer

            try
            {
                if (newLesson.StartHour >= newLesson.EndHour)
                {
                    TempData["EditError"] = "Endhour must be after StartHour";
                    return(RedirectToAction(nameof(LessonController.Edit), "Lesson", new { newLesson.LessonID }));
                }

                // TODO Move entitie code to another layer

                // method IsValid
                Lesson lesson = db.Lessons.FirstOrDefault(l => l.ID == newLesson.LessonID);
                lesson.StartHour = newLesson.StartHour;
                lesson.EndHour   = newLesson.EndHour;
                lesson.Launch    = newLesson.Launch;
                lesson.Day       = newLesson.Day;

                // TODO the test need to check if the course already in the agenda is not the same !
                // if the instructor only want to modify the hours
                if (!IsLessonValid(lesson))
                {
                    TempData["EditError"] = $"You have already a course between {lesson.StartHour} h and {lesson.EndHour} h {lesson.Day}";
                    return(RedirectToAction(nameof(LessonController.Edit), "Lesson", new { lesson.ID }));
                }

                db.SaveChanges();

                return(RedirectToAction(nameof(LessonController.Details), "Lesson", new { lesson.ID }));
            }
            catch
            {
                return(RedirectToAction(nameof(LessonController.Index), "Lesson"));
            }
        }
示例#6
0
        public async Task <IActionResult> Edit(EditLessonViewModel model)
        {
            var viewModel = await this.lessonsService.ByIdAsync <EditLessonViewModel>(model.Id);

            var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (userId != viewModel.User.Id)
            {
                this.TempData["Error"] = "You are not authorized for this operation!";
                return(this.RedirectToAction(nameof(this.ByUser)));
            }

            if (!this.ModelState.IsValid)
            {
                model.CategoriesItems = await this.categoriesService.AllAsync <CategoriesItemsViewModel>();

                return(this.View(model));
            }

            await this.lessonsService.EditAsync(model.Id, model.Title, model.Description, model.VideoUrl, model.CategoryId);

            this.TempData["Message"] = "Successfully changed.";
            return(this.RedirectToAction(nameof(this.ByUser)));
        }
示例#7
0
        public ActionResult EditLesson(EditLessonViewModel viewModel)
        {
            if (!Request.IsAjaxRequest())
            {
                return(new HttpStatusCodeResult(404));
            }

            if (!ModelState.IsValid)
            {
                var allErrors = ViewData.ModelState.Values.SelectMany(modelState => modelState.Errors).ToList();
                foreach (ModelError error in allErrors)
                {
                    var message = error.ErrorMessage;
                }

                return(null);
            }

            // Удаление занятия(ий)
            var viewModelLessonIds = viewModel.Lessons.SelectMany(x => x.LessonParts).Select(p => p.LessonId);
            var lessonsForDelete   = UnitOfWork.Repository <Lesson>()
                                     .Get(x => x.GroupId == viewModel.GroupId && x.WeekNumber == viewModel.WeekNumber &&
                                          x.DayNumber == viewModel.DayNumber && x.ClassNumber == viewModel.ClassNumber &&
                                          x.DeletedAt == null)
                                     .Where(x => !viewModelLessonIds.Contains(x.LessonId));

            foreach (var lesson in lessonsForDelete)
            {
                lesson.DeletedAt = DateTime.Now;
                UnitOfWork.Repository <Lesson>().Update(lesson);
                UnitOfWork.Save();

                Logger.Info("Занятие помечено как удалённое : LessonId=" + lesson.LessonId);
            }

            // Создание и обновление занятий
            foreach (var lessonViewModel in viewModel.Lessons)
            {
                foreach (var lessonPartViewModel in lessonViewModel.LessonParts)
                {
                    var lessonId = lessonPartViewModel.LessonId;
                    var lesson   = UnitOfWork.Repository <Lesson>()
                                   .Get(x => x.LessonId == lessonId)
                                   .SingleOrDefault();

                    // Обновление занятия
                    if (lesson != null)
                    {
                        lesson.LessonTypeId = lessonViewModel.LessonTypeId;
                        lesson.DisciplineId = lessonViewModel.DisciplineId;
                        lesson.AuditoriumId = lessonPartViewModel.AuditoriumId;
                        lesson.JobId        = lessonPartViewModel.TeacherId;
                        // lesson.IsNotActive = lessonPartViewModel.IsNotActive;
                        lesson.UpdatedAt = DateTime.Now;

                        UnitOfWork.Repository <Lesson>().Update(lesson);
                        UnitOfWork.Save();

                        Logger.Info("Обновлено занятие : LessonId=" + lesson.LessonId);
                    }
                    // Создание нового занятия
                    else
                    {
                        var classDate = ScheduleHelpers.DateOfLesson(UserProfile.EducationYear.DateStart,
                                                                     viewModel.WeekNumber, viewModel.DayNumber);
                        lesson = new Lesson
                        {
                            LessonGuid   = Guid.NewGuid(),
                            WeekNumber   = viewModel.WeekNumber,
                            DayNumber    = viewModel.DayNumber,
                            ClassNumber  = viewModel.ClassNumber,
                            ClassDate    = classDate,
                            GroupId      = viewModel.GroupId,
                            LessonTypeId = lessonViewModel.LessonTypeId,
                            DisciplineId = lessonViewModel.DisciplineId,
                            AuditoriumId = lessonPartViewModel.AuditoriumId,
                            JobId        = lessonPartViewModel.TeacherId,
                            // IsNotActive = lessonPartViewModel.IsNotActive,
                            CreatedAt = DateTime.Now,
                        };

                        UnitOfWork.Repository <Lesson>().Insert(lesson);
                        UnitOfWork.Save();

                        Logger.Info("Создано новое занятие : LessonId=" + lesson.LessonId);
                    }
                }
            }

            var lessonCell = GetLessonViewModel(viewModel.GroupId, viewModel.WeekNumber, viewModel.DayNumber,
                                                viewModel.ClassNumber);

            return(PartialView("_LessonCell", lessonCell));
        }
示例#8
0
        public ActionResult EditLesson(int groupId, int weekNumber, int dayNumber, int classNumber)
        {
            if (!Request.IsAjaxRequest())
            {
                return(null);
            }

            var viewModel = new EditLessonViewModel
            {
                GroupId     = groupId,
                WeekNumber  = weekNumber,
                DayNumber   = dayNumber,
                ClassNumber = classNumber
            };

            var lessons = GetLessonViewModel(groupId, weekNumber, dayNumber, classNumber, checkDowntimes: false);

            // Типы занятий
            viewModel.LessonTypes = UnitOfWork.Repository <LessonType>()
                                    .GetQ(orderBy: o => o.OrderBy(n => n.Order))
                                    .Select(
                x =>
                new LessonTypeViewModel
            {
                LessonTypeId   = x.LessonTypeId,
                LessonTypeName = x.LessonTypeName
            })
                                    .ToList();

            // Корпуса
            var housingRepository = UnitOfWork.Repository <Housing>() as HousingRepository;

            if (housingRepository != null)
            {
                var housings = housingRepository.HousingEqualLength();
                viewModel.Housings = housings
                                     .Select(
                    x =>
                    new HousingViewModel
                {
                    HousingId    = x.HousingId,
                    HousingName  = x.HousingName,
                    Abbreviation = x.Abbreviation
                })
                                     .ToList();
            }

            foreach (var lesson in lessons)
            {
                // Преподаватели
                var jobRepository = UnitOfWork.Repository <Job>() as JobRepository;
                if (jobRepository != null)
                {
                    var chairTeachers = jobRepository.ActualTeachers(UserProfile.EducationYear, lesson.ChairId);
                    lesson.ChairTeachers = chairTeachers
                                           .Select(
                        x =>
                        new TeacherViewModel
                    {
                        TeacherId       = x.JobId,
                        TeacherFullName = x.FullName
                    })
                                           .ToList();
                }

                // Аудитории
                foreach (var lessonPart in lesson.LessonParts)
                {
                    var chairId   = lesson.ChairId;
                    var housingId = lessonPart.HousingId;

                    var auditoriumRepository = UnitOfWork.Repository <Auditorium>() as AuditoriumRepository;
                    if (auditoriumRepository != null)
                    {
                        var auditoriums = auditoriumRepository.AuditoriumWithEmployment(chairId, housingId, weekNumber, dayNumber, classNumber, groupId);
                        lessonPart.Auditoriums = auditoriums
                                                 .Select(
                            x =>
                            new AuditoriumViewModel
                        {
                            AuditoriumId       = x.AuditoriumId,
                            AuditoriumNumber   = x.AuditoriumNumber,
                            AuditoriumTypeName = x.AuditoriumTypeName,
                            ChairId            = x.ChairId,
                            Places             = x.Places,
                            Comment            = x.Comment,
                            Employment         = x.Employment
                        })
                                                 .ToList();
                    }
                }
            }

            viewModel.Lessons = lessons;

            return(Json(viewModel, JsonRequestBehavior.AllowGet));
        }
示例#9
0
 public EditLessonPage(LessonDetailViewModel viewModel)
 {
     InitializeComponent();
     Lesson         = viewModel.Lesson;
     BindingContext = vm = new EditLessonViewModel(Lesson);
 }