Ejemplo n.º 1
0
        private void ImportLayPastors(OleDbConnection cn)
        {
            // IMPORTANT: THINK ABOUT HOW THE LayPastorID IS RELATED TO THE OTHER TABLES,
            //     WE NEED TO MAP THEIR OLD ID WITH THEIR NEW ONE

            // Lay Pastors
            // ****************************************************
            // The Lay Pastors table are used like Teams, not individual members, for many churches
            // Some churches use this table for individual members.

            /*
             *  LayPastorID (pk)
             *  Lay Pastor (Lay Pastor's name)
             *  LP Initials (Lay Pastor's initials)
             *  Current (active/inactive)
             *  Email
             *  Phone
             */

            var sql = @"SELECT *
                        FROM [Lay Pastors];";

            using (var cmd = new OleDbCommand(sql, cn))
            {
                using (var reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var pastor = new LayPastor();
                        pastor.LayPastorID   = reader.ValueOrDefault <int>("LayPastorID", 0);
                        pastor.LayPastorName = reader.ValueOrDefault <string>("Lay Pastor", "");
                        pastor.Initials      = reader.ValueOrDefault <string>("LP Initials", "");
                        pastor.Current       = reader.ValueOrDefault <bool>("Current", false);
                        pastor.Email         = reader.ValueOrDefault <string>("Email", "");
                        pastor.Phone         = reader.ValueOrDefault <string>("Phone", "");
                        this.layPastors.Add(pastor);
                    }
                }
            }

            // new soulwinning teams out of each of the lay pastor records
            foreach (var pastor in this.layPastors)
            {
                var team = new Core.Models.Team.Team();
                team.Id                     = 0;
                team.Name                   = pastor.LayPastorName; // this is the team name for many churches, but an actualy member name for others
                team.Desc                   = $"Soulwinning Team for {church.Name}".Trim();
                team.ChurchId               = church.id;
                team.TeamTypeEnumId         = 69; // Evangelistic
                team.TeamPositionEnumTypeId = 16; // TeamType
                team.Comment                = "";

                var teamResult = this.teamRepo.SaveTeam(team);

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

                pastor.IdentityId = teamResult.Entity.Id; // this will be a TeamId
            }

            // add member. - keep, because we may add a feature where they can specify which type of data the table contains:  teams or individual members that are lay pastors

            /*
             * foreach (var pastor in this.layPastors)
             * {
             *  var member = new NewMember();
             *  member.ChurchId = this.church.id;
             *  member.FirstName = pastor.LayPastorName;
             *  member.City = this.church.City;
             *  member.Line1 = this.church.Address;
             *  member.State = this.church.State;
             *  member.Zip = this.church.Zip;
             *  member.Phone = this.factory.ParseNumber(pastor.Phone);
             *
             *  var memberResult = this.memberRepo.Add(member);
             *
             *  pastor.IdentityId = memberResult.Entity.id;
             *
             *  this.SaveTeammate(pastor.IdentityId, 102); // Lay Pastor
             * }
             */
        }
Ejemplo n.º 2
0
        private void ImportChurchInfo(OleDbConnection cn)
        {
            var sql = @"SELECT [Church Info].*
                        FROM [Church Info];";

            var churchInfoList = new List <ChurchInfo>();

            using (var cmd = new OleDbCommand(sql, cn))
            {
                using (var reader = cmd.ExecuteReader())
                {
                    if (!reader.HasRows)
                    {
                        throw new Exception("Church Info table empty");
                    }

                    while (reader.Read())
                    {
                        var churchInfo = new ChurchInfo();
                        churchInfo.PastorName = reader.ValueOrDefault <string>("Pastor", "");
                        churchInfo.Address    = reader.ValueOrDefault <string>("Address", "");
                        churchInfo.City1      = reader.ValueOrDefault <string>("City1", "");
                        churchInfo.State      = reader.ValueOrDefault <string>("State", "");
                        churchInfo.Zip1       = reader.ValueOrDefault <string>("Zip1", "");
                        churchInfo.Phone      = reader.ValueOrDefault <string>("Phone", "");
                        churchInfoList.Add(churchInfo);
                    }
                }
            }

            var ci = churchInfoList.FirstOrDefault();

            var church = factory.CreateChurch(ci);

            var result = this.churchRepo.Add(church);

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

            this.church = result.Entity;

            // add member
            var member = new NewMember();

            member.ChurchId  = this.church.id;
            member.FirstName = ci.PastorName;
            member.City      = ci.City1;
            member.Line1     = ci.Address;
            member.State     = ci.State;
            member.Zip       = ci.Zip1;

            if (string.IsNullOrWhiteSpace(member.FirstName))
            {
                var msg = $"First Name is null from [Church Info] table.  " +
                          $"ChurchId:  { this.church.id }.  " +
                          $"City1: { ci.City1 }.  ";

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

            var memberResult = this.memberRepo.Add(member);

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

            member.id = memberResult.Entity.id;

            // create team
            var team = new Core.Models.Team.Team();

            team.Id                     = 0;
            team.Name                   = church.Name + " Pastoral Team";
            team.Desc                   = "Pastoral Team for " + church.Name;
            team.ChurchId               = church.id;
            team.TeamTypeEnumId         = 68;
            team.TeamPositionEnumTypeId = 17;
            team.Comment                = "";

            var teamResult = this.teamRepo.SaveTeam(team);

            if (teamResult.Status == RepositoryActionStatus.Error)
            {
                LogError(teamResult.Exception, Core.Framework.LogLevel.Warning);
                return;
            }

            this.pastoralTeam = teamResult.Entity;

            // create teammate
            this.SaveTeammate(member.id, this.pastoralTeam.Id, 70); // Pastor
        }