Example #1
0
        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
                });
            }
        }
Example #2
0
        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
                });
            }
        }