Пример #1
0
        public async Task <int?> RateIssue(string userId, RateApiRequestModel model)
        {
            var issue = this.dbContext.Issues.Find(model.Id);

            if (issue != null)
            {
                var userIssue = issue.UsersIssues.FirstOrDefault(ui => ui.UserId == userId);

                if (userIssue == null)
                {
                    userIssue = new UserIssue
                    {
                        UserId  = userId,
                        IssueId = model.Id,
                        Score   = model.Score,
                    };

                    issue.UsersIssues.Add(userIssue);

                    this.dbContext.Update(issue);
                    await this.dbContext.SaveChangesAsync();
                }
                else
                {
                    userIssue.Score = model.Score;

                    this.dbContext.Update(issue);
                    await this.dbContext.SaveChangesAsync();
                }

                return(model.Score);
            }

            return(null);
        }
Пример #2
0
        public async Task RemoveIssueFromList(string userId, int id)
        {
            var issue = this.dbContext.Issues.Find(id);

            if (issue == null)
            {
                throw new KeyNotFoundException("Issue with given id does not exist.");
            }

            var user = this.dbContext.Users
                       .Include(u => u.UsersIssues)
                       .FirstOrDefault(u => u.Id == userId);

            if (!user.UsersIssues.Any(uv => uv.Issue == issue))
            {
                throw new InvalidOperationException("User does not have given issue in their list.");
            }

            var userIssue = new UserIssue {
                User = user, Issue = issue
            };

            user.UsersIssues.Remove(userIssue);
            await this.dbContext.SaveChangesAsync();
        }
Пример #3
0
 public void Add(UserIssue issue)
 {
     using (var db = new UserIssueContext())
     {
         db.CreateIssue(issue);
     }
 }
        public async Task <Issue> InsertIssueAsync(string userId, Issue data)
        {
            Issue issue = null;

            using (var transaction = await this._db.Database.BeginTransactionAsync())
            {
                try
                {
                    this._db.Add(data);
                    var issueId = this._db.SaveChanges();

                    var userIssue = new UserIssue
                    {
                        IssueId = issueId,
                        UserId  = userId
                    };
                    this._db.Add(userIssue);
                    this._db.SaveChanges();

                    await transaction.CommitAsync();

                    issue = await this._db.FindAsync <Issue>(issueId);
                }
                catch (Exception ex)
                {
                    this._logger?.LogError(ex, ex.Message);
                }
            }

            return(issue);
        }
Пример #5
0
        public void Modify(UserIssue issue, Action <UserIssue> changes)
        {
            changes.Invoke(issue);

            using (var db = new UserIssueContext())
            {
                db.UpdateIssue(issue);
            }
        }
Пример #6
0
        public void CreateAlreadyExistingIssueThrowsTest()
        {
            var issue = new UserIssue
            {
                Id       = TestConstants.TestUserIssueMessageId,
                UserId   = 111,
                Contents = "Contents..."
            };

            Assert.Throws <ArgumentException>(() => userIssueRepository.Add(issue));
        }
Пример #7
0
        public void CreateNewIssueTest()
        {
            var issue = new UserIssue
            {
                Id       = 500,
                UserId   = 1,
                Contents = "Hello, World!"
            };

            userIssuesService.NewIssue(issue);
        }
Пример #8
0
 internal void CreateIssue(UserIssue issue)
 {
     try
     {
         Add(issue);
         SaveChanges();
     }
     catch (DbUpdateException)
     {
         throw new ArgumentException("User Issue already exists.");
     }
 }
Пример #9
0
        private void AssertIssueExists(UserIssue issue)
        {
            var storedIssueByUser    = userIssueRepository.GetByUserId(issue.UserId);
            var storedIssueByMessage = userIssueRepository.GetByMessageId(issue.Id);

            Assert.NotNull(storedIssueByUser);
            Assert.NotNull(storedIssueByMessage);
            Assert.AreSame(storedIssueByMessage, storedIssueByMessage);

            Assert.AreEqual(issue.Contents, storedIssueByUser.Contents);
            Assert.AreEqual(issue.Contents, storedIssueByMessage.Contents);
        }
Пример #10
0
 internal void UpdateIssue(UserIssue issue)
 {
     try
     {
         Update(issue);
         SaveChanges();
     }
     catch (DbUpdateException)
     {
         throw new ArgumentException("User Issue doesn't exist.");
     }
 }
Пример #11
0
        public void ModifyNonExistentThrowsTest()
        {
            var issue = new UserIssue
            {
                Id       = TestConstants.NonExistentId,
                UserId   = 115,
                Contents = "NON-EXISTENT"
            };

            Assert.Throws <ArgumentException>(
                () => userIssueRepository.Modify(issue, i => i.Contents = "ABC")
                );
        }
Пример #12
0
        public void CreateNewIssueTest()
        {
            var issue = new UserIssue
            {
                Id       = 10,
                UserId   = 123,
                Contents = "Hello, World!"
            };

            userIssueRepository.Add(issue);

            AssertIssueExists(issue);
        }
Пример #13
0
        public IActionResult AddForUser(AddForUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                foreach (var issueId in model.IssuesId)
                {
                    UserIssue userIssue = new UserIssue();
                    userIssue.UserId  = model.UserId;
                    userIssue.IssueId = issueId;
                    _db.UserIssues.Add(userIssue);
                    _db.SaveChanges();
                }
            }

            return(RedirectToAction("ListUsers", "UsersManage"));
        }
Пример #14
0
        public IActionResult DeleteIssueUser(int issueId, string userId)
        {
            if (issueId != 0 && userId != null)
            {
                UserIssue model = _db.UserIssues.Where(i => i.IssueId == issueId)
                                  .FirstOrDefault(i => i.UserId == userId);
                if (model != null)
                {
                    _db.UserIssues.Remove(model);
                    _db.SaveChanges();
                    return(Json("true"));
                }
            }

            return(Json("false"));
        }
Пример #15
0
        public void ModifyNewIssueTest()
        {
            const string expectedContents = "Different";
            var          issue            = new UserIssue
            {
                Id       = 112,
                UserId   = 113,
                Contents = "Hello, World!"
            };

            userIssueRepository.Add(issue);

            userIssueRepository.Modify(issue, u => u.Contents = expectedContents);

            Assert.AreEqual(expectedContents, issue.Contents);
            AssertIssueExists(issue);
        }
        public async Task AddIssueToList(string userId, int id)
        {
            var issue = this.dbContext.Issues.Find(id);

            if (issue == null)
            {
                throw new KeyNotFoundException("Issue with given id does not exist.");
            }

            if (issue.UsersIssues.Any(ua => ua.UserId == userId))
            {
                throw new InvalidOperationException("User has already added given issue to their list.");
            }

            var userIssue = new UserIssue {
                UserId = userId, Issue = issue
            };

            issue.UsersIssues.Add(userIssue);
            await this.dbContext.SaveChangesAsync();
        }
Пример #17
0
 public void NewIssue(UserIssue issue)
 {
     userIssueRepository.Add(issue);
 }
Пример #18
0
 private static void AssertIsTestDbTestEntry(UserIssue issue)
 {
     Assert.NotNull(issue);
     Assert.AreEqual(TestConstants.TestUserIssueMessageId, issue.Id);
     Assert.AreEqual(TestConstants.TestUserIssueContents, issue.Contents);
 }