Пример #1
0
        public IQueryable ddlUsers_GetData()
        {
            Dictionary<int, string> users =new Dictionary<int,string>();

            using (TrackrModels.UserManagement um = new TrackrModels.UserManagement())
            {
                users =um.WebUsers.Select(i => new { UserID = i.UserID, Email = i.Email }).ToDictionary(i => i.UserID, i => i.Email);
            }

            List<int> userIDs = users.Keys.ToList();
            using (TrackrModels.ClubManagement cm = new TrackrModels.ClubManagement())
            {
                cm.People.Where(i => i.UserID.HasValue && userIDs.Contains(i.UserID.Value)).Select(i => new { UserID = i.UserID.Value, FName = i.FName, LName = i.LName }).ToList().ForEach(i =>
                {
                    bool hasL = !string.IsNullOrWhiteSpace(i.LName);
                    bool hasF = !string.IsNullOrWhiteSpace(i.FName);
                    users[i.UserID] = hasL && hasF ? string.Format("{0}, {1} - {2}", i.LName, i.FName, users[i.UserID]) : hasL || hasF ? string.Format("{0} - {1}", string.IsNullOrWhiteSpace(i.LName) ? i.FName : i.LName, users[i.UserID]) : users[i.UserID];
                });
            }

            return users.Select(i => new { Label = i.Value, Value = i.Key, HasName = i.Value.IndexOf(" - ") > -1 })
                .OrderBy(i=>i.HasName).ThenBy(i=>i.Label).AsQueryable();
        }
Пример #2
0
        private List<DTO> GetMostRecent(int currentUserID)
        {
            Dictionary<int, DateTime> MostRecentCorrespondance = null;

            using (TrackrModels.UserManagement um = new TrackrModels.UserManagement())
            {
                // get users this person recently sent to
                MostRecentCorrespondance = um.MessageRecipients.Where(i => i.Message.FromID == currentUserID).Select(i => new
                {
                    UserID = i.UserID,
                    CorrespondenceDate = i.SentDate
                }).GroupBy(i => i.UserID).Select(i => new
                {
                    UserID = i.Key,
                    LatestCorrespondenceDate = i.Max(j => j.CorrespondenceDate)
                }).OrderByDescending(i => i.LatestCorrespondenceDate).Take(20).ToDictionary(i => i.UserID, i => i.LatestCorrespondenceDate);
            }

            if (MostRecentCorrespondance == null)
            {
                return null;
            }

            List<int> userIDs = MostRecentCorrespondance.Keys.ToList();
            Dictionary<int, string> UserNames = null;

            using (TrackrModels.ClubManagement cm = new TrackrModels.ClubManagement())
            {
                UserNames = cm.People.Where(i => i.UserID.HasValue && userIDs.Contains(i.UserID.Value)).Select(i => new
                {
                    UserID = i.UserID.Value,
                    Name = i.FName + " " + i.LName
                }).ToDictionary(i => i.UserID, i => i.Name);
            }

            Dictionary<int, string> Emails = null;
            using (TrackrModels.UserManagement um = new TrackrModels.UserManagement())
            {
                Emails = um.WebUsers.Where(i => userIDs.Contains(i.UserID)).Select(i => new
                {
                    UserID = i.UserID,
                    Email = i.Email
                }).ToDictionary(i => i.UserID, i => i.Email);
            }

            var data = userIDs.Select(i => new
            {
                LastCorrespondance = MostRecentCorrespondance[i],
                PersonName = UserNames.ContainsKey(i) ? UserNames[i] : null,
                Email = Emails[i],
                UserID = i
            })
            .OrderByDescending(i => i.LastCorrespondance)
            .Select(i=> new DTO(){
                 label = string.IsNullOrWhiteSpace(i.PersonName) ? i.Email : string.Format("{0} <{1}>", i.PersonName, i.Email),
                 value = i.Email
            })
            .ToList();

            return data;
        }