Exemple #1
0
        public UpdateUserResponse UpdateUser(UpdateUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                if (!string.IsNullOrEmpty(request.AspNetUserId))
                {
                    var user = db.Users.FirstOrDefault(x => x.AspNetUserId == request.AspNetUserId);

                    if (user != null)
                    {
                        user.Name  = request.Name;
                        user.Email = request.Email;

                        db.SaveChanges();
                    }
                }
                else if (request.Id.HasValue)
                {
                    var user = db.Users.FirstOrDefault(x => x.Id == request.Id);

                    if (user != null)
                    {
                        user.Name  = request.Name;
                        user.Email = request.Email;

                        db.SaveChanges();
                    }
                }

                return(new UpdateUserResponse());
            }
        }
Exemple #2
0
        public UpdatePostResponse UpdatePost(UpdatePostRequest request)
        {
            using (var db = new DotWEntities())
            {
                var post = db.Posts.FirstOrDefault(x => x.Id == request.Id);

                if (post != null)
                {
                    post.Title              = request.Title;
                    post.Summary            = request.Summary;
                    post.Body               = request.Body;
                    post.IdCategory         = request.IdCategory;
                    post.IsDraft            = post.IsDraft ? request.IsDraft : post.IsDraft;
                    post.PrincipalImageName = request.PrincipalImageName;

                    db.SaveChanges();

                    request.Tags = request.Tags.Select(x => x.ToLower()).Distinct().ToList();

                    var postTags = db.Tags.Where(x => x.PostId == post.Id).Select(x => x.Tag).ToList();

                    foreach (var t in postTags)
                    {
                        // Todos aquellos posts que estan en la base pero no llegan en el request es porque han sido borrados por el usuario,
                        // por ende, se borran en la base de datos.
                        if (!request.Tags.Contains(t))
                        {
                            var rtag = db.Tags.Where(x => x.Tag == t.ToLower() && x.PostId == request.Id).SingleOrDefault();

                            db.Tags.Remove(rtag);
                            db.SaveChanges();
                        }
                    }

                    var tags = request.Tags.Where(t => !postTags.Contains(t.ToLower())).Select(t => new Tags()
                    {
                        PostId = post.Id, Tag = t.ToLower()
                    }).ToList();

                    if (tags.Any())
                    {
                        db.Tags.AddRange(tags);
                        db.SaveChanges();
                    }
                }

                return(new UpdatePostResponse());
            }
        }
Exemple #3
0
        public DeleteCommentaryResponse DeleteCommentary(DeleteCommentaryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var commentary = db.Comments.FirstOrDefault(x => x.Id == request.Id);

                if (commentary != null)
                {
                    commentary.NullDate = DateTime.Now;

                    if (request.IsComplaintOrVoteDifference)
                    {
                        commentary.DeletedByComplaints = true;

                        var user = db.Users.FirstOrDefault(x => x.Id == commentary.IdUser);

                        user.BlockedComments += 1;
                    }

                    db.SaveChanges();
                }

                return(new DeleteCommentaryResponse());
            }
        }
Exemple #4
0
        public DeletePostResponse DeletePost(DeletePostRequest request)
        {
            using (var db = new DotWEntities())
            {
                var post = db.Posts.FirstOrDefault(x => x.Id == request.Id);

                if (post != null)
                {
                    post.NullDate = DateTime.Now;

                    if (request.IsComplaintOrVoteDifference)
                    {
                        post.DeletedByComplaintsOrVotes = true;

                        var user = db.Users.FirstOrDefault(x => x.Id == post.IdWriter);

                        user.BlockedPosts += 1;
                    }

                    db.SaveChanges();
                }

                return(new DeletePostResponse());
            }
        }
Exemple #5
0
        public SaveVoteResponse SaveVote(SaveVoteRequest request)
        {
            using (var db = new DotWEntities())
            {
                var previousVote = db.Votes.FirstOrDefault(x => x.IdUser == request.UserId &&
                                                           x.IdPost == request.PostId);
                Votes vote;

                if (previousVote == null)
                {
                    vote = new Votes
                    {
                        IdPost = request.PostId,
                        IdUser = request.UserId,
                        Good   = request.Good,
                        Bad    = request.Bad
                    };

                    db.Votes.Add(vote);
                    db.SaveChanges();
                }
                else
                {
                    vote = previousVote;

                    vote.Good = request.Good;
                    vote.Bad  = request.Bad;

                    db.SaveChanges();
                }

                var response = new SaveVoteResponse
                {
                    VoteId        = vote.Id,
                    PostId        = vote.IdPost,
                    PostGoodVotes = db.Votes.Where(x => x.IdPost == request.PostId).Count(x => x.Good),
                    PostBadVotes  = db.Votes.Where(x => x.IdPost == request.PostId).Count(x => x.Bad)
                };

                return(response);
            }
        }
Exemple #6
0
        public VerifyAndUpdateUserStateByCommentsResponse VerifyAndUpdateUserStateByComments(VerifyAndUpdateUserStateByCommentsRequest request)
        {
            using (var db = new DotWEntities())
            {
                Users user;

                if (request.UserId.HasValue)
                {
                    user = db.Users.FirstOrDefault(x => x.Id == request.UserId.Value);
                }
                else
                {
                    user = db.Users.FirstOrDefault(x => x.AspNetUserId == request.AspNetUserId);
                }

                var response = new VerifyAndUpdateUserStateByCommentsResponse();

                if (user != null)
                {
                    // Se verifica si la cantidad de comentarios bloqueados es mayor a 0 porque la operación
                    // 0 % CommentaryBlockedDivider da como resultado 0 y se podría bloquear un usuario cuando en realidad no corresponde.
                    if (user.BlockedComments > 0)
                    {
                        decimal divisionMod = user.BlockedComments % (int)DividersToBlockUser.CommentaryBlockedDivider;

                        if (divisionMod == 0)
                        {
                            // Se debe suspender al usuario.
                            user.IdState = db.UserStates.Where(x => x.State == UserAccountStates.Suspended.ToString()).Select(x => x.Id).FirstOrDefault();

                            DateTime previousActivationDate;

                            if (user.ActivationDate.HasValue)
                            {
                                previousActivationDate = user.ActivationDate.Value;
                            }
                            else
                            {
                                previousActivationDate = DateTime.Now;
                            }

                            user.ActivationDate = previousActivationDate.AddDays((int)SuspendDays.SuspendedByComments);

                            db.SaveChanges();

                            response.UserSuspended  = true;
                            response.ActivationDate = user.ActivationDate.Value;
                        }
                    }
                }

                return(response);
            }
        }
Exemple #7
0
        public CreatePostResponse CreatePost(CreatePostRequest request)
        {
            using (var db = new DotWEntities())
            {
                var post = new Posts
                {
                    IdWriter                   = request.IdWriter,
                    Title                      = request.Title,
                    Summary                    = request.Summary,
                    Body                       = request.Body,
                    EffectDate                 = DateTime.Now,
                    IdCategory                 = request.CategoryId,
                    IsDraft                    = request.IsDraft,
                    PrincipalImageName         = request.PrincipalImageName,
                    DeletedByComplaintsOrVotes = false,
                };

                db.Posts.Add(post);
                db.SaveChanges();

                request.Tags = request.Tags.Select(x => x.ToLower()).Distinct().ToList();

                var postTags = db.Tags.Where(x => x.PostId == post.Id).Select(x => x.Tag).ToList();
                var tags     = request.Tags.Where(t => !postTags.Contains(t.ToLower())).Select(t => new Tags()
                {
                    PostId = post.Id, Tag = t.ToLower()
                }).ToList();
                tags = tags.Distinct().ToList();

                if (tags.Any())
                {
                    db.Tags.AddRange(tags);
                    db.SaveChanges();
                }

                return(new CreatePostResponse {
                    PostId = post.Id
                });
            }
        }
Exemple #8
0
        public UpdateCommentaryResponse UpdateCommentary(UpdateCommentaryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var commentary = db.Comments.FirstOrDefault(x => x.Id == request.Id);

                if (commentary != null)
                {
                    commentary.Commentary = request.CommentaryText;

                    db.SaveChanges();
                }

                return(new UpdateCommentaryResponse());
            }
        }
Exemple #9
0
        public DeleteCategoryResponse DeleteCategory(DeleteCategoryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var Category = db.Categories.FirstOrDefault(x => x.Id == request.Id);

                if (Category != null)
                {
                    Category.NullDate = DateTime.Now;

                    db.SaveChanges();
                }

                return(new DeleteCategoryResponse());
            }
        }
Exemple #10
0
        public DeleteUserResponse DeleteUser(DeleteUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                var user = db.Users.FirstOrDefault(x => x.AspNetUserId == request.AspNetUserId);

                if (user != null)
                {
                    user.AspNetUserId = null;
                    user.NullDate     = DateTime.Now;

                    db.SaveChanges();
                }

                return(new DeleteUserResponse());
            }
        }
Exemple #11
0
        public ActivateUserResponse ActivateUser(ActivateUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                var user = db.Users.FirstOrDefault(x => x.Id == request.Id);

                if (user != null)
                {
                    user.ActivationDate = null;
                    user.IdState        = (int)UserAccountStates.Active;

                    db.SaveChanges();
                }

                return(new ActivateUserResponse());
            }
        }
Exemple #12
0
        public VerifyIfIsSuspendedAndUpdateUserResponse VerifyIfIsSuspendedAndUpdateUser(VerifyIfIsSuspendedAndUpdateUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                Users user;

                if (request.UserId.HasValue)
                {
                    user = db.Users.FirstOrDefault(x => x.Id == request.UserId.Value);
                }
                else
                {
                    user = db.Users.FirstOrDefault(x => x.AspNetUserId == request.AspNetUserId);
                }

                if (user.UserStates.State == UserAccountStates.Active.ToString())
                {
                    return(new VerifyIfIsSuspendedAndUpdateUserResponse {
                        UserSuspended = false
                    });
                }
                else
                {
                    if (user.ActivationDate.HasValue && user.ActivationDate <= DateTime.Now)
                    {
                        user.ActivationDate = null;
                        user.IdState        = (int)UserAccountStates.Active;

                        db.SaveChanges();

                        return(new VerifyIfIsSuspendedAndUpdateUserResponse {
                            UserSuspended = false
                        });
                    }
                    else
                    {
                        return(new VerifyIfIsSuspendedAndUpdateUserResponse {
                            UserSuspended = true
                        });
                    }
                }
            }
        }
Exemple #13
0
        public UpdateProfileResponse UpdateProfile(UpdateProfileRequest request)
        {
            using (var db = new DotWEntities())
            {
                var user = db.Users.FirstOrDefault(x => x.Id == request.Id);

                if (user != null)
                {
                    user.FullName    = request.FullName;
                    user.Phone       = request.Phone;
                    user.Description = request.Description;
                    user.ShowData    = request.ShowData;

                    db.SaveChanges();
                }

                return(new UpdateProfileResponse());
            }
        }
Exemple #14
0
        public UpdateCategoryResponse UpdateCategory(UpdateCategoryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var Category = db.Categories.FirstOrDefault(x => x.Id == request.Id);

                if (Category != null)
                {
                    Category.Title           = request.Title;
                    Category.Description     = request.Description;
                    Category.Summary         = request.Summary;
                    Category.IdUpperCategory = request.IdUpperCategory;

                    db.SaveChanges();
                }

                return(new UpdateCategoryResponse());
            }
        }
Exemple #15
0
        public EnableUserResponse EnableUser(EnableUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                var user = db.Users.FirstOrDefault(x => x.Id == request.UserId);

                if (user != null)
                {
                    user.NullDate       = null;
                    user.IdState        = (int)UserAccountStates.Active;
                    user.ActivationDate = null;

                    db.SaveChanges();
                }

                return(new EnableUserResponse {
                    UserName = user.Name, Email = user.AspNetUsers.Email
                });
            }
        }
Exemple #16
0
        public EnablePostResponse EnablePost(EnablePostRequest request)
        {
            using (var db = new DotWEntities())
            {
                var post = db.Posts.FirstOrDefault(x => x.Id == request.PostId);

                if (post != null)
                {
                    post.NullDate = null;
                    post.DeletedByComplaintsOrVotes = false;

                    var user = db.Users.FirstOrDefault(x => x.Id == post.IdWriter);

                    user.BlockedPosts -= 1;

                    db.SaveChanges();
                }

                return(new EnablePostResponse());
            }
        }
Exemple #17
0
        public EnableCommentaryResponse EnableCommentary(EnableCommentaryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var comment = db.Comments.FirstOrDefault(x => x.Id == request.CommentaryId);

                if (comment != null)
                {
                    comment.NullDate            = null;
                    comment.DeletedByComplaints = false;

                    var user = db.Users.FirstOrDefault(x => x.Id == comment.IdUser);

                    user.BlockedComments -= 1;

                    db.SaveChanges();
                }

                return(new EnableCommentaryResponse());
            }
        }
Exemple #18
0
        public CreateCategoryResponse CreateCategory(CreateCategoryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var category = new Categories
                {
                    Title           = request.Title,
                    Description     = request.Description,
                    Summary         = request.Summary,
                    IdUpperCategory = request.IdUpperCategory
                };

                db.Categories.Add(category);

                db.SaveChanges();

                return(new CreateCategoryResponse {
                    CategoryId = category.Id
                });
            }
        }
Exemple #19
0
        public CreateUserResponse CreateUser(CreateUserRequest request)
        {
            using (var db = new DotWEntities())
            {
                var user = new Users
                {
                    Name           = request.User.Name,
                    AspNetUserId   = request.User.AspNetUserId,
                    EffectDate     = DateTime.Now,
                    IdState        = (int)UserAccountStates.Active,
                    ActivationDate = (DateTime?)null,
                    Email          = request.User.Email
                };

                db.Users.Add(user);

                db.SaveChanges();

                return(new CreateUserResponse());
            }
        }
Exemple #20
0
        public CreateCommentaryComplaintResponse CreateCommentaryComplaint(CreateCommentaryComplaintRequest request)
        {
            using (var db = new DotWEntities())
            {
                var complaint = new Complaints
                {
                    IdComment   = request.CommentaryId,
                    IdUser      = request.UserId,
                    Description = request.Commentary
                };

                db.Complaints.Add(complaint);
                db.SaveChanges();

                var response = new CreateCommentaryComplaintResponse {
                    ComplaintId = complaint.Id, CommentaryId = complaint.IdComment.Value
                };

                response.CommentaryComplaintsCount = db.Complaints.Count(x => x.IdComment == response.CommentaryId);

                return(response);
            }
        }
Exemple #21
0
        public CreateCommentaryResponse CreateCommentary(CreateCommentaryRequest request)
        {
            using (var db = new DotWEntities())
            {
                var commentary = new Comments
                {
                    Commentary          = request.CommentaryText,
                    EffectDate          = DateTime.Now,
                    IdPost              = request.IdPost,
                    IdUser              = request.IdUser,
                    IdUpperComment      = request.IdUpperComment,
                    DeletedByComplaints = false
                };

                db.Comments.Add(commentary);

                db.SaveChanges();

                return(new CreateCommentaryResponse {
                    CommentaryId = commentary.Id
                });
            }
        }