/// <summary>
        /// Deletes a lesson.
        /// </summary>
        /// <param name="id">The lesson identifier.</param>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>The result.</returns>
        public ResultDto DeleteLesson(Guid id, Guid accountId)
        {
            ResultDto result = new ResultDto();

            using (BzsEntityContainer ctx = this.CreateContainer())
            {
                LessonEntity entity = ctx.LessonSet.FirstOrDefault(f => f.Id == id);
                if (entity == null)
                {
                    result.Error = "ERR-LESSON-NOT-EXISTS";
                    return(result);
                }

                if (entity.AccountId != accountId)
                {
                    result.Error = "ERR-LESSON-ACCOUNT-INVALID";
                    return(result);
                }

                ctx.LessonSet.Remove(entity);
                ctx.SaveChanges();
                result.Success = true;
                return(result);
            }
        }
        private DataGridColumn BuildStudentLessonColumn(string id, LessonEntity entity)
        {
            var dataGridTemplateColumn =
                new TextColumn {
                Width    = new DataGridLength(90),
                MinWidth = 50,
                Header   = new TextBlock {
                    Text = Localization["common.lesson.type." + entity.LessonType] + "\n " +
                           entity.Date?.ToString("dd.MM"),
                    Foreground = entity.Id == _currentLesson.Id ? Brushes.Red : Brushes.Black
                },
                Binding = new Binding {
                    Path = new PropertyPath($"LessonToLessonMark[{id}].Mark")
                },
                CanUserSort = false
            };
            var cellStyle = new Style {
                BasedOn    = DataGridCellResources["StudentLessonMarkCell"] as Style,
                TargetType = typeof(DataGridCell)
            };
            var backGround = new Setter(Control.BackgroundProperty, new Binding($"LessonToLessonMark[{id}].Color"));
            var menu       = new Setter(FrameworkElement.ContextMenuProperty, BuildLessonCellContextMenu(id));

            cellStyle.Setters.Add(backGround);
            cellStyle.Setters.Add(menu);
            dataGridTemplateColumn.CellStyle = cellStyle;
            return(dataGridTemplateColumn);
        }
Beispiel #3
0
        private async void Init(LessonEntity lesson)
        {
            if (lesson == null)
            {
                return;
            }
            this.Lesson = await _db.Lessons.FindAsync(lesson.Id) ?? lesson.Clone();

            StopTimer();
            this.LessonStudents.Clear();
            this.RegisteredStudents.Clear();
            var loadedStudentLessons = lesson.StudentLessons?.ToList() ?? new List <StudentLessonEntity>();

            AddMissingStudents(loadedStudentLessons, this.Lesson);
            _studentLessons = loadedStudentLessons
                              .Select(entity => new StudentLessonInfoViewModel(entity, AddStudentNote, ShowStudent)).ToList();
            var notRegisteredStudentLessons =
                _studentLessons.Where(lessonModel => !(lessonModel.StudentLesson.IsRegistered ?? false)).ToList();

            this.LessonStudents.AddRange(notRegisteredStudentLessons);

            var registeredStudentLesson =
                _studentLessons.Where(lessonModel => lessonModel.StudentLesson.IsRegistered == true).ToList();

            this.RegisteredStudents.AddRange(registeredStudentLesson);
            _internalStudentLessons = FindInternalStudents(_studentLessons, lesson);
            this.IsLessonChecked    = lesson.Checked;
            UpdateRegistrationInfo();
            StartTimer(this.Lesson);
        }
        /// <summary>
        /// Updates a lesson.
        /// </summary>
        /// <param name="itemToSave">The item to save.</param>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>The result.</returns>
        public ResultDto UpdateLesson(LessonEditDto itemToSave, Guid accountId)
        {
            ResultDto result = new ResultDto();

            using (BzsEntityContainer ctx = this.CreateContainer())
            {
                LessonEntity entity = ctx.LessonSet.FirstOrDefault(f => f.Id == itemToSave.Id);
                if (entity == null)
                {
                    result.Error = "ERR-LESSON-NOT-EXISTS";
                    return(result);
                }

                if (entity.AccountId != accountId)
                {
                    result.Error = "ERR-LESSON-ACCOUNT-INVALID";
                    return(result);
                }

                entity.DayId     = itemToSave.DayId;
                entity.FromDate  = DateTimeHelper.StringToDateTime(itemToSave.FromDate);
                entity.ToDate    = DateTimeHelper.StringToDateTime(itemToSave.ToDate);
                entity.SubjectId = itemToSave.SubjectId;
                entity.TeacherId = itemToSave.TeacherId;
                entity.RoomId    = itemToSave.RoomId;
                entity.Remark    = itemToSave.Remark;
                entity.ModDate   = DateTime.Now;
                entity.ModUser   = Environment.UserName;

                ctx.SaveChanges();
                result.Success = true;
                return(result);
            }
        }
        private async void Init(LessonEntity lesson)
        {
            _items.Clear();
            this.Columns.Clear();
            _currentLesson = lesson;
            List <LessonEntity> lessonModels;

            lessonModels = lesson.Group == null
                ? await _db.Lessons.Include("StudentLessons").Where(model =>
                                                                    model._StreamId == lesson._StreamId && (model._GroupId == null || model._GroupId == 0))
                           .ToListAsync()
                : await _db.Lessons
                           .Include("StudentLessons")
                           .Where(model => model._GroupId == lesson._GroupId ||
                                  (model._StreamId == lesson._StreamId &&
                                   !model._GroupId.HasValue))
                           .ToListAsync();

            lessonModels.Reverse();
            foreach (var lessonModel in lessonModels)
            {
                var lessonId = IdGenerator.GenerateId();
                this.Lessons.Add(lessonId, lessonModel);
                this.Columns.Add(BuildStudentLessonColumn(lessonId, lessonModel));
            }

            var studentModels = ((lesson.Group == null
                                     ? lesson.Stream.Groups?.SelectMany(group =>
                                                                        group.Students ?? new List <StudentEntity>())
                                     : lesson.Group.Students?.ToList()) ?? new List <StudentEntity>())
                                .Select(model => new StudentLessonViewModel(model, this.Lessons, _scope, _host, _db))
                                .OrderBy(view => view.FullName).ToList();

            _items.AddRange(studentModels);
        }
        private async Task AddExam()
        {
            var schedules = await _context.Schedules.ToListAsync();

            var lesson       = new LessonEntity();
            var now          = DateTime.Now;
            var time         = now.TimeOfDay;
            var examSchedule =
                schedules.OrderBy(model => model.Begin)
                .FirstOrDefault
                (
                    schedule =>
                    schedule.Begin > time || (schedule.Begin <time && schedule.End> time)
                );

            lesson.Schedule     = examSchedule;
            lesson.Date         = now;
            lesson.LessonType   = LessonType.Exam;
            lesson.Stream       = this.SelectedStream;
            lesson.Group        = this.SelectedGroup;
            lesson._Order       = this.StudentExams.Count + 1;
            lesson.CreationDate = now;
            lesson._Checked     = 0;
            _context.Lessons.Add(lesson);
            await _context.SaveChangesAsync();


            if (this.SelectedGroup != null)
            {
                var newStudentLessons = this.SelectedGroup.Students?.Select
                                        (
                    groupStudent => new StudentLessonEntity {
                    Student =
                        groupStudent,
                    Lesson = lesson
                }
                                        )
                                        .ToArray() ?? new StudentLessonEntity[] { };
                _context.StudentLessons.AddRange(newStudentLessons);

                this.StudentExams.Add
                (
                    new StudentAttestationExamView
                    (
                        newStudentLessons.FirstOrDefault
                        (
                            studentLesson =>
                            studentLesson.Student == this.Student &&
                            studentLesson.Lesson == lesson
                        ),
                        this,
                        0
                    )
                );
            }

            await _context.SaveChangesAsync();

            UpdateExamMark();
        }
 public LessonScheduleView(SchedulePageModel sm, LessonEntity entity)
 {
     this.Lesson        = entity;
     this.Model         = sm;
     this.LocalizedType = LocalizationContainer.Localization[$"common.lesson.type.{entity.LessonType}"];
     this.Date          = $"{entity.Schedule?.Begin:hh\\:mm}-{entity.Schedule?.End:hh\\:mm}";
     this.IconColor     = this.Lesson.Checked ? Brushes.Black : Brushes.Red;
 }
Beispiel #8
0
        public LessonEntity toEntity(LessonCreateRequest request)
        {
            LessonEntity entity = new LessonEntity();

            entity.Ename = request.Ename;
            entity.Title = request.Title;

            return(entity);
        }
Beispiel #9
0
        public void Update(LessonEntity entity)
        {
            string sql = "update lesson set ename = @Ename, title = @Title where id = @Id;";

            using (var sqliteConn = connectionProvider.GetConnection())
            {
                sqliteConn.Execute(sql, new { id = entity.Id, Ename = entity.Ename, Title = entity.Title });
            }
        }
Beispiel #10
0
        public void Create(LessonEntity entity)
        {
            string sql = "insert into lesson(ename, title) values (@Ename, @Title);";

            using (var sqliteConn = connectionProvider.GetConnection())
            {
                sqliteConn.Execute(sql, new { Ename = entity.Ename, Title = entity.Title });
            }
        }
        /// <summary>
        /// Inserts or updates a lesson.
        /// </summary>
        /// <param name="itemToSave">The item to save.</param>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>The result.</returns>
        public ResultDto InsertUpdateLesson(LessonEditDto itemToSave, Guid accountId)
        {
            ResultDto result = new ResultDto();

            using (BzsEntityContainer ctx = this.CreateContainer())
            {
                LessonEntity entity = ctx.LessonSet.FirstOrDefault(f => f.Id == itemToSave.Id);
                if (entity != null)
                {
                    result.Error = "ERR-LESSON-ALREADY-EXISTS";
                    return(result);
                }

                if (!new DayServerService().DayExists(itemToSave.DayId, ctx))
                {
                    result.Error = "ERR-LESSON-DAY-NOT-EXISTS";
                    return(result);
                }

                if (!new SubjectServerService().SubjectExists(itemToSave.SubjectId, ctx))
                {
                    result.Error = "ERR-LESSON-SUBJECT-NOT-EXISTS";
                    return(result);
                }

                if (itemToSave.TeacherId.HasValue && !new TeacherServerService().TeacherExists(itemToSave.TeacherId.Value, ctx))
                {
                    result.Error = "ERR-LESSON-TEACHER-NOT-EXISTS";
                    return(result);
                }

                if (itemToSave.RoomId.HasValue && !new RoomServerService().RoomExists(itemToSave.RoomId.Value, ctx))
                {
                    result.Error = "ERR-LESSON-ROOM-NOT-EXISTS";
                    return(result);
                }

                entity           = new LessonEntity();
                entity.Id        = itemToSave.Id;
                entity.AccountId = accountId;
                entity.DayId     = itemToSave.DayId;
                entity.FromDate  = DateTimeHelper.StringToDateTime(itemToSave.FromDate);
                entity.ToDate    = DateTimeHelper.StringToDateTime(itemToSave.ToDate);
                entity.SubjectId = itemToSave.SubjectId;
                entity.TeacherId = itemToSave.TeacherId;
                entity.RoomId    = itemToSave.RoomId;
                entity.Remark    = itemToSave.Remark;
                entity.ModDate   = DateTime.Now;
                entity.ModUser   = Environment.UserName;
                ctx.LessonSet.Add(entity);

                ctx.SaveChanges();
                result.Success = true;
                return(result);
            }
        }
Beispiel #12
0
 public ActionResult Edit(LessonEntity lesson)
 {
     if (!ModelState.IsValid)
     {
         return(Edit(lesson.Id));
     }
     _dbContext.Entry(lesson).State = EntityState.Modified;
     _dbContext.SaveChanges();
     return(RedirectToAction("Index"));
 }
Beispiel #13
0
        public LessonEntity toEntity(LessonUpdateRequest request, LessonEntity oldEntity)
        {
            LessonEntity entity = new LessonEntity();

            entity.Id    = request.Id;
            entity.Ename = request.Ename;
            entity.Title = request.Title;

            return(entity);
        }
Beispiel #14
0
 public void AddLessonAsync(LessonEntity lesson)
 {
     lesson.State      = true;
     lesson.Status     = true;
     lesson.UpdateDate = DateTime.Now;
     lesson.CreateDate = DateTime.Now;
     lesson.Uid        = "123";
     PIDBContext.Entry(lesson.Course).State = EntityState.Unchanged;
     PIDBContext.Lessons.Add(lesson);
 }
Beispiel #15
0
        /// <summary>
        /// 将entity转换为vo。不包括来自元数据的属性
        /// </summary>
        private LessonVo toVo(LessonEntity entity)
        {
            LessonVo vo = new LessonVo();

            vo.Id    = entity.Id;
            vo.Ename = entity.Ename;
            vo.Title = entity.Title;

            return(vo);
        }
Beispiel #16
0
 public IActionResult Create(LessonEntity lessonEntity)
 {
     if (!ModelState.IsValid)
     {
         return(Create());
     }
     _dbContext.Lessons.Add(lessonEntity);
     _dbContext.SaveChanges();
     return(RedirectToAction("Index"));
 }
Beispiel #17
0
        private void OpenLesson([CanBeNull] LessonEntity lesson)
        {
            if (lesson == null)
            {
                return;
            }

            var registrationPageToken = new RegistrationPageToken("Регистрация", lesson);

            _tabPageHost.AddPageAsync(registrationPageToken);
        }
Beispiel #18
0
        private List <StudentLessonInfoViewModel> FindInternalStudents(
            List <StudentLessonInfoViewModel> allStudentLessons,
            LessonEntity lesson
            )
        {
            var internalStudents = lesson.Group?.Students ?? lesson.Stream.Students;

            return(allStudentLessons
                   .Where(sl => internalStudents.Any(student => student.Id == sl.StudentLesson._StudentId))
                   .ToList());
        }
Beispiel #19
0
        public async Task UpdateLessonAsync(int courseId, int id, LessonEntity lesson)
        {
            var lessonPut = await PIDBContext.Lessons.SingleAsync(c => c.Id == lesson.Id);

            lessonPut.Title       = lesson.Title;
            lessonPut.URLVideo    = lesson.URLVideo;
            lessonPut.Description = lesson.Description;
            lessonPut.Order       = lesson.Order;
            lessonPut.Uid         = lesson.Uid;
            lessonPut.Status      = lesson.Status;
            lessonPut.UpdateDate  = DateTime.Now;
        }
Beispiel #20
0
        private void Init(LessonEntity lesson)
        {
            _originalEntity = lesson.Id == default ? lesson : _db.Lessons.Find(lesson.Id);
            this.Streams.Clear();
            var streamsWithGroups = _db.Streams.Include(stream => stream.Groups)
                                    .Where(entity => entity._Active > 0).ToList();

            this.Streams.AddRange(streamsWithGroups);

            this.ScheduleList.Clear();
            this.ScheduleList.AddRange(_db.Schedules.ToList());
            this.Lesson = new LessonEntity(lesson);
        }
Beispiel #21
0
        public static LessonDomain Create(LessonEntity lessonEntity)
        {
            return(new LessonDomain(
                       lessonEntity.Name,
                       lessonEntity.LessonCode,
                       lessonEntity.AKTS,
                       lessonEntity.LessonType,
                       lessonEntity.WeeklyHour,
                       lessonEntity.SemesterType,
                       lessonEntity.Credit

                       ));
        }
 /// <summary>
 /// Fills the lesson edit data transfer object.
 /// </summary>
 /// <param name="item">The item to fill.</param>
 /// <param name="entity">The entity.</param>
 /// <returns>The filled item.</returns>
 private LessonEditDto FillLessonEditDto(LessonEditDto item, LessonEntity entity)
 {
     item.Id          = entity.Id;
     item.DayId       = entity.DayId;
     item.DayCaption  = entity.DayNavProp.Caption;
     item.FromDate    = DateTimeHelper.DateTimeToString(entity.FromDate);
     item.ToDate      = DateTimeHelper.DateTimeToString(entity.ToDate);
     item.SubjectId   = entity.SubjectId;
     item.SubjectCode = entity.SubjectNavProp.Code;
     item.TeacherId   = entity.TeacherId;
     item.RoomId      = entity.RoomId;
     item.Remark      = entity.Remark;
     return(item);
 }
        public void SetLessonOrder(LessonEntity entity)
        {
            var lessons = this.Lessons.Where(lessonEntity =>
                                             lessonEntity._StreamId == entity._StreamId &&
                                             lessonEntity._GroupId == entity._GroupId &&
                                             lessonEntity._Date != null &&
                                             lessonEntity._ScheduleId.HasValue)
                          .OrderBy(lessonEntity => lessonEntity._Order)
                          .ToList();
            LessonEntity previous   = null;
            bool         isOrderSet = false;

            foreach (var lessonEntity in lessons)
            {
                if (isOrderSet)
                {
                    lessonEntity.Order++;
                    continue;
                }

                var dateCompare = lessonEntity.Date.Value.CompareTo(entity.Date.Value);
                if (dateCompare < 0)
                {
                    previous = lessonEntity;
                    continue;
                }

                if (dateCompare > 0)
                {
                    entity.Order = (previous?.Order ?? 0) + 1;
                    isOrderSet   = true;
                    continue;
                }

                var compareTo = lessonEntity.Schedule.Begin.Value.CompareTo(entity.Schedule.Begin.Value);
                if (compareTo > 0)
                {
                    entity.Order = (previous?.Order ?? 0) + 1;
                    isOrderSet   = true;
                }

                previous = lessonEntity;
            }

            if (!isOrderSet)
            {
                entity.Order = 1;
            }
        }
        /// <summary>
        /// Returns the lesson.
        /// </summary>
        /// <param name="id">The lesson identifier.</param>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>The lesson data.</returns>
        public LessonEditDto GetLesson(Guid id, Guid accountId)
        {
            LessonEditDto data = null;

            using (BzsEntityContainer ctx = this.CreateContainer())
            {
                LessonEntity entity = ctx.LessonSet.FirstOrDefault(f => f.Id == id && f.AccountId == accountId);
                if (entity != null)
                {
                    data = this.FillLessonEditDto(new LessonEditDto(), entity);
                }
            }

            return(data);
        }
Beispiel #25
0
        private async Task RegisterAllStudents(LessonEntity persistentLesson)
        {
            List <StudentEntity> studentsShouldBeRegistered = null;

            if (this.IsGroupsAvailable)
            {
                if (this.SelectedGroup == null)
                {
                    return;
                }

                var groupStudents = this.SelectedGroup.Students?.ToList() ?? new List <StudentEntity>();
                studentsShouldBeRegistered = groupStudents;
            }
            else
            {
                var streamStudents = this.Groups
                                     .SelectMany(group => group.Students)
                                     .Distinct(new StudentEqualityComparer())
                                     .ToList();
                studentsShouldBeRegistered = streamStudents;
            }

            var studentLessons = new List <StudentLessonEntity>();

            studentLessons.AddRange(_db.StudentLessons.Where(entity => entity._LessonId == this.Lesson.Id));
            var notRegisteredStudents = studentsShouldBeRegistered.Where(student =>
                                                                         studentLessons.All(studentLesson => studentLesson._StudentId != student.Id));
            var registrationTime         = DateTime.Now;
            var studentLessonsToRegister = notRegisteredStudents
                                           .Select(student => new StudentLessonEntity {
                Lesson           = persistentLesson,
                _LessonId        = persistentLesson.Id,
                Student          = student,
                _StudentId       = student.Id,
                IsRegistered     = true,
                RegistrationTime = registrationTime
            });

            foreach (var studentLesson in persistentLesson.StudentLessons ?? new List <StudentLessonEntity>())
            {
                studentLesson.IsRegistered     = true;
                studentLesson.RegistrationTime = studentLesson.RegistrationTime ?? registrationTime;
            }

            _db.StudentLessons.AddRange(studentLessonsToRegister);
            await _db.SaveChangesAsync();
        }
Beispiel #26
0
        public LessonUpdateResponse Update([FromBody] LessonUpdateRequest request)
        {
            LessonUpdateResponse response = new LessonUpdateResponse();

            if (request.Id == 0 || request.Id < 0)
            {
                response.Status = -1;
                return(response);
            }

            LessonEntity entity = lessonRepository.GetById(request.Id);

            if (entity == null)
            {
                response.Status = 404;
                return(response);
            }

            lessonRepository.Update(lessonConvertor.toEntity(request, entity));

            response.Status = 1;
            return(response);
        }
Beispiel #27
0
        public LessonItemResponse Item([FromBody] LessonItemRequest request)
        {
            LessonItemResponse response = new LessonItemResponse();

            if (request.Id <= 0)
            {
                response.Status = -1;
                return(response);
            }

            LessonEntity entity = lessonRepository.GetById(request.Id);

            if (entity == null)
            {
                response.Status = 404;
                return(response);
            }

            response.Item = lessonConvertor.toLessVo(entity);

            response.Status = 1;
            return(response);
        }
Beispiel #28
0
        private void StartTimer(LessonEntity entity)
        {
            TimeSpan timeLeft;
            var      now = DateTime.Now;

            if (entity.Date.HasValue && entity.Schedule.End.HasValue)
            {
                timeLeft = entity.Date.Value.Date + entity.Schedule.End.Value - now;
            }
            else
            {
                timeLeft = TimeSpan.Zero;
            }

            this.TimerState = new TimerState {
                TimeLeft    = timeLeft,
                CurrentTime = now
            };
            _timerToEnd = Observable
                          .Interval(TimeSpan.FromMilliseconds(1000))
                          .ObserveOnDispatcher(DispatcherPriority.Background)
                          .Subscribe(UpdateTimer);
        }
Beispiel #29
0
        public LessonVo toMoreVo(LessonEntity entity)
        {
            LessonVo vo = toVo(entity);

            return(vo);
        }
 public RegistrationPageToken(string title, LessonEntity lesson) :
     base(title)
 {
     this.Lesson = lesson;
 }