public override void Execute() { string name = string.Empty; try { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] Loading users.", IsError = false }); ConcurrentBag <ERecentUserList> recentList = new ConcurrentBag <ERecentUserList>(); ConcurrentBag <MEContact> contacts; using (ContactMongoContext cctx = new ContactMongoContext(Contract)) { contacts = new ConcurrentBag <MEContact>(cctx.Contacts.Collection.FindAllAs <MEContact>().ToList()); } Parallel.ForEach(contacts, contact => //foreach (MEContact contact in contacts)//.Where(t => !t.DeleteFlag)) { name = contact.LastName + ", " + contact.FirstName; if (contact.PatientId == null) { try { ParameterCollection parms = new ParameterCollection(); parms.Add(new Parameter("@MongoID", contact.Id.ToString(), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@ResourceId", (string.IsNullOrEmpty(contact.ResourceId) ? string.Empty : contact.ResourceId), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@FirstName", (string.IsNullOrEmpty(contact.FirstName) ? string.Empty : contact.FirstName), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@LastName", (string.IsNullOrEmpty(contact.LastName) ? string.Empty : contact.LastName), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@PreferredName", (string.IsNullOrEmpty(contact.PreferredName) ? string.Empty : contact.PreferredName), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@Version", contact.Version, SqlDbType.Float, ParameterDirection.Input, 32)); parms.Add(new Parameter("@UpdatedBy", (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@LastUpdatedOn", contact.LastUpdatedOn ?? (object)DBNull.Value, SqlDbType.DateTime, ParameterDirection.Input, 50)); parms.Add(new Parameter("@RecordCreatedBy", (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@RecordCreatedOn", contact.RecordCreatedOn, SqlDbType.DateTime, ParameterDirection.Input, 50)); parms.Add(new Parameter("@Delete", (string.IsNullOrEmpty(contact.DeleteFlag.ToString()) ? string.Empty : contact.DeleteFlag.ToString()), SqlDbType.VarChar, ParameterDirection.Input, 50)); parms.Add(new Parameter("@TTLDate", contact.TTLDate ?? (object)DBNull.Value, SqlDbType.DateTime, ParameterDirection.Input, 50)); SQLDataService.Instance.ExecuteProcedure(Contract, true, "REPORT", "spPhy_RPT_SaveUser", parms); if (contact.RecentList != null) { foreach (var rec in contact.RecentList) { recentList.Add(new ERecentUserList { MongoId = rec.ToString(), MongoUserId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn }); } } } catch (Exception ex) { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] name: " + name + ": " + ex.Message + ": " + ex.StackTrace, IsError = true }); } } }); SaveSubcollection(recentList.ToList()); } catch (Exception ex) { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] LoadUsers():: name: " + name + ": " + ex.Message + ": " + ex.StackTrace, IsError = true }); } }
public override void Execute() { try { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] Loading contacts.", IsError = false }); ConcurrentBag <MEContact> contacts; ConcurrentBag <EContact> econtacts = new ConcurrentBag <EContact>(); ConcurrentBag <EAddress> eAddresses = new ConcurrentBag <EAddress>(); ConcurrentBag <EEmail> eEmails = new ConcurrentBag <EEmail>(); ConcurrentBag <ELanguage> eLanguage = new ConcurrentBag <ELanguage>(); ConcurrentBag <EMode> eMode = new ConcurrentBag <EMode>(); ConcurrentBag <EPhone> ePhone = new ConcurrentBag <EPhone>(); ConcurrentBag <ETimeOfDay> eTimeOfDays = new ConcurrentBag <ETimeOfDay>(); ConcurrentBag <EWeekDay> eWeekDays = new ConcurrentBag <EWeekDay>(); ConcurrentBag <ERecentList> eRecentList = new ConcurrentBag <ERecentList>(); using (ContactMongoContext cmctx = new ContactMongoContext(Contract)) { contacts = new ConcurrentBag <MEContact>(cmctx.Contacts.Collection.FindAllAs <MEContact>().ToList()); } Parallel.ForEach(contacts, contact => { try { econtacts.Add( new EContact { MongoPatientId = contact.PatientId.ToString(), MongoId = contact.Id.ToString(), ResourceId = contact.ResourceId, FirstName = contact.FirstName, MiddleName = contact.MiddleName, LastName = contact.LastName, PreferredName = contact.PreferredName, Gender = contact.Gender, Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = contact.UpdatedBy.ToString(), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = contact.RecordCreatedBy.ToString(), RecordCreatedOn = contact.RecordCreatedOn, Delete = contact.DeleteFlag.ToString(), MongoTimeZone = contact.TimeZoneId.ToString(), TTLDate = contact.TTLDate } ); if (contact.Addresses != null) { foreach (var address in contact.Addresses) { eAddresses.Add( new EAddress { MongoId = (string.IsNullOrEmpty(address.Id.ToString()) ? string.Empty : address.Id.ToString()), MongoCommTypeId = (string.IsNullOrEmpty(address.TypeId.ToString()) ? string.Empty : address.TypeId.ToString()), Line1 = (string.IsNullOrEmpty(address.Line1) ? string.Empty : address.Line1), Line2 = (string.IsNullOrEmpty(address.Line2) ? string.Empty : address.Line2), Line3 = (string.IsNullOrEmpty(address.Line3) ? string.Empty : address.Line3), City = (string.IsNullOrEmpty(address.City) ? string.Empty : address.City), MongoStateId = (string.IsNullOrEmpty(address.StateId.ToString()) ? string.Empty : address.StateId.ToString()), PostalCode = (string.IsNullOrEmpty(address.PostalCode) ? string.Empty : address.PostalCode), Preferred = (string.IsNullOrEmpty(address.Preferred.ToString()) ? string.Empty : address.Preferred.ToString()), OptOut = (string.IsNullOrEmpty(address.OptOut.ToString()) ? string.Empty : address.OptOut.ToString()), Delete = (string.IsNullOrEmpty(address.DeleteFlag.ToString()) ? string.Empty : address.DeleteFlag.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate } ); } } if (contact.Emails != null) { foreach (var email in contact.Emails) { eEmails.Add(new EEmail { MongoId = (string.IsNullOrEmpty(email.Id.ToString()) ? string.Empty : email.Id.ToString()), MongoCommTypeId = (string.IsNullOrEmpty(email.TypeId.ToString()) ? string.Empty : email.TypeId.ToString()), Text = (string.IsNullOrEmpty(email.Text) ? string.Empty : email.Text), Preferred = (string.IsNullOrEmpty(email.Preferred.ToString()) ? string.Empty : email.Preferred.ToString()), OptOut = (string.IsNullOrEmpty(email.OptOut.ToString()) ? string.Empty : email.OptOut.ToString()), Delete = (string.IsNullOrEmpty(email.DeleteFlag.ToString()) ? string.Empty : email.DeleteFlag.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.Languages != null) { foreach (var lang in contact.Languages) { eLanguage.Add(new ELanguage { MongoLanguageLookUpId = (string.IsNullOrEmpty(lang.LookUpLanguageId.ToString()) ? string.Empty : lang.LookUpLanguageId.ToString()), Preferred = (string.IsNullOrEmpty(lang.Preferred.ToString()) ? string.Empty : lang.Preferred.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.Modes != null) { foreach (var mode in contact.Modes) { eMode.Add(new EMode { MongoCommModeId = (string.IsNullOrEmpty(mode.ModeId.ToString()) ? string.Empty : mode.ModeId.ToString()), Preferred = (string.IsNullOrEmpty(mode.Preferred.ToString()) ? string.Empty : mode.Preferred.ToString()), OptOut = (string.IsNullOrEmpty(mode.OptOut.ToString()) ? string.Empty : mode.OptOut.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.Phones != null) { foreach (Phone phone in contact.Phones) { ePhone.Add(new EPhone { MongoId = (string.IsNullOrEmpty(phone.Id.ToString()) ? string.Empty : phone.Id.ToString()), MongoCommTypeId = (string.IsNullOrEmpty(phone.TypeId.ToString()) ? string.Empty : phone.TypeId.ToString()), Number = (string.IsNullOrEmpty(phone.Number.ToString()) ? string.Empty : phone.Number.ToString()), IsText = (string.IsNullOrEmpty(phone.IsText.ToString()) ? string.Empty : phone.IsText.ToString()), PhonePreferred = (string.IsNullOrEmpty(phone.PreferredPhone.ToString()) ? string.Empty : phone.PreferredPhone.ToString()), TextPreferred = (string.IsNullOrEmpty(phone.PreferredText.ToString()) ? string.Empty : phone.PreferredText.ToString()), OptOut = (string.IsNullOrEmpty(phone.OptOut.ToString()) ? string.Empty : phone.OptOut.ToString()), Delete = (string.IsNullOrEmpty(phone.DeleteFlag.ToString()) ? string.Empty : phone.DeleteFlag.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.TimesOfDays != null) { foreach (var tod in contact.TimesOfDays) { eTimeOfDays.Add(new ETimeOfDay { MongoTimeOfDayId = (string.IsNullOrEmpty(tod.ToString()) ? string.Empty : tod.ToString()), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.WeekDays != null) { foreach (var wd in contact.WeekDays) { eWeekDays.Add(new EWeekDay { WeekDay = wd, MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn, TTLDate = contact.TTLDate }); } } if (contact.RecentList != null) { foreach (ObjectId rec in contact.RecentList) { eRecentList.Add(new ERecentList { MongoId = rec.ToString(), MongoContactId = (string.IsNullOrEmpty(contact.Id.ToString()) ? string.Empty : contact.Id.ToString()), Version = Convert.ToInt32(contact.Version), MongoUpdatedBy = (string.IsNullOrEmpty(contact.UpdatedBy.ToString()) ? string.Empty : contact.UpdatedBy.ToString()), LastUpdatedOn = contact.LastUpdatedOn, MongoRecordCreatedBy = (string.IsNullOrEmpty(contact.RecordCreatedBy.ToString()) ? string.Empty : contact.RecordCreatedBy.ToString()), RecordCreatedOn = contact.RecordCreatedOn }); } } } catch (Exception ex) { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] " + ex.Message + ": " + ex.StackTrace, IsError = true }); } }); SaveContact(econtacts.ToList()); SaveAddress(eAddresses.ToList()); SaveEmail(eEmails.ToList()); SaveLanguage(eLanguage.ToList()); SaveMode(eMode.ToList()); SavePhone(ePhone.ToList()); SaveTOD(eTimeOfDays.ToList()); SaveWeekDay(eWeekDays.ToList()); SaveRecentList(eRecentList.ToList()); } catch (Exception ex) { OnDocColEvent(new ETLEventArgs { Message = "[" + Contract + "] LoadContacts():Error" + ex.Message + ": " + ex.StackTrace, IsError = true }); } }