public async Task <ActionResult> Create(PlaylistRequest request)
        {
            if (request != null)
            {
                var result = await _playlistService.Create(request);

                if (result != null)
                {
                    var playlist_vm = new DetailPlayListVideo();
                    playlist_vm.Id          = result.Id;
                    playlist_vm.Name        = result.Name;
                    playlist_vm.UserId      = result.UserId;
                    playlist_vm.PosterVideo = null;
                    playlist_vm.Status      = result.Status;
                    playlist_vm.CreateDate  = result.CreateDate;
                    return(Content(JsonConvert.SerializeObject(playlist_vm)));
                }
            }
            return(Content("null"));
        }
예제 #2
0
        public List <DetailPlayListVideo> GetDetailPlayList(AppUser user, string nameSearch)
        {
            //list check no video in play list if play list has video
            var listCheckNovideo = new List <PlayList>();

            //Get playlist in database
            var list = _context.PlayList.ToList(); //105,95,100

            var checkStatusNoVideo = from detail in _context.DetailVideo
                                     join video in _context.Video on detail.VideoId equals video.Id
                                     join cate in _context.Category on video.CategorysId equals cate.Id
                                     where video.Status && video.HidenVideo && cate.Status
                                     select detail;
            var playlistNoVideo = _context.PlayList.Where(x => !checkStatusNoVideo.Any(y => y.PlayListId == x.Id) && x.UserId == user.Id).ToList();

            if (nameSearch != null)
            {
                nameSearch = ConvertUnSigned.convertToUnSign(nameSearch).ToLower().Trim();
                list       = list.Where(x => ConvertUnSigned.convertToUnSign(x.Name).
                                        ToLower().Contains(nameSearch)).ToList();
                playlistNoVideo = playlistNoVideo.Where(x => ConvertUnSigned.convertToUnSign(x.Name).
                                                        ToLower().Contains(nameSearch)).ToList();
            }
            var playlist       = list.Where(x => x.UserId == user.Id).ToList();
            var detailPlayList = (from plist in playlist
                                  join detail in _context.DetailVideo on plist.Id equals detail.PlayListId
                                  select new
            {
                plist.Id,
                plist.UserId,
                plist.Name,
                plist.Status,
                detail.VideoId,
                plist.CreateDate
            }).ToList();
            var listCountItem = from detail in detailPlayList
                                join video in _context.Video on detail.VideoId equals video.Id
                                join cate in _context.Category on video.CategorysId equals cate.Id
                                where video.HidenVideo && video.Status && cate.Status
                                group detail by detail.Id into grp
                                select new
            {
                Key   = grp.Key,
                Count = grp.Count()
            };
            var detailPlayListVideo = from dlist in detailPlayList
                                      join video in _context.Video.Where(x => x.Status && x.HidenVideo) on dlist.VideoId equals video.Id
                                      join cate in _context.Category on video.CategorysId equals cate.Id
                                      where cate.Status
                                      select new { dlist, video.PosterImg };

            if (detailPlayListVideo.Count() == 0)
            {
                //check list has video but category is not active
                var checkList = from pl in _context.PlayList
                                join us in _context.Users on pl.UserId equals us.Id
                                join detail in _context.DetailVideo on pl.Id equals detail.PlayListId
                                join video in _context.Video on detail.VideoId equals video.Id
                                join cate in _context.Category on video.CategorysId equals cate.Id
                                where !cate.Status && pl.UserId == user.Id
                                select pl;
                listCheckNovideo = playlistNoVideo.Union(checkList.ToList()).ToList();

                if (nameSearch != null)
                {
                    listCheckNovideo = listCheckNovideo.Where(x => ConvertUnSigned.convertToUnSign(x.Name).
                                                              ToLower().Contains(nameSearch)).ToList();
                }
            }
            else
            {
                listCheckNovideo = playlistNoVideo;
            }
            var listComplete = (from countItem in listCountItem
                                join detail in detailPlayListVideo on countItem.Key equals detail.dlist.Id
                                join listUser in _context.AppUser.ToList() on detail.dlist.UserId equals listUser.Id
                                select new
            {
                Count = countItem.Count,
                detail.dlist.Id,
                detail.dlist.Name,
                detail.dlist.Status,
                detail.dlist.UserId,
                detail.dlist.VideoId,
                detail.PosterImg,
                detail.dlist.CreateDate,
                listUser.FirtsName,
                listUser.LastName
            }).ToList();
            var listDetail_vm = new List <DetailPlayListVideo>();

            foreach (var item in listComplete)
            {
                var i = new DetailPlayListVideo();
                i.Id          = item.Id;
                i.VideoId     = item.VideoId;
                i.Status      = item.Status;
                i.UserId      = item.UserId;
                i.Name        = item.Name;
                i.PosterVideo = item.PosterImg;
                i.CountItem   = item.Count;
                i.CreateDate  = item.CreateDate;
                i.FirtsName   = item.FirtsName;
                i.LastName    = item.LastName;
                if (listDetail_vm.Count > 0)
                {
                    if (!listDetail_vm.Any(x => x.Id == item.Id))
                    {
                        listDetail_vm.Add(i);
                    }
                }
                else
                {
                    listDetail_vm.Add(i);
                }
            }
            var playlistNovideoComplete = (from novideo in listCheckNovideo
                                           join us in _context.AppUser on novideo.UserId equals us.Id
                                           select new
            {
                Count = 0,
                novideo.Id,
                novideo.Name,
                novideo.Status,
                novideo.UserId,
                novideo.CreateDate,
                us.FirtsName,
                us.LastName
            }).ToList();
            var playlistNovideo_vm = new List <DetailPlayListVideo>();

            foreach (var item in playlistNovideoComplete)
            {
                var i = new DetailPlayListVideo();
                i.Id          = item.Id;
                i.Name        = item.Name;
                i.Status      = item.Status;
                i.UserId      = item.UserId;
                i.VideoId     = 0;
                i.PosterVideo = null;
                i.CreateDate  = item.CreateDate;
                i.CountItem   = 0;
                i.FirtsName   = item.FirtsName;
                i.LastName    = item.LastName;
                playlistNovideo_vm.Add(i);
            }
            listDetail_vm.AddRange(playlistNovideo_vm);
            return(listDetail_vm.OrderByDescending(x => x.Id).ToList());
        }