예제 #1
0
        public ActionResult UpdateUsers(UsersPost user)
        {
            using (DataContext db = new DataContext())
            {
                ViewBag.GetRoles = (from r in db.Roles select r).ToList();
                User u = db.Users.Where(x => x.User_ID == user.userid).FirstOrDefault();
                if (user.avatar != null)
                {
                    //save ảnh vào thư mục và lấy tên ảnh
                    var filename = Path.GetFileName(user.avatar.FileName);
                    var path     = Path.Combine(Server.MapPath("../img/avatar"), filename);
                    user.avatar.SaveAs(path);

                    u.userName    = user.username;
                    u.phoneNumber = user.phone;
                    u.role        = user.role;
                    u.avatar      = filename;
                    u.sex         = Convert.ToBoolean(user.sex);
                    u.address     = user.address;
                    db.SaveChanges();
                    return(Json(new { mess_ = 1 }));
                }
                else
                {
                    u.userName    = user.username;
                    u.phoneNumber = user.phone;
                    u.role        = user.role;
                    u.sex         = Convert.ToBoolean(user.sex);
                    u.address     = user.address;
                    db.SaveChanges();
                    return(Json(new { mess_ = 1 }));
                }
            }
        }
예제 #2
0
        public IActionResult CreatePost(IFormFile postImage, string postText)
        {
            string   fileName    = "";
            DateTime dateTimeNow = DateTime.Now;

            if (postText == null || postText == "")
            {
                return(Json(new { statusCode = ResponseStatus.ValidationError, responseMessage = ValidationMessages.EmptyPostText }));
            }

            if (postImage != null)
            {
                if (postImage.ContentType.ToLower() != "image/jpeg" && postImage.ContentType.ToLower() != "image/png" && postImage.ContentType.ToLower() != "image/jpg")
                {
                    return(Json(new { statusCode = ResponseStatus.ValidationError, responseMessage = ValidationMessages.WrongFormat }));
                }

                var uploads = Path.Combine(hostingEnvironment.WebRootPath, "PostPics");
                fileName = postImage.FileName.Split(".")[0] + "_" + DateTime.Now.ToFileTime() + "." + postImage.FileName.Split(".")[1];
                var filePath = Path.Combine(uploads, fileName);
                using (var fileStream = new FileStream(filePath, FileMode.Create))
                {
                    postImage.CopyTo(fileStream);
                }
            }

            User user = userData.GetUser(HttpContext);

            Post post = new Post()
            {
                IsDeleted = false, PostContent = postText
            };

            facebookDataContext.Posts.Add(post);
            try { facebookDataContext.SaveChanges(); }
            catch { return(Json(new { statusCode = ResponseStatus.Error })); }

            UsersPost usersPost = new UsersPost()
            {
                PostId = post.Id, IsCreator = true, CreatedAt = dateTimeNow, UserId = user.Id
            };

            facebookDataContext.UsersPosts.Add(usersPost);
            try { facebookDataContext.SaveChanges(); }
            catch { return(Json(new { statusCode = ResponseStatus.Error })); }

            if (postImage != null)
            {
                PostPhoto postPhoto = new PostPhoto()
                {
                    IsDeleted = false, PostId = post.Id, CreatedAt = dateTimeNow, Url = fileName
                };
                facebookDataContext.PostPhotos.Add(postPhoto);
                try { facebookDataContext.SaveChanges(); }
                catch { return(Json(new { statusCode = ResponseStatus.Error })); }
            }

            return(Json(new { statusCode = ResponseStatus.Success }));
        }
예제 #3
0
        public ActionResult AddNewUsers(UsersPost user)
        {
            using (DataContext db = new DataContext())
            {
                ViewBag.GetRoles = (from r in db.Roles select r).ToList();
                var checkEmailExist = (from u in db.Users where u.email == user.email select u).FirstOrDefault();
                if (checkEmailExist == null)
                {
                    if (user.avatar != null)
                    {
                        //save ảnh vào thư mục và lấy tên ảnh
                        var filename = Path.GetFileName(user.avatar.FileName);
                        var path     = Path.Combine(Server.MapPath("../img/avatar"), filename);
                        user.avatar.SaveAs(path);

                        User u = new User();
                        u.userName    = user.username;
                        u.email       = user.email;
                        u.phoneNumber = user.phone;
                        u.role        = user.role;
                        u.avatar      = filename;
                        u.password    = Encode.CreateMD5(user.password);
                        u.sex         = Convert.ToBoolean(user.sex);
                        u.address     = user.address;
                        u.dayOfBirth  = DateTime.Now;
                        db.Users.Add(u);
                        db.SaveChanges();
                        return(Json(new { mess_ = 1 }));
                    }
                    else
                    {
                        User u = new User();
                        u.userName    = user.username;
                        u.email       = user.email;
                        u.phoneNumber = user.phone;
                        u.role        = user.role;
                        u.password    = Encode.CreateMD5(user.password);
                        u.sex         = Convert.ToBoolean(user.sex);
                        if (Convert.ToBoolean(user.sex) == true)
                        {
                            u.avatar = "avt_men.jpg ";
                        }
                        else
                        {
                            u.avatar = "avt_girl.jpg";
                        }
                        u.address    = user.address;
                        u.dayOfBirth = DateTime.Now;
                        db.Users.Add(u);
                        db.SaveChanges();
                        return(Json(new { mess_ = 1 }));
                    }
                }
                else
                {
                    return(Json(new { mess_ = 0 }));
                }
            }
        }
예제 #4
0
        public static HomePostTempDto Map(UsersPost from, IWebHostEnvironment hostingEnvironment, int currentUserId)
        {
            if (from == null)
            {
                return(null);
            }

            var to = new HomePostTempDto
            {
                UserId         = from.User.Id,
                FullName       = $"{from.User.FirstName} {from.User.LastName}",
                PostContent    = from.Post.PostContent,
                CreatedAt      = from.CreatedAt,
                HomeCommentDto = Map(from.Post.Comments.OrderByDescending(x => x.CreatedAt), hostingEnvironment, currentUserId).ToList(),
                HomeLikeDto    = Map(from.Post.Likes.OrderByDescending(x => x.CreatedAt), hostingEnvironment).ToList(),
                PostId         = from.PostId,
                IsLike         = from.Post.Likes.Any(x => x.PostId == from.PostId && x.UserId == currentUserId && x.IsDeleted == false)
            };

            string path = hostingEnvironment.WebRootPath + "/ProfilePics/" + (from.User.ProfilePhotos.Where(x => x.IsCurrent).Select(x => x.Url).FirstOrDefault() ?? (from.User.GenderId == 1 ? "default.jpg" : "default_female.png"));

            byte[] b = System.IO.File.ReadAllBytes(path);
            to.ProfilePic = "data:image/png;base64," + Convert.ToBase64String(b);

            if (from.Post.PostPhotos.Select(x => x.Url).FirstOrDefault() != null)
            {
                string path2 = hostingEnvironment.WebRootPath + "/PostPics/" + from.Post.PostPhotos.Select(x => x.Url).FirstOrDefault();
                byte[] b2    = System.IO.File.ReadAllBytes(path2);
                to.PostPicUrl = "data:image/png;base64," + Convert.ToBase64String(b2);
            }

            TimeSpan?DateDifference = DateTime.Now - from.CreatedAt;

            if (DateDifference.Value.Days != 0)
            {
                to.PostDate = string.Format("posted {0} days ago", (DateDifference.Value.Days));
            }
            if (DateDifference.Value.Days > 30)
            {
                to.PostDate = string.Format("from {0}", from.CreatedAt.ToString("dd/MM/yyyy"));
            }
            if (DateDifference.Value.Days == 0 && DateDifference.Value.Hours != 0)
            {
                to.PostDate = string.Format("posted {0} h ago", DateDifference.Value.Hours);
            }
            if (DateDifference.Value.Days == 0 && DateDifference.Value.Hours == 0 && DateDifference.Value.Minutes != 0)
            {
                to.PostDate = string.Format("posted {0} min ago", DateDifference.Value.Minutes);
            }
            if (DateDifference.Value.Days == 0 && DateDifference.Value.Hours == 0 && DateDifference.Value.Minutes == 0)
            {
                to.PostDate = ("posted few sec ago ");
            }

            return(to);
        }
        public async Task <IActionResult> PostAsync([FromBody] UsersPost model)
        {
            if (await cachedUserManager.GetUserByUserNameAndFilterRoleAssignmentsByClientIdAsync(model.UserName, userPrincipalBuilder.GetCurrentClientId()) != null)
            {
                throw new UserAlreadyExistsException();
            }

            if (await userManager.Users.FirstOrDefaultAsync(u => u.NormalizedEmail == model.Email.Trim().ToUpper()) != null)
            {
                throw new EmailAlreadyExistsException();
            }

            if (!hiringTypes.Contains(model.HiringType))
            {
                throw new InvalidHiringTypeException();
            }

            var user = mapper.Map <UsersPost, ApplicationUser>(model);

            user.EmailConfirmed = !model.GeneratePassword && string.IsNullOrWhiteSpace(model.Password);

            var password = model.GeneratePassword
                ? passwordGenerator.GenerateRandomPassword()
                : model.Password;

            var creationResult = !string.IsNullOrWhiteSpace(password)
                ? await userManager.CreateAsync(user, password)
                : await userManager.CreateAsync(user);

            if (creationResult.Succeeded)
            {
                if (!user.EmailConfirmed)
                {
                    var token = await userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.RouteUrl("ConfirmEmail", new { username = user.UserName, token }, Request.Scheme);

                    await emailSender.NotifyNewUserAsync(model.Email, model.UserName, callbackUrl, model.GeneratePassword?password : null);
                }

                return(CreatedAtRoute("UsersGet", new { username = user.UserName }, new PostResult(user.Id, user.UserName)));
            }
            else
            {
                throw new IdentityOperationException(creationResult.Errors.Select(e => new IdentityOperationExceptionItem(e.Code, e.Description)));
            }
        }
예제 #6
0
        public IActionResult DeletePost([FromQuery] int postId)
        {
            if (postId == 0)
            {
                return(Json(new { statusCode = ResponseStatus.ValidationError }));
            }
            User      user      = userData.GetUser(HttpContext);
            Post      post      = facebookDataContext.Posts.Where(x => x.Id == postId).FirstOrDefault();
            UsersPost usersPost = facebookDataContext.UsersPosts.Where(x => x.PostId == post.Id && x.IsCreator).FirstOrDefault();

            if (post == null || usersPost.UserId != user.Id)
            {
                return(Json(new { statusCode = ResponseStatus.ValidationError }));
            }
            post.IsDeleted = true;
            facebookDataContext.Posts.Update(post);
            try { facebookDataContext.SaveChanges(); }
            catch { return(Json(new { statusCode = ResponseStatus.Error })); }
            return(Json(new { statusCode = ResponseStatus.Success }));
        }