private void InitializeByRecipients(dtoModuleMessagesContext context) { View.UserCurrentOrderBy = MailSender.UserByMessagesOrder.ByUser; View.Ascending = true; lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter = InitializeFilter(context.ModuleObject); View.CurrentFilter = filter; View.InitializeWordSelector(new List <String>()); LoadColumns(false, false, false); View.DisplayNoUsersFound(); }
private void InitializeSearchFilter(lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter = null) { List <lm.Comol.Core.BaseModules.ProfileManagement.SearchProfilesBy> items = new List <Core.BaseModules.ProfileManagement.SearchProfilesBy>(); items.Add(Core.BaseModules.ProfileManagement.SearchProfilesBy.All); items.Add(Core.BaseModules.ProfileManagement.SearchProfilesBy.Contains); items.Add(Core.BaseModules.ProfileManagement.SearchProfilesBy.Surname); items.Add(Core.BaseModules.ProfileManagement.SearchProfilesBy.Name); items.Add(Core.BaseModules.ProfileManagement.SearchProfilesBy.Mail); View.LoadSearchProfilesBy(items, (filter == null) ? Core.BaseModules.ProfileManagement.SearchProfilesBy.All : filter.SearchBy); }
private lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters InitializeFilter(ModuleObject obj) { lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter = new lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters() { Ascending = true, OrderBy = MailSender.UserByMessagesOrder.ByUser }; filter.IdCommunity = obj.CommunityID; InitializeAgencyFilter(filter, obj); InitializeSearchFilter(filter); InitializeCommunityFilters(obj, filter.IdCommunity, filter); return(filter); }
private void InitializeCommunityFilters(ModuleObject obj, Int32 idCommunity, lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter) { if (idCommunity > 0) { filter.IdCommunity = idCommunity; filter.IdRole = -1; filter.IdProfileType = -1; View.LoadAvailableRoles(MailService.GetAvailableSubscriptionsIdRoles(obj, idCommunity, false), -1); } else { filter.IdRole = -1; filter.IdCommunity = idCommunity; View.LoadAvailableProfileType(MailService.GetAvailableProfileTypes(obj), -1); } }
public void LoadRecipients(lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter, Int32 pageIndex, Int32 pageSize, Boolean initialize) { if (UserContext.isAnonymous) { SessionTimeout(View.CurrentIdCommunity, View.PreloadSelectedTab); } else { filter.StartWith = View.CurrentStartWith; List <dtoGenericModuleMessageRecipient> recipients = MailService.GetAvailableRecipientsForObject(View.UnknownUserTranslation, View.AnonymousUserTranslation, View.CurrentModuleObject, filter, ProfileService); if (initialize) { View.InitializeWordSelector(recipients.Select(r => r.FirstLetter).Distinct().ToList()); } else { View.InitializeWordSelector(recipients.Select(r => r.FirstLetter).Distinct().ToList(), filter.StartWith); } recipients = MailService.GetParsedUsersForMessages(recipients, filter, ProfileService); PagerBase pager = new PagerBase(); pager.PageSize = pageSize; //Me.View.CurrentPageSize pager.Count = (recipients.Count > 0) ? recipients.Count - 1 : 0; pager.PageIndex = pageIndex; // Me.View.CurrentPageIndex View.Pager = pager; recipients = recipients.Skip(pageIndex * pageSize).Take(pageSize).ToList(); LoadColumns(recipients.Where(r => r.MessageNumber > 0).Any(), filter.IdCommunity > 0, filter.IdCommunity <= 0, recipients.Where(r => r.IdAgency > 0).Any()); View.LoadedNoUsers = !recipients.Any(); if (recipients.Any()) { View.LoadRecipients(recipients); } else { View.DisplayNoUsersFound(); } } }
private void InitializeAgencyFilter(lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter, ModuleObject obj, long idDefaultAgency = 0) { Boolean hasAgencies = false; Dictionary <long, String> agencies = null; hasAgencies = MailService.HasUsersWithProfileType(obj, (int)UserTypeStandard.Employee); if (hasAgencies) { agencies = MailService.GetAgenciesForUsers(obj); } View.IsAgencyColumnVisible = (hasAgencies && agencies != null && agencies.Count > 0); if (hasAgencies && agencies != null && agencies.Count > 0) { View.LoadAgencies(agencies, idDefaultAgency); } else { View.UnLoadAgencies(); } }
public List <dtoModuleRecipientMessage> GetParsedUsersForMessage(List <dtoModuleRecipientMessage> recipients, lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter, lm.Comol.Core.BaseModules.ProfileManagement.Business.ProfileManagementService pService) { var query = (from r in recipients select r); if (!string.IsNullOrEmpty(filter.Value) && string.IsNullOrEmpty(filter.Value.Trim()) == false) { switch (filter.SearchBy) { case Core.BaseModules.ProfileManagement.SearchProfilesBy.Contains: List <String> values = filter.Value.Split(' ').ToList().Where(f => !String.IsNullOrEmpty(f)).Select(f => f.ToLower()).ToList(); if (values.Any() && values.Count == 1) { query = query.Where(r => !String.IsNullOrEmpty(r.DisplayName) && r.DisplayName.ToLower().Contains(filter.Value.ToLower())); } else if (values.Any() && values.Count > 1) { // values.Any(r.Name.ToLower().Contains) && values.Any(r.Surname.ToLower().Contains) || query = query.Where(r => (!String.IsNullOrEmpty(r.Name) && values.Any(r.Name.ToLower().Contains)) || (!String.IsNullOrEmpty(r.Surname) && values.Any(r.Surname.ToLower().Contains)) || values.Any(r.MailAddress.ToLower().Contains) || values.Any(r.DisplayName.ToLower().Contains)); } break; case Core.BaseModules.ProfileManagement.SearchProfilesBy.Mail: query = query.Where(r => r.MailAddress.ToLower().Contains(filter.Value.ToLower())); break; case Core.BaseModules.ProfileManagement.SearchProfilesBy.Name: query = query.Where(r => !String.IsNullOrEmpty(r.Name) && r.Name.ToLower().StartsWith(filter.Value.ToLower())); break; case Core.BaseModules.ProfileManagement.SearchProfilesBy.Surname: query = query.Where(r => !String.IsNullOrEmpty(r.Name) && r.Surname.ToLower().StartsWith(filter.Value.ToLower())); break; } } if ((filter.SearchBy == Core.BaseModules.ProfileManagement.SearchProfilesBy.Name || filter.SearchBy == Core.BaseModules.ProfileManagement.SearchProfilesBy.All || filter.SearchBy == Core.BaseModules.ProfileManagement.SearchProfilesBy.Contains || string.IsNullOrEmpty(filter.Value)) && !string.IsNullOrEmpty(filter.StartWith)) { if (filter.StartWith != "#") { query = query.Where(r => r.FirstLetter == filter.StartWith.ToLower()); } else { query = query.Where(r => pService.DefaultOtherChars().Contains(r.FirstLetter)); } } switch (filter.OrderBy) { case MailSender.UserByMessagesOrder.ByProfileType: if (filter.Ascending) { query = query.OrderBy(r => filter.ProfyleTypeTranslations[r.IdProfileType]); } else { query = query.OrderByDescending(r => filter.ProfyleTypeTranslations[r.IdProfileType]); } break; case MailSender.UserByMessagesOrder.ByRole: if (filter.Ascending) { query = query.OrderBy(r => filter.RoleTranslations[r.IdRole]); } else { query = query.OrderByDescending(r => filter.RoleTranslations[r.IdRole]); } break; case MailSender.UserByMessagesOrder.ByInternal: if (filter.Ascending) { query = query.OrderByDescending(r => r.IsInternal).ThenBy(r => r.DisplayName); } else { query = query.OrderBy(r => r.IsInternal).ThenBy(r => r.DisplayName); } break; case MailSender.UserByMessagesOrder.ByUser: if (filter.Ascending) { query = query.OrderBy(r => r.DisplayName); } else { query = query.OrderByDescending(r => r.DisplayName); } break; case MailSender.UserByMessagesOrder.ByAgency: if (filter.Ascending) { query = query.OrderBy(r => r.AgencyName); } else { query = query.OrderByDescending(r => r.AgencyName); } break; } return(query.ToList()); }
public List <dtoModuleRecipientMessage> GetRecipientsForMessage(long idMessage, String unknownUser, String anonymousUser, ModuleObject obj, lm.Comol.Core.BaseModules.MailSender.dtoUsersByMessageFilters filter, lm.Comol.Core.BaseModules.ProfileManagement.Business.ProfileManagementService pService, Boolean loadAllInfo = true) { List <dtoModuleRecipientMessage> items = new List <dtoModuleRecipientMessage>(); try { List <MailRecipient> mRecipients = GetRecipientsQuery(filter.IdCommunity, false, obj, "", 0, idMessage).ToList(); if (mRecipients.Any()) { items = GetParsedMessageRecipients(obj, mRecipients); List <Int32> idUsers = items.Where(r => r.IsInternal).Select(r => r.IdPerson).Distinct().ToList(); if (idUsers.Any()) { List <Person> users = new List <Person>(); if (idUsers.Count <= maxItemsForQuery) { users.AddRange((from p in Manager.GetIQ <Person>() where idUsers.Contains(p.Id) select p).ToList()); } else { Int32 pageIndex = 0; List <Int32> idPagedUsers = idUsers.Skip(pageIndex * maxItemsForQuery).Take(maxItemsForQuery).ToList(); while (idPagedUsers.Any()) { users.AddRange((from p in Manager.GetIQ <Person>() where idPagedUsers.Contains(p.Id) select p).ToList()); pageIndex++; idPagedUsers = idUsers.Skip(pageIndex * maxItemsForQuery).Take(maxItemsForQuery).ToList(); } } items.Where(r => r.IsInternal).ToList().ForEach(i => i.UpdatePersonInfo(users.Where(u => u.Id == i.IdPerson).FirstOrDefault(), unknownUser)); } if (filter.IdCommunity > 0 && items.Any()) { idUsers = items.Select(i => i.IdPerson).ToList(); List <LazySubscription> subscriptions = (idUsers.Count <= maxItemsForQuery) ? (from s in Manager.GetIQ <LazySubscription>() where s.IdCommunity == filter.IdCommunity && idUsers.Contains(s.IdPerson) select s).ToList() : (from s in Manager.GetIQ <LazySubscription>() where s.IdCommunity == filter.IdCommunity select s).ToList().Where(s => idUsers.Contains(s.IdPerson)).ToList(); items.Where(i => i.IdPerson > 0).ToList().ForEach(i => i.IdRole = subscriptions.Where(s => s.IdPerson == i.IdPerson).Select(s => s.IdRole).FirstOrDefault()); } var query = (from r in items where (filter.IdProfileType < 1 || (filter.IdProfileType > 0 && r.IdProfileType == filter.IdProfileType)) && (filter.IdRole < 1 || (filter.IdRole > 0 && r.IdRole == filter.IdRole)) select r); if (filter.IdAgency == -3) { query = query.Where(r => r.IdProfileType != (int)UserTypeStandard.Employee && (filter.IdProfileType <= 0 || filter.IdProfileType == r.IdProfileType)); } else { Dictionary <long, List <Int32> > agencyInfos = pService.GetUsersWithAgencies(query.Where(r => r.IsInternal).Select(r => r.IdPerson).ToList().Distinct().ToList()); if (filter.IdAgency == -2) { query = query.Where(r => r.IdProfileType == (int)UserTypeStandard.Employee); } else if (agencyInfos.ContainsKey(filter.IdAgency)) { query = query.Where(r => r.IdProfileType == (int)UserTypeStandard.Employee && agencyInfos[filter.IdAgency].Contains(r.IdPerson)); } else if (filter.IdAgency > 0) { query = query.Where(r => 1 == 2); } if (loadAllInfo || filter.OrderBy == MailSender.UserByMessagesOrder.ByAgency) { Dictionary <long, String> agencyName = pService.GetAgenciesName(agencyInfos.Keys.ToList()); foreach (var i in agencyInfos) { query.Where(r => r.IsInternal && i.Value.Contains(r.IdPerson)).ToList().ForEach(r => r.UpdateAgencyInfo(i.Key, (agencyName.ContainsKey(i.Key) ? agencyName[i.Key] : ""))); } } } items = query.ToList(); items.Where(i => String.IsNullOrEmpty(i.DisplayName) && !String.IsNullOrEmpty(i.Name) && !String.IsNullOrEmpty(i.Surname)).ToList().ForEach(r => r.DisplayName = r.Surname + " " + r.Name); items.Where(i => String.IsNullOrEmpty(i.DisplayName) && String.IsNullOrEmpty(i.Name) && String.IsNullOrEmpty(i.Surname)).ToList().ForEach(r => r.DisplayName = r.MailAddress); } } catch (Exception ex) { } return(items); }