// GET: /<controller>/ // [HttpGet()] public IActionResult Index(long skip, int take = 10) { var result = new List <VideoViewModel>(); var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; foreach (var video in context.Videos.Include(x => x.HGTUser)) { HGTUser user = video.HGTUser; result.Add(new VideoViewModel { FolderName = video.FolderName, FileName = video.FileName, Poster = video.Poster ?? Default_Poster, Format = video.Format, Description = video.Description, Title = video.Title, UserFirstName = user?.FirstName, UserDistrict = user?.District, UserId = user?.Id, NumberOfLikes = video.Likes, VideoId = video.ID }); } return(Ok(result)); }
public IActionResult SearchVideo(string searchTerm, int skip, int take = 50) { var result = new List <VideoViewModel>(); var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; IQueryable <VideoInfo> videos; videos = context.Videos.Include(x => x.HGTUser).Where(x => x.IsReviewed != false && (x.HGTUser.FirstName.Contains(searchTerm) || x.Description.Contains(searchTerm) || x.Title.Contains(searchTerm))).Skip(skip).Take(take); foreach (var video in videos) { HGTUser user = video.HGTUser; result.Add(new VideoViewModel { VideoUrl = video.VideoUrl, PosterUrl = video.PosterUrl ?? Default_Poster, Description = video.Description, Title = video.Title, UserFirstName = user?.FirstName, UserDistrict = user?.District, UserId = user?.Id, NumberOfLikes = video.Likes, VideoId = video.ID }); } return(Ok(new ServiceTypedResponse <List <VideoViewModel> > { Status = "good", Message = result })); }
public IActionResult Register([FromBody] RegisterViewModel model, string returnUrl = null) { if (ModelState.IsValid) { try { var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; if (context.HGTUsers.FirstOrDefault(x => x.Email == model.Email) == null) { var hasher = new Hasher(); var hashedPassword = hasher.HashPassword(model.Password); HGTUser newUser = new HGTUser { FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, PasswordHash = hashedPassword.Hash, Salt = hashedPassword.Salt, Gender = model.Gender, District = model.District, Town = model.Town, Age = model.Age, AvatarImage = model.AvatarImage }; context.HGTUsers.Add(newUser); context.SaveChanges(); // Send the verification Mail return(Ok("User Registration successful :) \n Please Verify your email we have sent you a link.")); } } catch { return(BadRequest("Oops, Something went wrong :(")); } } else { var modelErrors = new StringBuilder(); foreach (var modelState in ModelState.Values) { foreach (var modelError in modelState.Errors) { modelErrors.AppendLine(modelError.ErrorMessage); } } return(BadRequest(modelErrors.ToString())); } return(BadRequest("Oops, Somthing went wrong :(")); }
public IActionResult GetVideoList(string type, int skip, int take = 15) { var result = new List <VideoViewModel>(); var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; IQueryable <VideoInfo> videos; if (!String.IsNullOrEmpty(type)) { videos = context.Videos.OrderBy(x => x.UploadDateTime).Include(x => x.HGTUser).Where(x => x.IsReviewed != false).Skip(skip).Take(take); } else { videos = context.Videos.Include(x => x.HGTUser).Where(x => x.IsReviewed != false).Skip(skip).Take(take); } foreach (var video in videos) { HGTUser user = video.HGTUser; result.Add(new VideoViewModel { VideoUrl = video.VideoUrl, PosterUrl = video.PosterUrl ?? Default_Poster, Description = video.Description, Title = video.Title, UserFirstName = user?.FirstName, UserDistrict = user?.District, UserId = user?.Id, NumberOfLikes = video.Likes, VideoId = video.ID }); } return(Ok(new ServiceTypedResponse <List <VideoViewModel> > { Status = "good", Message = result })); }
public IActionResult GetVideo(long id) { VideoViewModel result = null;; var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; var video = context.Videos.Include(x => x.HGTUser).FirstOrDefault(x => x.ID == id); if (video != null) { HGTUser user = video.HGTUser; result = new VideoViewModel { VideoUrl = video.VideoUrl, PosterUrl = video.PosterUrl, Format = video.Format, Description = video.Description, Title = video.Title, UserFirstName = user?.FirstName, UserLastName = user?.LastName, UserDistrict = user?.District, UserTown = user?.Town, UserId = user?.Id, NumberOfLikes = video.Likes, VideoId = video.ID, NumberOfViews = video.Views, }; if (video.IsReviewed == false) { return(Ok(new ServiceResponse { Status = "bad", Message = "Video Is under review Beacause of SPAM markings." })); } try { var userId = HttpContext.GetUserID(); if (context.Likes.Any(x => x.UserId == userId && x.VideoId == video.ID)) { result.IsLikedByMe = true; } } catch (Exception e) { this.logger.Log("GetVideo has Problem", e.Message, e.InnerException?.Message); } try { video.Views++; context.SaveChangesAsync(); } catch (Exception e) { this.logger.Log("GetVideo views++ has Problem", e.Message, e.InnerException?.Message); } return(Ok(new ServiceTypedResponse <VideoViewModel> { Status = "good", Message = result })); } return(Ok(new ServiceResponse { Status = "bad", Message = "Cant get this video" })); }
public async Task <IActionResult> Register([FromBody] RegisterViewModel model) { if (ModelState.IsValid) { try { var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; if (context.HGTUsers.FirstOrDefault(x => x.Email.Equals(model.Email, StringComparison.InvariantCultureIgnoreCase)) == null) { HGTUser newUser = new HGTUser { FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, Gender = model.Gender, District = model.District, Town = model.Town, Age = model.Age, }; if (!String.IsNullOrEmpty(model.AvatarImage)) { var startIndex = model.AvatarImage.IndexOf("base64,"); var base64Image = model.AvatarImage.Substring(startIndex + 7); var index1 = model.AvatarImage.IndexOf('/'); var index2 = model.AvatarImage.IndexOf(';'); var ext = model.AvatarImage.Substring(index1 + 1, index2 - index1 - 1); model.Email = model.Email.Replace('.', '_'); string path = $"{model.Email}.{ext}"; if (!await UploadFileAsync(Convert.FromBase64String(base64Image), path)) { return(Ok(new ServiceResponse { Status = "error", Message = "Service Not Up" })); } newUser.AvatarImage = $"https://s3.ap-south-1.amazonaws.com/{bucketName}/{path}"; } if (context.Capthas.Single(x => x.Id == model.CapthaId).CapthaAnswer != model.Captha) { return(Ok(new ServiceResponse { Status = "error", Message = "Captha Answer not Matched" })); } var hasher = new PasswordHasher <HGTUser>(); var hashedPassword = hasher.HashPassword(newUser, model.Password); newUser.PasswordHash = hashedPassword; context.HGTUsers.Add(newUser); context.SaveChanges(); // Send the verification Mail // Login the User and send a token back return(this.LoginUser(new LoginViewModel { Email = newUser.Email, Password = model.Password })); } else { return(Ok(new ServiceResponse { Status = "error", Message = "User Already Exists" })); } } catch (Exception e) { this.logger.Log("Register has Problem", e.Message, e.InnerException?.Message); return(Ok(new ServiceResponse { Status = "error", Message = "Something Went Wrong" })); } } else { var modelErrors = new StringBuilder(); foreach (var modelState in ModelState.Values) { foreach (var modelError in modelState.Errors) { modelErrors.AppendLine(modelError.ErrorMessage); } } return(Ok(new ServiceResponse { Status = "error", Message = modelErrors.ToString() })); } }