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)); } }
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)); }