public IActionResult MainUsers(Guid bookId) { var book = _service.GetBookWithAllUsers(bookId); var donor = Mapper.Map <UserVM>(book.User); var facilitator = Mapper.Map <UserVM>(book.UserFacilitator); var winner = Mapper.Map <UserVM>(book.WinnerUser()); var result = new MainUsersVM { Donor = donor, Facilitator = facilitator, Winner = winner }; return(Ok(result)); }
public async Task <IActionResult> MainUsers(Guid bookId) { if (!_IsBookMainUser(bookId)) { return(Unauthorized()); } var book = _service.GetBookWithAllUsers(bookId); var donor = _mapper.Map <UserVM>(book.User); var facilitator = _mapper.Map <UserVM>(book.UserFacilitator); var winner = _mapper.Map <UserVM>(book.WinnerUser()); var result = new MainUsersVM { Donor = donor, Facilitator = facilitator, Winner = winner }; var userId = new Guid(Thread.CurrentPrincipal?.Identity?.Name); var visitor = _userService.Find(userId); var visitorProfile = GetVisitorProfile(result); await _accessHistoryService.InsertVisitor(book.User, visitor, visitorProfile); return(Ok(result)); VisitorProfile GetVisitorProfile(MainUsersVM mainUsers) { if (mainUsers is null) { return(VisitorProfile.Undefined); } var facilitatorId = Guid.Empty; if (mainUsers.Facilitator is not null) { facilitatorId = mainUsers.Facilitator.Id; } var winnerId = Guid.Empty; if (mainUsers.Winner is not null) { winnerId = mainUsers.Winner.Id; } var donorId = Guid.Empty; if (mainUsers.Donor is not null) { donorId = mainUsers.Donor.Id; } //O id do usuário logado é comparado com o doador, facilitador e ganhador if (visitor.Id.Equals(facilitatorId)) { return(VisitorProfile.Facilitator); } else if (visitor.Id.Equals(winnerId)) { return(VisitorProfile.Winner); } else if (visitor.Id.Equals(donorId)) { return(VisitorProfile.Donor); } else { return(VisitorProfile.Undefined); } } }