//[ApiExplorerSettings(IgnoreApi = true)] public UsersListResponse GetUsers(string fromDate, string toDate, string searchTerm, int userGroupId = 0, int pageSize = 25, int pageIndex = 1) { UsersListResponse retObj = new UsersListResponse(pageSize < 1 ? 1 : pageSize, pageIndex < 1 ? 1 : pageIndex); try { // set default date range DateTime fromDateTime = DateTime.Now.AddMonths(-3), toDateTime = DateTime.Now; try { toDateTime = Convert.ToDateTime(toDate); } catch { toDateTime = DateTime.Now; } try { fromDateTime = Convert.ToDateTime(fromDate); } catch { fromDateTime = DateTime.Now.AddMonths(-3); } int orderByColIndex = 5; Utility.EnumHelper.DBSortingOrder enSortingOrder = Utility.EnumHelper.DBSortingOrder.Desc; int usersCount; var userList = UserDetailsFacade.GetUsers(DateTime.Parse(fromDateTime.ToShortDateString()), DateTime.Parse(toDateTime.ToShortDateString()), searchTerm, orderByColIndex, enSortingOrder, userGroupId, ((retObj.PageIndex * retObj.PageSize) - retObj.PageSize), retObj.PageSize, out usersCount); retObj.UserList = userList; retObj.TotalRecordCount = usersCount; } catch (Exception exc) { log.Error(exc); } return(retObj); }
public async static void Run([TimerTrigger(NineAmEveryTuesday, RunOnStartup = true)] TimerInfo timerInfo, TraceWriter log) { log.Info("CheckUserProfileTitles-OnTimer trigger."); var token = Environment.GetEnvironmentVariable("SlackToken", EnvironmentVariableTarget.Process); var usersListUrl = $"https://slack.com/api/users.list?token={token}"; UsersListResponse response = null; try { using (var stream = await httpClient.GetStreamAsync(usersListUrl)) { var serializer = new JsonSerializer(); using (var sr = new StreamReader(stream)) using (var jtr = new JsonTextReader(sr)) { response = serializer.Deserialize <UsersListResponse>(jtr); } } } catch (Exception ex) { log.Error("Problem calling Slack's users.list API.", ex); return; } if (response == null || !response.ok) { log.Error("Problem calling Slack's users.list API - returned no data or ok=false ."); return; } var usersWithoutTitle = response.members.Where(m => string.IsNullOrWhiteSpace(m?.profile?.title)); var meWithoutTitle = usersWithoutTitle.Where(m => m?.profile?.display_name == "benmccallum"); var slackClient = SlackClientFactory.Create(); // TODO: Use //foreach (var user in meWithoutTitle) //{ // var slackMessage = new SlackMessage() // { // Channel = $"@{user.profile.display_name}", // will send through slackbot but that's OK... // Text = $"Yo! It looks like you don't have your job title set in your Slack profile. Take one minute and let others know what you do!\n\n" + // "*On desktop* — Click your workspace name in the top left to open the menu, select *Profile & account* and then *Edit Profile*.\n" + // "*On mobile* — Tap the overflow menu button(three dots in the top-right corner), choose *Settings*, and then select *Edit Profile*.\n\n" + // "Thanks!" // }; // var success = await slackClient.PostAsync(slackMessage); // log.Info((success ? "Success" : "Error") + $" received from slack webhook for . Message sent was: {slackMessage.Text}"); //} }
public async Task <UsersListResponse> GetUsersList(UsersListFilter filter) { UsersListResponse result = new UsersListResponse(); var query = Context.Users.AsQueryable(); if (!string.IsNullOrWhiteSpace(filter?.IgnoreUserId)) { query = query.Where(u => u.Id != filter.IgnoreUserId); } if (!string.IsNullOrWhiteSpace(filter?.Text)) { var text = filter.Text; query = query.Where(u => u.FirstName.Contains(text) || u.LastName.Contains(text) || u.UserName.Contains(text) || u.Email.Contains(text) || u.PhoneNumber.Contains(text)); } result.TotalCount = await query.CountAsync(); if (filter != null) { if (filter.Skip.HasValue) { var skip = filter.Skip.Value; query = query.Skip(skip); result.Skipped = result.TotalCount > 0 ? skip : 0; } if (filter.Take.HasValue) { var take = filter.Take.Value; query = query.Take(take); result.Taken = result.TotalCount > 0 ? take : 0; } } result.List = await query.Select(u => UserResponse.FromUser(u)).ToListAsync(); return(result); }