コード例 #1
0
        private async Task FillViewData(string userId)
        {
            // Fetch the user/customer
            var user = await _dbRead.SingleAsync <VODUser>(u =>
                                                           u.Id.Equals(userId));

            Customer = new UserDTO {
                Id = user.Id, Email = user.Email
            };

            // Fetch the user's courses and course ids
            _dbRead.Include <UserCourse>();
            var userCourses = await _dbRead.GetAsync <UserCourse>(uc =>
                                                                  uc.UserId.Equals(userId));

            var usersCourseIds = userCourses.Select(c =>
                                                    c.CourseId).ToList();

            Courses = userCourses.Select(c => c.Course).ToList();



            // Fetch courses that the user doesn't already have access to
            var availableCourses = await _dbRead.GetAsync <Course>(uc => !usersCourseIds.Contains(uc.Id));

            AvailableCourses = availableCourses.ToSelectList("Id", "Title");
        }
コード例 #2
0
        public async Task <TDestination> SingleAsync <TSource, TDestination>(Expression <Func <TSource, bool> > expression, bool include = false) where TSource : class where TDestination : class
        {
            if (include)
            {
                _dbRead.Include <TSource>();
            }
            var entities = await _dbRead.SingleAsync(expression);

            return(_mapper.Map <TDestination>(entities));
        }
コード例 #3
0
        public async Task <bool> DeleteAsync <TSource>(Expression <Func <TSource, bool> > expression) where TSource : class
        {
            try
            {
                var entity = await _dbRead.SingleAsync <TSource>(expression);

                _dbWrite.Delete(entity);
                return(await _dbWrite.SaveChangesAsync());
            }
            catch
            {
                return(false);
            }
        }
コード例 #4
0
        public async void Test1()
        {
            //_db.Include<Download>();
            //_db.Include<Module, Course>();

            var result1 = await _dbReadService.SingleAsync <Download>(d => d.Id.Equals(3));

            var result2 = await _dbReadService.GetAsync <Download>(include : true); // Fetch all

            // Fetch all that matches the Lambda expression
            var result3 = await _dbReadService.GetAsync <Download>(d => d.ModuleId.Equals(1));

            var result4 = await _dbReadService.AnyAsync <Download>(d => d.ModuleId.Equals(1)); // True if a record is found
        }
コード例 #5
0
        public async Task <Video> GetVideoAsync(string userId, int videoId)
        {
            //пользователь не может получить видео тех курсов которых у него нет
            var video = await _dbReadService.SingleAsync <Video>(v => v.Id.Equals(videoId), true);

            if (video == null)
            {
                return(default);
コード例 #6
0
        public async Task <Course> GetCourse(string userId, int courseId)
        {
            _db.Include <Course, Module>();
            var userCourse = await _db.SingleAsync <UserCourse>(c => c.UserId.Equals(userId) && c.CourseId.Equals(courseId));

            if (userCourse == null)
            {
                return(default);
コード例 #7
0
        public async Task <bool> DeleteAsync <TSource>(Expression <Func <TSource, bool> > expression) where TSource : class
        {
            try
            {
                //TODO: TWO Queries to delete entity????
                //_dbWriteService.Delete(new Entity{Id = })
                var entity = await _dbReadService.SingleAsync <TSource>(expression);

                _dbWriteService.Delete(entity);

                return(await _dbWriteService.SaveChangesAsync());
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
コード例 #8
0
        public async Task <Character> GetCharacter(string userId, int characterID)
        {
            _dbRead.Include <UserCharacter>();
            _dbRead.Include <Character>();

            var userCharacter = await _dbRead.SingleAsync <UserCharacter>(uc => uc.UserId.Equals(userId) && uc.CharacterId.Equals(characterID));

            if (userCharacter == null)
            {
                return(default);
コード例 #9
0
        public async Task <IActionResult> OnPostRemoveAsync(int courseId, string userId)
        {
            try
            {
                var userCourse = await _dbReadService.SingleAsync <UserCourse>(uc =>
                                                                               uc.UserId.Equals(userId) &&
                                                                               uc.CourseId.Equals(courseId));

                if (userCourse != null)
                {
                    _dbWriteService.Delete(userCourse);
                    await _dbWriteService.SaveChangesAsync();
                }
            }
            catch
            {
            }
            await FillViewData(userId);

            return(Page());
        }
コード例 #10
0
        public async Task <Boolean> DeleteAsync(int id)
        {
            try
            {
                //TODO: TWO Queries to delete entity????
                //_dbWriteService.Delete(new Entity{Id = })
                var entity = await _dbReadService.SingleAsync <Course>(d => d.Equals(id));

                _dbWriteService.Delete(entity);

                return(await _dbWriteService.SaveChangesAsync());
            }
            catch (Exception)
            {
                return(false);
            }
        }