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")); }
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()); }