예제 #1
0
        private void ImportSoulwinners(OleDbConnection cn)
        {
            var sql = @"SELECT [Soul Winners].SWID, [Soul Winners].SWLSNM, [Soul Winners].SWFSNM, [Soul Winners].SWMDNM, [Soul Winners].SWGNNM, [Soul Winners].SWNMCB, [Soul Winners].SWHERE, [Soul Winners].SWGNDR, [Soul Winners].SWMNSTR, [Soul Winners].SWLPST, [Soul Winners].SWACTV, [Soul Winners].SWMRRD, [Soul Winners].SWSPSE, [Soul Winners].SWSPTNR, [Soul Winners].SWLPTR, [Soul Winners].SWDOOR, [Soul Winners].SWCASUAL, [Soul Winners].SWPHN, [Soul Winners].EMAIL
                        FROM [Soul Winners];";

            using (var cmd = new OleDbCommand(sql, cn))
            {
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var member = new Soulwinner();
                        member.SoulwinnerId    = reader.ValueOrDefault <int>("SWID", 0);
                        member.FirstName       = reader.ValueOrDefault <string>("SWFSNM", "");
                        member.MiddleName      = reader.ValueOrDefault <string>("SWMDNM", "");
                        member.LastName        = reader.ValueOrDefault <string>("SWLSNM", "");
                        member.Generation      = reader.ValueOrDefault <string>("SWGNNM", "");
                        member.IsLayPastor     = reader.ValueOrDefault <bool>("SWLPST", false);
                        member.IsMinister      = reader.ValueOrDefault <bool>("SWMNSTR", false);
                        member.Gender          = reader.ValueOrDefault <string>("SWGNDR", "");
                        member.IsHere          = reader.ValueOrDefault <bool>("SWHERE", false);
                        member.IsActive        = reader.ValueOrDefault <bool>("SWACTV", false);
                        member.MarriedStatus   = reader.ValueOrDefault <string>("SWMRRD", ""); // (M)arried, (O)ther or (S)ingle
                        member.SpouseName      = reader.ValueOrDefault <string>("SWSPSE", "");
                        member.IsSpousePartner = reader.ValueOrDefault <bool>("SWSPTNR", false);
                        member.LayPastorId     = reader.ValueOrDefault <int>("SWLPTR", 0);
                        member.IsDoorToDoor    = reader.ValueOrDefault <bool>("SWDOOR", false);
                        member.IsCasualStatus  = reader.ValueOrDefault <bool>("SWCASUAL", false);
                        member.Email           = reader.ValueOrDefault <string>("EMAIL", "");
                        member.PhoneNumber     = reader.ValueOrDefault <string>("SWPHN", "");

                        this.soulwinners.Add(member);
                    }
                }
            }

            foreach (var soulwinner in this.soulwinners)
            {
                var comments = string.Empty;

                // create member profile
                var memberProfile = new MemberProfile();
                memberProfile.FirstName  = soulwinner.FirstName;
                memberProfile.MiddleName = soulwinner.MiddleName;
                memberProfile.LastName   = soulwinner.LastName;
                memberProfile.Gender     = soulwinner.Gender;
                memberProfile.StatusId   = soulwinner.IsActive ? 49 : 51;           // 49 = Active, 51 = Inactive
                //memberProfile.MemberStatusEnumType = soulwinner.IsActive ? 49 : 51; // 49 = Active, 51 = Inactive
                memberProfile.MemberTypeEnumId   = soulwinner.IsMinister ? 64 : 62; // 64 = minister, 62 = member
                memberProfile.Married            = soulwinner.MarriedStatus == "M"; // (M)arried, (O)ther or (S)ingle   They are either married or they are not
                memberProfile.IsHere             = soulwinner.IsHere;
                memberProfile.ChurchId           = this.church.id;
                memberProfile.LanguageTypeEnumId = 107; // default to English

                if (!string.IsNullOrWhiteSpace(soulwinner.SpouseName))
                {
                    comments = $"Spouse:  {soulwinner.SpouseName}, " + (soulwinner.IsSpousePartner ? "Is soulwinning partner" : "Is not soulwinning partner");
                }

                memberProfile.Comments = comments;  // last before saving

                if (string.IsNullOrWhiteSpace(memberProfile.FirstName) &&
                    string.IsNullOrWhiteSpace(memberProfile.MiddleName) &&
                    string.IsNullOrWhiteSpace(memberProfile.LastName))
                {
                    var msg = $"First, Middle, and Last Name are all null from [Soul Winners] table.  " +
                              $"ChurchId:  { this.church.id }.  " +
                              $"SWID: { soulwinner.SoulwinnerId }.  " +
                              $"Here are the comments: { memberProfile.Comments }";

                    var x = new Exception(msg);
                    LogError(x, Core.Framework.LogLevel.Warning);
                    continue;
                }

                var result = this.memberRepo.SaveProfile(memberProfile);

                if (result.Status == RepositoryActionStatus.Error)
                {
                    LogError(result.Exception, Core.Framework.LogLevel.Error);
                    continue;
                }

                soulwinner.IdentityId = result.Entity.MemberId;

                this.importRepo.SaveImportMember(this.accessDbFilePathId, soulwinner.IdentityId, soulwinner.SoulwinnerId, (int)AccessDbTableType.Soulwinners);

                // Save the addresses after the profile is saved, because they don't get saved with the profile
                this.SaveEmail(soulwinner.IdentityId, soulwinner.Email);

                this.SavePhone(soulwinner.IdentityId, soulwinner.PhoneNumber);

                // Save Teammate
                var layPastor = this.layPastors.FirstOrDefault(lp => lp.LayPastorID == soulwinner.LayPastorId);
                if (layPastor != null)
                {
                    var team = new Core.Models.Members.Team {
                        TeamId = layPastor.IdentityId, MemberId = soulwinner.IdentityId
                    };
                    memberProfile.TeamList.Add(team);

                    var positionEnumId = soulwinner.IsLayPastor ? 74 : 75;                                            // 75 = soulwinner, 74 = TeamLeader

                    var teamStatusTypeEnumId = soulwinner.IsDoorToDoor ? 103 : soulwinner.IsCasualStatus ? 104 : 105; // 103 Door to Door, 104 Casual, 105 Inactive

                    this.SaveTeammate(soulwinner.IdentityId, layPastor.IdentityId, positionEnumId, teamStatusTypeEnumId);
                }
            }
        }
예제 #2
0
        public MemberProfile GetProfile(int id, int churchId)
        {
            MemberProfile member = null;

            var proc = "GetMemberProfile";

            using (var cn = new SqlConnection(_executor.ConnectionString))
                using (var cmd = new SqlCommand(proc, cn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("memberId", id);
                    cmd.Parameters.AddWithValue("churchId", churchId);

                    cn.Open();

                    using (var reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            reader.Read();

                            // member info
                            member                       = new MemberProfile();
                            member.MemberId              = reader.ValueOrDefault <int>("IdentityID");
                            member.FirstName             = reader.ValueOrDefault("FirstName", string.Empty);
                            member.MiddleName            = reader.ValueOrDefault("MiddleName", string.Empty);
                            member.LastName              = reader.ValueOrDefault("LastName", string.Empty);
                            member.PreferredName         = reader.ValueOrDefault("PreferredName", string.Empty);
                            member.Gender                = reader.ValueOrDefault("Gender", string.Empty);
                            member.Married               = reader.ValueOrDefault <bool>("Married", false);
                            member.Veteran               = reader.ValueOrDefault <bool>("Veteran", false);
                            member.IsHere                = reader.ValueOrDefault <bool>("IsHere", true);
                            member.BirthDate             = reader.ValueOrDefault <DateTime?>("DateOfBirth", null);
                            member.DateSaved             = reader.ValueOrDefault <DateTime?>("DateSaved", null);
                            member.DateBaptizedHolyGhost = reader.ValueOrDefault <DateTime?>("DateBaptizedHolyGhost", null);
                            member.DateBaptizedWater     = reader.ValueOrDefault <DateTime?>("DateBaptizedWater", null);
                            member.ChurchId              = reader.ValueOrDefault <int>("ChurchId", 0);
                            member.ChurchName            = reader["ChurchName"].ToString();
                            member.StatusId              = reader.ValueOrDefault <int>("StatusId", 0);
                            member.StatusDesc            = reader.ValueOrDefault("StatusDesc", string.Empty);
                            member.StatusChangeTypeId    = reader.ValueOrDefault <int>("StatusChangeTypeId", 0);
                            member.StatusChangeTypeDesc  = reader.ValueOrDefault("StatusChangeTypeDesc", string.Empty);
                            member.SponsorId             = reader.ValueOrDefault <int>("SponsorId", 0);
                            member.Sponsor               = reader.ValueOrDefault("Sponsor", string.Empty);
                            member.Comments              = reader.ValueOrDefault("Comment", string.Empty);
                            member.MemberTypeEnumId      = reader.ValueOrDefault <int>("MemberTypeEnumID", 0);
                            member.Suffix                = reader.ValueOrDefault("Suffix", string.Empty);
                            member.HasBeenBaptized       = reader.ValueOrDefault <bool>("HasBeenBaptized", false);
                            member.LanguageTypeEnumId    = reader.ValueOrDefault <int>("LanguageTypeEnumId", 0);
                            member.NeedsPastoralVisit    = reader.ValueOrDefault <bool>("NeedsPastoralVisit", false);
                            member.AssociatePastorId     = reader.ValueOrDefault <int>("AssociatePastorId", 0);

                            // address info
                            reader.NextResult();
                            while (reader.Read())
                            {
                                var addy = new Address();
                                addy.ContactInfoId           = reader.ValueOrDefault <int>("ContactInfoID");
                                addy.ContactInfoType         = reader.ValueOrDefault <int>("ContactInfoTypeEnumID");
                                addy.ContactInfoLocationType = reader.ValueOrDefault <int>("ContactInfoLocationTypeEnumID");
                                addy.Preferred = reader.ValueOrDefault <bool>("Preferred");
                                addy.Verified  = reader.ValueOrDefault <bool>("Verified");
                                addy.Line1     = reader.ValueOrDefault <string>("Line1");
                                addy.Line2     = reader.ValueOrDefault <string>("Line2");
                                addy.Line3     = reader.ValueOrDefault <string>("Line3");
                                addy.City      = reader.ValueOrDefault <string>("City");
                                addy.State     = reader.ValueOrDefault <string>("State");
                                addy.Zip       = reader.ValueOrDefault <string>("Zip");

                                member.AddressList.Add(addy);
                            }

                            // phone info
                            reader.NextResult();
                            while (reader.Read())
                            {
                                var addy = new Phone();
                                addy.ContactInfoId           = reader.ValueOrDefault <int>("ContactInfoID");
                                addy.ContactInfoType         = reader.ValueOrDefault <int>("ContactInfoTypeEnumID");
                                addy.ContactInfoLocationType = reader.ValueOrDefault <int>("ContactInfoLocationTypeEnumID");
                                addy.Preferred   = reader.ValueOrDefault <bool>("Preferred");
                                addy.Verified    = reader.ValueOrDefault <bool>("Verified");
                                addy.PhoneNumber = reader.ValueOrDefault <string>("Number");
                                addy.PhoneType   = reader.ValueOrDefault <int>("PhoneTypeEnumID", 0); // cell phone, home phone, etc.

                                member.PhoneList.Add(addy);
                            }

                            // email info
                            reader.NextResult();
                            while (reader.Read())
                            {
                                var addy = new Email();
                                addy.ContactInfoId           = reader.ValueOrDefault <int>("ContactInfoID");
                                addy.ContactInfoType         = reader.ValueOrDefault <int>("ContactInfoTypeEnumID");
                                addy.ContactInfoLocationType = reader.ValueOrDefault <int>("ContactInfoLocationTypeEnumID");
                                addy.Preferred    = reader.ValueOrDefault <bool>("Preferred");
                                addy.Verified     = reader.ValueOrDefault <bool>("Verified");
                                addy.EmailAddress = reader.ValueOrDefault <string>("Email");

                                member.EmailList.Add(addy);
                            }

                            // Teams
                            reader.NextResult();
                            while (reader.Read())
                            {
                                var team = new Core.Models.Members.Team();
                                team.MemberId = reader.ValueOrDefault <int>("MemberId");
                                team.TeamId   = reader.ValueOrDefault <int>("TeamId");
                                team.TeamName = reader.ValueOrDefault <string>("TeamName");

                                member.TeamList.Add(team);
                            }

                            // Sponsors
                            reader.NextResult();
                            while (reader.Read())
                            {
                                var sponsor = new Sponsor();
                                sponsor.MemberId  = reader.ValueOrDefault <int>("MemberId");
                                sponsor.SponsorId = reader.ValueOrDefault <int>("SponsorId");
                                sponsor.FirstName = reader.ValueOrDefault <string>("FirstName");
                                sponsor.LastName  = reader.ValueOrDefault <string>("LastName");

                                member.SponsorList.Add(sponsor);
                            }

                            // attributes
                            //reader.NextResult();
                            //while (reader.Read())
                            //{
                            //    var attr = new CustomAttribute();
                            //    attr.IdentityID = reader.ValueOrDefault<int>("IdentityID");
                            //    attr.CustomAttrDefID = reader.ValueOrDefault<int>("CustomAttrDefID");
                            //    attr.Value = reader.ValueOrDefault<string>("Value", string.Empty);
                            //    attr.Name = reader.ValueOrDefault<string>("CustomAttrName", string.Empty);
                            //    attr.DataType = reader.ValueOrDefault<string>("DataType", string.Empty);
                            //    attr.AttrTypeEnumID = reader.ValueOrDefault<int>("AttrTypeEnumID");
                            //    attr.AttrTypeEnumDesc = reader.ValueOrDefault<string>("AttrTypeEnumDesc", string.Empty);
                            //    attr.IsEditable = reader.ValueOrDefault<bool>("IsEditable");

                            //    member.CustomAttributeList.Add(attr);
                            //}
                        }
                    }
                }

            return(member);
        }