public override void EditContactGroup(uint contactGroupId) { var contactGroup = ContactGroup.Find(contactGroupId); var payerOwners = DbSession.Query <PayerOwnerContact>() .Where(p => contactGroup.Contacts.Contains(p.Contact)) .Fetch(p => p.Payer) .ToDictionary(k => k.Contact); foreach (var contact in contactGroup.Contacts) { if (payerOwners.Keys.Contains(contact)) { var payer = payerOwners[contact].Payer; contact.PayerOwnerName = string.Format("[{0}] - \"{1}\"", payer.Id, payer.ShortName); } } PropertyBag["CurrentContactGroup"] = contactGroup; }
protected void btnSaveContactGropup_Click(object sender, EventArgs e) { uint newGroupId; //попытка преобразовать выбранное значение в Id группы, если это получилось сделать, то установливаем новое значение if (uint.TryParse(ContactGroups.SelectedValue, out newGroupId)) { var newGroup = ContactGroup.Find(newGroupId); using (new TransactionScope()) { _generalReport.ContactGroup = newGroup; _generalReport.Save(); } lContactGroupName.Text = _generalReport.ContactGroup.Name; tbContactFind.Text = String.Empty; btnRun.Enabled = _currentTask.Enabled && (_currentTask.State != TaskState.Running); } ClearSearch(); CloseTaskService(); }
public override void UpdateContactGroup(uint contactGroupId, [DataBind("Contacts")] Contact[] contacts) { var actualContactId = contacts.Select(c => c.Id).ToList(); var oldContacts = DbSession.Query <Contact>().Where(c => actualContactId.Contains(c.Id)).ToList().ToDictionary(c => c.Id); var mails = contacts.Where(c => c.Id == 0 || oldContacts[c.Id].ContactText != c.ContactText).Select(c => c.ContactText).Distinct().ToList(); var payerContacts = DbSession.Query <PayerOwnerContact>().Where(c => mails.Contains(c.Contact.ContactText)).ToList(); if (payerContacts.Count > 0) { var errorBuilder = new StringBuilder(); foreach (var email in mails) { var payers = payerContacts.Where(p => p.Contact.ContactText == email).GroupBy(g => g.Payer).ToList(); foreach (var payer in payers) { errorBuilder.AppendLine(string.Format("E-mail <b>{0}</b> уже зарегистрирован для плательщика <b>{1}</b>", email, payer.Key.ShortName)); } } if (errorBuilder.Length > 0) { errorBuilder.AppendLine(); errorBuilder.AppendLine("Для добавления данных E-mail в список рассылки отчетов воспользуйтесь Л.К. любого Поставщика или Аптеки для этого Плательщика"); PropertyBag["Message"] = Message.Error(errorBuilder.ToString().Replace("\r\n", "<br/>")); } var contactGroup = ContactGroup.Find(contactGroupId); RenderInvalidGroup(contacts, contactGroup); } else { base.UpdateContactGroup(contactGroupId, contacts); } if (Response.StatusCode == 302) { RedirectToAction("CloseWindow"); } }