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()); } }
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 }); } }
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()); } }
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); } }
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); } }
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 }); } }
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); } }
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()); } }
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); } }
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); } }
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); } }
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()); } }
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()); } }
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); } }
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()); } }
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()); } }
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()); } }
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 }); } }
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 }); } } } }
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()); } }
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()); } }
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 }); } }
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); } }
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 }); } }
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); } }
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()); } }
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 }); } }
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 }); } }
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()); } }
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 }); } }