Пример #1
0
        public ActionResult Watch(Guid id)
        {
            var classRepository       = new ClassRepository(_context);
            var classAccessRepository = new ClassAccessRepository(_context);
            var classInfo             = classRepository.GetClass(id, _loggedUser.Id, GetUserRole(_loggedUser));

            if (classInfo.Available && classInfo.Class.Active)
            {
                if (GetUserRole(_loggedUser) == Role.Student)
                {
                    classAccessRepository.CreateAccess(new ClassAccess
                    {
                        Class          = classInfo.Class,
                        User           = _loggedUser,
                        AccessDateTime = DateTime.Now,
                        Percentual     = classInfo.Percentual,
                        WatchedSeconds = classInfo.WatchedSeconds
                    });
                }

                return(View(ClassViewModel.FromEntityWithFiles(classInfo)));
            }

            TempData["MessageType"]  = "warning";
            TempData["MessageTitle"] = Resource.WarningToastrTitle;
            TempData["Message"]      = Resource.NotAllowedWatchClassToastrMessage;
            return(RedirectToAction("Index", "Home"));
        }
Пример #2
0
        public static SearchResult Parse <T>(T item, User loggedUser, IContext context)
            where T : ISearchResult
        {
            var result = new SearchResult
            {
                Id          = item.Id,
                Description = item.Name,
                ResultType  =
                    (ResultType)Enum.Parse(typeof(ResultType), ObjectContext.GetObjectType(item.GetType()).Name)
            };


            if (result.ResultType == ResultType.File && context.GetList <FileAccess>().Any(x => x.File.Id == result.Id))
            {
                result.Percentual = 100;
            }
            else if (result.ResultType == ResultType.Class)
            {
                var classAccessRepository = new ClassAccessRepository(context);
                var longestAccess         = classAccessRepository.GetLongestAccess(result.Id, loggedUser.Id);
                if (longestAccess != null)
                {
                    result.Percentual = longestAccess.Percentual;
                }
            }

            return(result);
        }
Пример #3
0
        public ActionResult LastClassesPanel()
        {
            var classAccessRepository = new ClassAccessRepository(_context);

            return(PartialView("_LastClassesPanel",
                               ClassAccessViewModel.FromEntityList(classAccessRepository.ListLastAccesses(_loggedUser.Id),
                                                                   new DefaultDateTimeHumanizeStrategy())));
        }
Пример #4
0
        public ActionResult UpdateProgress(ClassAccessViewModel viewModel)
        {
            var classAccessRepository = new ClassAccessRepository(_context);
            var classRepository       = new ClassRepository(_context);
            var classInfo             = classRepository.GetClass(viewModel.ClassId, _loggedUser.Id, GetUserRole(_loggedUser));

            classAccessRepository.UpdateProgress(viewModel.ToEntity(_loggedUser, classInfo.Class));

            return(new HttpStatusCodeResult(HttpStatusCode.OK, "Updated"));
        }