Exemplo n.º 1
0
        public async Task <Result <GateResponse> > Handle(GetGateRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var user = await _userRepository.GetUserByEmail(request.RequestedBy);

                var access = await _userGateRepository.CheckAccess(request.Id, user.Id);

                var adminAccess = await _userGateRepository.CheckAdminAccess(request.Id, user.Id) || user.Role.Name == "Admin" || _gateRepository.IsAccountAdminOfTheGate(request.Id, user.Id);

                if (!access && user.Role.Name == "User" && !(_gateRepository.IsAccountAdminOfTheGate(request.Id, user.Id)))
                {
                    return(Result <GateResponse> .AccessDenied("No access to this gate!"));
                }

                var gate = await _gateRepository.Get(request.Id);

                var response = CreateResponse(gate, adminAccess);

                return(Result <GateResponse> .Ok(response));
            }
            catch (Exception e)
            {
                return(Result <GateResponse> .Failure(e.Message));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GateGate(int id)
        {
            var command = new GetGateRequest {
                Id = id
            };

            command.RequestedBy = HttpContext.User.Identity.Name;

            var result = await _mediator.Send(command);

            return(StatusCodeResult(result));
        }