public async Task <HttpResponseMessage> Get(HttpRequestMessage req, TraceWriter log) { try { var organisationId = req.GetQueryNameValuePairs().Where(w => w.Key == "organisationId").FirstOrDefault().Value; bool isAdmin = await _userDigestService.IsAdminAsync(req); var userDigest = await _userDigestService.CurrentUserAsync(req); if (!string.IsNullOrEmpty(organisationId) && (isAdmin || userDigest.OrganisationId == organisationId)) { var orgUsers = await _userService.GetByOrgAsync(organisationId); return(req.CreateResponse(HttpStatusCode.OK, orgUsers.ToList())); } var userId = req.GetQueryNameValuePairs().Where(w => w.Key == "userId").FirstOrDefault().Value; var allUsers = new List <UserDB>(); if (!string.IsNullOrEmpty(userId)) { var singleUser = await _userService.GetUserAsync(userId, req); allUsers.Add(singleUser); } else { var searchTerm = req.GetQueryNameValuePairs().Where(w => w.Key == "SearchTerm").FirstOrDefault().Value; if (!string.IsNullOrEmpty(searchTerm)) { allUsers.AddRange(await _userService.SearchAsync(searchTerm, req)); } else { var users = await _userService.GetAllUsers(req); allUsers.AddRange(users); } } return(req.CreateResponse(HttpStatusCode.OK, allUsers)); } catch (Exception exp) { log.Error("Error retrieving users: " + exp.Message + exp.StackTrace); return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, exp)); } }
public async Task <HttpResponseMessage> Get(HttpRequestMessage req, TraceWriter log) { if (!(await _userDigestService.IsAdminAsync(req))) { return(req.CreateResponse(HttpStatusCode.Forbidden)); } var item = await _metadataRepository.GetItemAsync(Metadata.MetadataId); return(req.CreateResponse(HttpStatusCode.OK, item)); }
public async Task <HttpResponseMessage> Get(HttpRequestMessage req, TraceWriter log) { if (!await _userDigestService.IsAdminAsync(req)) { return(req.CreateResponse(HttpStatusCode.Forbidden)); } var id = req.GetQueryNameValuePairs().Where(w => w.Key == "id").FirstOrDefault().Value; if (id != null) { var changeRecord = await _changeRecordRepository.GetItemAsync(id); return(req.CreateResponse(HttpStatusCode.OK, changeRecord)); } else { var results = await _searchApi.Search <ChangeRecord, ChangeRecord>(req, log); return(req.CreateResponse(HttpStatusCode.OK, results)); } }