示例#1
0
        void btnProcess_Click(object sender, EventArgs e)
        {
            Arena.DataLayer.Organization.OrganizationData odata = new Arena.DataLayer.Organization.OrganizationData();

            foreach (DataGridItem item in dgLosses.Items)
            {
                int familyId = (int)dgLosses.DataKeys[item.ItemIndex];

                bool process   = false;
                var  cbProcess = item.Cells[1].Controls[0] as CheckBox;
                if (cbProcess != null && cbProcess.Checked)
                {
                    process = true;
                }

                bool send   = false;
                var  cbSend = item.Cells[2].Controls[0] as CheckBox;
                if (cbSend != null && cbSend.Checked)
                {
                    send = true;
                }

                string query = string.Format(
                    "update cust_ccv_era_losses set processed = {0}, send_email = {1} where family_id = {2}",
                    (process ? "1" : "0"),
                    (send ? "1" : "0"),
                    familyId.ToString());

                odata.ExecuteNonQuery(query);
            }

            ShowList();
        }
示例#2
0
        public static Arena.Core.Attribute GetPcoAttribute(AttributeGroup attributeGroup, string attributeName, DataType attributeType)
        {
            Arena.Core.Attribute pcoAttribute = attributeGroup.Attributes.FindByName(attributeName);

            if (pcoAttribute == null || pcoAttribute.AttributeId == -1)
            {
                Arena.DataLayer.Organization.OrganizationData oData = new Arena.DataLayer.Organization.OrganizationData();

                string sql = string.Format(
                    "SELECT ISNULL(MAX(attribute_order),-1) FROM core_attribute WHERE attribute_group_id = {0}",
                    attributeGroup.AttributeGroupId.ToString());
                int groupOrder = (int)oData.ExecuteScalar(sql);

                Guid attributeGuid = Guid.NewGuid();

                sql = string.Format(
                    "insert into core_attribute (guid, attribute_group_id, attribute_name, attribute_type, attribute_order) values ('{0}', {1}, '{2}', '{3}', (({4})+2))",
                    attributeGuid.ToString(),
                    attributeGroup.AttributeGroupId.ToString(),
                    attributeName,
                    Enum.Format(typeof(DataType), attributeType, "D"),
                    groupOrder.ToString());

                oData.ExecuteNonQuery(sql);

                pcoAttribute = new Arena.Core.Attribute(attributeGuid);
                attributeGroup.Attributes.Add(pcoAttribute);
            }

            return(pcoAttribute);
        }
示例#3
0
        public static AttributeGroup GetPcoAttributeGroup(int organizationId, Lookup pcoAccount)
        {
            if (pcoAccount.Qualifier2.Trim() == string.Empty)
            {
                pcoAccount.Qualifier2 = Guid.NewGuid().ToString();
                pcoAccount.Save();
            }

            Guid groupGuid = new Guid(pcoAccount.Qualifier2);

            AttributeGroup pcoAttributeGroup = new AttributeGroup(groupGuid);

            if (pcoAttributeGroup.AttributeGroupId == -1)
            {
                Arena.DataLayer.Organization.OrganizationData oData = new Arena.DataLayer.Organization.OrganizationData();

                string sql        = "SELECT ISNULL(MAX(group_order),-1) FROM core_attribute_group";
                int    groupOrder = (int)oData.ExecuteScalar(sql);

                sql = string.Format(
                    "insert into core_attribute_group (guid, organization_id, group_name, group_order, display_location) values ('{0}', {1}, 'PCO - {2}', (({3})+2), 0)",
                    groupGuid.ToString(),
                    organizationId.ToString(),
                    pcoAccount.Value,
                    groupOrder.ToString());

                oData.ExecuteNonQuery(sql);

                pcoAttributeGroup = new AttributeGroup(groupGuid);
            }

            GetPcoAttribute(pcoAttributeGroup, "PCO_Last_Sync", DataType.Document);
            GetPcoAttribute(pcoAttributeGroup, "PCO_Last_Sync_Arena", DataType.Document);
            GetPcoAttribute(pcoAttributeGroup, "PCO_ID", DataType.Int);
            GetPcoAttribute(pcoAttributeGroup, "PCO_Password", DataType.String);

            return(pcoAttributeGroup);
        }
示例#4
0
        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);
        }