Ejemplo n.º 1
0
 private int InsertItem(ContactForm form)
 {
     ValidateForm(form);
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         oc_contactlist contact = new oc_contactlist
         {
             business_area    = form.BusinessArea,
             source_form_name = form.SourceFormName,
             source_form_path = form.SourcePath,
             external_key     = form.ExternalKey,
             external_date    = form.ExternalDate,
             contact_type     = form.ContactTypes,
             contact_fullname = form.Name,
             contact_email    = form.Email,
             contact_phone    = form.Phone,
             company_name     = form.Company,
             language         = form.Language,
             xml_form_data    = form.FormData,
             date_created     = DateTime.Now
         };
         repository.oc_contactlists.InsertOnSubmit(contact);
         repository.SubmitChanges();
         return(contact.pk_id);
     }
 }
Ejemplo n.º 2
0
 public IList <ContactForm> GetAllContacts()
 {
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         IList <ContactForm> contacts = GetAllContactFormsFromRepository(repository);
         return(contacts);
     }
 }
Ejemplo n.º 3
0
 public ContactForm GetContactFormById(int formId)
 {
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         ContactForm form = (from contact in repository.oc_contactlists
                             where contact.pk_id == formId
                             select BuildContactForm(contact)).FirstOrDefault();
         return(form);
     }
 }
Ejemplo n.º 4
0
 public IList <ContactForm> GetLast100Contacts()
 {
     // Just for convinience lets show last 100 contacts
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         //
         IList <ContactForm> contacts = (from contact in repository.oc_contactlists
                                         select BuildContactForm(contact)).Take(100).ToList();
         return(contacts);
     }
 }
Ejemplo n.º 5
0
 public IList <ContactFormType> GetContactFormTypes()
 {
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         var formTypes = (from contact in repository.oc_contactlists
                          select contact.source_form_name).Distinct();
         List <ContactFormType> formTypeList = new List <ContactFormType>();
         foreach (var formType in formTypes)
         {
             formTypeList.Add(new ContactFormType {
                 SourceFormName = formType
             });
         }
         return(formTypeList);
     }
 }
Ejemplo n.º 6
0
 public IList <ContactForm> GetContactsByCriteria(string formName, DateTime startingFrom)
 {
     // Just for convinience lets show last 100 contacts
     using (ContactInformationDataContext repository = ContactDataSource.ContactDataContext())
     {
         //
         bool hasWhere = formName != string.Empty || startingFrom != DateTime.MinValue;
         IList <ContactForm> contactForms = (from contact in repository.oc_contactlists
                                             where (String.IsNullOrEmpty(formName) || contact.source_form_name == formName)
                                             &&
                                             (DateTime.MinValue == startingFrom || contact.date_created > startingFrom)
                                             orderby contact.date_created descending
                                             select BuildContactForm(contact)).ToList();
         return(contactForms);
     }
 }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (FileHelper.IsValid(MainDbPath))
            {
                foreach (var item in FileParse(MainDbPath))
                {
                    datasource.Items.Add(item);
                }
            }

            if (FileHelper.IsValid(OtherDbPath))
            {
                foreach (var item in FileParse(OtherDbPath))
                {
                    datasource.Items.Add(item);
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            try
            {
                string allText = System.IO.File.ReadAllText(MainDbPath);
                var    arrData = allText.Split(new string[] { "BEGIN:VCARD", "END:VCARD" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var d in arrData)
                {
                    var datas = d.Trim('\r', '\n').Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                    if (datas.IsInvalid())
                    {
                        continue;
                    }

                    Contact contact = new Contact();
                    contact.DataState = EnumDataState.Normal;

                    string temp = datas.FirstOrDefault(s => s.StartsWith("TEL;TYPE=CELL:"));
                    if (temp.IsValid())
                    {
                        contact.Number = temp.TrimStart("TEL;TYPE=CELL:").Trim();
                    }

                    temp = datas.FirstOrDefault(s => s.StartsWith("FN:"));
                    if (temp.IsValid())
                    {
                        contact.Name = temp.TrimStart("FN:").Trim();
                    }

                    if (contact.Name.IsValid() || contact.Number.IsValid())
                    {
                        datasource.Items.Add(contact);
                    }
                }
            }
            catch
            {
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, @"chalib\com.android.providers.contacts\contacts2.db.charactor", "raw_contacts,contacts,phone_lookup,data,mimetypes,groups", true);
                mainContext = new SqliteContext(rMainDbFile);

                // raw_contacts表数据集合
                var contactList = mainContext.Find(_SelectRawContactsSql);
                // phone_lookup表数据集合
                var phoneLookupList = mainContext.Find("SELECT * FROM phone_lookup");
                // dataView视图数据集合
                var dataViewList = mainContext.Find(_SelectDataViewSql);
                // 群组列表
                var groupList = mainContext.Find("SELECT * FROM groups");

                //  联系人解析
                var items = new List <Contact>();
                if (contactList.IsValid())
                {
                    items = TryParseItems(contactList);
                    TryParsePhoneLookup(items, phoneLookupList);
                    TryParseDataView(items, dataViewList, groupList);
                }

                foreach (var item in items.Where(c => c.Number.IsValid()))
                {
                    datasource.Items.Add(item);
                }
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
Ejemplo n.º 10
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!Page.IsPostBack)
     {
         ContactDataSource.SelectParameters.Clear();
         ContactDataSource.SelectParameters.Add("Username", Membership.GetUser().UserName);
         System.Data.DataView dv = (System.Data.DataView)ContactDataSource.Select(new DataSourceSelectArguments());
         foreach (System.Data.DataRow line in dv.Table.Rows)
         {
             name.Value = line["Name"].ToString();
             DateTime dt = (DateTime)line["Birthday"];
             birthday.Text = dt.ToString("yyyy-MM-dd");
             phone.Text    = line["Phone"].ToString();
             mail.Text     = line["Mail"].ToString();
             website.Text  = line["Website"].ToString();
             country.Value = line["Country"].ToString();
             city.Value    = line["City"].ToString();
             company.Value = line["Company"].ToString();
             school.Value  = line["School"].ToString();
         }
     }
 }
Ejemplo n.º 11
0
    protected void ContactButton_Click(object sender, EventArgs e)
    {
        ContactDataSource.SelectParameters.Clear(); //Select
        ContactDataSource.SelectParameters.Add("Username", Membership.GetUser().UserName);
        DataSourceSelectArguments args = new DataSourceSelectArguments();
        DataView dv = (DataView)ContactDataSource.Select(args);

        if (dv.Table.Rows.Count == 1) //Update if exist
        {
            ContactDataSource.UpdateParameters.Clear();
            ContactDataSource.UpdateParameters.Add("Name", name.Value);
            ContactDataSource.UpdateParameters.Add("Birthday", birthday.Text);
            ContactDataSource.UpdateParameters.Add("Phone", phone.Text);
            ContactDataSource.UpdateParameters.Add("Mail", mail.Text);
            ContactDataSource.UpdateParameters.Add("Website", website.Text);
            ContactDataSource.UpdateParameters.Add("Country", country.Value);
            ContactDataSource.UpdateParameters.Add("City", city.Value);
            ContactDataSource.UpdateParameters.Add("Company", company.Value);
            ContactDataSource.UpdateParameters.Add("School", school.Value);
            ContactDataSource.UpdateParameters.Add("Username", Membership.GetUser().UserName);
            ContactDataSource.Update();
        }
        else //Insert
        {
            ContactDataSource.InsertParameters.Clear();
            ContactDataSource.InsertParameters.Add("Username", Membership.GetUser().UserName);
            ContactDataSource.InsertParameters.Add("Name", name.Value);
            ContactDataSource.InsertParameters.Add("Birthday", birthday.Text);
            ContactDataSource.InsertParameters.Add("Phone", phone.Text);
            ContactDataSource.InsertParameters.Add("Mail", mail.Text);
            ContactDataSource.InsertParameters.Add("Website", website.Text);
            ContactDataSource.InsertParameters.Add("Country", country.Value);
            ContactDataSource.InsertParameters.Add("City", city.Value);
            ContactDataSource.InsertParameters.Add("Company", company.Value);
            ContactDataSource.InsertParameters.Add("School", school.Value);
            ContactDataSource.Insert();
        }
    }
Ejemplo n.º 12
0
        public override object Execute(object arg, IAsyncTaskProgress progress)
        {
            ContactDataSource ds = null;

            try
            {
                var pi = PluginInfo as DataParsePluginInfo;

                ds = new ContactDataSource(pi.SaveDbPath);

                var contactsPath = pi.SourcePath[0].Local;

                if (!FileHelper.IsValidDictory(contactsPath))
                {
                    return(ds);
                }

                var contacts2dbFile = Path.Combine(contactsPath, "contacts2.db");
                if (!FileHelper.IsValid(contacts2dbFile))
                {
                    return(ds);
                }

                var paser = new AndroidContactsDataParseCoreV1_0(contacts2dbFile);
                paser.BuildData(ds);
            }
            catch (System.Exception ex)
            {
                Framework.Log4NetService.LoggerManagerSingle.Instance.Error("提取安卓联系人数据出错!", ex);
            }
            finally
            {
                ds?.BuildParent();
            }

            return(ds);
        }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                var rMainDbFile = SqliteRecoveryHelper.DataRecovery(MainDbPath, @"chalib\IOS_Contact\AddressBook.sqlitedb_V7.charactor", "ABPerson,ABMultiValue,ABGroupMembers,ABGroup", true);
                mainContext = new SqliteContext(rMainDbFile);

                string groupString = "select member_id,Name from ABGroupMembers m left join ABGroup g on m.group_id == g.ROWID";
                var    groups      = mainContext.Find(groupString);

                mainContext.UsingSafeConnection("select p.*,v.record_id,v.property,v.label,v.[value] from ABPerson p,ABMultiValue v WHERE p.ROWID = v.record_id", r =>
                {
                    Contact contact;
                    dynamic contactObj;

                    while (r.Read())
                    {
                        contactObj = r.ToDynamic();
                        contact    = new Contact();

                        contact.DataState = DynamicConvert.ToEnumByValue(contactObj.XLY_DataType, EnumDataState.Normal);

                        //正常的联系人,目前只处理电话号码的信息,如亲属关系,社交等暂不处理。
                        if (contact.DataState == EnumDataState.Normal)
                        {
                            int propertyId = DynamicConvert.ToSafeInt(contactObj.property);
                            if (propertyId != 3)
                            {
                                continue;
                            }
                        }

                        contact.Name   = DynamicConvert.ToSafeString(contactObj.Last) + DynamicConvert.ToSafeString(contactObj.First);
                        contact.Name   = FragmentHelper.RemoveNullityDataNew(contact.Name);
                        contact.Number = DataParseHelper.NumberToStu(DynamicConvert.ToSafeString(contactObj.value));
                        // 号码过滤,验证号码长度
                        if (!DataParseHelper.ValidateNumber(contact.Number))
                        {
                            continue;
                        }

                        //创建时间(最后修改时间)
                        contact.CreateDate = DynamicConvert.ToSafeDateTime(contactObj.ModificationDate, 2001);

                        //联系人分组
                        int contactId = DynamicConvert.ToSafeInt(contactObj.ROWID);
                        var groupObj  = groups.FirstOrDefault(g => DynamicConvert.ToSafeInt(g.member_id) == contactId);
                        if (groupObj != null)
                        {
                            contact.GroupName = DynamicConvert.ToSafeString(groupObj.Name);
                        }

                        //基础备注
                        contact.Remark = BuildRemark(contactObj).ToString().TrimStart(';');

                        datasource.Items.Add(contact);
                    }
                });
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDbPath))
            {
                return;
            }

            SqliteContext mainContext = null;

            try
            {
                var dataList  = mainContext.Find(new SQLiteString("SELECT raw_contact_id,data1,mimetype FROM data_tb WHERE data1 NOTNULL ORDER BY raw_contact_id,mimetype"));
                var rawidList = dataList.Select(d => DynamicConvert.ToSafeString(d.raw_contact_id)).Distinct();

                foreach (string rawid in rawidList)
                {
                    var nameData  = dataList.FirstOrDefault(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/name");
                    var noteData  = dataList.FirstOrDefault(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/note");
                    var emailData = dataList.FirstOrDefault(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/email_v2");
                    //var websiteData = dataList.FirstOrDefault(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/website");
                    var addressData = dataList.FirstOrDefault(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/postal-address_v2");

                    //string name = "", note = "", email = "", website = "", address = "";
                    string name = "", note = "", email = "", address = "";
                    if (null != nameData)
                    {
                        name = DynamicConvert.ToSafeString(nameData.data1);
                    }
                    if (null != noteData)
                    {
                        note = DynamicConvert.ToSafeString(noteData.data1);
                    }
                    if (null != emailData)
                    {
                        email = DynamicConvert.ToSafeString(emailData.data1);
                    }
                    //if (null != websiteData)
                    //{
                    //    website = DynamicConvert.ToSafeString(websiteData.data1);
                    //}
                    if (null != addressData)
                    {
                        address = DynamicConvert.ToSafeString(addressData.data1);
                    }

                    var phones = dataList.Where(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/phone_v2")
                                 .Select(d => DynamicConvert.ToSafeString(d.data1));
                    //var groups = dataList.Where(d => DynamicConvert.ToSafeString(d.raw_contact_id) == rawid && DynamicConvert.ToSafeString(d.mimetype) == "vnd.android.cursor.item/group_membership")
                    //                     .Select(d => DynamicConvert.ToSafeString(d.data1)).Distinct();

                    //string groupinfo = GetGroupsInfo(context, groups);
                    DateTime?lastContactDate = GetLastContactDate(mainContext, rawid);

                    if (phones.IsInvalid())
                    {
                        if (name.IsInvalid())
                        {
                            continue;
                        }

                        Contact contactTemp = new Contact();
                        contactTemp.DataState = EnumDataState.Normal;
                        contactTemp.Name      = name;
                        contactTemp.Remark    = note;
                        contactTemp.Email     = email;
                        //contactTemp.Website = website;
                        contactTemp.PostalAddress = address;
                        //contactTemp.GroupName = groupinfo;
                        contactTemp.LastContactDate = lastContactDate;

                        datasource.Items.Add(contactTemp);
                    }
                    else
                    {
                        foreach (var phonenumber in phones)
                        {
                            Contact contactTemp = new Contact();
                            contactTemp.DataState = EnumDataState.Normal;
                            contactTemp.Number    = DynamicConvert.ToSafeString(phonenumber);
                            contactTemp.Name      = name;
                            contactTemp.Remark    = note;
                            contactTemp.Email     = email;
                            //contactTemp.Website = website;
                            contactTemp.PostalAddress = address;
                            //contactTemp.GroupName = groupinfo;
                            contactTemp.LastContactDate = lastContactDate;

                            datasource.Items.Add(contactTemp);
                        }
                    }
                }
            }
            finally
            {
                mainContext?.Dispose();
                mainContext = null;
            }
        }
Ejemplo n.º 15
0
 public ContactManager()
 {
     _ds = new ContactDataSource();
 }
Ejemplo n.º 16
0
 public ContactManager(ContactDataSource testDS)
 {
     _ds = testDS;
 }
Ejemplo n.º 17
0
        /// <summary>
        /// 解析数据
        /// </summary>
        /// <param name="datasource"></param>
        public void BuildData(ContactDataSource datasource)
        {
            if (!FileHelper.IsValid(MainDataFilePath))
            {
                return;
            }

            try
            {
                string allText = System.IO.File.ReadAllText(MainDataFilePath);
                var    arrData = allText.Split(new string[] { "BEGIN:VCARD", "END:VCARD" }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var d in arrData)
                {
                    var datas = d.Trim('\r', '\n').Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
                    if (datas.IsInvalid())
                    {
                        continue;
                    }

                    Contact contact = new Contact();
                    contact.DataState = EnumDataState.Normal;

                    string temp = datas.FirstOrDefault(s => s.StartsWith("TEL;"));
                    if (temp.IsValid() && Regex.IsMatch(temp, @"\+{0,1}\d+"))
                    {
                        contact.Number = Regex.Match(temp, @"\+{0,1}\d+").Value;
                    }

                    temp = datas.FirstOrDefault(s => s.StartsWith("FN;"));
                    if (temp.IsValid() && Regex.IsMatch(temp, @"(=[0-9A-F]{2})+={0,1}"))
                    {
                        string codestr = Regex.Match(temp, @"(=[0-9A-F]{2})+={0,1}").Value;
                        if (codestr.EndsWith("="))
                        {
                            int startIndex = datas.IndexOf(temp) + 1;
                            while (startIndex < datas.Count)
                            {
                                if (!Regex.IsMatch(datas[startIndex], @"(=[0-9A-F]{2})+={0,1}"))
                                {
                                    break;
                                }

                                if (!codestr.EndsWith("="))
                                {
                                    break;
                                }

                                codestr += Regex.Match(datas[startIndex], @"(=[0-9A-F]{2})+={0,1}").Value.TrimStart("=");
                                if (!codestr.EndsWith("="))
                                {
                                    break;
                                }

                                startIndex++;
                            }
                        }

                        contact.Name = DecodeDP(codestr);
                    }
                    else
                    {
                        temp = datas.FirstOrDefault(s => s.StartsWith("N;"));
                        if (temp.IsValid() && Regex.IsMatch(temp, @"(=[0-9A-F]{2})+={0,1}"))
                        {
                            string codestr = Regex.Match(temp, @"(=[0-9A-F]{2})+={0,1}").Value;
                            if (codestr.EndsWith("="))
                            {
                                int startIndex = datas.IndexOf(temp) + 1;
                                while (startIndex < datas.Count)
                                {
                                    if (!Regex.IsMatch(datas[startIndex], @"(=[0-9A-F]{2})+={0,1}"))
                                    {
                                        break;
                                    }

                                    if (!codestr.EndsWith("="))
                                    {
                                        break;
                                    }

                                    codestr += Regex.Match(datas[startIndex], @"(=[0-9A-F]{2})+={0,1}").Value.TrimStart("=");
                                    if (!codestr.EndsWith("="))
                                    {
                                        break;
                                    }

                                    startIndex++;
                                }
                            }

                            contact.Name = DecodeDP(codestr);
                        }
                        else
                        {
                            temp = datas.FirstOrDefault(s => s.StartsWith("FN:"));
                            if (temp.IsValid())
                            {
                                contact.Name = temp.Substring(3).Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)[0];
                            }
                            else
                            {
                                temp = datas.FirstOrDefault(s => s.StartsWith("N:"));
                                if (temp.IsValid())
                                {
                                    contact.Name = temp.Substring(2).Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)[0];
                                }
                            }
                        }
                    }

                    datasource.Items.Add(contact);
                }
            }
            catch
            {
            }
        }
Ejemplo n.º 18
0
 public void Init()
 {
     contactDatasource = new ContactDataSource();
 }