diff --git a/CyberBoom/Controllers/UserController.cs b/CyberBoom/Controllers/UserController.cs index 65304c9..4baab17 100644 --- a/CyberBoom/Controllers/UserController.cs +++ b/CyberBoom/Controllers/UserController.cs @@ -37,15 +37,16 @@ public class UsersController : ControllerBase Fio = user.Fio, Specialities = user.Specialities, TelegramBotUrl = user.TelegramBotUrl, - + UserName = user.Username }; - await _userManager.CreateAsync(userWr); - - return Ok( - new { - userWr.Id - } - ); + var result = await _userManager.CreateAsync(userWr); + if(result.Succeeded) + return Ok( + new { + userWr.Id + } + ); + return BadRequest(result.Errors); } // [HttpGet("google-auth")] @@ -205,12 +206,14 @@ public class ReviewsController : ControllerBase [HttpGet] public async Task Get(string id) { - var review = await _applicationContext.Reviews - .Include(c => c.User) - .FirstAsync(s => s.Id == id); + var review = await _applicationContext.Reviews.FirstAsync(s => s.Id == id); + var user = await _applicationContext.Users.FirstAsync(s => s.Id == review.UserId); - return Ok(review); + return Ok(new { + review, + user + }); } @@ -222,8 +225,12 @@ public class ReviewsController : ControllerBase .Skip(offset) .Take(limit); + // var userIds = reviews.Select(u => u.UserId).ToArray(); + // var users = _applicationContext.Users.Where(u => userIds.Contains(u.Id)); - return Ok(reviews); + return Ok( + reviews + ); } } @@ -256,7 +263,7 @@ public class QuestionsController : ControllerBase } [HttpPut] - public async Task Put([FromBody]Question question) + public async Task Put([FromBody]PutQuestionDto question) { var fReview = await _applicationContext.Questions.FirstAsync(r => r.Id == question.Id); @@ -283,6 +290,7 @@ public class QuestionsController : ControllerBase public IActionResult GetList(int offset, int limit) { var questions = _applicationContext.Questions + .Include(c => c.User) .Skip(offset) .Take(limit); @@ -339,11 +347,13 @@ public class ReactionsController : ControllerBase public async Task Get(string id) { var review = await _applicationContext.Reviews - .Include(c => c.User) .FirstAsync(s => s.Id == id); - - return Ok(review); + var user = await _applicationContext.Users.FirstAsync(s => s.Id == review.UserId); + return Ok(new { + review, + user + }); } @@ -351,12 +361,17 @@ public class ReactionsController : ControllerBase public IActionResult GetList(int offset, int limit) { var reviews = _applicationContext.Reviews - .Include(c => c.User) .Skip(offset) .Take(limit); - - return Ok(reviews); + var users = _applicationContext.Users.Where(u => reviews.Select(u => u.UserId).Contains(u.Id)); + + return Ok( + reviews.Select(s => new { + review = s, + user = users.First(u => u.Id == s.UserId) + }) + ); } } diff --git a/CyberBoom/DbContext/User.cs b/CyberBoom/DbContext/User.cs index 7e702a0..95558fc 100644 --- a/CyberBoom/DbContext/User.cs +++ b/CyberBoom/DbContext/User.cs @@ -195,6 +195,13 @@ public class PostQuestionDto } +public class PutQuestionDto +{ + public string Id { get; set; } = null!; + + public string Text { get; set; } = null!; +} + public class Question { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] @@ -205,6 +212,8 @@ public class Question public string MeetingId { get; set; } = null!; public string UserId { get; set; } = null!; + + public User User { get; set; } = null!; } @@ -214,8 +223,6 @@ public class Review public string Id { get; set; } = null!; public string MeetingId { get; set; } = null!; - - public User User { get; set; } = null!; public string UserId { get; set; } = null!; @@ -223,6 +230,8 @@ public class Review public int Score { get; set; } = 0; + public User User { get; set; } = null!; + DateTime _date; public DateTime Date { get => _date; set => _date = value.ToUniversalTime(); } @@ -280,13 +289,18 @@ public class ApplicationContext : IdentityDbContext builder.Entity().HasMany().WithOne().HasForeignKey(c => c.MeetingId); builder.Entity().HasMany().WithOne().HasForeignKey(c => c.MeetingId); - builder.Entity().HasMany().WithOne(r => r.User).HasForeignKey(c => c.UserId); - builder.Entity().HasMany().WithOne().HasForeignKey(c => c.UserId); - builder.Entity().HasOne().WithMany().HasForeignKey(c => c.UserId); + + + + builder.Entity().HasOne().WithMany().HasForeignKey(c => c.UserId); + builder.Entity().HasOne(c => c.User).WithMany().HasForeignKey(c => c.UserId); - builder.Entity().HasMany().WithOne().HasForeignKey(c => c.QuestionId); + builder.Entity().HasOne().WithMany().HasForeignKey(c => c.MeetingId); + builder.Entity().HasOne(c => c.User).WithMany().HasForeignKey(c => c.UserId); + + builder.Entity().HasOne().WithMany().HasForeignKey(c => c.QuestionId); builder.Entity().HasMany().WithOne().HasForeignKey(c => c.MeetingId); - builder.Entity().HasMany().WithOne().HasForeignKey(c => c.UserId); + builder.Entity().HasOne().WithMany().HasForeignKey(c => c.UserId); } } \ No newline at end of file