コード例 #1
0
        public async Task <Result <ListResult <GateResponse> > > Handle(GetAllGatesRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var role = await _roleRepository.GetRoleByUserEmail(request.RequestedUserName);

                var user = await _userRepository.GetUserByEmail(request.RequestedUserName);

                List <Gate> gates = new List <Gate>();
                if (role.Name == "Admin")
                {
                    gates = _gateRepository.GetList(request.PaginationEntry, request.Sorting, request.Filtering).Result.Records.ToList();
                }
                if (role.Name == "User")
                {
                    var temp = await _userGateRepository.GetAllGatesByUserIdAndAccess(user.Id);

                    gates = temp.Select(x => x.Gate).ToList();

                    var adminAccounts = await _accountAdminRepository.GetAllAccountsWhereUserIsAdmin(user.Id);

                    var adminGates = _gateRepository.GetAllGatesFromAccounts(adminAccounts);
                    foreach (var gate in adminGates)
                    {
                        if (!gates.Select(x => x.Name).Contains(gate.Name))
                        {
                            gates.Add(gate);
                        }
                    }
                }

                var response = CreateListResponse(gates, user);

                return(Result <ListResult <GateResponse> > .Ok(response));
            }
            catch (Exception e)
            {
                return(Result <ListResult <GateResponse> > .Failure(e.Message));
            }
        }
コード例 #2
0
        public async Task <IActionResult> GetGates()
        {
            var request = new GetAllGatesRequest();

            request.RequestedUserName = HttpContext.User.Identity.Name;

            var pagination = HttpContext.Request.Headers["x-pagination"].FirstOrDefault() ?? "{}";

            request.PaginationEntry = JsonConvert.DeserializeObject <PaginationEntry>(pagination);

            var sorting = HttpContext.Request.Headers["x-sorting"].FirstOrDefault() ?? "{}";

            request.Sorting = JsonConvert.DeserializeObject <Sorting>(sorting);

            var filtering = HttpContext.Request.Headers["x-filtering"].FirstOrDefault() ?? "";

            request.Filtering = filtering;
            //var decodedString = JsonInHttpHeader.Decode(filtering);

            var result = await _mediator.Send(request);

            return(StatusCodeResult(result));
        }