示例#1
0
        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);
                }
            }
        }