Example #1
0
        public ActionResult LikedPosts()
        {
            ApplicationUser currentUser = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
            List <Post>     likedPosts  = new List <Post>();
            var             pairs       = db.UserPostPairs.Include(p => p.user).Include(p => p.post).Distinct();

            foreach (UserPostLikedPair up in pairs)
            {
                if (up.post != null)
                {
                    if (up.user.Id == currentUser.Id && !likedPosts.Contains(up.post))
                    {
                        Post post = db.Posts.Find(up.post.Id);
                        likedPosts.Add(post);
                    }
                }
            }


            UserPostViewModel model = new UserPostViewModel
            {
                CurrentUser = currentUser,
                AllPosts    = likedPosts
            };

            return(View(model));
        }
        public void AddSuggestionAsync(UserPostViewModel userPost)
        {
            var suggestion = _mapper.Map <Suggestion>(userPost);

            _suggestionBoxRepository.InsertData(suggestion);
            //SendNotificationEmail();
        }
Example #3
0
        public ServiceResult AddUser(UserPostViewModel entity)
        {
            var userRoles = userRoleService.GetUserRolesByIds(entity.UserRoleIds);
            // TODO: Send mail
            var password = CreateRandomPassword();

            if (userRepository.Get(w => w.Username == entity.Username) != null)
            {
                return(new ServiceResult(false, "Username already exist."));
            }
            if (userRepository.Get(w => w.Mail == entity.Mail) != null)
            {
                return(new ServiceResult(false, "Mail already exist."));
            }

            userRepository.Add(new User
            {
                Username  = entity.Username,
                Mail      = entity.Mail,
                UserRoles = userRoles,
                Password  = password,
                IsActive  = entity.IsActive
            });

            return(ServiceResult.GetAddResult(uow.Commit() > 0));
        }
        public async Task <IActionResult> Register(UserPostViewModel user)
        {
            if (ModelState.IsValid)
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Register)}";

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, user))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            user = JsonConvert.DeserializeObject <UserPostViewModel>(content);
                        }
                        else
                        {
                            ModelState.AddModelError("Name", "This username is already taken.");
                            return(View(user));
                        }
                    }
                }

                ModelState.Clear();

                HttpContext.Session.SetString("UserID", user.ID.ToString());
                HttpContext.Session.SetString("Username", user.Name.ToString());

                return(RedirectToAction("EnterCreateHomeOptions", "Home"));
            }

            return(View());
        }
Example #5
0
        public void AddUser_WithDuplicateEmail_ShouldReturnsServiceResultIsSuccessfulFalse()
        {
            // Arrange
            UserPostViewModel userModel = new UserPostViewModel()
            {
                Username = "******",
                Mail = "*****@*****.**",
                IsActive = true
            };

            User user = new User()
            {
                Id = new Guid(),
                Username = "******",
                Mail = "*****@*****.**",
                IsActive = true
            };

            this.userRepository.userReadRepository.GetByUserName(Arg.Any<string>()).ReturnsNull();
            this.userRepository.userReadRepository.GetByUserByEmail(Arg.Any<string>()).Returns(user);
            this.userRepository.userWriteRepository.AddUser(Arg.Any<User>()).Returns(true);

            // Act
            var result = this.userService.AddUser(userModel);

            // Assert
            Assert.AreEqual(false, result.IsSuccessful);
        }
Example #6
0
        public UserPostViewModel GetPost(int id)
        {
            UserPostViewModel userPost = Mapper.ConvertPostToViewPost(_postsRepository.GetPostById(id));

            userPost.CommentsCount = _commentsRepository.CountOfComments(userPost.Id);
            return(userPost);
        }
Example #7
0
        public ServiceResult UpdateUser(UserPostViewModel entity)
        {
            var userRoles = userRoleService.GetUserRolesByIds(entity.UserRoleIds);
            // TODO: Send mail
            var password = CreateRandomPassword();

            var user = userRepository.Get(w => w.Id == entity.Id, i => i.UserRoles);

            if (user.Username != entity.Username)
            {
                if (userRepository.Get(w => w.Username == entity.Username) != null)
                {
                    return(new ServiceResult(false, "Username already exist."));
                }
            }
            if (user.Mail != entity.Mail)
            {
                if (userRepository.Get(w => w.Mail == entity.Mail) != null)
                {
                    return(new ServiceResult(false, "Mail already exist."));
                }
            }

            user.Username  = entity.Username;
            user.Mail      = entity.Mail;
            user.UserRoles = userRoles;
            user.IsActive  = entity.IsActive;

            userRepository.Update(user);

            return(ServiceResult.GetUpdateResult(uow.Commit() > 0));
        }
Example #8
0
 public ActionResult CreatePost(UserPostViewModel post)
 {
     if (ModelState.IsValid)
     {
         _blogService.CreateUserPost(post);
         return(RedirectToAction("RegistredIndex", "Blog"));
     }
     return(View(post));
 }
        public ActionResult AddPost(UserPostViewModel model)
        {
            createNewPost(model);
            checkUser(new UserViewModel()
            {
                usermail = model.usermail, password = model.password
            });
            ViewBag.currentUser = currentUser;

            return(RedirectToAction("OpenPost", "Home", new { postid = model.postid, currentUserMail = currentUser.usermail, password = currentUser.password }));
        }
Example #10
0
        public static Post ConvertViewPostToPost(UserPostViewModel inputPost)
        {
            var post = new Post();

            post.Id          = inputPost.Id;
            post.UserName    = inputPost.UserName;
            post.PostText    = inputPost.PostText;
            post.CreatedPost = inputPost.CreatedPost;
            post.PostName    = inputPost.PostName;
            return(post);
        }
        public async Task <JsonResult> GetHomeStatus()
        {
            var result = string.Empty;

            if (!string.IsNullOrEmpty(HttpContext.Session.GetString("HomeID")))
            {
                var status = new HomeStatusPostViewModel();
                var user   = new UserPostViewModel();

                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/status";
                    httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                    httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                    using (var response = await httpClient.GetAsync(requestUri))
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            status = JsonConvert.DeserializeObject <HomeStatusPostViewModel>(content);
                        }
                    }
                }

                if (status.ID > 0)
                {
                    using (var httpClient = new HttpClient())
                    {
                        var requestUri = $"{Configuration.DefaultAPI}/users/{status.UserID}";
                        httpClient.DefaultRequestHeaders.Add("CurrentUserID", CurrentUserID.ToString());
                        httpClient.DefaultRequestHeaders.Add("CurrentHomeID", CurrentHomeID.ToString());

                        using (var response = await httpClient.GetAsync(requestUri))
                        {
                            string content = await response.Content.ReadAsStringAsync();

                            if (response.IsSuccessStatusCode)
                            {
                                user = JsonConvert.DeserializeObject <UserPostViewModel>(content);
                            }
                        }
                    }

                    result = $"{status.Status};{user.Name};{status.Details}";
                    return(Json(result));
                }
            }

            result = $"1;system_generated;No one has set a status yet!";
            return(Json(result));
        }
        // GET: Profile/ProfileTemplate
        public ActionResult ProfileTemplate()
        {
            ApplicationUser   currentUser = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name);
            List <Post>       userPosts   = PostsController.UserPosts(currentUser, db.Posts.Include(p => p.Author).ToList());
            UserPostViewModel model       = new UserPostViewModel
            {
                CurrentUser = currentUser,
                AllPosts    = userPosts
            };

            return(View(model));
        }
        public void createNewPost(UserPostViewModel data)
        {
            fillPostsListFromFireBase();
            fillUsersListFromFireBase();

            data.countofposts = (Int32.Parse(data.countofposts) + 1).ToString();
            data.postid       = (posts.Count + 1).ToString();
            addNewPostToFirebase(new PostViewModel(data));
            users[getUser(data.usermail)].countofposts = data.countofposts;
            updateUsersToFireBase();
            fillUsersListFromFireBase();
        }
Example #14
0
        public static UserPostViewModel ConvertPostToViewPost(Post inputPost)
        {
            var post = new UserPostViewModel();

            post.Id          = inputPost.Id;
            post.PostText    = inputPost.PostText;
            post.CreatedPost = inputPost.CreatedPost;
            post.UserName    = inputPost.UserName;
            post.PostName    = inputPost.PostName;
            post.Image       = inputPost.Image;
            return(post);
        }
Example #15
0
        public async Task <UserGetViewModel> Login(UserPostViewModel user)
        {
            try
            {
                UserPostViewModel usr = await _repository.GetByEmail(user.Email);

                if (usr == null)
                {
                    throw new AuthWrongUserException();
                }

                var key       = _configuration["Crypto:Key"];
                var cPassword = Crypto.CryptText(user.Password, key, Util.Validators.Crypto.SYM_Providers.Rijndael, Util.Validators.Crypto.KeySize.Bits_256);
                user.Password = cPassword;

                if (cPassword != usr.Password)
                {
                    throw new AuthWrongPasswordException();
                }

                var now = DateTime.UtcNow;

                var claims = new Claim[]
                {
                    new Claim("UserId", usr.Id.ToString()),
                    new Claim("Administrator", usr.Administrator.ToString()),
                    new Claim(JwtRegisteredClaimNames.Sub, usr.Email),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim(JwtRegisteredClaimNames.Iat, now.ToUniversalTime().ToString(), ClaimValueTypes.Integer64)
                };

                var secretKey  = _configuration["Audience:Secret"];
                var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey));
                var creds      = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);


                var jwt = new JwtSecurityToken(
                    issuer: _configuration["Audience:Iss"],
                    audience: _configuration["Audience:Aud"],
                    claims: claims,
                    notBefore: now,
                    expires: now.Add(TimeSpan.FromMinutes(3000)),
                    signingCredentials: creds
                    );

                return(await _repository.Login(usr, jwt));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #16
0
        public async Task <IActionResult> YourPosts()
        {
            var claimsidentity = (ClaimsIdentity)this.User.Identity;
            var claims         = claimsidentity.FindFirst(ClaimTypes.NameIdentifier);

            UserPostViewModel upm = new UserPostViewModel()
            {
                PostModel       = await _db.PostsModel.Where(c => c.UserId == claims.Value).ToListAsync(),
                ApplicationUser = await _db.ApplicationUser.FirstOrDefaultAsync(c => c.Id == claims.Value)
            };

            return(View(upm));
        }
Example #17
0
        public void CreateUserPost(UserPostViewModel post)
        {
            string createTime = DateTime.Now.ToString("dd.MM.yyyy HH:mm");

            post.CreatedPost = createTime;
            Post userPost = Mapper.ConvertViewPostToPost(post);

            using (var binaryReader = new BinaryReader(post.uploadPicture.InputStream))
            {
                userPost.Image = binaryReader.ReadBytes(post.uploadPicture.ContentLength);
            }
            _postsRepository.SavePost(userPost);
        }
Example #18
0
        public async Task <IActionResult> Create(UserPostViewModel model)
        {
            if (ModelState.IsValid)
            {
                string method = APIURL.IdentityBaseUri + IdentityAPI.User.Create;
                model.UserName = model.Email;
                OperationStatus status = await ApiInvoker.PostAsync <OperationStatus>(model, method);

                if (status.IsSuccess)
                {
                    JObject            obj      = status.Result as JObject;
                    UserProfileManager _profile = new UserProfileManager();
                    UserProfile        up       = new UserProfile()
                    {
                        UserID        = obj["id"].ToString(),
                        Username      = model.UserName,
                        Title         = string.Empty,
                        FirstName     = string.Empty,
                        MiddleName    = string.Empty,
                        LastName      = string.Empty,
                        GenderID      = Gender.NotProvided,
                        ProfileImage  = string.Empty,
                        Mobile        = model.PhoneNumber,
                        Email         = model.Email,
                        Phone         = model.PhoneNumber,
                        ResPhone      = model.PhoneNumber,
                        StreetAddress = string.Empty,
                        City          = string.Empty,
                        State         = string.Empty,
                        PostalCode    = string.Empty,
                        About         = string.Empty,
                    };
                    await _profile.UpdateUserProfile(up);

                    ActionMessage(status.Message, MessageType.Success);
                }
                else
                {
                    ActionMessage(status.Message, MessageType.Error);
                }

                return(RedirectToAction("Index"));
            }
            else
            {
                await BindRoleList();

                ShowModelStateErorr();
                return(View(new UserGetViewModel()));
            }
        }
Example #19
0
        public ActionResult OpenPost(int id)
        {
            UserPostViewModel userPost = _blogService.GetPost(id);

            ViewBag.Userlike       = _blogService.CheckUserLike(User.Identity.Name, id);
            ViewBag.PostId         = userPost.Id;
            ViewBag.DislikeNames   = _blogService.GetDislikesNames(id);
            ViewBag.LikeNames      = _blogService.GetLikesNames(id);
            ViewBag.UserName       = userPost.UserName;
            userPost.LikesCount    = _blogService.PostLikes(id);
            userPost.DislikesCount = _blogService.PostDislikes(id);
            userPost.CommentsCount = _blogService.GetCommentsCount(id);
            return(View(userPost));
        }
Example #20
0
        public async Task <IActionResult> SharePost([FromBody] UserPostViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var p      = _mapper.Map <UserPost>(model);
            var usPost = new UserPost {
                UserId = p.UserId, PostId = p.PostId
            };

            _userPostService.SharePost(usPost);
            return(new OkObjectResult("Post shared"));
        }
        public async Task <IActionResult> Login(UserPostViewModel user)
        {
            user.ConfirmPassword = user.Password;
            ModelState.Clear();

            if (string.IsNullOrEmpty(user.Name))
            {
                ModelState.AddModelError("Name", "Username field is required.");
            }
            else if (string.IsNullOrEmpty(user.Password))
            {
                ModelState.AddModelError("Password", "Password field is required.");
            }
            else
            {
                using (var httpClient = new HttpClient())
                {
                    var requestUri = $"{Configuration.DefaultAPI}/{CurrentControllerName}/{nameof(Login)}";

                    using (var response = await httpClient.PostAsJsonAsync(requestUri, user))
                    {
                        var content = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            user = JsonConvert.DeserializeObject <UserPostViewModel>(content);

                            if (user != null)
                            {
                                HttpContext.Session.SetString("UserID", user.ID.ToString());
                                HttpContext.Session.SetString("Username", user.Name.ToString());

                                return(RedirectToAction("EnterCreateHomeOptions", "Home"));
                            }
                            else
                            {
                                ModelState.AddModelError("", "Username or password is wrong.");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "Username or password is wrong.");
                        }
                    }
                }
            }

            return(View());
        }
        public ActionResult Posts()
        {
            //View Details
            //View Friends
            //View His Posts
            var Posts       = db.Posts.OfType <HomePost>().Where(t => t.TypeId == PostType.Profile).Include(p => p.Person).Include(e => e.Comments).OrderByDescending(h => h.DatePosted).ToList();
            var currentuser = CurrentUser();

            var viewmodel = new UserPostViewModel {
                Person = currentuser,
                Posts  = Posts,
                Post   = new HomePost()
            };

            return(View(viewmodel));
        }
Example #23
0
        public async Task <IActionResult> Post([FromBody] UserPostViewModel User)
        {
            try
            {
                var usr = await _service.Login(User);

                return(Ok(usr));
            }
            catch (AggregateException ex)
            {
                throw ex.Flatten().InnerExceptions[0];
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #24
0
        public Task <UserGetViewModel> Login(UserPostViewModel user, JwtSecurityToken jwt)
        {
            try
            {
                var encodedJwt = new JwtSecurityTokenHandler().WriteToken(jwt);

                var response = _mapper.Map <UserGetViewModel>(user);
                response.Access_token = encodedJwt;
                response.Expires_in   = (int)TimeSpan.FromMinutes(3000).TotalSeconds;

                return(Task.FromResult(response));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 public IHttpActionResult Post([FromBody] UserPostViewModel userPost)
 {
     if (!ModelState.IsValid)
     {
         return(Ok(new ApiResponseModel
         {
             Success = false,
             Message = Utils.GetErrorMessages(ModelState.Values)
         }));
     }
     _engine.AddSuggestionAsync(userPost);
     return(Ok(new ApiResponseModel
     {
         Success = true,
         Message = "Thank you! Your suggestion has been accepted and became visible, once dedicated person will reply to it within 3 business days."
     }));
 }
Example #26
0
        public ActionResult AddOrUpdate(UserPostViewModel entity)
        {
            ViewBag.UserRoles = userRoleService.GetAllUserRolesByUserId(entity.Id).ToMVCSelectListItem();

            if (ModelState.IsValid)
            {
                if (entity.Id.HasValue)
                {
                    TempData["result"] = userService.UpdateUser(entity);
                }
                else
                {
                    TempData["result"] = userService.AddUser(entity);
                }
            }

            return(View());
        }
        public ActionResult Register([FromBody] UserPostViewModel user)
        {
            try
            {
                var userAlreadyExists = new BaseCRUDService(0).Any <UserPostViewModel>(x => x.Name == user.Name);

                if (userAlreadyExists)
                {
                    return(StatusCode(StatusCodes.Status403Forbidden, "This username is already taken."));
                }

                user = new BaseCRUDService(0).Save(user);
                return(Ok(user));
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
        public ServiceResult AddUser(UserPostViewModel entity)
        {
            bool isUpdated = false;

            userRepository.userReadRepository  = new UserReadRepository();
            userRepository.userWriteRepository = new UserWriteRepository();

            var password = CreateRandomPassword();

            if (userRepository.userReadRepository.GetByUserName(entity.Username) != null)
            {
                return(new ServiceResult(false, "Username already exist."));
            }
            if (userRepository.userReadRepository.GetByUserByEmail(entity.Mail) != null)
            {
                return(new ServiceResult(false, "Mail already exist."));
            }

            isUpdated = userRepository.userWriteRepository.AddUser(new User
            {
                Username = entity.Username,
                Mail     = entity.Mail,
                Password = password,
                IsActive = entity.IsActive
            });

            MailSender ms = new MailSender();

            ms.Send("*****@*****.**", "Added" + entity.Username, "Welcome ! " + entity.Username).Wait();

            ServiceResult result = new ServiceResult();

            if (!isUpdated)
            {
                result.SetFailure("Error while adding User.");
            }
            else
            {
                result.SetSuccess("User added successfully.");
            }
            return(result);
        }
        public ActionResult Login([FromBody] UserPostViewModel user)
        {
            try
            {
                user = new BaseCRUDService(0).GetEntity <UserPostViewModel>(x => x.Name == user.Name && x.Password == user.Password);

                if (user != null)
                {
                    return(Ok(user));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (System.Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, $"{ex.Message}"));
            }
        }
Example #30
0
        public void AddUser_ShouldReturnsServiceResultIsSuccessfulTrue()
        {
            // Arrange
            UserPostViewModel user = new UserPostViewModel()
            {
                Username = "******",
                Mail = "*****@*****.**",
                IsActive = true
            };

            this.userRepository.userReadRepository.GetByUserName(Arg.Any<string>()).ReturnsNull();
            this.userRepository.userReadRepository.GetByUserByEmail(Arg.Any<string>()).ReturnsNull();
            this.userRepository.userWriteRepository.AddUser(Arg.Any<User>()).Returns(true);

            // Act
            var result = this.userService.AddUser(user);

            // Assert
            this.userRepository.userWriteRepository.Received(1).AddUser(Arg.Any<User>());
            Assert.AreEqual(true, result.IsSuccessful);
        }