public int AddGroupContactList(List<GroupContact> listContactId, DuplicateContactMode mode) { DBManager db = new DBManager(); return db.AddGroupContactList(listContactId, mode); }
public void UpdateDuplicateContactMode(DuplicateContactMode mode) { DBParameter.DuplicateMode = mode; }
public int AddOrUpdateContactsFromAccount(List<Contact> list, string accTypeName, DuplicateContactMode mode) { DBManager db = new DBManager(); return db.AddOrUpdateContactsFromAccount(list, accTypeName, mode); }
/// <summary> /// Import from CSV NEW /// </summary> /// <param name="list"></param> /// <param name="file"></param> /// <returns></returns> /// public FileImportResult ImportFromCSVMultiHeader(string data, DuplicateContactMode mode) { FileImportResult result = new FileImportResult(); string[] contactSplits = data.Split(new string[] { "\r", "\r\n", "\n" }, StringSplitOptions.None); var CSVHeader = contactSplits[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList().Select(n => GroupDB.TrimSpace(GroupDB.RemoveControlChars(n))).ToArray(); int size = contactSplits.Count(); EmailType emailType = dbManager.GetPreferredEmailTypeByAccountTypeNameEF(AccountTypeDB.TYPE_CSV_STRING); FaxType faxType = dbManager.GetPreferredFaxTypeByAccountTypeNameEF(AccountTypeDB.TYPE_CSV_STRING); Account account = dbManager.GetCSVAccountEF(); string accTypeName = AccountTypeDB.TYPE_CSV_STRING; List<CMData.Contact> listContact = new List<CMData.Contact>(); CMData.Contact contact; if (! (CSVHeader.Contains<string>("first_name") || CSVHeader.Contains<string>("last_name")) || ! (CSVHeader.Contains<string>("email") || CSVHeader.Contains<string>("Business Fax"))) { result.errorCode = FileImExportController.CODE_FILE_STRUCTURE_NOT_SUITABLE; return result; } for (int i = 1; i < size; i++) { string bareData = contactSplits[i]; var valueSplits = splitCSVLine(bareData); if (valueSplits.Count() <= 1) continue; var last_name = String.Empty; var first_name = String.Empty; var middle_name = String.Empty; var email = String.Empty; var fax = String.Empty; for (int j = 0; j < valueSplits.Count(); j++) { var value = valueSplits.ElementAt(j); value = formatQuoteCommaToImport(value); string column = CSVHeader[j]; if (column.Equals("first_name")) { first_name = value; } if (column.Equals("last_name")) { last_name = value; } if (column.Equals("middle_name")) { middle_name = value; } if (column.Equals("email")) { email = value; //if (!validateEmail(email)) // email = ""; } if (column.Equals("Business Fax")) { fax = value; } } if (String.IsNullOrEmpty(first_name) && String.IsNullOrEmpty(last_name) && String.IsNullOrEmpty(email) && String.IsNullOrEmpty(fax)) { continue; } List<Email> listEmail = new List<Email>(); if (!String.IsNullOrEmpty(email)) { Email em = new Email(); em.Value = email; em.EmailType = emailType; em.EmailTypeId = emailType.Id; listEmail.Add(em); } List<Fax> listFax = new List<Fax>(); if (!String.IsNullOrEmpty(fax)) { Fax faxDB = new Fax(); faxDB.Value = fax; faxDB.FaxType = faxType; faxDB.FaxTypeId = faxType.Id; listFax.Add(faxDB); } contact = new CMData.Contact(); contact.AccountId = account.Id; contact.FirstName = first_name; contact.LastName = last_name; contact.MiddleName = middle_name; contact.Emails = listEmail; contact.Faxes = listFax; listContact.Add(contact); } result = AddOrUpdateContact(listContact, accTypeName, mode); return result; }
private FileImportResult AddOrUpdateContact(List<CMData.Contact> listContact, string accTypeName, DuplicateContactMode mode) { FileImportResult result = new FileImportResult(); int moreContactCount = listContact.Count(); int currentContactNumber = dbManager.GetTotalContactCount(); int totalContact = currentContactNumber + moreContactCount; if (totalContact > ContactDB.MAX_CONTACT && totalContact <= ContactDB.MAX_LIMITATION) { result.errorCode = CODE_FILE_EXCEED_CURRENT_LIMITATION; result.downloaded = totalContact; return result; } if(totalContact > ContactDB.MAX_LIMITATION) { result.errorCode = CODE_FILE_EXCEED_MAXIMUM; return result; } int applied = dbManager.AddOrUpdateContactsFromAccount(listContact, accTypeName, mode); result.downloaded = listContact.Count(); result.applied = applied; return result; }
public FileImportResult ImportFromCSV(string data, DuplicateContactMode mode) { FileImportResult result = new FileImportResult(); //get db EmailType emailType = dbManager.GetPreferredEmailTypeByAccountTypeNameEF(AccountTypeDB.TYPE_CSV_STRING); FaxType faxType = dbManager.GetPreferredFaxTypeByAccountTypeNameEF(AccountTypeDB.TYPE_CSV_STRING); Account account = dbManager.GetCSVAccountEF(); string accTypeName = AccountTypeDB.TYPE_CSV_STRING; //split stream from file string[] contactSplits = data.Split(new string[] { "\r", "\r\n", "\n" }, StringSplitOptions.None); var CSVHeader = contactSplits[0].Split(new char[] { ',' }).ToList().Select(n => GroupDB.TrimSpace(GroupDB.RemoveControlChars(n)).ToLower()).ToList(); //define var int size = contactSplits.Count(); List<CMData.Contact> listContact = new List<CMData.Contact>(); //header index int IdFirstName = -1; int IdLastName = -1; int IdMidName = -1; int IdFullName = -1; int IdFax = -1; int IdEmail = -1; //check header //step 1: first last mid IdFirstName = CSVHeader.FindIndex(n => n.Equals("first name") || n.Equals("first") || n.Equals("first_name")); IdLastName = CSVHeader.FindIndex(n => n.Equals("last name") || n.Equals("last") || n.Equals("last_name")); IdMidName = CSVHeader.FindIndex(n => n.Equals("middle name") || n.Equals("middle") || n.Equals("middle_name")); //step 2: fullname if(IdFirstName < 0 && IdLastName < 0 && IdMidName < 0) { IdFullName = CSVHeader.FindIndex(n => n.Equals("full name") || n.Equals("name") || n.Equals("full_name") || n.Equals("fullname")); } //step3: Email & Fax if(IdFirstName >= 0 || IdLastName >= 0 || IdMidName >= 0 || IdFullName >= 0) { IdEmail = CSVHeader.FindIndex(n => n.Equals("email address") || n.Equals("email_address") || n.Equals("e-mail_address") || n.Equals("e-mail") || n.Equals("email") || n.Equals("home email") || n.Equals("home_email") || n.Equals("work email") || n.Equals("work_email") || n.Equals("personal email") || n.Equals("personal_email")); IdFax = CSVHeader.FindIndex(n => n.Equals("fax number") || n.Equals("fax_number") || n.Equals("business fax") || n.Equals("business_fax") || n.Equals("fax") || n.Equals("home fax") || n.Equals("home_fax") || n.Equals("work fax") || n.Equals("work_fax")); } else { result.errorCode = FileImExportController.CODE_FILE_STRUCTURE_NOT_SUITABLE; return result; } //parse data fore each row // i=0 is headers row for (int i = 1; i < size; i++) { string bareData = contactSplits[i]; var valueSplits = splitCSVLine(bareData); var maxColumnIndex = valueSplits.Count() - 1; if (valueSplits.Count() < 1) continue; var valueFullName = String.Empty; var valueLastName = String.Empty; var valueFirstName = String.Empty; var valueMidName = String.Empty; var valueEmail = String.Empty; var valueFax = String.Empty; //parse //get full name or detail FLM name if (IdFullName >= 0) { if(IdFullName > maxColumnIndex) { continue; } valueFullName = valueSplits.ElementAt(IdFullName); if (string.IsNullOrEmpty(valueFullName)) //specify full name, but it's empty continue; var cv = new ContactView(); cv.Name = valueFullName; cv.SplitFirstLastMidFromFullName(ContactDB.NAME_ORDER_FIRST_LAST_MID); valueFirstName = cv.FirstName; valueLastName = cv.LastName; valueMidName = cv.MiddleName; } else { if(IdFirstName >= 0 && IdFirstName <= maxColumnIndex) valueFirstName = valueSplits.ElementAt(IdFirstName); if (IdLastName >= 0 && IdLastName <= maxColumnIndex) valueLastName = valueSplits.ElementAt(IdLastName); if (IdMidName >= 0 && IdMidName <= maxColumnIndex) valueMidName = valueSplits.ElementAt(IdMidName); } //get Fax, Email if (IdEmail >= 0 && IdEmail <= maxColumnIndex) valueEmail = valueSplits.ElementAt(IdEmail); if (IdFax >= 0 && IdFax <= maxColumnIndex) valueFax = valueSplits.ElementAt(IdFax); //check to skip row when specify FLM name, but they're empty if (String.IsNullOrEmpty(valueFirstName) && String.IsNullOrEmpty(valueLastName) && String.IsNullOrEmpty(valueMidName)) { continue; } //Mapping Email / Fax List<Email> listEmail = new List<Email>(); if (!String.IsNullOrEmpty(valueEmail)) { Email em = new Email(); em.Value = valueEmail; em.EmailType = emailType; em.EmailTypeId = emailType.Id; listEmail.Add(em); } List<Fax> listFax = new List<Fax>(); if (!String.IsNullOrEmpty(valueFax)) { Fax faxDB = new Fax(); faxDB.Value = valueFax; faxDB.FaxType = faxType; faxDB.FaxTypeId = faxType.Id; listFax.Add(faxDB); } //Create Contact obj CMData.Contact contact; contact = new CMData.Contact(); contact.AccountId = account.Id; contact.FirstName = valueFirstName; contact.LastName = valueLastName; contact.MiddleName = valueMidName; contact.Emails = listEmail; contact.Faxes = listFax; listContact.Add(contact); } //write to DB result = AddOrUpdateContact(listContact, accTypeName, mode); return result; }
public async System.Threading.Tasks.Task<FileImportResult> ImportFromVCFFile(StorageFile file, DuplicateContactMode mode) { FileImportResult result = new FileImportResult(); try { isVCFFormat = false; var randomAccessStream = await file.OpenReadAsync(); Stream stream = randomAccessStream.AsStreamForRead(); using (StreamReader reader = new StreamReader(stream)) { do { string line = reader.ReadLine(); // Do something with line GetContacts(line); if(!isVCFFormat) { result.errorCode = FileImExportController.CODE_FILE_STRUCTURE_NOT_SUITABLE; reader.Dispose(); contactVCF = null; return result; } } while (reader.Peek() != -1); reader.Dispose(); if(contactVCF != null) { contactVCF.Emails = formatEmailTypeForImportVCF(contactVCF.Emails); string accTypeName = AccountTypeD.TYPE_VCF_STRING; List<CMData.Contact> list = new List<CMData.Contact> { contactVCF }; result = AddOrUpdateContact(list, accTypeName, mode); contactVCF = null; } return result; } } catch (Exception e) { result.errorCode = CODE_FILE_IN_USE; return result; } }
public bool UpdateListContact(ContactView contact, DuplicateContactMode mode, string groupName) { UpdateFlag(); var contacts = CheckDuplicateContact(contact, groupName); switch (mode) { case DuplicateContactMode.ALLOW_ADD_NEW: if (groupName == string.Empty) { if (contact.Id == 0) { contact.Id = ++currentPrinterMaxID; listContact_EF.Add(contact); AddToJsonList(contact, MyUtils.ADD); } } break; case DuplicateContactMode.DO_NOT_IMPORT: if (groupName != string.Empty && contacts.Count != 0) { return false; } if (groupName == string.Empty && contacts.Count == 0) { if (contact.Id == 0) { contact.Id = ++currentPrinterMaxID; listContact_EF.Add(contact); AddToJsonList(contact, MyUtils.ADD); } } if(contacts.Count != 0) { return false; } break; case DuplicateContactMode.REPLACE_WITH_NEW_ITEM: if (groupName != string.Empty) { foreach (var item in contacts) { var groupArr = item.Group.Split(';').ToList(); var list = groupArr.Where(l => !l.Equals(groupName)); var result = string.Join(";", list.Where(g => !g.Equals(string.Empty)).Select(l => l.ToString())); var contactUpate = listContact_EF.FirstOrDefault(l => l.Id.Equals(item.Id)); contactUpate.Group = result; AddToJsonList(contactUpate, MyUtils.UPDATE); } } else { if (contacts.Count != 0) { foreach (var item in contacts) { var data = listContact_EF.FirstOrDefault(l => l.Id.Equals(item.Id)); data.Name = contact.Name; data.Group = contact.Group; data.ImportedFrom = contact.ImportedFrom; AddToJsonList(data, MyUtils.UPDATE); } } else { if (contact.Id == 0) { contact.Id = ++currentPrinterMaxID; listContact_EF.Add(contact); AddToJsonList(contact, MyUtils.ADD); } } } break; default: break; } if (contact.Id != 0) { var data = listContact_EF.FirstOrDefault(l => l.Id.Equals(contact.Id)); data.Name = contact.Name; data.FirstName = contact.FirstName; data.LastName = contact.LastName; data.MiddleName = contact.MiddleName; data.EmailAddress = contact.EmailAddress; data.Fax = contact.Fax; data.Group = contact.Group; AddToJsonList(data, MyUtils.UPDATE); UpdateListGroupName(); UC_AddressBook.Instance.UpdateCountContactPrinter(listContact_EF.Count()); UC_AddressBook.Instance.UpdateCountContactItemMenu(); return true; } if (groupName != string.Empty) { var data = listContact_EF.FirstOrDefault(l => l.Id.Equals(contact.Id)); data.Group = contact.Group; AddToJsonList(contact, MyUtils.UPDATE); } UpdateListGroupName(); UC_AddressBook.Instance.UpdateCountContactPrinter(listContact_EF.Count()); UC_AddressBook.Instance.UpdateCountContactItemMenu(); return true; }
public void UpdateListFromLocalContact(List<ContactView> list, DuplicateContactMode mode, string groupName) { var result = false; foreach (ContactView c in list) { //c.Id = ++currentPrinterMaxID; if (UpdateListContact(c, mode, groupName)) result = true; } UpdateListGroupName(); if (result) { var save_success = UC_AddressBook.ResourcesStringLoader.GetString("NOTIFY-Message-SaveSuccess"); succeededMessage = save_success; } isReload = true; isResumeSelectContacts = false; }
private void radio_btn_do_not_import_Click(object sender, RoutedEventArgs e) { this.radio_btn_do_not_import.IsChecked = true; contactMode = DuplicateContactMode.DO_NOT_IMPORT; }
private void radio_btn_allow_duplicate_Click(object sender, RoutedEventArgs e) { this.radio_btn_allow_duplicate.IsChecked = true; contactMode = DuplicateContactMode.ALLOW_ADD_NEW; }
private void radio_btn_replace_with_new_Click(object sender, RoutedEventArgs e) { this.radio_btn_replace_with_new.IsChecked = true; contactMode = DuplicateContactMode.REPLACE_WITH_NEW_ITEM; }