コード例 #1
0
 // GET: Complaint
 public ActionResult ComplaintsList()
 {
     using (ComplaintService complaintService = new ComplaintService())
     {
         return(View(complaintService.GetComplaints(User.Identity.GetUserId(), User.IsInRole("Admin"))));
     }
 }
コード例 #2
0
ファイル: PostController.cs プロジェクト: npelle/seia-gpv
        public ActionResult Details(int id)
        {
            var commentaryService = new CommentaryService();
            var complaintService  = new ComplaintService();
            var postService       = new PostService();
            var userService       = new UserService();
            var votesService      = new VoteService();

            var post = postService.GetPostById(new GetPostByIdRequest()
            {
                Id = id
            }).Post;

            // Se obtienen los comentarios del post y se los separa en comentarios padre y respuestas.
            var allComments = commentaryService.SearchCommentsByIdPost(new SearchCommentsByIdPostRequest()
            {
                IdPost = id
            }).Comments.Where(x => !x.NullDate.HasValue).ToList();

            ViewBag.Comments = allComments.Where(x => !x.IdUpperComment.HasValue).ToList();
            ViewBag.Replies  = allComments.Where(x => x.IdUpperComment.HasValue).ToList();

            List <Complaint> userComplaints = new List <Complaint>();

            if (User.Identity.IsAuthenticated && !User.IsInRole("Admin"))
            {
                // Se obtienen las denuncias/quejas realizadas por el usuario.
                userComplaints = complaintService.SearchComplaintsByUserId(new SearchComplaintsByUserIdRequest {
                    AspNetUserId = User.Identity.GetUserId()
                }).Complaints;

                var user = userService.GetUserByAccountId(new GetUserByAccountIdRequest {
                    AccountId = User.Identity.GetUserId()
                }).User;

                // Se obtienen los votos del post y del usuario
                var postVotes = votesService.GetVotesCountByPostId(new GetVotesCountByPostIdRequest {
                    PostId = post.Id
                });
                var userVotes = votesService.GetVoteByUserAndPostId(new GetVoteByUserAndPostIdRequest {
                    PostId = post.Id, UserId = user.Id
                });

                ViewBag.GoodVotes    = postVotes.GoodVotes;
                ViewBag.BadVotes     = postVotes.BadVotes;
                ViewBag.UserGoodVote = userVotes.Good ? "true" : "false";
                ViewBag.UserBadVote  = userVotes.Bad ? "true" : "false";
            }

            if (User.Identity.IsAuthenticated && User.IsInRole("Admin"))
            {
                ViewBag.Complaints = complaintService.SearchComplaintsByPostId(new SearchComplaintsByPostIdRequest {
                    PostId = post.Id
                }).Complaints;
            }

            ViewBag.UserComplaints = userComplaints;

            return(View(post));
        }
コード例 #3
0
 public ActionResult Edit(int spId, string cl, string rc, string s)
 {
     try
     {
         var model    = ComplaintService.GetComplaint(spId, cl, s);
         var rcas     = RcaService.GetRcasForDropDown(rc);
         var rcasList = new List <SelectListItem>();
         foreach (var rca in rcas)
         {
             rcasList.Add(new SelectListItem()
             {
                 Text  = rca.Title,
                 Value = rca.Id
             });
         }
         ViewBag.Rcas  = rcasList;
         model.SpId    = spId;
         model.ClName  = cl;
         model.RcaName = rc;
         return(View(model));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #4
0
        public void ShouldFetchAllComplaintsFromDb(string title, string description)
        {
            // Arrange
            using var context = new ComplaintsContext(DbFixtureProvider.CreateNewContextOptions());
            var complaintService       = new ComplaintService(context);
            var complaintEntityEntries = new List <EntityEntry <ComplaintEntity> >();
            var complaintIds           = new List <int>();

            for (var i = 0; i < 5; i++)
            {
                complaintEntityEntries.Add(
                    context.Complaints.Add(new ComplaintEntity
                {
                    Title       = title,
                    Description = description
                }));
            }

            context.SaveChanges();

            // Act
            var complaintsInDb = complaintService.GetAll().ToList();

            // Assert
            Assert.Equal(complaintsInDb.Count, complaintEntityEntries.Count);
            foreach (var complaint in complaintEntityEntries)
            {
                Assert.NotNull(complaintsInDb.Find(x => x.Id == complaint.Entity.Id));
            }
        }
コード例 #5
0
        public ActionResult ComplaintDetails(int id)
        {
            var svc   = new ComplaintService();
            var model = svc.GetComplaintByID(id);

            return(View(model));
        }
コード例 #6
0
        public ActionResult Index()
        {
            var service = new ComplaintService();
            var model   = service.GetComplaints();

            ViewBag.TotalCount = model.ToList().Count();
            return(View(model));
        }
コード例 #7
0
        public void ShouldThrowAnExceptionGivenIdIfItemNotFoundInDatabase(int complaintId)
        {
            // Arrange
            using var context = new ComplaintsContext(DbFixtureProvider.CreateNewContextOptions());
            var complaintService = new ComplaintService(context);

            // Act + Assert
            Assert.Throws <ComplaintException>(() => complaintService.GetComplaintById(complaintId));
        }
コード例 #8
0
        public ActionResult DeleteComplaint(int id)
        {
            var service = new ComplaintService();

            service.DeleteComplaint(id);

            TempData["Save Result"] = ("The Complaint was removed");
            return(RedirectToAction("Index"));
        }
コード例 #9
0
        public void Accept(ComplaintStatus status)
        {
            var service   = new ComplaintService(_tolkDbContext, _clock, _notificationService, _logger);
            var complaint = new Complaint
            {
                Status = status
            };

            service.Accept(complaint, 1, null);
        }
コード例 #10
0
        public void Refute(ComplaintStatus status)
        {
            var service   = new ComplaintService(_tolkDbContext, _clock, _notificationService, _logger);
            var complaint = new Complaint
            {
                Status = status
            };

            service.Refute(complaint, 1, null, "detta är INTE ok");
        }
コード例 #11
0
        public void Create(RequestStatus status)
        {
            var service = new ComplaintService(_tolkDbContext, _clock, _notificationService, _logger);
            var request = new Request
            {
                Status     = status,
                Complaints = new List <Complaint>()
            };

            _ = service.Create(request, 1, null, "apa", ComplaintType.BadDelivery);
        }
コード例 #12
0
        public void Accept_InvalidStatus(ComplaintStatus status)
        {
            var service   = new ComplaintService(_tolkDbContext, _clock, _notificationService, _logger);
            var complaint = new Complaint
            {
                Status = status
            };

            Assert.Throws <InvalidOperationException>(() =>
                                                      service.Accept(complaint, 1, null));
        }
コード例 #13
0
        public void Create_InvalidStatus(RequestStatus status)
        {
            var service = new ComplaintService(_tolkDbContext, _clock, _notificationService, _logger);
            var request = new Request
            {
                Status     = status,
                Complaints = new List <Complaint>()
            };

            Assert.ThrowsAsync <InvalidOperationException>(() =>
                                                           service.Create(request, 1, null, "apa", ComplaintType.BadDelivery));
        }
コード例 #14
0
 public JsonResult ReadAllComplaints(UserInfo userInfo)
 {
     try
     {
         var complaints = ComplaintService.GetAllComplaintsData(userInfo);
         return(Json(Newtonsoft.Json.JsonConvert.SerializeObject(complaints), JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #15
0
        public ActionResult ComplaintCreate()
        {
            var service = new ComplaintService();
            var model   = new ComplaintCreate
            {
                InvestigatorList = service.GetAllInvestigators(),
                AdminList        = service.GetAllAdmin(),
                AgentList        = service.GetAllAgents(),
                InsurerList      = service.GetAllInsurer(),
                ConsumerList     = service.GetAllConsumer()
            };

            return(View(model));
        }
コード例 #16
0
 public JsonResult Get(int complaintId)
 {
     try
     {
         using (ComplaintService complaintService = new ComplaintService())
         {
             return(Json(complaintService.Get(complaintId), JsonRequestBehavior.AllowGet));
         }
     }
     catch (System.Exception ex)
     {
         throw;
     }
 }
コード例 #17
0
 public ComplaintController(
     TolkDbContext tolkDbContext,
     ComplaintService complaintService,
     ApiUserService apiUserService,
     ApiOrderService apiOrderService,
     ILogger <ComplaintController> logger
     )
 {
     _dbContext        = tolkDbContext;
     _apiUserService   = apiUserService;
     _complaintService = complaintService;
     _apiOrderService  = apiOrderService;
     _logger           = logger;
 }
コード例 #18
0
ファイル: BansController.cs プロジェクト: npelle/seia-gpv
        public ActionResult CommentaryComplaints(int id)
        {
            var commentaryService = new CommentaryService();
            var complaintService  = new ComplaintService();

            ViewBag.Comment = commentaryService.GetCommentaryById(new GetCommentaryByIdRequest {
                Id = id
            }).Commentary;
            ViewBag.CommentaryComplaints = complaintService.SearchComplaintsByCommentaryId(new SearchComplaintsByCommentaryIdRequest {
                CommentaryId = id
            }).Complaints;

            return(View());
        }
コード例 #19
0
 public ComplaintController(
     TolkDbContext dbContext,
     IAuthorizationService authorizationService,
     ILogger <ComplaintController> logger,
     ComplaintService complaintService,
     EventLogService eventLogService,
     ISwedishClock clock
     )
 {
     _dbContext            = dbContext;
     _authorizationService = authorizationService;
     _logger           = logger;
     _complaintService = complaintService;
     _eventLogService  = eventLogService;
     _clock            = clock;
 }
コード例 #20
0
        public async Task <JsonResult> Create(ComplaintViewModel complaint)
        {
            try
            {
                using (ComplaintService complaintService = new ComplaintService())
                {
                    await complaintService.Create(complaint, User.Identity.GetUserId());
                }

                return(Json("Success", JsonRequestBehavior.AllowGet));
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
コード例 #21
0
        public JsonResult UpdateStatus(int complaintId, int statusId)
        {
            try
            {
                using (ComplaintService complaintService = new ComplaintService())
                {
                    complaintService.UpdateStatus(complaintId, statusId, User.Identity.GetUserId());

                    return(Json("Success", JsonRequestBehavior.AllowGet));
                }
            }
            catch (System.Exception ex)
            {
                throw;
            }
        }
コード例 #22
0
        public ActionResult ComplaintCreate(ComplaintCreate model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var service = new ComplaintService();

            if (service.ComplaintCreate(model))
            {
                TempData["SaveResult"] = "The Complaint was created.";
                return(RedirectToAction("Index"));
            }
            ;

            ModelState.AddModelError("", "The Complaint could not be created.");
            return(View(model));
        }
コード例 #23
0
        public async Task ListAsyncWhenNoComplaintsReturnsEmptyCollection()
        {
            var mockComplaintRepository = GetDefaultIComplaintRepositoryInstance();

            mockComplaintRepository.Setup(r => r.ListAsync())
            .ReturnsAsync(new List <Complaint>());
            var mockUnitOfWork = GetDefaultIUnitOfWorkInstance();
            var service        = new ComplaintService(
                mockComplaintRepository.Object,
                mockUnitOfWork.Object);

            // Act
            List <Complaint> result = (List <Complaint>) await service.ListAsync();

            int complaintsCount = result.Count;

            // Assert
            complaintsCount.Should().Equals(0);
        }
コード例 #24
0
ファイル: PostController.cs プロジェクト: npelle/seia-gpv
        public ActionResult Edit(int id)
        {
            if ((bool)TempData["UserAccountSuspended"])
            {
                return(RedirectToAction("Suspended", "Account"));
            }

            var postService      = new PostService();
            var categoryService  = new CategoryService();
            var complaintService = new ComplaintService();

            var result = postService.GetPostById(new GetPostByIdRequest {
                Id = id
            }).Post;

            var model = new EditPostViewModel
            {
                Id                 = result.Id,
                Title              = result.Title,
                Summary            = result.Summary,
                Body               = result.Body,
                IdCategory         = result.IdCategory,
                IsDraft            = result.IsDraft,
                PrincipalImageName = result.PrincipalImageName,
                DeleteImage        = false,
                Tags               = result.Tags
            };

            var categories = categoryService.SearchCategories(new SearchCategoriesRequest()).Categories;

            ViewBag.Categories = categories.Select(x => new SelectListItem()
            {
                Text  = x.Title,
                Value = x.Id.ToString()
            });

            ViewBag.Complaints = complaintService.SearchComplaintsByPostId(new SearchComplaintsByPostIdRequest {
                PostId = model.Id
            }).Complaints;

            return(View(model));
        }
コード例 #25
0
        public void ShouldAddComplaintToDatabase(string title, string description)
        {
            // Arrange
            using var context = new ComplaintsContext(DbFixtureProvider.CreateNewContextOptions());
            var complaintService = new ComplaintService(context);
            var complaintEntity  = new ComplaintEntity
            {
                Title       = title,
                Description = description
            };

            // Act
            var createdComplaint = complaintService.AddComplaint(complaintEntity);

            // Assert
            var complaintInDb = context.Complaints.Find(createdComplaint.Id);

            Assert.NotNull(complaintInDb);
            Assert.Equal(createdComplaint, complaintInDb);
        }
コード例 #26
0
        public void ShouldFetchCorrectComplaintFromDb(string title, string description)
        {
            // Arrange
            using var context = new ComplaintsContext(DbFixtureProvider.CreateNewContextOptions());
            var complaintService = new ComplaintService(context);
            var complaintEntity  = new ComplaintEntity
            {
                Title       = title,
                Description = description
            };

            var createdComplaint = context.Complaints.Add(complaintEntity);

            context.SaveChanges();

            // Act
            var complaintInDb = complaintService.GetComplaintById(createdComplaint.Entity.Id);

            // Assert
            Assert.Equal(complaintInDb, createdComplaint.Entity);
        }
コード例 #27
0
        public ActionResult ComplaintEdit(int id)
        {
            var svc    = new ComplaintService();
            var detail = svc.GetComplaintByID(id);
            var model  =
                new ComplaintEdit
            {
                ComplaintID    = detail.ComplaintID,
                InvestigatorID = detail.InvestigatorID,
                AdminActionID  = detail.AdminActionID,
                AgentID        = detail.AgentID,
                InsurerID      = detail.InsurerID,
                ConsumerID     = detail.ConsumerID,
                ComplaintDesc  = detail.ComplaintDesc,
                Resolved       = detail.Resolved,
                DateSubmitted  = detail.DateSubmitted,
                DateCompleted  = detail.DateCompleted
            };

            return(View(model));
        }
コード例 #28
0
        public ActionResult ComplaintEdit(int id, ComplaintEdit model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.ComplaintID != id)
            {
                ModelState.AddModelError("", "ID Mismatch");
                return(View(model));
            }

            var svc = new ComplaintService();

            if (svc.UpdateComplaint(model))
            {
                TempData["SaveResult"] = "The Complaint was updated.";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", "The Complaint could not be updated");
            return(View(model));
        }
コード例 #29
0
 public ComplaintController()
 {
     _complaintService = new ComplaintService(_db);
 }
コード例 #30
0
        public JsonResult PostComplaint(PostComplaintViewModel model)
        {
            var complaintService = new ComplaintService();
            var userService      = new UserService();
            var postService      = new PostService();

            try
            {
                var user = userService.GetUserByAccountId(new GetUserByAccountIdRequest {
                    AccountId = User.Identity.GetUserId()
                }).User;

                if (user != null)
                {
                    var userComplaints = complaintService.SearchComplaintsByUserId(new SearchComplaintsByUserIdRequest {
                        UserId = user.Id
                    }).Complaints;

                    if (userComplaints.Any(x => x.IdPost == model.PostId))
                    {
                        return(Json(new { success = false, Message = "Ya se ha registrado una denuncia para esta cuenta en esta publicación." }, JsonRequestBehavior.AllowGet));
                    }

                    var post = postService.GetPostById(new GetPostByIdRequest {
                        Id = model.PostId
                    }).Post;

                    if (post.IdWriter == user.Id)
                    {
                        return(Json(new { success = false, Message = "No puede denunciar su propia publicación." }, JsonRequestBehavior.AllowGet));
                    }

                    var complaintResult = complaintService.CreatePostComplaint(new CreatePostComplaintRequest {
                        PostId = model.PostId, UserId = user.Id, Commentary = model.Commentary
                    });

                    if ((complaintResult.PostComplaintsCount % (int)DividersToDeleteByComplaint.PostAndCommentaryDeletedDivider) == 0)
                    {
                        // Se da de baja la publicación.
                        var deletePostResult = postService.DeletePost(new DeletePostRequest {
                            Id = complaintResult.PostId, IsComplaintOrVoteDifference = true
                        });

                        var complaints = complaintService.SearchComplaintsByPostId(new SearchComplaintsByPostIdRequest {
                            PostId = post.Id
                        }).Complaints.OrderByDescending(x => x.Id).Take(3).ToList();

                        // Se notifica la baja del post via correo electrónico al escritor.
                        SendPostDeletedEmailToWriter(post, complaints);

                        // Se verifica y de ser necesario, se suspende temporalmente la cuenta del usuario.
                        var verifyResult = userService.VerifyAndUpdateUserStateByPosts(new VerifyAndUpdateUserStateByPostsRequest {
                            UserId = post.IdWriter
                        });

                        if (verifyResult.UserSuspended)
                        {
                            var reason = "La cantidad de publicaciones dadas de baja por denuncias ha alcanzando el número estipulado para suspender temporalmente su cuenta.";
                            SendAccountBlockedToWriter(post.IdWriter, verifyResult.ActivationDate, reason);
                        }
                        ;
                    }

                    return(Json(new { success = true, Message = "<div style='text-align:justify;'>Su denuncia ha sido registrada y será colocada junto a la de otros usuarios. Si se alcanza el límite establecido en nuestros <a href='/Home/TermsAndConditions' target='_blank'>Términos y Condiciones</a>, la publicación será dada de baja.<br><br>Gracias por contribuir con nuestra comunidad :)</div>" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { success = false, Message = "Ha ocurrido un error al procesar la solicitud." }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                return(Json(new { success = false, Message = "Ha ocurrido un error al procesar la solicitud." }, JsonRequestBehavior.AllowGet));
            }
        }