public DoneSession Update(DoneSession doneSessionChanges)
        {
            var doneSession = dBContext.DoneSessions.Attach(doneSessionChanges);

            doneSession.State = EntityState.Modified;
            dBContext.SaveChanges();
            return(doneSessionChanges);
        }
Esempio n. 2
0
        public async Task <IActionResult> MarkSession([FromBody] DoneSession doneSession)
        {
            var lang          = Request.Headers["language"].ToString();
            var errorMessages = new List <string>();

            if (string.IsNullOrEmpty(doneSession.UserID) || doneSession.SessionId == null)
            {
                errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                return(BadRequest(new { errors = errorMessages }));
            }

            try
            {
                var user = await _userManager.FindByIdAsync(doneSession.UserID);

                var session = _sessionRepository.FindById(doneSession.SessionId.Value);

                if (user == null || session == null)
                {
                    errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                    return(BadRequest(new { errors = errorMessages }));
                }

                if (session.Section.Course.Class == null || !_classRepository.IsUserInClass(session.Section.Course.Class.Id, user.Id))
                {
                    errorMessages.Add(_translator.GetTranslation("CLASSES.USER_NOT_ENROLLED", lang));
                    return(BadRequest(new { errors = errorMessages }));
                }

                var ds = _doneSessionRepository.FindBySessionAndUser(session.Id, user.Id);
                if (ds == null)
                {
                    var newDoneSession = new DoneSession()
                    {
                        User         = user,
                        UserID       = user.Id,
                        Session      = session,
                        SessionId    = session.Id,
                        DoneDateTime = DateTime.Now
                    };

                    var createdDoneSession = _doneSessionRepository.Create(newDoneSession);

                    if (createdDoneSession == null)
                    {
                        errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                        return(BadRequest(new { errors = errorMessages }));
                    }
                    var courseId     = session.Section.Course.Id;
                    var doneSessions = _doneSessionRepository.GetDoneSessionsByUserAndCourse(doneSession.UserID, courseId);

                    var courseSessionsCount = _sessionRepository.GetSessionsByCourseId(courseId).Count;

                    var doneSessionsCount = doneSessions.Count;

                    var donePercentage = ((doneSessionsCount * 100) / courseSessionsCount);

                    return(Ok(new { createdDoneSession, donePercentage }));
                }
                else
                {
                    var courseId     = session.Section.Course.Id;
                    var doneSessions = _doneSessionRepository.GetDoneSessionsByUserAndCourse(doneSession.UserID, courseId);

                    var courseSessionsCount = _sessionRepository.GetSessionsByCourseId(courseId).Count;

                    var doneSessionsCount = doneSessions.Count;

                    var donePercentage = ((doneSessionsCount * 100) / courseSessionsCount);

                    return(Ok(new { createdDoneSession = ds, donePercentage }));
                }
            }
            catch
            {
                errorMessages.Add(_translator.GetTranslation("ERROR", lang));
                return(BadRequest(new { errors = errorMessages }));
            }
        }
 public DoneSession Create(DoneSession doneSession)
 {
     dBContext.DoneSessions.Add(doneSession);
     dBContext.SaveChanges();
     return(doneSession);
 }