示例#1
0
        // 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));
        }
示例#2
0
        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
            }));
        }
示例#3
0
        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  :("));
        }
示例#4
0
        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
            }));
        }
示例#5
0
        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"
            }));
        }
示例#6
0
        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()
                }));
            }
        }