예제 #1
0
        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);
        }
예제 #4
0
        /// <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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #10
0
 public bool Equals(ContactSummary obj)
 {
     if (ReferenceEquals(null, obj)) return false;
     if (ReferenceEquals(this, obj)) return true;
     return Equals(obj.Summary, Summary);
 }