Exemple #1
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 #2
0
        public SearchComplaintsByUserIdResponse SearchComplaintsByUserId(SearchComplaintsByUserIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = new List <Complaint>();

                if (request.UserId.HasValue)
                {
                    result = db.Complaints.Where(x => x.IdUser == request.UserId).Select(x => new Complaint
                    {
                        Id          = x.Id,
                        Description = x.Description,
                        IdComment   = x.IdComment,
                        IdPost      = x.IdPost,
                        IdUser      = x.IdUser
                    }).ToList();
                }
                else if (!string.IsNullOrEmpty(request.AspNetUserId))
                {
                    result = db.Complaints.Where(x => x.Users.AspNetUserId == request.AspNetUserId).Select(x => new Complaint
                    {
                        Id          = x.Id,
                        Description = x.Description,
                        IdComment   = x.IdComment,
                        IdPost      = x.IdPost,
                        IdUser      = x.IdUser
                    }).ToList();
                }

                return(new SearchComplaintsByUserIdResponse {
                    Complaints = result
                });
            }
        }
Exemple #3
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 #4
0
        public GetPostByIdResponse GetPostById(GetPostByIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var response = new GetPostByIdResponse();

                response.Post = db.Posts.Select(x =>
                                                new Post
                {
                    Id                 = x.Id,
                    Title              = x.Title,
                    Summary            = x.Summary,
                    Body               = x.Body,
                    EffectDate         = x.EffectDate,
                    NullDate           = x.NullDate,
                    IdWriter           = x.IdWriter,
                    WriterUserName     = x.Users.Name,
                    IdCategory         = x.IdCategory,
                    CategoryTitle      = x.Categories.Title,
                    IsDraft            = x.IsDraft,
                    PrincipalImageName = x.PrincipalImageName,
                    Tags               = db.Tags.Where(t => t.PostId == x.Id).Select(t => t.Tag).ToList()
                }).FirstOrDefault(x => x.Id == request.Id);

                return(response);
            }
        }
Exemple #5
0
        public GetUserByUsernameResponse GetUserByUsername(GetUserByUsernameRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = db.Users.FirstOrDefault(x => x.Name == request.Username);

                var response = new GetUserByUsernameResponse();

                if (result != null)
                {
                    response.User = new User
                    {
                        Id             = result.Id,
                        Name           = result.Name,
                        AspNetUserId   = result.AspNetUserId,
                        EffectDate     = result.EffectDate,
                        IdState        = result.IdState,
                        ActivationDate = result.ActivationDate,
                        Email          = result.AspNetUsers.Email,
                        Phone          = result.Phone,
                        Description    = result.Description,
                        FullName       = result.FullName,
                        ShowData       = result.ShowData
                    };
                }

                return(response);
            }
        }
Exemple #6
0
        public SearchPostsByTagResponse SearchPostsByTag(SearchPostsByTagRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = new List <Post>();
                result = db.Posts.Where(x => x.Tags.Any(t => t.Tag == request.Tag) &&
                                        !x.NullDate.HasValue && !x.IsDraft)
                         .Select(x => new Post
                {
                    Id                 = x.Id,
                    Title              = x.Title,
                    Summary            = x.Summary,
                    Body               = x.Body,
                    EffectDate         = x.EffectDate,
                    IdWriter           = x.IdWriter,
                    WriterUserName     = x.Users.Name,
                    IdCategory         = x.IdCategory,
                    CategoryTitle      = x.Categories.Title,
                    IsDraft            = x.IsDraft,
                    PrincipalImageName = x.PrincipalImageName,
                    Tags               = db.Tags.Where(t => t.PostId == x.Id).Select(t => t.Tag).ToList()
                }).ToList();

                return(new SearchPostsByTagResponse {
                    Posts = result
                });
            }
        }
Exemple #7
0
        public SearchBannedUsersResponse SearchBannedUsers(SearchBannedUsersRequest request)
        {
            using (var db = new DotWEntities())
            {
                var response = new SearchBannedUsersResponse {
                    Users = new List <User>()
                };

                response.Users.AddRange(db.Users
                                        .Where(x => x.ActivationDate.HasValue &&
                                               (x.UserStates.State == UserAccountStates.Suspended.ToString() ||
                                                x.UserStates.State == UserAccountStates.Blocked.ToString()))
                                        .Select(x => new User
                {
                    Id             = x.Id,
                    Name           = x.Name,
                    AspNetUserId   = x.AspNetUserId,
                    EffectDate     = x.EffectDate,
                    NullDate       = x.NullDate,
                    IdState        = x.IdState,
                    ActivationDate = x.ActivationDate,
                    Email          = x.AspNetUsers.Email,
                    Phone          = x.Phone,
                    Description    = x.Description,
                    FullName       = x.FullName,
                    ShowData       = x.ShowData,
                }).ToList());

                return(response);
            }
        }
Exemple #8
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 #9
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 #10
0
        public GetVotesCountByPostIdResponse GetVotesCountByPostId(GetVotesCountByPostIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = new GetVotesCountByPostIdResponse();

                result.GoodVotes = db.Votes.Where(x => x.IdPost == request.PostId).Count(x => x.Good);
                result.BadVotes  = db.Votes.Where(x => x.IdPost == request.PostId).Count(x => x.Bad);

                return(result);
            }
        }
Exemple #11
0
        public GetVoteByUserAndPostIdResponse GetVoteByUserAndPostId(GetVoteByUserAndPostIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = new GetVoteByUserAndPostIdResponse();

                var vote = db.Votes.FirstOrDefault(x => x.IdPost == request.PostId && x.IdUser == request.UserId);

                result.Good = vote != null ? vote.Good : false;
                result.Bad  = vote != null ? vote.Bad : false;

                return(result);
            }
        }
Exemple #12
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 #13
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 #14
0
        public SearchInCommentsResponse SearchInComments(SearchInCommentsRequest request)
        {
            using (var db = new DotWEntities())
            {
                var response = new SearchInCommentsResponse {
                    CommentsSearchResult = new List <CommentsSearchResult>()
                };

                if (!string.IsNullOrEmpty(request.Text))
                {
                    response.CommentsSearchResult.AddRange(db.Database.SqlQuery <CommentsSearchResult>("sp_CommentsSearch @text", new SqlParameter("text", request.Text)).ToList());
                }

                return(response);
            }
        }
Exemple #15
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 #16
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 #17
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 #18
0
        public SearchPostsForHomeRankingsResponse SearchPostsForHomeRankings(SearchPostsForHomeRankingsRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = db.Posts.Where(x => !x.NullDate.HasValue && !x.IsDraft)
                             .Select(x => new Post
                {
                    Id         = x.Id,
                    Title      = x.Title,
                    EffectDate = x.EffectDate,
                }).ToList();

                return(new SearchPostsForHomeRankingsResponse {
                    Posts = result
                });
            }
        }
Exemple #19
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 #20
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 #21
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 #22
0
        public SearchCategoriesResponse SearchCategories(SearchCategoriesRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = db.Categories.Where(x => !x.NullDate.HasValue)
                             .Select(x => new Category
                {
                    Id              = x.Id,
                    Title           = x.Title,
                    Description     = x.Description,
                    Summary         = x.Summary,
                    IdUpperCategory = x.IdUpperCategory
                }).ToList();

                return(new SearchCategoriesResponse {
                    Categories = result
                });
            }
        }
Exemple #23
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 #24
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 #25
0
        public GetCategoryByIdResponse GetCategoryById(GetCategoryByIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var response = new GetCategoryByIdResponse();

                response.Category = db.Categories.Select(x =>
                                                         new Category
                {
                    Id              = x.Id,
                    Title           = x.Title,
                    Description     = x.Description,
                    Summary         = x.Summary,
                    IdUpperCategory = x.IdUpperCategory,
                    NullDate        = x.NullDate
                }).FirstOrDefault(x => x.Id == request.Id && (!x.NullDate.HasValue));

                return(response);
            }
        }
Exemple #26
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 #27
0
        public SearchComplaintsByPostIdResponse SearchComplaintsByPostId(SearchComplaintsByPostIdRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = new List <Complaint>();

                result = db.Complaints.Where(x => x.IdPost == request.PostId).Select(x => new Complaint
                {
                    Id          = x.Id,
                    Description = x.Description,
                    IdComment   = x.IdComment,
                    IdPost      = x.IdPost,
                    IdUser      = x.IdUser,
                    UserName    = x.Users.Name
                }).ToList();

                return(new SearchComplaintsByPostIdResponse {
                    Complaints = result
                });
            }
        }
Exemple #28
0
        public SearchCommentsByIdPostResponse SearchCommentsByIdPost(SearchCommentsByIdPostRequest request)
        {
            using (var db = new DotWEntities())
            {
                var result = db.Comments.Where(x => !x.NullDate.HasValue && x.IdPost == request.IdPost)
                             .Select(x => new Commentary
                {
                    Id             = x.Id,
                    CommentaryText = x.Commentary,
                    IdPost         = x.IdPost,
                    IdUser         = x.IdUser,
                    WriterUserName = x.Users.Name,
                    EffectDate     = x.EffectDate,
                    IdUpperComment = x.IdUpperComment
                }).ToList();

                return(new SearchCommentsByIdPostResponse {
                    Comments = result
                });
            }
        }
Exemple #29
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 #30
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
                });
            }
        }