private void btnSendMessageWeb_Click(object sender, RoutedEventArgs e) { SendMessageMode mode = SendMessageMode.All; if (rbSelectedCountries.IsChecked.Value) { mode = SendMessageMode.SelectedCountries; } else if (rbExceptSelectedCountries.IsChecked.Value) { mode = SendMessageMode.ExceptSelectedCountries; } var start1 = Stopwatch.StartNew(); var test = cmbCountries.SelectedItems.Cast <Country>().Select(x => x.GeoId).ToList(); AdminServiceClient client = new AdminServiceClient(); client.SendMessage(txtTopic.Text, txtContent.Text, mode, test); }
public void SendMessage(string topic, string message, SendMessageMode mode, List <int> countriesId) { var session = NHibernateContext.Current().Session; using (var trans = session.BeginTransaction()) { //get admin var admin = session.QueryOver <Profile>().Where(x => x.UserName == "Admin").SingleOrDefault(); IList <Profile> profiles = null; if (mode == SendMessageMode.All) { profiles = session.QueryOver <Profile>().Where(x => !x.IsDeleted && x.GlobalId != admin.GlobalId).List(); } else if (mode == SendMessageMode.SelectedCountries) { profiles = session.QueryOver <Profile>().Where(x => !x.IsDeleted && x.GlobalId != admin.GlobalId).WhereRestrictionOn(x => x.CountryId).IsIn(countriesId).List(); } else { profiles = session.QueryOver <Profile>().Where(x => !x.IsDeleted && x.GlobalId != admin.GlobalId).WhereRestrictionOn(x => x.CountryId).Not.IsIn(countriesId).List(); } foreach (var profile in profiles) { var msg = new Message(); msg.Content = message; msg.Topic = topic; msg.Sender = admin; msg.Receiver = profile; msg.CreatedDate = DateTime.UtcNow; msg.Priority = (Model.MessagePriority)MessagePriority.System; session.Save(msg); } trans.Commit(); } }