public WorkerResultStatus ProcessVisitors(out string message, out int state) { Trace.Write("Starting FirstTimeVisitAssignments Agent...\n"); WorkerResultStatus workerResultStatus = WorkerResultStatus.Ok; message = string.Empty; state = STATE_OK; try { //groupAssignmentType = new AssignmentType(GroupVisitAssignmentType); //if (groupAssignmentType.AssignmentTypeId == -1) // throw new Exception("Invalid 'Neighborhood Group Assignment Type' setting"); childAssignmentType = new AssignmentType(ChildVisitAssignmentType); if (childAssignmentType.AssignmentTypeId == -1) { throw new Exception("Invalid 'Child Assignment Type' setting"); } juniorHighAssignmentType = new AssignmentType(JuniorHighVisitAssignmentType); if (juniorHighAssignmentType.AssignmentTypeId == -1) { throw new Exception("Invalid 'Junior High Assignment Type' setting"); } highSchoolAssignmentType = new AssignmentType(HighSchoolVisitAssignmentType); if (highSchoolAssignmentType.AssignmentTypeId == -1) { throw new Exception("Invalid 'High School Assignment Type' setting"); } adultAssignmentType = new AssignmentType(AdultVisitAssignmentType); if (adultAssignmentType.AssignmentTypeId == -1) { throw new Exception("Invalid 'Adult Assignment Type' setting"); } //groupFamilyIDField = GetAssignmentTypeField(groupAssignmentType, "Family ID"); //groupFirstVisitDateField = GetAssignmentTypeField(groupAssignmentType, "First Visit Date"); childFamilyIDField = GetAssignmentTypeField(childAssignmentType, "Family ID"); childFirstVisitDateField = GetAssignmentTypeField(childAssignmentType, "First Visit Date"); juniorHighFamilyIDField = GetAssignmentTypeField(juniorHighAssignmentType, "Family ID"); juniorHighFirstVisitDateField = GetAssignmentTypeField(juniorHighAssignmentType, "First Visit Date"); highSchoolFamilyIDField = GetAssignmentTypeField(highSchoolAssignmentType, "Family ID"); highSchoolFirstVisitDateField = GetAssignmentTypeField(highSchoolAssignmentType, "First Visit Date"); adultFamilyIDField = GetAssignmentTypeField(adultAssignmentType, "Family ID"); adultFirstVisitDateField = GetAssignmentTypeField(adultAssignmentType, "First Visit Date"); Lookup child = new Lookup(SystemLookup.FamilyRole_Child); DateTime beginDate = DateTime.Today.Date.AddDays(-DaysBack); ArrayList lst = new ArrayList(); lst.Add(new SqlParameter("@AttributeID", FirstTimeVisitAttributeID)); lst.Add(new SqlParameter("@BeginDate", beginDate)); //lst.Add(new SqlParameter("@GroupFamilyIDField", groupFamilyIDField.CustomFieldId)); lst.Add(new SqlParameter("@ChildFamilyIDField", childFamilyIDField.CustomFieldId)); lst.Add(new SqlParameter("@JuniorHighFamilyIDField", juniorHighFamilyIDField.CustomFieldId)); lst.Add(new SqlParameter("@HighSchoolFamilyIDField", highSchoolFamilyIDField.CustomFieldId)); lst.Add(new SqlParameter("@AdultFamilyIDField", adultFamilyIDField.CustomFieldId)); Arena.DataLayer.Organization.OrganizationData oData = new Arena.DataLayer.Organization.OrganizationData(); SqlDataReader rdr = oData.ExecuteReader("cust_ccv_recent_visitor_families", lst); while (rdr.Read()) { OccurrenceAttendanceCollection attendances = new OccurrenceAttendanceCollection(); //bool interestedInGroup = false; Family family = new Family((int)rdr["family_id"]); bool newFamily = true; int childCount = 0; int adultCount = 0; bool attendedHS = false; bool attendedJH = false; foreach (FamilyMember fm in family.FamilyMembers) { PersonAttribute pa = (PersonAttribute)fm.Attributes.FindByID(FirstTimeVisitAttributeID); if (pa != null && !pa.DateValue.IsEmptyDate() && pa.DateValue < beginDate) { newFamily = false; } if (newFamily) { if (fm.FamilyRole.LookupID == child.LookupID) { childCount++; } else { adultCount++; } //pa = (PersonAttribute)fm.Attributes.FindByID(InterestedInGroupAttributeID); //if (pa != null && pa.IntValue == 1) // interestedInGroup = true; ArrayList lstOccurrence = new ArrayList(); lstOccurrence.Add(new SqlParameter("@PersonID", fm.PersonID)); SqlDataReader rdrOccurrence = oData.ExecuteReader("cust_ccv_recent_visitor_first_checkin", lstOccurrence); if (rdrOccurrence.Read()) { if (((DateTime)rdrOccurrence["first_attended"]).Date >= beginDate) { OccurrenceAttendance oa = new OccurrenceAttendance((int)rdrOccurrence["occurrence_attendance_id"]); if (oa.Occurrence.OccurrenceType.OccurrenceTypeId == HighSchoolAttendanceTypeID) { attendedHS = true; } else if (oa.Occurrence.OccurrenceType.OccurrenceTypeId == JuniorHighAttendanceTypeID) { attendedJH = true; } attendances.Add(oa); } } rdrOccurrence.Close(); } } if (newFamily) { _regionalPastorID = -1; Assignment assignment = new Assignment(); assignment.Title = family.FamilyName; assignment.Description = BuildDescription(family, attendances); assignment.RequesterPersonId = family.FamilyHead.PersonID; //if (interestedInGroup) //{ // assignment.AssignmentTypeId = groupAssignmentType.AssignmentTypeId; // assignment.PriorityId = groupAssignmentType.DefaultPriorityId; // assignment.StatusId = groupAssignmentType.DefaultStatusId; // AssignmentFieldValue familyIDField = new AssignmentFieldValue(groupFamilyIDField.CustomFieldId); // familyIDField.SelectedValue = family.FamilyID.ToString(); // assignment.FieldValues.Add(familyIDField); // AssignmentFieldValue firstVisitDateField = new AssignmentFieldValue(groupFirstVisitDateField.CustomFieldId); // firstVisitDateField.SelectedValue = ((DateTime)rdr["first_visit"]).ToShortDateString(); // assignment.FieldValues.Add(firstVisitDateField); // if (_regionalPastorID != -1) // assignment.SubmitAssignmentEntry(childAssignmentType.Owner != null ? adultAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent", _regionalPastorID); // else // assignment.SubmitAssignmentEntry(childAssignmentType.Owner != null ? adultAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent"); //} //else //{ if (attendedHS) { assignment.AssignmentTypeId = highSchoolAssignmentType.AssignmentTypeId; assignment.PriorityId = highSchoolAssignmentType.DefaultPriorityId; AssignmentFieldValue familyIDField = new AssignmentFieldValue(highSchoolFamilyIDField.CustomFieldId); familyIDField.SelectedValue = family.FamilyID.ToString(); assignment.FieldValues.Add(familyIDField); AssignmentFieldValue firstVisitDateField = new AssignmentFieldValue(highSchoolFirstVisitDateField.CustomFieldId); firstVisitDateField.SelectedValue = ((DateTime)rdr["first_visit"]).ToShortDateString(); assignment.FieldValues.Add(firstVisitDateField); assignment.SubmitAssignmentEntry(highSchoolAssignmentType.Owner != null ? highSchoolAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent"); } else if (attendedJH) { assignment.AssignmentTypeId = juniorHighAssignmentType.AssignmentTypeId; assignment.PriorityId = juniorHighAssignmentType.DefaultPriorityId; AssignmentFieldValue familyIDField = new AssignmentFieldValue(juniorHighFamilyIDField.CustomFieldId); familyIDField.SelectedValue = family.FamilyID.ToString(); assignment.FieldValues.Add(familyIDField); AssignmentFieldValue firstVisitDateField = new AssignmentFieldValue(juniorHighFirstVisitDateField.CustomFieldId); firstVisitDateField.SelectedValue = ((DateTime)rdr["first_visit"]).ToShortDateString(); assignment.FieldValues.Add(firstVisitDateField); assignment.SubmitAssignmentEntry(highSchoolAssignmentType.Owner != null ? juniorHighAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent"); } else if (childCount == 0) { assignment.AssignmentTypeId = adultAssignmentType.AssignmentTypeId; assignment.PriorityId = adultAssignmentType.DefaultPriorityId; AssignmentFieldValue familyIDField = new AssignmentFieldValue(adultFamilyIDField.CustomFieldId); familyIDField.SelectedValue = family.FamilyID.ToString(); assignment.FieldValues.Add(familyIDField); AssignmentFieldValue firstVisitDateField = new AssignmentFieldValue(adultFirstVisitDateField.CustomFieldId); firstVisitDateField.SelectedValue = ((DateTime)rdr["first_visit"]).ToShortDateString(); assignment.FieldValues.Add(firstVisitDateField); assignment.SubmitAssignmentEntry(adultAssignmentType.Owner != null ? adultAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent"); } else if (adultCount > 0) { assignment.AssignmentTypeId = childAssignmentType.AssignmentTypeId; assignment.PriorityId = childAssignmentType.DefaultPriorityId; AssignmentFieldValue familyIDField = new AssignmentFieldValue(childFamilyIDField.CustomFieldId); familyIDField.SelectedValue = family.FamilyID.ToString(); assignment.FieldValues.Add(familyIDField); AssignmentFieldValue firstVisitDateField = new AssignmentFieldValue(childFirstVisitDateField.CustomFieldId); firstVisitDateField.SelectedValue = ((DateTime)rdr["first_visit"]).ToShortDateString(); assignment.FieldValues.Add(firstVisitDateField); assignment.SubmitAssignmentEntry(childAssignmentType.Owner != null ? childAssignmentType.Owner : family.FamilyHead, "FirstTimeVisitAssignment Agent"); } } } rdr.Close(); } catch (Exception ex) { workerResultStatus = WorkerResultStatus.Exception; message = "An error occured while processing First Time Visitor Assignments.\n\nMessage\n------------------------\n" + ex.Message + "\n\nStack Trace\n------------------------\n" + ex.StackTrace; } finally { } return(workerResultStatus); }
private bool CreateSandboxDatabase() { SqlConnection sql = null; SqlCommand sqlCommand; SqlDataReader rdr; String username = ArenaContext.Current.User.Identity.Name; String database = "ArenaSandbox_" + username; String dbVersion = ddlVersion.SelectedValue.Replace('.', '_'); IntPtr admin_token; // // Impersonate the logged in user. // try { Credentials creds = new Credentials(CurrentOrganization.OrganizationID, CredentialType.ActiveDirectory); if (LogonUser(creds.Username, AuthenticationDomain, creds.Password, 2, 0, out admin_token) != 0) { ImpersonateLoggedOnUser(admin_token); // // Open a connection to the SQL server. // sql = new SqlConnection("Data Source=refreshcacheare\\arena;Trusted_Connection=yes"); sql.Open(); // // Drop and re-create the database. // try { sqlCommand = new SqlCommand("DROP DATABASE " + database, sql); sqlCommand.ExecuteNonQuery(); } catch { } sqlCommand = new SqlCommand("RESTORE DATABASE " + database + " FROM DISK = '" + SandboxPath + "\\Templates\\" + ddlVersion.SelectedValue + ".bak'" + " WITH MOVE 'Template" + dbVersion + "DB' TO '" + SandboxPath + "\\" + username + ".mdf'" + ", MOVE 'Template" + dbVersion + "DB_Log' TO '" + SandboxPath + "\\" + username + ".ldf'", sql); sqlCommand.ExecuteNonQuery(); // // Create the current users login as the Administrator of // the new database. // Arena.DataLayer.Organization.OrganizationData org = new Arena.DataLayer.Organization.OrganizationData(); rdr = org.ExecuteReader("SELECT [password] FROM secu_login WHERE login_id = '" + username + "'"); rdr.Read(); sql.ChangeDatabase(database); sqlCommand = new SqlCommand("secu_sp_save_login", sql); sqlCommand.CommandType = CommandType.StoredProcedure; sqlCommand.Parameters.Add(new SqlParameter("@PersonID", 1)); sqlCommand.Parameters.Add(new SqlParameter("@LoginID", username)); sqlCommand.Parameters.Add(new SqlParameter("@Password", rdr[0])); sqlCommand.Parameters.Add(new SqlParameter("@UserID", "Sandbox")); sqlCommand.Parameters.Add(new SqlParameter("@Active", true)); sqlCommand.Parameters.Add(new SqlParameter("@AuthenticationProvider", AuthenticationProvider.Database)); sqlCommand.Parameters.Add(new SqlParameter("@AccountLocked", false)); sqlCommand.Parameters.Add(new SqlParameter("@DateLockExpires", DateTime.Parse("1900-01-01 00:00:00"))); sqlCommand.Parameters.Add(new SqlParameter("@ForceChangePassword", false)); sqlCommand.ExecuteNonQuery(); // // Close the database. // sql.Close(); } else { return(false); } } catch (Exception ex) { if (sql != null) { sql.Close(); } RevertToSelf(); throw ex; } // // Cleanup after pretending to be the user. // RevertToSelf(); return(true); }
public WorkerResultStatus SendEmail(out string message, out int state) { WorkerResultStatus workerResultStatus = WorkerResultStatus.Ok; message = string.Empty; state = STATE_OK; try { AreaOutreachCoordinatorCollection pastors = new AreaOutreachCoordinatorCollection(); pastors.LoadByRole(1623); Arena.DataLayer.Organization.OrganizationData oData = new Arena.DataLayer.Organization.OrganizationData(); string query = "SELECT * FROM cust_ccv_era_losses WHERE processed = 1 AND send_email = 1 AND sent = 0"; SqlDataReader rdr = oData.ExecuteReader(query); while (rdr.Read()) { Family family = new Family((int)rdr["family_id"]); FamilyMember familyHead = family.FamilyHead; if (familyHead != null && familyHead.Emails.Count > 0) { Area area = familyHead.Area; if (area != null) { Person pastor = null; foreach (AreaOutreachCoordinator coord in pastors) { if (coord.AreaId == area.AreaID) { pastor = new Person(coord.PersonId); break; } } if (pastor != null) { Arena.Custom.CCV.Core.Communications.PotentialLossNotification lossNotification = new Arena.Custom.CCV.Core.Communications.PotentialLossNotification(); Dictionary <string, string> fields = new Dictionary <string, string>(); fields.Add("##RecipientFirstName##", familyHead.NickName); fields.Add("##RecipientLastName##", familyHead.LastName); fields.Add("##RecipientEmail##", familyHead.Emails.FirstActive); fields.Add("##PastorName##", pastor.FullName); fields.Add("##PastorEmail##", pastor.Emails.FirstActive); PersonPhone bPhone = pastor.Phones.FindByType(SystemLookup.PhoneType_Business); fields.Add("##PastorBusinessPhone##", bPhone != null ? bPhone.Number : string.Empty); PersonPhone cPhone = pastor.Phones.FindByType(SystemLookup.PhoneType_Cell); fields.Add("##PastorCellPhone##", cPhone != null ? cPhone.Number : string.Empty); if (lossNotification.Send(familyHead.Emails.FirstActive, fields, familyHead.PersonID)) { string updateQuery = string.Format("UPDATE cust_ccv_era_losses SET sent = 1 WHERE family_id = {0}", family.FamilyID.ToString()); oData.ExecuteNonQuery(updateQuery); } } } } } rdr.Close(); } catch (Exception ex) { workerResultStatus = WorkerResultStatus.Exception; message = "An error occured while processing ERA Loss Notifications.\n\nMessage\n------------------------\n" + ex.Message + "\n\nStack Trace\n------------------------\n" + ex.StackTrace; } return(workerResultStatus); }