private void Grid_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { System.Windows.Controls.Grid grid = (System.Windows.Controls.Grid)sender; ContactSummary selectedSummary = (ContactSummary)grid.DataContext; ApplicationPresenter.SelectedContactSummaryId = selectedSummary.ContactSummaryId; }
internal static IContact CreateContact(ContactSummary notExistingContactSummary, IContractor contractor) { var contact = CreateContact(notExistingContactSummary); if (contractor != null) { contact.Contractor = contractor; } return(contact); }
internal static IContact CreateContact(IContractor contractor, ContactSummary forCreateContactSummary) { var contact = CreateContact(forCreateContactSummary); if (contractor != null) { contact.Contractor = contractor; } return(contact); }
/// <summary> /// Получить или создать контакт по ящику Email /// </summary> /// <param name="mailbox"></param> /// <returns></returns> public async Task <ContactSummary> CreateContactSummaryAsync(MailboxAddress mailbox) { var normalizedEmail = mailbox.Address.ToLowerInvariant(); var contact = await GetOrCreateContactAsync(normalizedEmail, mailbox.Name); var contactSummary = new ContactSummary(normalizedEmail, contact); _logger.Info($"Сохранен контакт {contact.Fio} по {mailbox.Address}"); return(contactSummary); }
internal static IEmailMessageParticipant CreateParticipant(ContactSummary contactSummary, IContact currentContact) { var emailMessageParticipant = InterfaceActivator.Create <IEmailMessageParticipantContact>(); emailMessageParticipant.Contact = currentContact; emailMessageParticipant.EmailString = contactSummary.Email; emailMessageParticipant.Save(); if (Logger.IsDebugEnabled()) { Logger.Log(LogLevel.Debug, $"Created ParticipantContact: {emailMessageParticipant.EmailString}"); } return(emailMessageParticipant); }
private void UpdateContact(IEnumerable <IPersonReferrent> persons, ContactSummary contactSummary) { var contactSummaryEmail = contactSummary.Email; var person = persons.FirstOrDefault(c => c.Emails.Contains(contactSummaryEmail)); if (person == null) { return; } var newContact = person.ToContact(); MailBox.Contacts[contactSummaryEmail] = Merge(newContact, contactSummaryEmail); if (newContact.Contractor == null) { return; } var domain = Domain(contactSummaryEmail); MailBox.Contractors[domain] = Merge((Contractor)newContact.Contractor, domain); }
public override EleWise.ELMA.CRM.Models.IContact Run(Contact contact) { var email = contact.Emails.FirstOrDefault()?.EmailString; if (string.IsNullOrWhiteSpace(email)) { throw new ArgumentNullException("EmailString", $"{contact.Fio} пришел с пустым email"); } var participant = EmailMessageParticipantContactManager.Instance.Load(email); var contactSummary = new ContactSummary(email, contact); var participantContact = participant?.Contact; if (participantContact == null) { var domain = EmailMessageParticipantManager.Domain(email); var mailboxDomain = MailboxDomainManager.Instance.Load(domain); var mailboxDomainContractor = mailboxDomain?.Contractor; if (mailboxDomainContractor == null) { var settings = Locator.GetServiceNotNull <YambrEmailSettingsModule>().Settings; if (settings.AutoCreateContractors) { mailboxDomainContractor = EmailMessageParticipantManager.CreateContractor(domain); } } participantContact = EmailMessageParticipantManager.CreateContact( contactSummary, mailboxDomainContractor); var messageParticipant = EmailMessageParticipantManager.CreateParticipant(contactSummary, participantContact); messageParticipant.Save(); } UpdateByContact(participantContact, contact, email); return(participantContact); }
public FileProcessing() { Receive <string>(async fileName => { ContactSummary contactSummary = new ContactSummary(); try { string filePath = fileName.Replace('%', '\\'); var reader = ReadAsLines(filePath); Stopwatch countdown = new Stopwatch(); countdown.Start(); //this assumes the first record is filled with the column names List <string> headers = reader.First().Split(',').ToList(); int colPosition = 0; //Dynamically determine Column locations foreach (string column in headers) { if (columns.ContainsKey(column)) { columns[column] = colPosition; } colPosition++; } var records = reader.Skip(1); List <ContactDetail> contactDetailList = new List <ContactDetail>(); foreach (var record in records) { List <string> rowData = record.Split(',').ToList(); ContactDetail contactDetails = new ContactDetail(); contactDetails.Name = columns["Name"] != -1 ? rowData.ElementAt(columns["Name"]) : ""; contactDetails.Company = columns["Company"] != -1 ? rowData.ElementAt(columns["Company"]) : ""; contactDetails.Email = columns["Email"] != -1 ? rowData.ElementAt(columns["Email"]) : ""; contactDetails.Phone = columns["Phone"] != -1 ? rowData.ElementAt(columns["Phone"]) : ""; contactDetailList.Add(contactDetails); records = reader.Skip(1); } countdown.Stop(); contactSummary.ImportFileName = filePath.Substring(filePath.LastIndexOf("\\") + 1, filePath.Length - (filePath.LastIndexOf("\\") + 1)); contactSummary.ImportDate = DateTime.Now.ToString("dd/mm/yy").ToString(); contactSummary.ImportDuration = countdown.Elapsed.Seconds.ToString() + " seconds"; contactSummary.ContactsImported = contactDetailList.Where(x => !string.IsNullOrEmpty(x.Name)).Count(); contactSummary.CompaniesImported = contactDetailList.Where(x => !string.IsNullOrEmpty(x.Company)).Count(); contactSummary.LackedEmail = contactDetailList.Where(x => string.IsNullOrEmpty(x.Email)).Count(); contactSummary.LackedPhone = contactDetailList.Where(x => string.IsNullOrEmpty(x.Phone)).Count(); DataService ds = new DataService(); int contactSummaryId = ds.SaveContactSummary(contactSummary); ds.SaveContactDetail(contactDetailList, contactSummaryId); } catch (Exception ex) { Sender.Tell(string.Format("Error occured: {0} ", ex.Message), Self); } Sender.Tell("Imported", Self); }); }
internal static IContact CreateContact(ContactSummary notExistingContactSummary) { var contact = InterfaceActivator.Create <IContact>(); contact.Name = notExistingContactSummary.Fio; var email = InterfaceActivator.Create <IEmail>(); email.EmailString = notExistingContactSummary.Email; contact.RegistrationAddress = InterfaceActivator.Create <IAddress>(); contact.ResidenceAddress = InterfaceActivator.Create <IAddress>(); contact.Email.Add(email); var fio = RuleOrNull(notExistingContactSummary.Fio); var newContact = notExistingContactSummary.Contact; if (newContact != null) { contact.Surname = newContact.LastName; contact.Firstname = newContact.FirstName; contact.Middlename = newContact.MiddleName; } else if (fio != null) { var names = fio.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); switch (names.Length) { case 1: contact.Firstname = RuleOrNull(fio); break; case 2: contact.Firstname = RuleOrNull(names[0]); contact.Surname = RuleOrNull(names[1]); break; case 3: contact.Surname = RuleOrNull(names[0]); contact.Firstname = RuleOrNull(names[1]); contact.Middlename = RuleOrNull(names[2]); break; default: contact.Firstname = RuleOrNull(fio); break; } } else { contact.Firstname = notExistingContactSummary.Email; } if (Logger.IsDebugEnabled()) { Logger.Log(LogLevel.Debug, $"Created Contact: {notExistingContactSummary.Email}"); } return(contact); }
public bool Equals(ContactSummary obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; return Equals(obj.Summary, Summary); }