protected void PAYMENT_TYPE_Changed(object sender, EventArgs e)
        {
            var PAYMENT_TYPE = tblMain.FindControl("PAYMENT_TYPE") as DropDownList;

            if (PAYMENT_TYPE != null)
            {
                bool bCreditCard = PAYMENT_TYPE.SelectedValue == "Credit Card";
                ctlDynamicButtons.ShowButton("Charge", bCreditCard);
                new DynamicControl(this, "CREDIT_CARD_ID_LABEL").Visible     = bCreditCard;
                new DynamicControl(this, "CREDIT_CARD_NAME").Visible         = bCreditCard;
                new DynamicControl(this, "CREDIT_CARD_ID_btnChange").Visible = bCreditCard;
                new DynamicControl(this, "CREDIT_CARD_ID_btnClear").Visible  = bCreditCard;
                if (bCreditCard && CommonTypeConvert.IsEmptyGuid(new DynamicControl(this, "CREDIT_CARD_ID").ID))
                {
                    var    oQuery   = new InlineQueryDBManager();
                    string innerSql = ApplicationSQL.SQL["Payments_EditView_214"].ToString();
                    oQuery.CommandText = innerSql;
                    Guid gACCOUNT_ID = new DynamicControl(this, "ACCOUNT_ID").ID;
                    TypeConvert.AppendParameter(oQuery, gACCOUNT_ID, "ACCOUNT_ID", false);
                    using (SqlDataReader rdr = oQuery.ExecuteReader(CommandBehavior.SingleRow))
                    {
                        if (rdr.Read())
                        {
                            new DynamicControl(this, "CREDIT_CARD_ID").ID     = CommonTypeConvert.ToGuid(rdr["ID"]);
                            new DynamicControl(this, "CREDIT_CARD_NAME").Text = CommonTypeConvert.ToString(rdr["NAME"]);
                        }
                    }
                }
            }
        }
        private int RenderSection(ExpandoObject data, RenderTreeBuilder builder, DynamicControl control,
                                  int sectionIndex)
        {
            if (control.Type == "regularLayout")
            {
                builder.OpenElement(0, "div");
                builder.AddAttribute(1, "class", "section");
                builder.OpenElement(2, "span");
                builder.AddContent(3, sectionIndex);
                builder.CloseElement();
                builder.AddContent(2, $"{control.Caption}: ");
                builder.CloseElement();
                sectionIndex++;
            }

            if (control.Controls?.Count > 0)
            {
                builder.OpenElement(0, "div");
                builder.AddAttribute(1, "class", "inner-wrap");
                var itemIndex = 2;
                foreach (var item in control.Controls)
                {
                    builder.AddContent(itemIndex++, builder2 => RenderControl(data, builder2, item));
                }

                builder.CloseElement();
            }

            return(sectionIndex);
        }
Beispiel #3
0
    protected void DynamicControl_Init(object sender, EventArgs e)
    {
        DynamicControl dynamicControl = (DynamicControl)sender;

        //dynamicControl.DataField = dynamicControl.Column.Name;
        dynamicControl.Mode = this.Mode;
    }
Beispiel #4
0
        public void IFieldTemplateHost_FormattingOptions()
        {
            var dc = new DynamicControl();

            Assert.IsNotNull(((IFieldTemplateHost)dc).FormattingOptions, "#A1");
            Assert.AreEqual(dc, ((IFieldTemplateHost)dc).FormattingOptions, "#A2");
        }
        protected void btnProductChanged_Clicked(object sender, EventArgs e)
        {
            var    oQuery   = new InlineQueryDBManager();
            string innerSql = ApplicationSQL.SQL["Products_EditView_161"].ToString();

            oQuery.CommandText = innerSql;
            Guid gPRODUCT_TEMPLATE_ID = new DynamicControl(this, "PRODUCT_TEMPLATE_ID").ID;

            TypeConvert.AppendParameter(oQuery, gPRODUCT_TEMPLATE_ID, "ID", false);
            using (SqlDataReader rdr = oQuery.ExecuteReader(CommandBehavior.SingleRow))
            {
                if (rdr.Read())
                {
                    ctlModuleHeader.Title = CommonTypeConvert.ToString(rdr["NAME"]);
                    SetPageTitle(Translation.GetTranslation.Term(".moduleList." + m_sMODULE) + " - " +
                                 ctlModuleHeader.Title);
                    Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                    ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".EditView", rdr);
                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".CostView", rdr);
                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".MftView", rdr);
                    var txtNAME = FindControl("NAME") as TextBox;
                    if (txtNAME != null)
                    {
                        txtNAME.ReadOnly = false;
                    }
                }
            }
        }
        protected void btnProductChanged_Clicked(object sender, EventArgs e)
        {
            var oQuery = new InlineQueryDBManager();
            string innerSql = ApplicationSQL.SQL["Products_EditView_161"].ToString();
            oQuery.CommandText = innerSql;
            Guid gPRODUCT_TEMPLATE_ID = new DynamicControl(this, "PRODUCT_TEMPLATE_ID").ID;
            TypeConvert.AppendParameter(oQuery, gPRODUCT_TEMPLATE_ID, "ID", false);
            using (SqlDataReader rdr = oQuery.ExecuteReader(CommandBehavior.SingleRow))
            {
                if (rdr.Read())
                {
                    ctlModuleHeader.Title = CommonTypeConvert.ToString(rdr["NAME"]);
                    SetPageTitle(Translation.GetTranslation.Term(".moduleList." + m_sMODULE) + " - " +
                                 ctlModuleHeader.Title);
                    Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                    ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".EditView", rdr);
                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".CostView", rdr);
                    CRMDynamic.SetEditViewFields(this, m_sMODULE + ".MftView", rdr);
                    var txtNAME = FindControl("NAME") as TextBox;
                    if (txtNAME != null)
                        txtNAME.ReadOnly = false;
                }
            }
        }
        private void RenderInputComponent(ExpandoObject data, DynamicControl control,
                                          RenderTreeBuilder builder2)
        {
            switch (control.Type)
            {
            case "textBox":
            case "multiLineTextBox":
                builder2.OpenComponent(0, typeof(InputText));
                // Create the handler for ValueChanged. I use reflection to the value.

                BindDataValue <string>(data, control.Id, builder2, control);

                if (control.Type == "multiLineTextBox")
                {
                    builder2.AddAttribute(5, "Multiline", true);
                }

                builder2.CloseComponent();
                break;

            case "datePicker":
                builder2.OpenComponent(0, typeof(InputDate <DateTime>));
                BindDataValue <DateTime>(data, control.Id, builder2, control);
                builder2.CloseComponent();
                break;

            case "dropdown":
                builder2.OpenComponent(0, typeof(InputSelect <string>));
                BindDataValue <string>(data, control.Id, builder2, control);
                builder2.AddAttribute(5, "ChildContent", (RenderFragment)((builder2) =>
                {
                    var index = 1;
                    foreach (var item in control.Items)
                    {
                        builder2.OpenElement(6, "option");
                        builder2.AddAttribute(7, "Value", $"Value-{index}");
                        builder2.AddContent(8, _localizer[item]);
                        builder2.CloseElement();
                        builder2.AddMarkupContent(9, "\r\n");
                        index++;
                    }
                }));
                builder2.CloseComponent();
                break;

            case "checkBox":
                builder2.OpenComponent(0, typeof(InputCheckbox));
                BindDataValue <bool>(data, control.Id, builder2, control);
                builder2.CloseComponent();
                break;

            default:
                builder2.OpenElement(0, "p");
                builder2.AddAttribute(1, "style", "padding: 8px 12px  24px");
                builder2.AddContent(2, "Control is to be implemented :-)");
                builder2.CloseElement();
                break;
            }
        }
 protected void Label_PreRender(object sender, EventArgs e) {
     Label label = (Label)sender;
     DynamicControl dynamicControl = (DynamicControl)label.FindControl("DynamicControl");
     FieldTemplateUserControl ftuc = dynamicControl.FieldTemplate as FieldTemplateUserControl;
     if (ftuc != null && ftuc.DataControl != null) {
         label.AssociatedControlID = ftuc.DataControl.GetUniqueIDRelativeTo(label);
     }
 }
 private void RenderControl(ExpandoObject data, RenderTreeBuilder builder, DynamicControl control)
 {
     builder.OpenElement(0, "label");
     builder.AddContent(1, control.Caption);
     builder.AddContent(2,
                        new RenderFragment(builder2 => RenderInputComponent(data, control, builder2)));
     builder.CloseElement();
 }
Beispiel #10
0
        public void ValidationGroup()
        {
            // TODO: more complicated tests involving actual page and validation
            var dc = new DynamicControl();

            dc.ValidationGroup = "Group1";
            Assert.AreEqual("Group1", dc.ValidationGroup, "#A1");
        }
        protected void DynamicControl_Init(object sender, EventArgs e)
        {
            DynamicControl dynamicControl = (DynamicControl)sender;

            if (currentColumn.Name != "Id")
            {
                dynamicControl.DataField = currentColumn.Name;
            }
        }
Beispiel #12
0
        public void Mode()
        {
            var dc = new DynamicControl(DataBoundControlMode.Edit);

            Assert.AreEqual(DataBoundControlMode.Edit, dc.Mode, "#A1");

            dc.Mode = DataBoundControlMode.Insert;
            Assert.AreEqual(DataBoundControlMode.Insert, dc.Mode, "#A2");

            dc.Mode = DataBoundControlMode.ReadOnly;
            Assert.AreEqual(DataBoundControlMode.ReadOnly, dc.Mode, "#A3");
        }
        protected void btnProductChanged_Clicked(object sender, System.EventArgs e)
        {
            try
            {
                DbProviderFactory dbf = DbProviderFactories.GetFactory();
                using (IDbConnection con = dbf.CreateConnection())
                {
                    string sSQL;
                    sSQL = "select *                       " + ControlChars.CrLf
                           + "  from vwPRODUCTS_FromTemplate " + ControlChars.CrLf
                           + " where 1 = 1                   " + ControlChars.CrLf;
                    using (IDbCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = sSQL;
                        Guid gPRODUCT_TEMPLATE_ID = new DynamicControl(this, "PRODUCT_TEMPLATE_ID").ID;
                        Sql.AppendParameter(cmd, gPRODUCT_TEMPLATE_ID, "ID", false);
                        con.Open();

                        if (bDebug)
                        {
                            RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));
                        }

                        using (IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                        {
                            if (rdr.Read())
                            {
                                ctlModuleHeader.Title = Sql.ToString(rdr["NAME"]);
                                SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                                ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".EditView", rdr, GetL10n(), GetT10n());
                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".CostView", rdr, GetL10n(), GetT10n());
                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".MftView", rdr, GetL10n(), GetT10n());
                                // 07/05/2006 Paul.  The Product Name should be editable.
                                TextBox txtNAME = FindControl("NAME") as TextBox;
                                if (txtNAME != null)
                                {
                                    txtNAME.ReadOnly = false;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                ctlEditButtons.ErrorText = ex.Message;
            }
        }
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="writer">The writer.</param>
        public override void Render(System.IO.TextWriter writer)
        {
            DynamicControl control = DynamicRazorRenderingType.CreateControl(Path, ContextName) as DynamicControl;

            if (control != null)
            {
                HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);

                control.DataSource = this.DataSource;

                control.RenderControl(htmlWriter);
            }
        }
        // 01/05/2007 Paul.  We need to update the totals before saving.
        public void UpdateTotals()
        {
            Double dSUBTOTAL = 0.0;
            Double dDISCOUNT = new DynamicControl(this, "DISCOUNT").FloatValue;
            Double dSHIPPING = new DynamicControl(this, "SHIPPING").FloatValue;
            Double dTAX      = 0.0;
            Double dTOTAL    = 0.0;
            double dTAX_RATE = 0.0;

            DataTable dtTAX_RATE = SplendidCache.TaxRates();

            if (!Sql.IsEmptyGuid(TAXRATE_ID.SelectedValue))
            {
                DataRow[] row = dtTAX_RATE.Select("ID = '" + TAXRATE_ID.SelectedValue + "'");
                if (row.Length == 1)
                {
                    dTAX_RATE = Sql.ToDouble(row[0]["VALUE"]) / 100;
                }
            }
            foreach (DataRow row in dtLineItems.Rows)
            {
                if (row.RowState != DataRowState.Deleted)
                {
                    // 08/11/2007 Paul.  Allow an item to be manually added.  Require either a product ID or a name.
                    if (!Sql.IsEmptyString(row["NAME"]) || !Sql.IsEmptyGuid(row["PRODUCT_TEMPLATE_ID"]))
                    {
                        string sLINE_ITEM_TYPE = Sql.ToString(row["LINE_ITEM_TYPE"]);
                        string sTAX_CLASS      = Sql.ToString(row["TAX_CLASS"]);
                        int    nQUANTITY       = Sql.ToInteger(row["QUANTITY"]);
                        Double dUNIT_PRICE     = Sql.ToDouble(row["UNIT_PRICE"]);
                        if (sLINE_ITEM_TYPE != "Comment")
                        {
                            dSUBTOTAL += dUNIT_PRICE * nQUANTITY;
                            if (sTAX_CLASS == "Taxable")
                            {
                                dTAX += dUNIT_PRICE * nQUANTITY * dTAX_RATE;
                            }
                        }
                    }
                }
            }
            dTOTAL        = dSUBTOTAL - dDISCOUNT + dTAX + dSHIPPING;
            SUBTOTAL.Text = Convert.ToDecimal(dSUBTOTAL).ToString("c");
            DISCOUNT.Text = Convert.ToDecimal(dDISCOUNT).ToString("0.00");
            SHIPPING.Text = Convert.ToDecimal(dSHIPPING).ToString("0.00");
            TAX.Text      = Convert.ToDecimal(dTAX).ToString("c");
            TOTAL.Text    = Convert.ToDecimal(dTOTAL).ToString("c");
            // 03/31/2007 Paul.  We are using UNIT_PRICE, so the value will need to be converted to USD before stored in hidden fields.
            DISCOUNT_USDOLLAR.Value = C10n.FromCurrency(Convert.ToDecimal(dDISCOUNT)).ToString("0.000");
            SHIPPING_USDOLLAR.Value = C10n.FromCurrency(Convert.ToDecimal(dSHIPPING)).ToString("0.000");
        }
Beispiel #16
0
        public void GetAttribute()
        {
            var dc = new DynamicControl();

            Assert.AreEqual(String.Empty, dc.GetAttribute("NoSuchAttribute"), "#A1");

            dc.SetAttribute("MyAttribute", "value");
            Assert.AreEqual("value", dc.GetAttribute("MyAttribute"), "#B1");

            // Nice...
            AssertExtensions.Throws <KeyNotFoundException> (() => {
                dc.GetAttribute("NoSuchAttribute");
            }, "#C1");
        }
            internal void OnActiveStateChanged(DynamicControl sender, EventArgs args)
            {
                if (sender.IsActive)
                {
                    var button = (Button)sender;

                    // Update the selected index
                    Handle.SelectedIndex = Children.IndexOf(button);

                    // Set combo box and entry to inactive
                    Handle.ControlHandle.IsActive = false;
                    button.IsActive = false;
                }
            }
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="writer">The writer.</param>
        public override void Render(System.IO.TextWriter writer)
        {
            DynamicControl control = DynamicRazorRenderingType.CreateControl(Path, ContextName) as DynamicControl;

            if (control != null)
            {
                control.Parameters = Sitecore.Mvc.Presentation.RenderingContext.CurrentOrNull.Rendering[Sc.GlassHtml.Parameters] ?? string.Empty;

                HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);

                control.DataSource = this.DataSource;

                control.RenderControl(htmlWriter);
            }
        }
        protected void btnProductChanged_Clicked(object sender, System.EventArgs e)
        {
            try
            {
                DbProviderFactory dbf = DbProviderFactories.GetFactory();
                using ( IDbConnection con = dbf.CreateConnection() )
                {
                    string sSQL ;
                    sSQL = "select *                       " + ControlChars.CrLf
                         + "  from vwPRODUCTS_FromTemplate " + ControlChars.CrLf
                         + " where 1 = 1                   " + ControlChars.CrLf;
                    using ( IDbCommand cmd = con.CreateCommand() )
                    {
                        cmd.CommandText = sSQL;
                        Guid gPRODUCT_TEMPLATE_ID = new DynamicControl(this, "PRODUCT_TEMPLATE_ID").ID;
                        Sql.AppendParameter(cmd, gPRODUCT_TEMPLATE_ID, "ID", false);
                        con.Open();

                        if ( bDebug )
                            RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));

                        using ( IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow) )
                        {
                            if ( rdr.Read() )
                            {
                                ctlModuleHeader.Title = Sql.ToString(rdr["NAME"]);
                                SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                                ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".EditView", rdr, GetL10n(), GetT10n());
                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".CostView", rdr, GetL10n(), GetT10n());
                                SplendidDynamic.SetEditViewFields(this, m_sMODULE + ".MftView" , rdr, GetL10n(), GetT10n());
                                // 07/05/2006 Paul.  The Product Name should be editable.
                                TextBox txtNAME = FindControl("NAME") as TextBox;
                                if ( txtNAME != null )
                                    txtNAME.ReadOnly = false;
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                ctlEditButtons.ErrorText = ex.Message;
            }
        }
Beispiel #20
0
        public void DataField()
        {
            var dc = new DynamicControl();

            Assert.AreEqual(String.Empty, dc.DataField, "#A1");
            dc.DataField = "MyField";
            Assert.AreEqual("MyField", dc.DataField, "#A2");

            dc.DataField = "AnotherField";
            Assert.AreEqual("AnotherField", dc.DataField, "#A3");

            dc.DataField = String.Empty;
            Assert.AreEqual(String.Empty, dc.DataField, "#A4");

            dc.DataField = null;
            Assert.AreEqual(String.Empty, dc.DataField, "#A5");
        }
Beispiel #21
0
        private void BindSchedule()
        {
            DateTimePicker ctlDATE_START = FindControl("DATE_START") as DateTimePicker;

            if (ctlDATE_START != null)
            {
                int      nDURATION_HOURS   = new DynamicControl(this, "DURATION_HOURS").IntegerValue;
                int      nDURATION_MINUTES = new DynamicControl(this, "DURATION_MINUTES").IntegerValue;
                DateTime dtDATE_END        = ctlDATE_START.Value.AddHours(nDURATION_HOURS).AddMinutes(nDURATION_MINUTES);
                // 07/09/2006 Paul.  The date values are sent to the scheduling grid in TimeZone time.
                // The dates are converted to server time when the database is queried.
                ctlSchedulingGrid.DATE_START = ctlDATE_START.Value;
                ctlSchedulingGrid.DATE_END   = dtDATE_END;
                ctlSchedulingGrid.INVITEES   = txtINVITEE_ID.Value.Split(',');
                ctlSchedulingGrid.BuildSchedule();
            }
        }
Beispiel #22
0
        public void DataField_2()
        {
            var dc = new DynamicControl();

            dc.DataField = null;
            Assert.AreEqual(String.Empty, dc.DataField, "#A1");

            var c = dc.Column;

            Assert.IsNull(c, "#A1-1");

            dc.DataField = "MyField";
            Assert.AreEqual("MyField", dc.DataField, "#B1");

            c = dc.Column;
            Assert.IsNull(c, "#B1-1");
        }
Beispiel #23
0
        public void Defaults()
        {
            var dc = new DynamicControl();

            Assert.AreEqual(false, dc.ApplyFormatInEditMode, "#A1");
            Assert.AreEqual(null, dc.Column, "#A2");
            Assert.AreEqual(false, dc.ConvertEmptyStringToNull, "#A3");
            Assert.AreEqual(String.Empty, dc.CssClass, "#A4");
            Assert.AreEqual(String.Empty, dc.DataField, "#A5");
            Assert.AreEqual(String.Empty, dc.DataFormatString, "#A6");
            Assert.AreEqual(null, dc.FieldTemplate, "#A7");
            Assert.AreEqual(true, dc.HtmlEncode, "#A8");
            Assert.AreEqual(dc, ((IFieldTemplateHost)dc).FormattingOptions, "#A9");
            Assert.AreEqual(DataBoundControlMode.ReadOnly, dc.Mode, "#A10");
            Assert.AreEqual(String.Empty, dc.NullDisplayText, "#A11");
            // Throws NREX on .NET .... (why am I still surprised by this?)
            // Calls DynamicDataExtensions.FindMetaTable which is where the exception is thrown from
            // Assert.AreEqual (null, dc.Table, "#A12");
            Assert.AreEqual(String.Empty, dc.UIHint, "#A13");
            Assert.AreEqual(String.Empty, dc.ValidationGroup, "#A14");
        }
Beispiel #24
0
        public void CssClass()
        {
            var dc = new DynamicControl();

            dc.CssClass = "MyCssClass";
            Assert.AreEqual("MyCssClass", dc.CssClass, "#A1");

            var test = new WebTest("ListView_DynamicControl_01.aspx");

            test.Invoker = PageInvoker.CreateOnLoad(CssClass_OnLoad);
            var p = test.Run();

            Assert.IsNotNull(test.Response, "#X1");
            Assert.AreNotEqual(HttpStatusCode.NotFound, test.Response.StatusCode, "#X1-1{0}Returned HTML:{0}{1}", Environment.NewLine, p);
            Assert.AreNotEqual(HttpStatusCode.InternalServerError, test.Response.StatusCode, "#X1-2{0}Returned HTML:{0}{1}", Environment.NewLine, p);
            Assert.IsFalse(String.IsNullOrEmpty(p), "#X1-3");

            string html = @"<span class=""activeCssClass"">

<span class=""field"">Active</span>:";

            Assert.IsTrue(p.IndexOf(html) != -1, "#Y1");
        }
        private int RenderTable(ExpandoObject data, RenderTreeBuilder builder, DynamicControl control, int sectionIndex)
        {
            builder.OpenElement(0, "div");
            builder.AddAttribute(1, "class", "section");
            builder.OpenElement(2, "span");
            builder.AddContent(3, sectionIndex);
            builder.CloseElement();
            builder.AddContent(2, $"{control.Caption}: ");
            builder.CloseElement();
            sectionIndex++;


            if (control.Controls?.Count > 0)
            {
                builder.OpenElement(0, "div");
                builder.AddAttribute(1, "class", "inner-wrap");
                builder.OpenElement(3, "div");
                builder.AddAttribute(3, "style", "display: grid");
                foreach (var item in control.Controls)
                {
                    builder.AddContent(4, builder2 =>
                    {
                        builder2.OpenElement(0, "div");
                        var col = item.Position.ColumnIndex + 1;
                        builder2.AddAttribute(1, "style", $"grid-column: {col}; grid-row: {item.Position.RowIndex}");
                        builder2.AddContent(2, builder3 => RenderControl(data, builder3, item));
                        builder2.CloseElement();
                    });
                }

                builder.CloseElement();
                builder.CloseElement();
            }

            return(sectionIndex);
        }
Beispiel #26
0
		protected void Page_Command(Object sender, CommandEventArgs e)
		{
			if ( e.CommandName == "Save" )
			{
				this.ValidateEditViewFields(m_sMODULE + "." + LayoutEditView);
				if ( Page.IsValid )
				{
					DbProviderFactory dbf = DbProviderFactories.GetFactory();
					using ( IDbConnection con = dbf.CreateConnection() )
					{
						con.Open();
						// 10/07/2009   We need to create our own global transaction ID to support auditing and workflow on SQL Azure, PostgreSQL, Oracle, DB2 and MySQL. 
						using ( IDbTransaction trn = Sql.BeginTransaction(con) )
						{
							try
							{
								// 07/28/2010   We need a flag to exclude a button from a mobile device. 
								// 03/14/2014   Allow hidden buttons to be created. 
								SqlProcs.spDYNAMIC_BUTTONS_Update
									( ref gID
									, new DynamicControl(this, "VIEW_NAME"         ).Text
									, new DynamicControl(this, "CONTROL_INDEX"     ).IntegerValue
									, new DynamicControl(this, "CONTROL_TYPE"      ).Text
									, new DynamicControl(this, "MODULE_NAME"       ).SelectedValue
									, new DynamicControl(this, "MODULE_ACCESS_TYPE").Text
									, new DynamicControl(this, "TARGET_NAME"       ).SelectedValue
									, new DynamicControl(this, "TARGET_ACCESS_TYPE").Text
									, new DynamicControl(this, "CONTROL_TEXT"      ).Text
									, new DynamicControl(this, "CONTROL_TOOLTIP"   ).Text
									, new DynamicControl(this, "CONTROL_ACCESSKEY" ).Text
									, new DynamicControl(this, "CONTROL_CSSCLASS"  ).Text
									, new DynamicControl(this, "TEXT_FIELD"        ).Text
									, new DynamicControl(this, "ARGUMENT_FIELD"    ).Text
									, new DynamicControl(this, "COMMAND_NAME"      ).Text
									, new DynamicControl(this, "URL_FORMAT"        ).Text
									, new DynamicControl(this, "URL_TARGET"        ).Text
									, new DynamicControl(this, "ONCLICK_SCRIPT"    ).Text
									, new DynamicControl(this, "MOBILE_ONLY"       ).Checked
									, new DynamicControl(this, "ADMIN_ONLY"        ).Checked
									, new DynamicControl(this, "EXCLUDE_MOBILE"    ).Checked
									, new DynamicControl(this, "HIDDEN"            ).Checked
									, trn
									);
								trn.Commit();
							}
							catch(Exception ex)
							{
								trn.Rollback();
								SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
								ctlDynamicButtons.ErrorText = ex.Message;
								return;
							}
							// 06/10/2010   Clear the cache after updating the view. 
							string sVIEW_NAME = new DynamicControl(this, "VIEW_NAME").Text;
							SplendidCache.ClearDynamicButtons(sVIEW_NAME);
						}
					}
					Response.Redirect("default.aspx");
				}
			}
			else if ( e.CommandName == "Cancel" )
			{
				Response.Redirect("default.aspx");
			}
		}
Beispiel #27
0
		protected string GenerateSavedSearch(bool bDefaultSearch)
		{
			XmlDocument xml = new XmlDocument();
			xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", null));
			XmlNode xSavedSearch = xml.CreateElement("SavedSearch");
			xml.AppendChild(xSavedSearch);
			if ( dtFields != null )
			{
				if ( bDefaultSearch )
				{
					// 12/14/2007   Although it might be better to use events to get the sort field, 
					// that could cause an endless loop as this control sets the sort field and retrieves the sort field. 
					SplendidGrid grdMain = Parent.FindControl(sGridID) as SplendidGrid;
					if ( grdMain != null )
					{
						if ( !String.IsNullOrEmpty(grdMain.SortColumn) )
						{
							XmlNode xSortColumn = xml.CreateElement("SortColumn");
							xSavedSearch.AppendChild(xSortColumn);
							xSortColumn.InnerText = grdMain.SortColumn;
						}
						if ( !String.IsNullOrEmpty(grdMain.SortOrder) )
						{
							XmlNode xSortOrder = xml.CreateElement("SortOrder");
							xSavedSearch.AppendChild(xSortOrder);
							xSortOrder.InnerText =grdMain.SortOrder;
						}
					}
					if ( !Sql.IsEmptyString(lstSavedSearches.SelectedValue) )
					{
						XmlNode xDefaultSearch = xml.CreateElement("DefaultSearch");
						xSavedSearch.AppendChild(xDefaultSearch);
						xDefaultSearch.InnerText = lstSavedSearches.SelectedValue;
					}
				}
				else
				{
					if ( !Sql.IsEmptyString(lstColumns.SelectedValue) )
					{
						XmlNode xSortColumn = xml.CreateElement("SortColumn");
						xSavedSearch.AppendChild(xSortColumn);
						xSortColumn.InnerText = lstColumns.SelectedValue;
					}
					if ( radSavedSearchASC.Checked || radSavedSearchDESC.Checked )
					{
						XmlNode xSortOrder = xml.CreateElement("SortOrder");
						xSavedSearch.AppendChild(xSortOrder);
						if ( radSavedSearchASC.Checked )
							xSortOrder.InnerText ="asc";
						else if ( radSavedSearchDESC.Checked )
							xSortOrder.InnerText ="desc";
					}
				}

				XmlNode xSearchFields = xml.CreateElement("SearchFields");
				xSavedSearch.AppendChild(xSearchFields);
				foreach(DataRowView row in dtFields.DefaultView)
				{
					string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
					string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
					string sDISPLAY_FIELD     = Sql.ToString (row["DISPLAY_FIELD"    ]);
					int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
					int    nFORMAT_ROWS       = Sql.ToInteger(row["FORMAT_ROWS"      ]);

					// 04/18/2010   If the user manually adds a TeamSelect, we need to convert to a ModulePopup. 
					if ( (sDATA_FIELD == "TEAM_ID" || sDATA_FIELD == "TEAM_SET_NAME") )
					{
						if ( Crm.Config.enable_team_management() && !Crm.Config.enable_dynamic_teams() && sFIELD_TYPE == "TeamSelect" )
						{
							sDATA_FIELD     = "TEAM_ID";
							sDISPLAY_FIELD  = "TEAM_NAME";
							sFIELD_TYPE     = "ModulePopup";
							//sMODULE_TYPE    = "Teams";
						}
					}
					// 12/07/2007   Create the field but don't append it unless it is used. 
					// This is how we will distinguish from unspecified field. 
					XmlNode xField = xml.CreateElement("Field");
					XmlUtil.SetSingleNodeAttribute(xml, xField, "Name", sDATA_FIELD);
					XmlUtil.SetSingleNodeAttribute(xml, xField, "Type", sFIELD_TYPE);
					DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
					if ( ctl != null )
					{
						// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
						if ( sFIELD_TYPE == "Hidden" )
						{
							xSearchFields.AppendChild(xField);
							xField.InnerText = ctl.Text;
						}
						// 04/05/2012   Add searching support for checkbox list. 
						else if ( sFIELD_TYPE == "ListBox" || sFIELD_TYPE == "CheckBoxList" || sFIELD_TYPE == "Radio" )
						{
							ListControl lst = FindControl(sDATA_FIELD) as ListControl;
							if ( lst != null )
							{
								// 06/17/2010   Add support for RadioButtonList and CheckBoxList. 
								if ( lst is ListBox || lst is RadioButtonList || lst is CheckBoxList )
								{
									int nSelected = 0;
									foreach(ListItem item in lst.Items)
									{
										if ( item.Selected )
											nSelected++;
									}
									if ( nSelected > 0 )
									{
										xSearchFields.AppendChild(xField);
										foreach(ListItem item in lst.Items)
										{
											if ( item.Selected )
											{
												XmlNode xValue = xml.CreateElement("Value");
												xField.AppendChild(xValue);
												xValue.InnerText = item.Value;
											}
										}
									}
								}
								else if ( lst is DropDownList )
								{
									// 12/13/2007   DropDownLists must be handled separately to ensure that only one item is selected. 
									// 04/02/2008 Fabio.  SelectedValue was not getting saved. 
									xSearchFields.AppendChild(xField);
									xField.InnerText = lst.SelectedValue;
								}
							}
							// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
							// Instead of updating the SAVED_SEARCH data, just redirect the data. 
							else if ( FindControl(sDATA_FIELD) is HtmlInputHidden )
							{
								xSearchFields.AppendChild(xField);
								xField.InnerText = ctl.Text;
							}
						}
						else if ( sFIELD_TYPE == "DatePicker" )
						{
							DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
							if ( ctlDate != null )
							{
								if ( !Sql.IsEmptyString(ctlDate.DateText) )
								{
									xSearchFields.AppendChild(xField);
									xField.InnerText = ctlDate.DateText;
								}
							}
						}
						else if ( sFIELD_TYPE == "DateRange" )
						{
							DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
							if ( ctlDateStart != null )
							{
								if ( !Sql.IsEmptyString(ctlDateStart.DateText) )
								{
									xSearchFields.AppendChild(xField);
									XmlUtil.SetSingleNode(xml, xField, "After", ctlDateStart.DateText);
								}
							}
							DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
							if ( ctlDateEnd != null )
							{
								if ( !Sql.IsEmptyString(ctlDateEnd.DateText) )
								{
									xSearchFields.AppendChild(xField);
									XmlUtil.SetSingleNode(xml, xField, "Before", ctlDateEnd.DateText);
								}
							}
						}
						else if ( sFIELD_TYPE == "CheckBox" )
						{
							if ( ctl.Checked )
							{
								xSearchFields.AppendChild(xField);
								xField.InnerText = "true";
							}
						}
						else if ( sFIELD_TYPE == "TextBox" )
						{
							ctl.Text = ctl.Text.Trim();
							if ( !Sql.IsEmptyString(ctl.Text) )
							{
								xSearchFields.AppendChild(xField);
								xField.InnerText = ctl.Text;
							}
						}
						else if ( sFIELD_TYPE == "ChangeButton" || sFIELD_TYPE == "ModulePopup" )
						{
							ctl.Text = ctl.Text.Trim();
							if ( !Sql.IsEmptyString(ctl.Text) )
							{
								xSearchFields.AppendChild(xField);
								xField.InnerText = ctl.Text;
							}
							// 12/08/2007   Save the display field as a separate XML node. 
							// Treat it as a text box and it will get populated just like any other search field. 
							DynamicControl ctlDISPLAY_FIELD = new DynamicControl(this, sDISPLAY_FIELD);
							if ( ctlDISPLAY_FIELD != null )
							{
								ctlDISPLAY_FIELD.Text = ctlDISPLAY_FIELD.Text.Trim();
								xField = xml.CreateElement("Field");
								XmlUtil.SetSingleNodeAttribute(xml, xField, "Name", sDISPLAY_FIELD);
								XmlUtil.SetSingleNodeAttribute(xml, xField, "Type", "TextBox");
								if ( !Sql.IsEmptyString(ctlDISPLAY_FIELD.Text) )
								{
									xSearchFields.AppendChild(xField);
									xField.InnerText = ctlDISPLAY_FIELD.Text;
								}
							}
						}
						else if ( sFIELD_TYPE == "TeamSelect" )
						{
							TeamSelect ctlTeamSelect = FindControl(sDATA_FIELD) as TeamSelect;
							if ( ctlTeamSelect != null )
							{
								DataTable dtLineItems = ctlTeamSelect.LineItems;
								if ( dtLineItems != null )
								{
									int nSelected = 0;
									DataRow[] aCurrentRows = dtLineItems.Select(String.Empty, String.Empty, DataViewRowState.CurrentRows);
									foreach ( DataRow rowTeam in aCurrentRows )
									{
										Guid gTEAM_ID = Sql.ToGuid(rowTeam["TEAM_ID"]);
										if ( gTEAM_ID != Guid.Empty )
										{
											nSelected++;
										}
									}
									if ( nSelected > 0 )
									{
										xSearchFields.AppendChild(xField);
										foreach ( DataRow rowTeam in aCurrentRows )
										{
											Guid gTEAM_ID = Sql.ToGuid(rowTeam["TEAM_ID"]);
											if ( gTEAM_ID != Guid.Empty )
											{
												XmlNode xTeam = xml.CreateElement("Team");
												xField.AppendChild(xTeam);
												
												XmlNode xTEAM_ID = xml.CreateElement("TEAM_ID");
												xTeam.AppendChild(xTEAM_ID);
												xTEAM_ID.InnerText = gTEAM_ID.ToString();
												
												XmlNode xNAME = xml.CreateElement("NAME");
												xTeam.AppendChild(xNAME);
												xNAME.InnerText = Sql.ToString(rowTeam["NAME"]);
												
												XmlNode xPRIMARY_TEAM = xml.CreateElement("PRIMARY_TEAM");
												xTeam.AppendChild(xPRIMARY_TEAM);
												xPRIMARY_TEAM.InnerText = Sql.ToString(rowTeam["PRIMARY_TEAM"]);
											}
										}
									}
								}
							}
						}
						else if ( sFIELD_TYPE == "ModuleAutoComplete" )
						{
							ctl.Text = ctl.Text.Trim();
							if ( !Sql.IsEmptyString(ctl.Text) )
							{
								xSearchFields.AppendChild(xField);
								xField.InnerText = ctl.Text;
							}
						}
					}
				}
				// 12/28/2008   Save the duplicate fields. 
				if ( nAdvanced == 2 )
				{
					XmlNode xDuplicateFields = xml.CreateElement("DuplicateFields");
					xSavedSearch.AppendChild(xDuplicateFields);
					
					XmlNode xField = xml.CreateElement("Field");
					XmlUtil.SetSingleNodeAttribute(xml, xField, "Name", "lstDuplicateColumns");
					XmlUtil.SetSingleNodeAttribute(xml, xField, "Type", "ListBox");
					
					ListControl lst = lstDuplicateColumns;
					int nSelected = 0;
					foreach(ListItem item in lst.Items)
					{
						if ( item.Selected )
							nSelected++;
					}
					if ( nSelected > 0 )
					{
						xDuplicateFields.AppendChild(xField);
						foreach(ListItem item in lst.Items)
						{
							if ( item.Selected )
							{
								XmlNode xValue = xml.CreateElement("Value");
								xField.AppendChild(xValue);
								xValue.InnerText = item.Value;
							}
						}
					}
				}
			}
			return xml.OuterXml;
		}
        private void Page_Load(object sender, System.EventArgs e)
        {
            Utils.SetPageTitle(Page, L10n.Term(".moduleList." + m_sMODULE));
            // 06/04/2006 Paul.  Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load.
            this.Visible = (SplendidCRM.Security.GetUserAccess(m_sMODULE, "edit") >= 0);
            if ( !this.Visible )
                return;

            try
            {
                // 06/09/2006 Paul.  Remove data binding in the user controls.  Binding is required, but only do so in the ASPX pages.
                //Page.DataBind();
                gID = Sql.ToGuid(Request["ID"]);
                if ( !IsPostBack )
                {
                    CURRENCY_ID.DataSource = SplendidCache.Currencies();
                    CURRENCY_ID.DataBind();
                    TAXRATE_ID .DataSource = SplendidCache.TaxRates();
                    TAXRATE_ID .DataBind();
                    TAXRATE_ID .Items.Insert(0, new ListItem(L10n.Term(".LBL_NONE"), ""));
                    SHIPPER_ID .DataSource = SplendidCache.Shippers();
                    SHIPPER_ID .DataBind();
                    SHIPPER_ID.Items.Insert(0, new ListItem(L10n.Term(".LBL_NONE"), ""));

                    Guid gDuplicateID = Sql.ToGuid(Request["DuplicateID"]);
                    if ( !Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID) )
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using ( IDbConnection con = dbf.CreateConnection() )
                        {
                            string sSQL ;
                            sSQL = "select *            " + ControlChars.CrLf
                                 + "  from vwQUOTES_Edit" + ControlChars.CrLf
                                 + " where ID = @ID     " + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                if ( !Sql.IsEmptyGuid(gDuplicateID) )
                                {
                                    Sql.AddParameter(cmd, "@ID", gDuplicateID);
                                    gID = Guid.Empty;
                                }
                                else
                                {
                                    Sql.AddParameter(cmd, "@ID", gID);
                                }
                                con.Open();
            #if DEBUG
                                Page.RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));
            #endif
                                using ( IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow) )
                                {
                                    if ( rdr.Read() )
                                    {
                                        ctlModuleHeader.Title = Sql.ToString(rdr["NAME"]);
                                        Utils.SetPageTitle(Page, L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                        Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                                        ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;
                                        ViewState["BILLING_ACCOUNT_ID" ] = Sql.ToGuid(rdr["BILLING_ACCOUNT_ID" ]);
                                        ViewState["SHIPPING_ACCOUNT_ID"] = Sql.ToGuid(rdr["SHIPPING_ACCOUNT_ID"]);

                                        this.AppendEditViewFields(m_sMODULE + ".EditView"       , tblMain       , rdr);
                                        this.AppendEditViewFields(m_sMODULE + ".EditAddress"    , tblAddress    , rdr);
                                        this.AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, rdr);

                                        new DynamicControl(this, "SHOW_LINE_NUMS"  ).Checked = Sql.ToBoolean(rdr["SHOW_LINE_NUMS"  ]);
                                        new DynamicControl(this, "CALC_GRAND_TOTAL").Checked = Sql.ToBoolean(rdr["CALC_GRAND_TOTAL"]);
                                        try
                                        {
                                            new DynamicControl(this, "CURRENCY_ID").SelectedValue = Sql.ToString(rdr["CURRENCY_ID"]);
                                        }
                                        catch
                                        {
                                        }
                                        try
                                        {
                                            new DynamicControl(this, "TAXRATE_ID").SelectedValue = Sql.ToString(rdr["TAXRATE_ID"]);
                                        }
                                        catch
                                        {
                                        }
                                        try
                                        {
                                            new DynamicControl(this, "SHIPPER_ID" ).SelectedValue = Sql.ToString(rdr["SHIPPER_ID"]);
                                        }
                                        catch
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + ".EditView"       , tblMain       , null);
                        this.AppendEditViewFields(m_sMODULE + ".EditAddress"    , tblAddress    , null);
                        this.AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, null);
                        // 06/08/2006 Paul.  Prepopulate the Account.
                        Guid gPARENT_ID = Sql.ToGuid(Request["PARENT_ID"]);
                        if ( !Sql.IsEmptyGuid(gPARENT_ID) )
                        {
                            string sMODULE      = String.Empty;
                            string sPARENT_TYPE = String.Empty;
                            string sPARENT_NAME = String.Empty;
                            SqlProcs.spPARENT_Get(ref gPARENT_ID, ref sMODULE, ref sPARENT_TYPE, ref sPARENT_NAME);
                            if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Accounts" )
                            {
                                UpdateAccount(gPARENT_ID, true, true);
                            }
                            if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Contacts" )
                            {
                                UpdateContact(gPARENT_ID, true, true);
                            }
                            else if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Opportunities" )
                            {
                                new DynamicControl(this, "OPPORTUNITY_ID"   ).ID   = gPARENT_ID;
                                new DynamicControl(this, "OPPORTUNITY_NAME" ).Text = sPARENT_NAME;
                            }
                        }
                    }
                }
                else
                {
                    // 12/02/2005 Paul.  When validation fails, the header title does not retain its value.  Update manually.
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    Utils.SetPageTitle(Page, L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);

                    DynamicControl ctlBILLING_ACCOUNT_ID  = new DynamicControl(this, "BILLING_ACCOUNT_ID" );
                    DynamicControl ctlSHIPPING_ACCOUNT_ID = new DynamicControl(this, "SHIPPING_ACCOUNT_ID");
                    if ( Sql.ToGuid(ViewState["BILLING_ACCOUNT_ID" ]) != ctlBILLING_ACCOUNT_ID.ID )
                    {
                        UpdateAccount(ctlBILLING_ACCOUNT_ID.ID, true, true);
                        ViewState["BILLING_ACCOUNT_ID" ] = ctlBILLING_ACCOUNT_ID.ID;
                        ViewState["SHIPPING_ACCOUNT_ID"] = ctlBILLING_ACCOUNT_ID.ID;
                    }
                    if ( Sql.ToGuid(ViewState["SHIPPING_ACCOUNT_ID"]) != ctlSHIPPING_ACCOUNT_ID.ID )
                    {
                        UpdateAccount(ctlSHIPPING_ACCOUNT_ID.ID, false, true);
                        ViewState["SHIPPING_ACCOUNT_ID"] = ctlSHIPPING_ACCOUNT_ID.ID;
                    }

                }
            }
            catch(Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex.Message);
                ctlEditButtons.ErrorText = ex.Message;
            }
        }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Save" || e.CommandName == "Charge")
            {
                ValidateEditViewFields(m_sMODULE + ".EditView");
                bool bIsValid = Page.IsValid;

                Decimal dAMOUNT = new DynamicControl(this, "AMOUNT").DecimalValue;
                if (dAMOUNT != ctlAllocationsView.ALLOCATED_TOTAL)
                {
                    ctlDynamicButtons.ErrorText =
                        Translation.GetTranslation.Term("Payments.ERR_AMOUNT_MUST_MATCH_ALLOCATION");
                    bIsValid = false;
                }
                if (bIsValid)
                {
                    string    sCUSTOM_MODULE = "PAYMENTS";
                    DataTable dtCustomFields = CRMCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                    var       oQuery         = new InlineQueryDBManager();
                    DataRow   rowCurrent     = null;
                    if (!CommonTypeConvert.IsEmptyGuid(gID))
                    {
                        string innerSql = ApplicationSQL.SQL["Payments_EditView_259"].ToString();
                        oQuery.CommandText = innerSql;
                        CRMSecurity.Filter(oQuery, m_sMODULE, "edit");
                        TypeConvert.AppendParameter(oQuery, gID, "ID", false);
                        DataTable dtCurrent = oQuery.GetTable();
                        if (dtCurrent.Rows.Count > 0)
                        {
                            rowCurrent = dtCurrent.Rows[0];
                        }
                        else
                        {
                            gID = Guid.Empty;
                        }
                    }

                    Guid     gASSIGNED_USER_ID   = new DynamicControl(this, rowCurrent, "ASSIGNED_USER_ID").ID;
                    Guid     gACCOUNT_ID         = new DynamicControl(this, rowCurrent, "ACCOUNT_ID").ID;
                    DateTime dtPAYMENT_DATE      = new DynamicControl(this, rowCurrent, "PAYMENT_DATE").DateValue;
                    string   sPAYMENT_TYPE       = new DynamicControl(this, rowCurrent, "PAYMENT_TYPE").SelectedValue;
                    string   sCUSTOMER_REFERENCE = new DynamicControl(this, rowCurrent, "CUSTOMER_REFERENCE").Text;
                    Guid     gCURRENCY_ID        = new DynamicControl(this, rowCurrent, "CURRENCY_ID").ID;
                    string   sDESCRIPTION        = new DynamicControl(this, rowCurrent, "DESCRIPTION").Text;
                    Guid     gTEAM_ID            = new DynamicControl(this, rowCurrent, "TEAM_ID").ID;
                    Guid     gCREDIT_CARD_ID     = new DynamicControl(this, rowCurrent, "CREDIT_CARD_ID").ID;
                    if (sPAYMENT_TYPE != "Credit Card")
                    {
                        gCREDIT_CARD_ID = Guid.Empty;
                    }
                    float fEXCHANGE_RATE =
                        new DynamicControl(ctlAllocationsView, rowCurrent, "EXCHANGE_RATE").FloatValue;
                    var sbINVOICE_NUMBER = new StringBuilder();
                    if (dtPAYMENT_DATE == ((DateTime)SqlDateTime.MinValue) || e.CommandName == "Charge")
                    {
                        dtPAYMENT_DATE = DateTime.Now;
                    }

                    CommonProcedure.PatmentsUpdate
                        (ref gID
                        , gASSIGNED_USER_ID
                        , gACCOUNT_ID
                        , dtPAYMENT_DATE
                        , sPAYMENT_TYPE
                        , sCUSTOMER_REFERENCE
                        , fEXCHANGE_RATE
                        , gCURRENCY_ID
                        , dAMOUNT
                        , sDESCRIPTION
                        , gTEAM_ID
                        , gCREDIT_CARD_ID
                        );
                    CRMDynamic.UpdateCustomFields(this, gID, sCUSTOM_MODULE, dtCustomFields);

                    DataTable dtLineItems = ctlAllocationsView.LineItems;
                    foreach (DataRow row in dtLineItems.Rows)
                    {
                        if (row.RowState == DataRowState.Deleted)
                        {
                            Guid gITEM_ID = CommonTypeConvert.ToGuid(row["ID", DataRowVersion.Original]);
                            if (!CommonTypeConvert.IsEmptyGuid(gITEM_ID))
                            {
                                CommonProcedure.InvoicesPAYMENTS_Delete(gITEM_ID);
                            }
                        }
                    }
                    foreach (DataRow row in dtLineItems.Rows)
                    {
                        if (row.RowState != DataRowState.Deleted)
                        {
                            Guid    gITEM_ID        = CommonTypeConvert.ToGuid(row["ID"]);
                            Guid    gINVOICE_ID     = CommonTypeConvert.ToGuid(row["INVOICE_ID"]);
                            Decimal dINVOICE_AMOUNT = CommonTypeConvert.ToDecimal(row["AMOUNT"]);
                            if (!CommonTypeConvert.IsEmptyGuid(gINVOICE_ID))
                            {
                                CommonProcedure.InvoicesPAYMENTS_Update
                                    (ref gITEM_ID
                                    , gINVOICE_ID
                                    , gID
                                    , dINVOICE_AMOUNT
                                    );
                                if (sbINVOICE_NUMBER.Length > 0)
                                {
                                    sbINVOICE_NUMBER.Append(",");
                                }
                                sbINVOICE_NUMBER.Append(gINVOICE_ID.ToString());
                            }
                        }
                    }

                    ViewState["ID"] = gID;


                    if (e.CommandName == "Charge")
                    {
                        sbINVOICE_NUMBER.Append(" " + DateTime.UtcNow);
                        //CRM.Common.Charge.CC.Charge(Application, gID, gCURRENCY_ID, gACCOUNT_ID, gCREDIT_CARD_ID, Request.UserHostAddress, sbINVOICE_NUMBER.ToString(), sDESCRIPTION, dAMOUNT);
                    }

                    Response.Redirect("view.aspx?ID=" + gID);
                }
            }
            else if (e.CommandName == "Cancel")
            {
                if (CommonTypeConvert.IsEmptyGuid(gID))
                {
                    Response.Redirect("Index.aspx");
                }
                else
                {
                    Response.Redirect("view.aspx?ID=" + gID);
                }
            }
        }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            Guid gCAMPAIGN_ID = Sql.ToGuid(Request["CAMPAIGN_ID"]);

            if (e.CommandName == "Save")
            {
                // 09/22/2007 Paul.  When the IE text box is disabled, it does not submit the data.
                // Correcting this behavior here seems reasonable.
                bool bIS_OPTOUT = new DynamicControl(this, "IS_OPTOUT").Checked;
                if (bIS_OPTOUT)
                {
                    new DynamicControl(this, "TRACKER_URL").Text = "RemoveMe.aspx";
                }

                // 01/16/2006 Paul.  Enable validator before validating page.
                this.ValidateEditViewFields(m_sMODULE + ".EditView");
                if (Page.IsValid)
                {
                    string            sCUSTOM_MODULE = "CAMPAIGN_TRKRS";
                    DataTable         dtCustomFields = SplendidCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                    DbProviderFactory dbf            = DbProviderFactories.GetFactory();
                    using (IDbConnection con = dbf.CreateConnection())
                    {
                        con.Open();
                        // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                        DataRow   rowCurrent = null;
                        DataTable dtCurrent  = new DataTable();
                        if (!Sql.IsEmptyGuid(gID))
                        {
                            string sSQL;
                            sSQL = "select *                    " + ControlChars.CrLf
                                   + "  from vwCAMPAIGN_TRKRS_Edit" + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                Security.Filter(cmd, m_sMODULE, "edit");
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                using (DbDataAdapter da = dbf.CreateDataAdapter())
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    da.Fill(dtCurrent);
                                    if (dtCurrent.Rows.Count > 0)
                                    {
                                        rowCurrent = dtCurrent.Rows[0];
                                    }
                                    else
                                    {
                                        // 11/19/2007 Paul.  If the record is not found, clear the ID so that the record cannot be updated.
                                        // It is possible that the record exists, but that ACL rules prevent it from being selected.
                                        gID = Guid.Empty;
                                    }
                                }
                            }
                        }

                        using (IDbTransaction trn = con.BeginTransaction())
                        {
                            try
                            {
                                // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                                SqlProcs.spCAMPAIGN_TRKRS_Update(ref gID
                                                                 , new DynamicControl(this, rowCurrent, "TRACKER_NAME").Text
                                                                 , new DynamicControl(this, rowCurrent, "TRACKER_URL").Text
                                                                 , new DynamicControl(this, rowCurrent, "CAMPAIGN_ID").ID
                                                                 , new DynamicControl(this, rowCurrent, "IS_OPTOUT").Checked
                                                                 , trn
                                                                 );
                                SplendidDynamic.UpdateCustomFields(this, trn, gID, sCUSTOM_MODULE, dtCustomFields);
                                trn.Commit();
                            }
                            catch (Exception ex)
                            {
                                trn.Rollback();
                                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                ctlEditButtons.ErrorText = ex.Message;
                                return;
                            }
                        }
                    }
                    if (!Sql.IsEmptyGuid(gCAMPAIGN_ID))
                    {
                        Response.Redirect("~/Campaigns/view.aspx?ID=" + gCAMPAIGN_ID.ToString());
                    }
                    else
                    {
                        Response.Redirect("view.aspx?ID=" + gID.ToString());
                    }
                }
            }
            else if (e.CommandName == "Cancel")
            {
                if (!Sql.IsEmptyGuid(gCAMPAIGN_ID))
                {
                    Response.Redirect("~/Campaigns/view.aspx?ID=" + gCAMPAIGN_ID.ToString());
                }
                else if (Sql.IsEmptyGuid(gID))
                {
                    Response.Redirect("default.aspx");
                }
                else
                {
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
                }
            }
        }
 protected void PAYMENT_TYPE_Changed(object sender, EventArgs e)
 {
     var PAYMENT_TYPE = tblMain.FindControl("PAYMENT_TYPE") as DropDownList;
     if (PAYMENT_TYPE != null)
     {
         bool bCreditCard = PAYMENT_TYPE.SelectedValue == "Credit Card";
         ctlDynamicButtons.ShowButton("Charge", bCreditCard);
         new DynamicControl(this, "CREDIT_CARD_ID_LABEL").Visible = bCreditCard;
         new DynamicControl(this, "CREDIT_CARD_NAME").Visible = bCreditCard;
         new DynamicControl(this, "CREDIT_CARD_ID_btnChange").Visible = bCreditCard;
         new DynamicControl(this, "CREDIT_CARD_ID_btnClear").Visible = bCreditCard;
         if (bCreditCard && CommonTypeConvert.IsEmptyGuid(new DynamicControl(this, "CREDIT_CARD_ID").ID))
         {
             var oQuery = new InlineQueryDBManager();
             string innerSql = ApplicationSQL.SQL["Payments_EditView_214"].ToString();
             oQuery.CommandText = innerSql;
             Guid gACCOUNT_ID = new DynamicControl(this, "ACCOUNT_ID").ID;
             TypeConvert.AppendParameter(oQuery, gACCOUNT_ID, "ACCOUNT_ID", false);
             using (SqlDataReader rdr = oQuery.ExecuteReader(CommandBehavior.SingleRow))
             {
                 if (rdr.Read())
                 {
                     new DynamicControl(this, "CREDIT_CARD_ID").ID = CommonTypeConvert.ToGuid(rdr["ID"]);
                     new DynamicControl(this, "CREDIT_CARD_NAME").Text = CommonTypeConvert.ToString(rdr["NAME"]);
                 }
             }
         }
     }
 }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            if ( e.CommandName == "Save" )
            {
                // 01/16/2006 Paul.  Enable validator before validating page.
                this.ValidateEditViewFields(m_sMODULE + ".EditView");
                string sCATEGORY = new DynamicControl(this, "CATEGORY").Text;
                if ( Page.IsValid && !Sql.IsEmptyString(sCATEGORY) )
                {
                    DbProviderFactory dbf = DbProviderFactories.GetFactory();
                    using ( IDbConnection con = dbf.CreateConnection() )
                    {
                        con.Open();
                        // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                        DataRow   rowCurrent = null;
                        DataTable dtCurrent  = new DataTable();
                        if ( !Sql.IsEmptyGuid(gID) )
                        {
                            string sSQL ;
                            sSQL = "select *            " + ControlChars.CrLf
                                 + "  from vwFORUMS_Edit" + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                Security.Filter(cmd, m_sMODULE, "edit");
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                using ( DbDataAdapter da = dbf.CreateDataAdapter() )
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    da.Fill(dtCurrent);
                                    if ( dtCurrent.Rows.Count > 0 )
                                    {
                                        rowCurrent = dtCurrent.Rows[0];
                                    }
                                    else
                                    {
                                        // 11/19/2007 Paul.  If the record is not found, clear the ID so that the record cannot be updated.
                                        // It is possible that the record exists, but that ACL rules prevent it from being selected.
                                        gID = Guid.Empty;
                                    }
                                }
                            }
                        }

                        using ( IDbTransaction trn = con.BeginTransaction() )
                        {
                            try
                            {
                                // 12/29/2007 Paul.  TEAM_ID is now in the stored procedure.
                                SqlProcs.spFORUMS_Update
                                    ( ref gID
                                    , new DynamicControl(this, "TITLE"           ).Text
                                    , new DynamicControl(this, "CATEGORY"        ).Text
                                    , new DynamicControl(this, "DESCRIPTION"     ).Text
                                    , new DynamicControl(this, "TEAM_ID"         ).ID
                                    , trn
                                    );
                                trn.Commit();
                            }
                            catch(Exception ex)
                            {
                                trn.Rollback();
                                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                ctlEditButtons.ErrorText = ex.Message;
                                return;
                            }
                        }
                    }
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
                }
            }
            else if ( e.CommandName == "Cancel" )
            {
                if ( Sql.IsEmptyGuid(gID) )
                    Response.Redirect("default.aspx");
                else
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
            }
        }
Beispiel #33
0
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Save")
            {
                try
                {
                    // 01/16/2006 Paul.  Enable validator before validating page.
                    this.ValidateEditViewFields(m_sMODULE + ".EditView");
                    this.ValidateEditViewFields(m_sMODULE + ".EditOptions");

                    if (Page.IsValid)
                    {
                        DropDownList SERVICE = FindControl("SERVICE") as DropDownList;
                        if (SERVICE != null)
                        {
                            if (SERVICE.SelectedValue == "imap")
                            {
                                ctlEditButtons.ErrorText += "POP3 is the only supported service at this time. ";
                                return;
                            }
                        }
                        DropDownList MAILBOX_TYPE = FindControl("MAILBOX_TYPE") as DropDownList;
                        if (MAILBOX_TYPE != null)
                        {
                            if (MAILBOX_TYPE.SelectedValue != "bounce")
                            {
                                ctlEditButtons.ErrorText += "Bounce handling is the only supported action at this time. ";
                                return;
                            }
                        }
                    }
                    if (Page.IsValid)
                    {
                        // 01/08/2008 Paul.  If the encryption key does not exist, then we must create it and we must save it back to the database.
                        // 01/08/2008 Paul.  SugarCRM uses blowfish for the inbound email encryption, but we will not since .NET 2.0 does not support blowfish natively.
                        Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                        if (Sql.IsEmptyGuid(gINBOUND_EMAIL_KEY))
                        {
                            gINBOUND_EMAIL_KEY = Guid.NewGuid();
                            SqlProcs.spCONFIG_Update("mail", "InboundEmailKey", gINBOUND_EMAIL_KEY.ToString());
                            Application["CONFIG.InboundEmailKey"] = gINBOUND_EMAIL_KEY;
                        }
                        Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                        if (Sql.IsEmptyGuid(gINBOUND_EMAIL_IV))
                        {
                            gINBOUND_EMAIL_IV = Guid.NewGuid();
                            SqlProcs.spCONFIG_Update("mail", "InboundEmailIV", gINBOUND_EMAIL_IV.ToString());
                            Application["CONFIG.InboundEmailIV"] = gINBOUND_EMAIL_IV;
                        }

                        string            sCUSTOM_MODULE = "INBOUND_EMAIL";
                        DataTable         dtCustomFields = SplendidCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                        DbProviderFactory dbf            = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            con.Open();
                            // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                            DataRow   rowCurrent = null;
                            DataTable dtCurrent  = new DataTable();
                            if (!Sql.IsEmptyGuid(gID))
                            {
                                string sSQL;
                                sSQL = "select *                    " + ControlChars.CrLf
                                       + "  from vwINBOUND_EMAILS_Edit" + ControlChars.CrLf
                                       + " where ID = @ID             " + ControlChars.CrLf;
                                using (IDbCommand cmd = con.CreateCommand())
                                {
                                    cmd.CommandText = sSQL;
                                    Sql.AddParameter(cmd, "@ID", gID);
                                    using (DbDataAdapter da = dbf.CreateDataAdapter())
                                    {
                                        ((IDbDataAdapter)da).SelectCommand = cmd;
                                        da.Fill(dtCurrent);
                                        if (dtCurrent.Rows.Count > 0)
                                        {
                                            rowCurrent = dtCurrent.Rows[0];
                                        }
                                        else
                                        {
                                            // 11/19/2007 Paul.  If the record is not found, clear the ID so that the record cannot be updated.
                                            // It is possible that the record exists, but that ACL rules prevent it from being selected.
                                            gID = Guid.Empty;
                                        }
                                    }
                                }
                            }
                            using (IDbTransaction trn = con.BeginTransaction())
                            {
                                try
                                {
                                    string sEMAIL_PASSWORD = new DynamicControl(this, "EMAIL_PASSWORD").Text;
                                    if (sEMAIL_PASSWORD == "**********")
                                    {
                                        if (rowCurrent != null)
                                        {
                                            sEMAIL_PASSWORD = Sql.ToString(rowCurrent["EMAIL_PASSWORD"]);
                                        }
                                        else
                                        {
                                            sEMAIL_PASSWORD = "";
                                        }
                                    }
                                    else
                                    {
                                        string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sEMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                        if (Security.DecryptPassword(sENCRYPTED_EMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV) != sEMAIL_PASSWORD)
                                        {
                                            throw(new Exception("Decryption failed"));
                                        }
                                        sEMAIL_PASSWORD = sENCRYPTED_EMAIL_PASSWORD;
                                    }
                                    SqlProcs.spINBOUND_EMAILS_Update
                                        (ref gID
                                        , new DynamicControl(this, rowCurrent, "NAME").Text
                                        , new DynamicControl(this, rowCurrent, "STATUS").SelectedValue
                                        , new DynamicControl(this, rowCurrent, "SERVER_URL").Text
                                        , new DynamicControl(this, rowCurrent, "EMAIL_USER").Text
                                        , sEMAIL_PASSWORD
                                        , Sql.ToInteger(new DynamicControl(this, rowCurrent, "PORT").Text)
                                        , new DynamicControl(this, rowCurrent, "MAILBOX_SSL").Checked
                                        , new DynamicControl(this, rowCurrent, "SERVICE").SelectedValue
                                        , "INBOX"
                                        , new DynamicControl(this, rowCurrent, "MARK_READ").Checked
                                        , new DynamicControl(this, rowCurrent, "ONLY_SINCE").Checked
                                        , new DynamicControl(this, rowCurrent, "MAILBOX_TYPE").SelectedValue
                                        , new DynamicControl(this, rowCurrent, "TEMPLATE_ID").ID
                                        , new DynamicControl(this, rowCurrent, "GROUP_ID").ID
                                        , new DynamicControl(this, rowCurrent, "FROM_NAME").Text
                                        , new DynamicControl(this, rowCurrent, "FROM_ADDR").Text
                                        , new DynamicControl(this, rowCurrent, "FILTER_DOMAIN").Text
                                        , trn
                                        );
                                    SplendidDynamic.UpdateCustomFields(this, trn, gID, sCUSTOM_MODULE, dtCustomFields);
                                    trn.Commit();
                                }
                                catch (Exception ex)
                                {
                                    trn.Rollback();
                                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                    ctlEditButtons.ErrorText = ex.Message;
                                    return;
                                }
                            }
                        }
                        SplendidCache.ClearEmailGroups();
                        SplendidCache.ClearInboundEmails();
                        Response.Redirect("view.aspx?ID=" + gID.ToString());
                    }
                }
                catch (Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlEditButtons.ErrorText = ex.Message;
                }
            }
            else if (e.CommandName == "Cancel")
            {
                if (Sql.IsEmptyGuid(gID))
                {
                    Response.Redirect("default.aspx");
                }
                else
                {
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
                }
            }
        }
 private void BindSchedule()
 {
     DateTimePicker ctlDATE_START = FindControl("DATE_START" ) as DateTimePicker;
     if ( ctlDATE_START != null )
     {
         int nDURATION_HOURS   = new DynamicControl(this, "DURATION_HOURS"  ).IntegerValue;
         int nDURATION_MINUTES = new DynamicControl(this, "DURATION_MINUTES").IntegerValue;
         DateTime dtDATE_END = ctlDATE_START.Value.AddHours(nDURATION_HOURS).AddMinutes(nDURATION_MINUTES);
         // 07/09/2006 Paul.  The date values are sent to the scheduling grid in TimeZone time.
         // The dates are converted to server time when the database is queried.
         ctlSchedulingGrid.DATE_START = ctlDATE_START.Value;
         ctlSchedulingGrid.DATE_END   = dtDATE_END;
         ctlSchedulingGrid.INVITEES   = txtINVITEE_ID.Value.Split(',');
         ctlSchedulingGrid.BuildSchedule();
     }
 }
Beispiel #35
0
		// 05/06/2010   We need a common way to attach a command from the Toolbar. 
		// 05/05/2010   We need a common way to access the parent from the Toolbar. 
		
		// 04/20/2010   Add functions to allow this control to be used as part of an InlineEdit operation. 
		public override bool IsEmpty()
		{
			string sNAME = new DynamicControl(this, "NAME").Text;
			return Sql.IsEmptyString(sNAME);
		}
        public virtual void SqlSearchClause(IDbCommand cmd)
        {
            if ( dtFields == null )
                InitializeDynamicView();
            if ( dtFields != null )
            {
                // 12/28/2007 Paul.  Disable the auto-save in a popup.
                if ( !bIsPopupSearch && bShowSearchViews )
                {
                    // 12/08/2007 Paul.  By apply the saved search here, we can automatically apply across old code.
                    if ( SavedSearchesChanged() || !IsPostBack )
                        ApplySavedSearch();
                }

                foreach(DataRowView row in dtFields.DefaultView)
                {
                    string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
                    string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
                    int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
                    int    nFORMAT_ROWS       = Sql.ToInteger(row["FORMAT_ROWS"      ]);
                    DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
                    if ( ctl != null )
                    {
                        if ( sFIELD_TYPE == "ListBox" )
                        {
                            ListControl lst = FindControl(sDATA_FIELD) as ListControl;
                            if ( lst != null )
                            {
                                int nSelected = 0;
                                foreach(ListItem item in lst.Items)
                                {
                                    if ( item.Selected )
                                        nSelected++;
                                }
                                // 01/10/2008 Paul.  When drawing the search dialog the first time (not postback),
                                // we need to assume the the first item is selected if it is DropDownList.
                                if ( !IsPostBack && lst is DropDownList && lst.Items.Count > 0 && nSelected == 0 )
                                {
                                    lst.SelectedIndex = 0;
                                    nSelected = 1;
                                }
                                // 12/03/2007 Paul.  If the NONE item is selected, then search for value of NULL.
                                if ( nSelected == 1 && String.IsNullOrEmpty(lst.SelectedValue) )
                                {
                                    if ( sDATA_FIELD.IndexOf(' ') > 0 )
                                    {
                                        cmd.CommandText += "   and (1 = 0";
                                        foreach ( string sField in sDATA_FIELD.Split(' ') )
                                            cmd.CommandText += " or " + sField + " is null";
                                        cmd.CommandText += ")";
                                    }
                                    else
                                        cmd.CommandText += "   and " + sDATA_FIELD + " is null" + ControlChars.CrLf;
                                }
                                else if ( nSelected > 0 )
                                {
                                    if ( sDATA_FIELD.IndexOf(' ') > 0 )
                                    {
                                        cmd.CommandText += "   and (1 = 0" + ControlChars.CrLf;
                                        foreach ( string sField in sDATA_FIELD.Split(' ') )
                                        {
                                            cmd.CommandText += "        or (1 = 1";
                                            Sql.AppendParameter(cmd, lst, sField);
                                            cmd.CommandText += "           )" + ControlChars.CrLf;
                                        }
                                        cmd.CommandText += "       )" + ControlChars.CrLf;
                                    }
                                    else
                                        Sql.AppendParameter(cmd,lst, sDATA_FIELD);
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "DatePicker" )
                        {
                            DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
                            if ( ctlDate != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDate.DateText) )
                                {
                                    Sql.AppendParameter(cmd, ctlDate.Value, sDATA_FIELD);
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "DateRange" )
                        {
                            DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
                            DatePicker ctlDateEnd   = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
                            DateTime dtDateStart = DateTime.MinValue;
                            DateTime dtDateEnd   = DateTime.MinValue;
                            if ( ctlDateStart != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDateStart.DateText) )
                                {
                                    dtDateStart = ctlDateStart.Value;
                                }
                            }
                            if ( ctlDateEnd != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDateEnd.DateText) )
                                {
                                    dtDateEnd = ctlDateEnd.Value;
                                }
                            }
                            if ( dtDateStart != DateTime.MinValue ||dtDateEnd != DateTime.MinValue )
                                Sql.AppendParameter(cmd, dtDateStart, dtDateEnd, sDATA_FIELD);
                        }
                        else if ( sFIELD_TYPE == "CheckBox" )
                        {
                            // 12/02/2007 Paul.  Only search for checked fields if they are checked.
                            if ( ctl.Checked )
                            {
                                // 12/02/2007 Paul.  Unassigned checkbox has a special meaning.
                                if ( sDATA_FIELD == "UNASSIGNED_ONLY" )
                                {
                                    // 10/04/2006 Paul.  Add flag to show only records that are not assigned.
                                    cmd.CommandText += "   and ASSIGNED_USER_ID is null" + ControlChars.CrLf;
                                }
                                else if ( sDATA_FIELD == "CURRENT_USER_ONLY" )
                                {
                                    Sql.AppendParameter(cmd, Security.USER_ID, "ASSIGNED_USER_ID", false);
                                }
                                else
                                {
                                    Sql.AppendParameter(cmd, ctl.Checked, sDATA_FIELD);
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "TextBox" )
                        {
                            if ( sDATA_FIELD.IndexOf(' ') > 0 )
                                Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD.Split(' '));
                            else
                                Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
                        }
                        else if ( sFIELD_TYPE == "ChangeButton" )
                        {
                            if ( nFORMAT_MAX_LENGTH == 0 && sDATA_FIELD.EndsWith("_ID") )
                            {
                                if ( !Sql.IsEmptyGuid(ctl.ID) )
                                    Sql.AppendParameter(cmd, ctl.ID, sDATA_FIELD);
                            }
                            else
                                Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
                        }
                    }
                }
            }
        }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            if ( e.CommandName == "Save" )
            {
                try
                {
                    // 01/16/2006 Paul.  Enable validator before validating page.
                    this.ValidateEditViewFields(m_sMODULE + ".EditView"   );
                    this.ValidateEditViewFields(m_sMODULE + ".EditOptions");

                    if ( Page.IsValid )
                    {
                        DropDownList SERVICE = FindControl("SERVICE") as DropDownList;
                        if ( SERVICE != null )
                        {
                            if ( SERVICE.SelectedValue == "imap" )
                            {
                                ctlEditButtons.ErrorText += "POP3 is the only supported service at this time. ";
                                return;
                            }
                        }
                        DropDownList MAILBOX_TYPE = FindControl("MAILBOX_TYPE") as DropDownList;
                        if ( MAILBOX_TYPE != null )
                        {
                            if ( MAILBOX_TYPE.SelectedValue != "bounce" )
                            {
                                ctlEditButtons.ErrorText += "Bounce handling is the only supported action at this time. ";
                                return;
                            }
                        }
                    }
                    if ( Page.IsValid )
                    {
                        // 01/08/2008 Paul.  If the encryption key does not exist, then we must create it and we must save it back to the database.
                        // 01/08/2008 Paul.  SugarCRM uses blowfish for the inbound email encryption, but we will not since .NET 2.0 does not support blowfish natively.
                        Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                        if ( Sql.IsEmptyGuid(gINBOUND_EMAIL_KEY) )
                        {
                            gINBOUND_EMAIL_KEY = Guid.NewGuid();
                            SqlProcs.spCONFIG_Update("mail", "InboundEmailKey", gINBOUND_EMAIL_KEY.ToString());
                            Application["CONFIG.InboundEmailKey"] = gINBOUND_EMAIL_KEY;
                        }
                        Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                        if ( Sql.IsEmptyGuid(gINBOUND_EMAIL_IV) )
                        {
                            gINBOUND_EMAIL_IV = Guid.NewGuid();
                            SqlProcs.spCONFIG_Update("mail", "InboundEmailIV", gINBOUND_EMAIL_IV.ToString());
                            Application["CONFIG.InboundEmailIV"] = gINBOUND_EMAIL_IV;
                        }

                        string sCUSTOM_MODULE = "INBOUND_EMAIL";
                        DataTable dtCustomFields = SplendidCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using ( IDbConnection con = dbf.CreateConnection() )
                        {
                            con.Open();
                            // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                            DataRow   rowCurrent = null;
                            DataTable dtCurrent  = new DataTable();
                            if ( !Sql.IsEmptyGuid(gID) )
                            {
                                string sSQL ;
                                sSQL = "select *                    " + ControlChars.CrLf
                                     + "  from vwINBOUND_EMAILS_Edit" + ControlChars.CrLf
                                     + " where ID = @ID             " + ControlChars.CrLf;
                                using ( IDbCommand cmd = con.CreateCommand() )
                                {
                                    cmd.CommandText = sSQL;
                                    Sql.AddParameter(cmd, "@ID", gID);
                                    using ( DbDataAdapter da = dbf.CreateDataAdapter() )
                                    {
                                        ((IDbDataAdapter)da).SelectCommand = cmd;
                                        da.Fill(dtCurrent);
                                        if ( dtCurrent.Rows.Count > 0 )
                                        {
                                            rowCurrent = dtCurrent.Rows[0];
                                        }
                                        else
                                        {
                                            // 11/19/2007 Paul.  If the record is not found, clear the ID so that the record cannot be updated.
                                            // It is possible that the record exists, but that ACL rules prevent it from being selected.
                                            gID = Guid.Empty;
                                        }
                                    }
                                }
                            }
                            using ( IDbTransaction trn = con.BeginTransaction() )
                            {
                                try
                                {
                                    string sEMAIL_PASSWORD = new DynamicControl(this, "EMAIL_PASSWORD").Text;
                                    if ( sEMAIL_PASSWORD == "**********" )
                                    {
                                        if ( rowCurrent != null )
                                            sEMAIL_PASSWORD = Sql.ToString(rowCurrent["EMAIL_PASSWORD"]);
                                        else
                                            sEMAIL_PASSWORD = "";
                                    }
                                    else
                                    {
                                        string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sEMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                        if ( Security.DecryptPassword(sENCRYPTED_EMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV) != sEMAIL_PASSWORD )
                                            throw(new Exception("Decryption failed"));
                                        sEMAIL_PASSWORD = sENCRYPTED_EMAIL_PASSWORD;
                                    }
                                    SqlProcs.spINBOUND_EMAILS_Update
                                        ( ref gID
                                        , new DynamicControl(this, rowCurrent, "NAME"          ).Text
                                        , new DynamicControl(this, rowCurrent, "STATUS"        ).SelectedValue
                                        , new DynamicControl(this, rowCurrent, "SERVER_URL"    ).Text
                                        , new DynamicControl(this, rowCurrent, "EMAIL_USER"    ).Text
                                        , sEMAIL_PASSWORD
                                        , Sql.ToInteger(new DynamicControl(this, rowCurrent, "PORT").Text)
                                        , new DynamicControl(this, rowCurrent, "MAILBOX_SSL"   ).Checked
                                        , new DynamicControl(this, rowCurrent, "SERVICE"       ).SelectedValue
                                        , "INBOX"
                                        , new DynamicControl(this, rowCurrent, "MARK_READ"     ).Checked
                                        , new DynamicControl(this, rowCurrent, "ONLY_SINCE"    ).Checked
                                        , new DynamicControl(this, rowCurrent, "MAILBOX_TYPE"  ).SelectedValue
                                        , new DynamicControl(this, rowCurrent, "TEMPLATE_ID"   ).ID
                                        , new DynamicControl(this, rowCurrent, "GROUP_ID"      ).ID
                                        , new DynamicControl(this, rowCurrent, "FROM_NAME"     ).Text
                                        , new DynamicControl(this, rowCurrent, "FROM_ADDR"     ).Text
                                        , new DynamicControl(this, rowCurrent, "FILTER_DOMAIN" ).Text
                                        , trn
                                        );
                                    SplendidDynamic.UpdateCustomFields(this, trn, gID, sCUSTOM_MODULE, dtCustomFields);
                                    trn.Commit();
                                }
                                catch(Exception ex)
                                {
                                    trn.Rollback();
                                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                    ctlEditButtons.ErrorText = ex.Message;
                                    return;
                                }
                            }
                        }
                        SplendidCache.ClearEmailGroups();
                        SplendidCache.ClearInboundEmails();
                        Response.Redirect("view.aspx?ID=" + gID.ToString());
                    }
                }
                catch(Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlEditButtons.ErrorText = ex.Message;
                }
            }
            else if ( e.CommandName == "Cancel" )
            {
                if ( Sql.IsEmptyGuid(gID) )
                    Response.Redirect("default.aspx");
                else
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
            }
        }
        private void Page_Load(object sender, System.EventArgs e)
        {
            SetPageTitle(L10n.Term(".moduleList." + m_sMODULE));
            // 06/04/2006 Paul.  Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load.
            this.Visible = (SplendidCRM.Security.GetUserAccess(m_sMODULE, "edit") >= 0);
            if ( !this.Visible )
                return;

            try
            {
                // 06/09/2006 Paul.  Remove data binding in the user controls.  Binding is required, but only do so in the ASPX pages.
                //Page.DataBind();
                gID = Sql.ToGuid(Request["ID"]);
                if ( !IsPostBack )
                {
                    string sLOAD_MODULE     = "Invoices"  ;
                    string sLOAD_MODULE_KEY = "INVOICE_ID";
                    Guid gQUOTE_ID    = Sql.ToGuid(Request["QUOTE_ID"]);
                    Guid gORDER_ID    = Sql.ToGuid(Request["ORDER_ID"]);
                    Guid gDuplicateID = Sql.ToGuid(Request["DuplicateID"]);
                    if ( !Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID) || !Sql.IsEmptyGuid(gQUOTE_ID) || !Sql.IsEmptyGuid(gORDER_ID) )
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using ( IDbConnection con = dbf.CreateConnection() )
                        {
                            string sSQL ;
                            sSQL = "select *              " + ControlChars.CrLf
                                 + "  from vwINVOICES_Edit" + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                if ( !Sql.IsEmptyGuid(gQUOTE_ID) )
                                {
                                    // 04/28/2007 Paul.  Load the data from the QUOTES record.
                                    sLOAD_MODULE     = "Quotes"  ;
                                    sLOAD_MODULE_KEY = "QUOTE_ID";
                                    sSQL = "select *                        " + ControlChars.CrLf
                                         + "  from vwQUOTES_ConvertToInvoice" + ControlChars.CrLf;
                                    cmd.CommandText = sSQL;
                                    // 04/28/2007 Paul.  Filter by the module we are loading.
                                    Security.Filter(cmd, sLOAD_MODULE, "edit");
                                    Sql.AppendParameter(cmd, gQUOTE_ID, "ID", false);
                                }
                                else if ( !Sql.IsEmptyGuid(gORDER_ID) )
                                {
                                    // 04/28/2007 Paul.  Load the data from the ORDERS record.
                                    sLOAD_MODULE     = "Orders"  ;
                                    sLOAD_MODULE_KEY = "ORDER_ID";
                                    sSQL = "select *                        " + ControlChars.CrLf
                                         + "  from vwORDERS_ConvertToInvoice" + ControlChars.CrLf;
                                    cmd.CommandText = sSQL;
                                    // 04/28/2007 Paul.  Filter by the module we are loading.
                                    Security.Filter(cmd, sLOAD_MODULE, "edit");
                                    Sql.AppendParameter(cmd, gORDER_ID, "ID", false);
                                }
                                else
                                {
                                    // 11/24/2006 Paul.  Use new Security.Filter() function to apply Team and ACL security rules.
                                    Security.Filter(cmd, m_sMODULE, "edit");
                                    if ( !Sql.IsEmptyGuid(gDuplicateID) )
                                    {
                                        Sql.AppendParameter(cmd, gDuplicateID, "ID", false);
                                        gID = Guid.Empty;
                                    }
                                    else
                                    {
                                        Sql.AppendParameter(cmd, gID, "ID", false);
                                    }
                                }
                                con.Open();

                                if ( bDebug )
                                    RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));

                                using ( IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow) )
                                {
                                    if ( rdr.Read() )
                                    {
                                        ctlModuleHeader.Title = Sql.ToString(rdr["NAME"]);
                                        SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                        Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                                        ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;
                                        ViewState["BILLING_ACCOUNT_ID" ] = Sql.ToGuid(rdr["BILLING_ACCOUNT_ID" ]);
                                        ViewState["SHIPPING_ACCOUNT_ID"] = Sql.ToGuid(rdr["SHIPPING_ACCOUNT_ID"]);

                                        new DynamicControl(this, "QUOTE_ID").ID = Sql.ToGuid(rdr["QUOTE_ID"]);
                                        new DynamicControl(this, "ORDER_ID").ID = Sql.ToGuid(rdr["ORDER_ID"]);

                                        this.AppendEditViewFields(m_sMODULE + ".EditView"       , tblMain       , rdr);
                                        this.AppendEditViewFields(m_sMODULE + ".EditAddress"    , tblAddress    , rdr);
                                        this.AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, rdr);

                                        if ( !Sql.IsEmptyGuid(gQUOTE_ID) )
                                        {
                                            new DynamicControl(this, "QUOTE_ID"  ).ID   = gQUOTE_ID;
                                            new DynamicControl(this, "QUOTE_NAME").Text = Sql.ToString(rdr["NAME"]);
                                            ctlEditLineItemsView.LoadLineItems(gQUOTE_ID, Guid.Empty, con, rdr, sLOAD_MODULE, sLOAD_MODULE_KEY);
                                        }
                                        else if ( !Sql.IsEmptyGuid(gORDER_ID) )
                                        {
                                            new DynamicControl(this, "ORDER_ID"  ).ID   = gORDER_ID;
                                            new DynamicControl(this, "ORDER_NAME").Text = Sql.ToString(rdr["NAME"]);
                                            ctlEditLineItemsView.LoadLineItems(gORDER_ID, Guid.Empty, con, rdr, sLOAD_MODULE, sLOAD_MODULE_KEY);
                                        }
                                        else
                                        {
                                            ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, con, rdr, sLOAD_MODULE, sLOAD_MODULE_KEY);
                                        }
                                    }
                                    else
                                    {
                                        ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, con, null, String.Empty, String.Empty);

                                        // 11/25/2006 Paul.  If item is not visible, then don't allow save
                                        ctlEditButtons.DisableAll();
                                        ctlEditButtons.ErrorText = L10n.Term("ACL.LBL_NO_ACCESS");
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + ".EditView"       , tblMain       , null);
                        this.AppendEditViewFields(m_sMODULE + ".EditAddress"    , tblAddress    , null);
                        this.AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, null);
                        // 06/08/2006 Paul.  Prepopulate the Account.
                        Guid gPARENT_ID = Sql.ToGuid(Request["PARENT_ID"]);
                        if ( !Sql.IsEmptyGuid(gPARENT_ID) )
                        {
                            string sMODULE      = String.Empty;
                            string sPARENT_TYPE = String.Empty;
                            string sPARENT_NAME = String.Empty;
                            SqlProcs.spPARENT_Get(ref gPARENT_ID, ref sMODULE, ref sPARENT_TYPE, ref sPARENT_NAME);
                            if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Accounts" )
                            {
                                UpdateAccount(gPARENT_ID, true, true);
                            }
                            if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Contacts" )
                            {
                                UpdateContact(gPARENT_ID, true, true);
                            }
                            else if ( !Sql.IsEmptyGuid(gPARENT_ID) && sMODULE == "Opportunities" )
                            {
                                new DynamicControl(this, "OPPORTUNITY_ID"   ).ID   = gPARENT_ID;
                                new DynamicControl(this, "OPPORTUNITY_NAME" ).Text = sPARENT_NAME;
                            }
                        }
                        ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, null, null, String.Empty, String.Empty);
                    }
                }
                else
                {
                    // 12/02/2005 Paul.  When validation fails, the header title does not retain its value.  Update manually.
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);

                    DynamicControl ctlBILLING_ACCOUNT_ID  = new DynamicControl(this, "BILLING_ACCOUNT_ID" );
                    DynamicControl ctlSHIPPING_ACCOUNT_ID = new DynamicControl(this, "SHIPPING_ACCOUNT_ID");
                    if ( Sql.ToGuid(ViewState["BILLING_ACCOUNT_ID" ]) != ctlBILLING_ACCOUNT_ID.ID )
                    {
                        UpdateAccount(ctlBILLING_ACCOUNT_ID.ID, true, true);
                        ViewState["BILLING_ACCOUNT_ID" ] = ctlBILLING_ACCOUNT_ID.ID;
                        ViewState["SHIPPING_ACCOUNT_ID"] = ctlBILLING_ACCOUNT_ID.ID;
                    }
                    if ( Sql.ToGuid(ViewState["SHIPPING_ACCOUNT_ID"]) != ctlSHIPPING_ACCOUNT_ID.ID )
                    {
                        UpdateAccount(ctlSHIPPING_ACCOUNT_ID.ID, false, true);
                        ViewState["SHIPPING_ACCOUNT_ID"] = ctlSHIPPING_ACCOUNT_ID.ID;
                    }
                }
            }
            catch(Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                ctlEditButtons.ErrorText = ex.Message;
            }
        }
        public static void UpdateCustomFields(CRMControl ctlPARENT, Guid gID, string sCUSTOM_MODULE, DataTable dtCustomFields)
        {
            if (dtCustomFields.Rows.Count > 0)
            {
                InlineQueryDBManager oQuery = new InlineQueryDBManager();
                oQuery.CommandText = "update " + sCUSTOM_MODULE + "_CSTM" + ControlChars.CrLf;
                int nFieldIndex = 0;
                foreach (DataRow row in dtCustomFields.Rows)
                {
                    string sNAME = TypeConvert.ToString(row["NAME"]).ToUpper();
                    string sCsType = TypeConvert.ToString(row["CsType"]);

                    int nMAX_SIZE = TypeConvert.ToInteger(row["MAX_SIZE"]);
                    DynamicControl ctlCustomField = new DynamicControl(ctlPARENT, sNAME);

                    if (ctlCustomField.Exists && ctlCustomField.Type != "Literal")
                    {
                        if (nFieldIndex == 0)
                            oQuery.CommandText += "   set ";
                        else
                            oQuery.CommandText += "     , ";

                        oQuery.CommandText += sNAME + " = @" + sNAME + ControlChars.CrLf;

                        DynamicControl ctlCustomField_File = new DynamicControl(ctlPARENT, sNAME + "_File");

                        if (sCsType == "Guid" && ctlCustomField.Type == "HtmlInputHidden" && ctlCustomField_File.Exists)
                        {
                            LoadImage(ctlPARENT, gID, sNAME);
                        }
                        SqlParameter oParam = new SqlParameter();
                        switch (sCsType)
                        {
                            case "Guid":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.UniqueIdentifier);
                                oParam.Value = ctlCustomField.ID;
                                break;
                            case "short":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Int);
                                oParam.Value = ctlCustomField.IntegerValue;
                                break;
                            case "Int32":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Int);
                                oParam.Value = ctlCustomField.IntegerValue;
                                break;
                            case "Int64":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Int);
                                oParam.Value = ctlCustomField.IntegerValue;
                                break;
                            case "float":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Float);
                                oParam.Value = ctlCustomField.FloatValue;
                                break;
                            case "decimal":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Decimal);
                                oParam.Value = ctlCustomField.DecimalValue;
                                break;
                            case "bool":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.Bit);
                                oParam.Value = ctlCustomField.Checked;
                                break;
                            case "DateTime":
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.DateTime);
                                oParam.Value = ctlCustomField.DateValue;
                                break;
                            default:
                                oParam = new SqlParameter("@" + sNAME, SqlDbType.NVarChar, nMAX_SIZE);
                                oParam.Value = ctlCustomField.Text;
                                break;
                        }
                        nFieldIndex++;
                    }
                }
                if (nFieldIndex > 0)
                {
                    oQuery.CommandText += " where ID_C = @ID_C" + ControlChars.CrLf;
                    SqlParameter oParamID = new SqlParameter("@ID_C", SqlDbType.UniqueIdentifier);
                    oParamID.Value = gID;
                    oQuery.CommandType = CommandType.Text;
                    oQuery.ExecuteNonQuery(oQuery.CommandText);
                }
            }
        }
Beispiel #40
0
 private void showModal()
 {
     DynamicControl.ShowModal(this, btnCancel, divModalEditHP);
 }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            if (e.CommandName == "Save" || e.CommandName == "Charge")
            {
                ValidateEditViewFields(m_sMODULE + ".EditView");
                bool bIsValid = Page.IsValid;

                Decimal dAMOUNT = new DynamicControl(this, "AMOUNT").DecimalValue;
                if (dAMOUNT != ctlAllocationsView.ALLOCATED_TOTAL)
                {
                    ctlDynamicButtons.ErrorText =
                        Translation.GetTranslation.Term("Payments.ERR_AMOUNT_MUST_MATCH_ALLOCATION");
                    bIsValid = false;
                }
                if (bIsValid)
                {
                    string sCUSTOM_MODULE = "PAYMENTS";
                    DataTable dtCustomFields = CRMCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                    var oQuery = new InlineQueryDBManager();
                    DataRow rowCurrent = null;
                    if (!CommonTypeConvert.IsEmptyGuid(gID))
                    {
                        string innerSql = ApplicationSQL.SQL["Payments_EditView_259"].ToString();
                        oQuery.CommandText = innerSql;
                        CRMSecurity.Filter(oQuery, m_sMODULE, "edit");
                        TypeConvert.AppendParameter(oQuery, gID, "ID", false);
                        DataTable dtCurrent = oQuery.GetTable();
                        if (dtCurrent.Rows.Count > 0)
                        {
                            rowCurrent = dtCurrent.Rows[0];
                        }
                        else
                        {
                            gID = Guid.Empty;
                        }
                    }

                    Guid gASSIGNED_USER_ID = new DynamicControl(this, rowCurrent, "ASSIGNED_USER_ID").ID;
                    Guid gACCOUNT_ID = new DynamicControl(this, rowCurrent, "ACCOUNT_ID").ID;
                    DateTime dtPAYMENT_DATE = new DynamicControl(this, rowCurrent, "PAYMENT_DATE").DateValue;
                    string sPAYMENT_TYPE = new DynamicControl(this, rowCurrent, "PAYMENT_TYPE").SelectedValue;
                    string sCUSTOMER_REFERENCE = new DynamicControl(this, rowCurrent, "CUSTOMER_REFERENCE").Text;
                    Guid gCURRENCY_ID = new DynamicControl(this, rowCurrent, "CURRENCY_ID").ID;
                    string sDESCRIPTION = new DynamicControl(this, rowCurrent, "DESCRIPTION").Text;
                    Guid gTEAM_ID = new DynamicControl(this, rowCurrent, "TEAM_ID").ID;
                    Guid gCREDIT_CARD_ID = new DynamicControl(this, rowCurrent, "CREDIT_CARD_ID").ID;
                    if (sPAYMENT_TYPE != "Credit Card")
                        gCREDIT_CARD_ID = Guid.Empty;
                    float fEXCHANGE_RATE =
                        new DynamicControl(ctlAllocationsView, rowCurrent, "EXCHANGE_RATE").FloatValue;
                    var sbINVOICE_NUMBER = new StringBuilder();
                    if (dtPAYMENT_DATE == ((DateTime) SqlDateTime.MinValue) || e.CommandName == "Charge")
                        dtPAYMENT_DATE = DateTime.Now;

                    CommonProcedure.PatmentsUpdate
                        (ref gID
                         , gASSIGNED_USER_ID
                         , gACCOUNT_ID
                         , dtPAYMENT_DATE
                         , sPAYMENT_TYPE
                         , sCUSTOMER_REFERENCE
                         , fEXCHANGE_RATE
                         , gCURRENCY_ID
                         , dAMOUNT
                         , sDESCRIPTION
                         , gTEAM_ID
                         , gCREDIT_CARD_ID
                        );
                    CRMDynamic.UpdateCustomFields(this, gID, sCUSTOM_MODULE, dtCustomFields);

                    DataTable dtLineItems = ctlAllocationsView.LineItems;
                    foreach (DataRow row in dtLineItems.Rows)
                    {
                        if (row.RowState == DataRowState.Deleted)
                        {
                            Guid gITEM_ID = CommonTypeConvert.ToGuid(row["ID", DataRowVersion.Original]);
                            if (!CommonTypeConvert.IsEmptyGuid(gITEM_ID))
                                CommonProcedure.InvoicesPAYMENTS_Delete(gITEM_ID);
                        }
                    }
                    foreach (DataRow row in dtLineItems.Rows)
                    {
                        if (row.RowState != DataRowState.Deleted)
                        {
                            Guid gITEM_ID = CommonTypeConvert.ToGuid(row["ID"]);
                            Guid gINVOICE_ID = CommonTypeConvert.ToGuid(row["INVOICE_ID"]);
                            Decimal dINVOICE_AMOUNT = CommonTypeConvert.ToDecimal(row["AMOUNT"]);
                            if (!CommonTypeConvert.IsEmptyGuid(gINVOICE_ID))
                            {
                                CommonProcedure.InvoicesPAYMENTS_Update
                                    (ref gITEM_ID
                                     , gINVOICE_ID
                                     , gID
                                     , dINVOICE_AMOUNT
                                    );
                                if (sbINVOICE_NUMBER.Length > 0)
                                    sbINVOICE_NUMBER.Append(",");
                                sbINVOICE_NUMBER.Append(gINVOICE_ID.ToString());
                            }
                        }
                    }

                    ViewState["ID"] = gID;

                    if (e.CommandName == "Charge")
                    {
                        sbINVOICE_NUMBER.Append(" " + DateTime.UtcNow);
                        //CRM.Common.Charge.CC.Charge(Application, gID, gCURRENCY_ID, gACCOUNT_ID, gCREDIT_CARD_ID, Request.UserHostAddress, sbINVOICE_NUMBER.ToString(), sDESCRIPTION, dAMOUNT);
                    }

                    Response.Redirect("view.aspx?ID=" + gID);
                }
            }
            else if (e.CommandName == "Cancel")
            {
                if (CommonTypeConvert.IsEmptyGuid(gID))
                    Response.Redirect("Index.aspx");
                else
                    Response.Redirect("view.aspx?ID=" + gID);
            }
        }
Beispiel #42
0
		private void Page_Load(object sender, System.EventArgs e)
		{
			SetPageTitle(L10n.Term(sImportModule + ".LBL_MODULE_NAME"));
			// 06/04/2006   Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load. 
			// 03/17/2010   Access rights must be in reference to the Import Module. 
			this.Visible = Security.isAdmin || (Taoqi.Security.GetUserAccess(sImportModule, "import") >= 0);
			if ( !this.Visible )
			{
				// 03/17/2010   We need to rebind the parent in order to get the error message to display. 
				Parent.DataBind();
				return;
			}

			xml = new XmlDocument();
			xmlMapping = new XmlDocument();
			xmlMapping.AppendChild(xmlMapping.CreateProcessingInstruction("xml" , "version=\"1.0\" encoding=\"UTF-8\""));
			xmlMapping.AppendChild(xmlMapping.CreateElement("Import"));

			sbImport = new StringBuilder();
			try
			{
				// 11/01/2006   Max errors is now a config value. 
				nMAX_ERRORS = Sql.ToInteger(Application["CONFIG.import_max_errors"]);
				if ( nMAX_ERRORS <= 0 )
					nMAX_ERRORS = 200;

				// 07/02/2006   The required fields need to be bound manually. 
				reqNAME    .DataBind();
				reqFILENAME.DataBind();
				// 12/17/2005   Don't buffer so that the connection can be kept alive. 
				Response.BufferOutput = false;

				BindSaved();
				// 10/08/2006   Columns table is used in multiple locations.  Make sure to load only once. 
				// 04/22/2012   Calculate a display name without spaces to get better hits with Salesforce field names. 
				UpdateImportColumns();

				gID = Sql.ToGuid(Request["ID"]);
				if ( !IsPostBack )
				{
					radEXCEL.Checked = true;
					chkHasHeader.Checked = true;
					txtACTIVE_TAB.Value = "1";

					// 09/06/2012   Allow direct import into prospect list. 
					// 10/22/2013   Title was not getting set properly. 
					ViewState["ctlModuleHeader.Title"] = L10n.Term(sImportModule + ".LBL_MODULE_NAME");
					if ( sImportModule == "Contacts" || sImportModule == "Leads" || sImportModule == "Prospects" )
					{
						Guid gPROSPECT_LIST_ID = Sql.ToGuid(Request["PROSPECT_LIST_ID"]);
						if ( !Sql.IsEmptyGuid(gPROSPECT_LIST_ID) )
						{
							try
							{
								string sPROSPECT_LIST_NAME = Crm.Modules.ItemName(Application, "ProspectLists", gPROSPECT_LIST_ID);
								ViewState["PROSPECT_LIST_ID"] = gPROSPECT_LIST_ID;
								ctlModuleHeader.Title = String.Format(L10n.Term("Import.LBL_IMPORT_INTO"), sPROSPECT_LIST_NAME);
								ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;
								SetPageTitle(ctlModuleHeader.Title);
							}
							catch
							{
							}
						}
					}

					// 09/17/2013   Add Business Rules to import. 
					lstREEVALUATION.DataSource = SplendidCache.List("rules_reevaluation_dom");
					lstREEVALUATION.DataBind();
					foreach ( DataGridColumn col in dgRules.Columns )
					{
						if ( !Sql.IsEmptyString(col.HeaderText) )
						{
							col.HeaderText = L10n.Term(col.HeaderText);
						}
					}
					string sMODULE_TABLE = Sql.ToString(Application["Modules." + sImportModule + ".TableName"]);
					dtRuleColumns = SplendidCache.SqlColumns("vw" + sMODULE_TABLE + "_List");
					ViewState["RULE_COLUMNS"] = dtRuleColumns;
					ctlConditionSchemaRepeater.DataSource = dtRuleColumns;
					ctlThenSchemaRepeater     .DataSource = dtRuleColumns;
					ctlElseSchemaRepeater     .DataSource = dtRuleColumns;
					ctlConditionSchemaRepeater.DataBind();
					ctlThenSchemaRepeater     .DataBind();
					ctlElseSchemaRepeater     .DataBind();

					radEXCEL           .DataBind();
					radXML_SPREADSHEET .DataBind();
					radXML             .DataBind();
					radSALESFORCE      .DataBind();
					radACT_2005        .DataBind();
					radDBASE           .DataBind();
					radCUSTOM_CSV      .DataBind();
					radCUSTOM_TAB      .DataBind();
					radCUSTOM_DELIMITED.DataBind();
					radLINKEDIN        .DataBind();
					radTWITTER         .DataBind();
					radFACEBOOK        .DataBind();
					radQUICKBOOKS      .DataBind();

					//radEXCEL           .Attributes.Add("onclick", "SelectSourceFormat()");
					//radXML_SPREADSHEET .Attributes.Add("onclick", "SelectSourceFormat()");
					//radXML             .Attributes.Add("onclick", "SelectSourceFormat()");
					//radSALESFORCE      .Attributes.Add("onclick", "SelectSourceFormat()");
					//radACT_2005        .Attributes.Add("onclick", "SelectSourceFormat()");
					//radDBASE           .Attributes.Add("onclick", "SelectSourceFormat()");
					//radCUSTOM_CSV      .Attributes.Add("onclick", "SelectSourceFormat()");
					//radCUSTOM_TAB      .Attributes.Add("onclick", "SelectSourceFormat()");
					//radCUSTOM_DELIMITED.Attributes.Add("onclick", "SelectSourceFormat()");
					//radLINKEDIN        .Attributes.Add("onclick", "SelectSourceFormat()");
					//radTWITTER         .Attributes.Add("onclick", "SelectSourceFormat()");
					//radFACEBOOK        .Attributes.Add("onclick", "SelectSourceFormat()");
					//radQUICKBOOKS      .Attributes.Add("onclick", "SelectSourceFormat()");
					ctlListHeader.Title = L10n.Term("Import.LBL_LAST_IMPORTED") + " " + L10n.Term(".moduleList.", sImportModule);

					SOURCE_TYPE_CheckedChanged(null, null);
					if ( !Sql.IsEmptyGuid(gID) )
					{
						DbProviderFactory dbf = DbProviderFactories.GetFactory();
						using ( IDbConnection con = dbf.CreateConnection() )
						{
							string sSQL;
							sSQL = "select *                 " + ControlChars.CrLf
							     + "  from vwIMPORT_MAPS_Edit" + ControlChars.CrLf
							     + " where ID = @ID          " + ControlChars.CrLf;
							using ( IDbCommand cmd = con.CreateCommand() )
							{
								cmd.CommandText = sSQL;
								Sql.AddParameter(cmd, "@ID", gID);
								con.Open();

								if ( bDebug )
									RegisterClientScriptBlock("vwIMPORT_MAPS_Edit", Sql.ClientScriptBlock(cmd));

								using ( IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow) )
								{
									if ( rdr.Read() )
									{
										// 03/16/2010   The ViewState will be the primary location for the ID. 
										ViewState["ID"] = gID;
										SourceType(Sql.ToString(rdr["SOURCE"]));
										// 03/16/2010   Update the name of the loaded import. 
										txtNAME.Text = Sql.ToString(rdr["NAME"]);
										chkHasHeader.Checked = Sql.ToBoolean(rdr["HAS_HEADER"]);
										
										string sXmlMapping = Sql.ToString (rdr["CONTENT"]);
										ViewState["xmlMapping"] = sXmlMapping;
										xmlMapping.LoadXml(sXmlMapping);
										
										// 03/16/2010   Update the loaded default values. 
										XmlNodeList nlFields = xmlMapping.DocumentElement.SelectNodes("Fields/Field");
										foreach ( XmlNode xField in nlFields )
										{
											string sFieldName = xField.Attributes.GetNamedItem("Name").Value;
											DynamicControl ctl = new DynamicControl(ctlDefaultsView, sFieldName);
											if ( ctl.Exists )
											{
												string sDefaultValue = XmlUtil.SelectSingleNode(xField, "Default");
												ctl.Text = sDefaultValue;
											}
										}
										
										// 10/12/2006   Extract the sample from the mapping. 
										xml = new XmlDocument();
										string sXmlSample = XmlUtil.SelectSingleNode(xmlMapping, "Sample");
										// 09/04/2010   Store the sample data in the Session to prevent a huge download. 
										// We are seeing a 13M html file for an 8M import file. 
										Session[sImportModule + ".xmlSample." + gID.ToString()] = sXmlSample;
										ViewState["xmlSample"] = sImportModule + ".xmlSample." + gID.ToString();
										XmlUtil.SetSingleNode(xmlMapping, "Sample", String.Empty);
										if ( sXmlSample.Length > 0 )
											xml.LoadXml(sXmlSample);
										
										// 09/17/2013   Add Business Rules to import. 
										dtRules = new DataTable();
										string sRULES_XML = Sql.ToString(rdr["RULES_XML"]);
										// 11/08/2013   Make sure rules exist before trying to read XML. 
										if ( !Sql.IsEmptyString(sRULES_XML) )
										{
											using ( StringReader srdr = new StringReader(sRULES_XML) )
											{
												dtRules.ReadXml(srdr);
											}
										}
										// 06/02/2014   If no rules were loaded, then we need to clear the rules table so that it gets initialized properly. 
										if ( dtRules.Rows.Count == 0 )
										{
											dtRules = null;
										}
										
										// 03/16/2010   The duplicate filters should be updated inside UpdateImportMappings. 
										UpdateImportMappings(xml, false, false);
										txtACTIVE_TAB.Value = "3";
									}
								}
							}
						}
					}
					else
					{
						XmlUtil.SetSingleNodeAttribute(xmlMapping, xmlMapping.DocumentElement, "Name", String.Empty);
						XmlUtil.SetSingleNode(xmlMapping, "Module"    , sImportModule);
						XmlUtil.SetSingleNode(xmlMapping, "SourceType", SourceType() );
						XmlUtil.SetSingleNode(xmlMapping, "HasHeader" , chkHasHeader.Checked.ToString());
						InitMapping();
					}
					
					// 09/17/2013   Add Business Rules to import. 
					if ( dtRules == null )
					{
						dtRules = new DataTable();
						DataColumn colID           = new DataColumn("ID"          , typeof(System.Guid   ));
						DataColumn colRULE_NAME    = new DataColumn("RULE_NAME"   , typeof(System.String ));
						DataColumn colPRIORITY     = new DataColumn("PRIORITY"    , typeof(System.Int32  ));
						DataColumn colREEVALUATION = new DataColumn("REEVALUATION", typeof(System.String ));
						DataColumn colACTIVE       = new DataColumn("ACTIVE"      , typeof(System.Boolean));
						DataColumn colCONDITION    = new DataColumn("CONDITION"   , typeof(System.String ));
						DataColumn colTHEN_ACTIONS = new DataColumn("THEN_ACTIONS", typeof(System.String ));
						DataColumn colELSE_ACTIONS = new DataColumn("ELSE_ACTIONS", typeof(System.String ));
						dtRules.Columns.Add(colID          );
						dtRules.Columns.Add(colRULE_NAME   );
						dtRules.Columns.Add(colPRIORITY    );
						dtRules.Columns.Add(colREEVALUATION);
						dtRules.Columns.Add(colACTIVE      );
						dtRules.Columns.Add(colCONDITION   );
						dtRules.Columns.Add(colTHEN_ACTIONS);
						dtRules.Columns.Add(colELSE_ACTIONS);
					}
					ViewState["RulesDataTable"] = dtRules;

					dgRules.DataSource = dtRules;
					dgRules.DataBind();
				}
				else
				{
					ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
					SetPageTitle(ctlModuleHeader.Title);
					string sXmlMapping = Sql.ToString(ViewState["xmlMapping"]);
					if ( sXmlMapping.Length > 0 )
						xmlMapping.LoadXml(sXmlMapping);
					
					XmlUtil.SetSingleNodeAttribute(xmlMapping, xmlMapping.DocumentElement, "Name", txtNAME.Text);
					XmlUtil.SetSingleNode(xmlMapping, "Module"    , sImportModule);
					XmlUtil.SetSingleNode(xmlMapping, "SourceType", SourceType() );
					XmlUtil.SetSingleNode(xmlMapping, "HasHeader" , chkHasHeader.Checked.ToString());
					// 12/17/2008   Update the duplicate filter and then rebind. 
					DuplicateFilterUpdate();
					ctlDuplicateFilterChooser_Bind();

					// 10/10/2006   This loop updates the default values. Field mappings are updated inside UpdateImportMappings(). 
					XmlNodeList nlFields = xmlMapping.DocumentElement.SelectNodes("Fields/Field");
					foreach ( XmlNode xField in nlFields )
					{
						string sFieldName = xField.Attributes.GetNamedItem("Name").Value;
						DynamicControl ctl = new DynamicControl(ctlDefaultsView, sFieldName);
						// 08/01/2010   Fixed bug in Import.  The Exist check was failing because we were not converting TEAM_SET_LIST to TEAM_SET_NAME. 
						if ( ctl.Exists )
						{
							XmlUtil.SetSingleNode(xmlMapping, xField, "Default", ctl.Text);
						}
					}

					// 09/04/2010   Store the sample data in the Session to prevent a huge download. 
					// We are seeing a 13M html file for an 8M import file. 
					string sXmlSample = Sql.ToString(Session[Sql.ToString(ViewState["xmlSample"])]);
					if ( sXmlSample.Length > 0 )
					{
						xml.LoadXml(sXmlSample);
						UpdateImportMappings(xml, false, true);
					}
					
					string sProcessedFileID   = Sql.ToString(ViewState["ProcessedFileID"]);
					string sProcessedFileName = Sql.ToString(Session["TempFile." + sProcessedFileID]);
					string sProcessedPathName = Path.Combine(Path.GetTempPath(), sProcessedFileName);
					if ( File.Exists(sProcessedPathName) )
					{
						DataSet dsProcessed = new DataSet();
						dsProcessed.ReadXml(sProcessedPathName);
						if ( dsProcessed.Tables.Count == 1 )
						{
							PreviewGrid(dsProcessed.Tables[0]);
						}
					}
					// 09/17/2013   Add Business Rules to import. 
					dtRuleColumns = ViewState["RULE_COLUMNS"] as DataTable;
					dtRules = ViewState["RulesDataTable"] as DataTable;
					dgRules.DataSource = dtRules;
					dgRules.DataBind();
				}
				// 09/17/2013   Add Business Rules to import. 
				reqRULE_NAME   .DataBind();
				reqCONDITION   .DataBind();
				reqTHEN_ACTIONS.DataBind();
			}
			catch ( Exception ex )
			{
				ctlDynamicButtons.ErrorText = ex.Message;
			}
		}
        public static bool LoadImage(CRMControl ctlPARENT, Guid gParentID, string sFIELD_NAME)
        {
            bool bNewFile = false;
            HtmlInputFile fileIMAGE = ctlPARENT.FindControl(sFIELD_NAME + "_File") as HtmlInputFile;
            if (fileIMAGE != null)
            {
                HttpPostedFile pstIMAGE = fileIMAGE.PostedFile;
                if (pstIMAGE != null)
                {
                    long lFileSize = pstIMAGE.ContentLength;
                    long lUploadMaxSize = TypeConvert.ToLong(ConfigurationManager.AppSettings["upload_maxsize"]);
                    if ((lUploadMaxSize > 0) && (lFileSize > lUploadMaxSize))
                    {
                        throw (new Exception("ERROR: uploaded file was too big: max filesize: " + lUploadMaxSize.ToString()));
                    }

                    if (pstIMAGE.FileName.Length > 0)
                    {
                        string sFILENAME = Path.GetFileName(pstIMAGE.FileName);
                        string sFILE_EXT = Path.GetExtension(sFILENAME);
                        string sFILE_MIME_TYPE = pstIMAGE.ContentType;

                        Guid gImageID = Guid.Empty;
                        ModelLayer.CommonProcedure.ImagesInsert(ref gImageID, gParentID, sFILENAME, sFILE_EXT, sFILE_MIME_TYPE);
                        CRMDynamic.LoadFile(gImageID, pstIMAGE.InputStream);

                        DynamicControl ctlIMAGE = new DynamicControl(ctlPARENT, sFIELD_NAME);
                        ctlIMAGE.ID = gImageID;
                        bNewFile = true;
                    }
                }
            }
            return bNewFile;
        }
 public virtual void ClearForm()
 {
     if ( dtFields != null )
     {
         foreach(DataRowView row in dtFields.DefaultView)
         {
             string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
             string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
             string sDISPLAY_FIELD     = Sql.ToString (row["DISPLAY_FIELD"    ]);
             int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
             DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
             if ( ctl != null )
             {
                 if ( sFIELD_TYPE == "ListBox" )
                 {
                     ListControl lst = FindControl(sDATA_FIELD) as ListControl;
                     if ( lst != null )
                     {
                         if ( lst is ListBox )
                         {
                             // 12/12/2007 Paul.  ClearSelection is the correct way to reset a ListBox.
                             lst.ClearSelection();
                         }
                         else if ( lst is DropDownList )
                         {
                             // 12/13/2007 Paul.  Clear a drop-down by selecting the top item.
                             lst.ClearSelection();
                             lst.SelectedIndex = 0;
                         }
                     }
                 }
                 else if ( sFIELD_TYPE == "DatePicker" )
                 {
                     DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
                     if ( ctlDate != null )
                     {
                         ctlDate.DateText = String.Empty;
                     }
                 }
                 else if ( sFIELD_TYPE == "DateRange" )
                 {
                     DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
                     if ( ctlDateStart != null )
                     {
                         ctlDateStart.DateText = String.Empty;
                     }
                     DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
                     if ( ctlDateEnd != null )
                     {
                         ctlDateEnd.DateText = String.Empty;
                     }
                 }
                 else if ( sFIELD_TYPE == "CheckBox" )
                 {
                     ctl.Checked = false;
                 }
                 else if ( sFIELD_TYPE == "TextBox" )
                 {
                     ctl.Text = String.Empty;
                 }
                 else if ( sFIELD_TYPE == "ChangeButton" )
                 {
                     ctl.Text = String.Empty;
                     DynamicControl ctlDISPLAY_FIELD = new DynamicControl(this, sDISPLAY_FIELD);
                     if ( ctlDISPLAY_FIELD != null )
                         ctlDISPLAY_FIELD.Text = String.Empty;
                 }
             }
         }
     }
 }
Beispiel #45
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            SetPageTitle("新建/编辑企业信息");
            // 06/04/2006   Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load. 
            // 03/10/2010   Apply full ACL security rules. 
            this.Visible = (Taoqi.Security.AdminUserAccess(m_sMODULE, "list") >= 0);
            if (!this.Visible)
            {
                // 03/17/2010   We need to rebind the parent in order to get the error message to display. 
                Parent.DataBind();
                return;
            }

            try
            {
                gID = Sql.ToGuid(Request["ID"]);
                if (!IsPostBack)
                {
                    if (!Sql.IsEmptyGuid(gID))
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            string sSQL;
                            // 09/08/2010   We need a separate view for the list as the default view filters by MODULE_ENABLED 
                            // and we don't want to filter by that flag in the ListView, DetailView or EditView. 
                            sSQL = "select * " + ControlChars.CrLf
                                 + " from vwTQClient" + ControlChars.CrLf
                                 + " where 1 = 1 " + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                con.Open();
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + "." + LayoutEditView, tblMain, null);
                        ctlDynamicButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);
                        ctlFooterButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);

                        var C_CustomerManager = new DynamicControl(this, "C_CustomerManager");

                        if (C_CustomerManager != null)
                        {
                            C_CustomerManager.Text = Security.FULL_NAME;
                        }
                    }
                }
                else
                {
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                //ctlDynamicButtons.ErrorText = ex.Message;
            }

            if (Request.QueryString["isDlg"] != null)
            {

                //2014.12.14           
                Button btnCancel = this.ctlDynamicButtons.FindButton("Cancel") as Button;

                if (btnCancel != null)
                {
                    btnCancel.Visible = false;
                }

                Button btnCancel_footer = this.ctlFooterButtons.FindButton("Cancel") as Button;

                if (btnCancel_footer != null)
                {
                    btnCancel_footer.Visible = false;
                }
            }

            gUserID = Security.USER_ID;
            if (!Guid.TryParse(Request.QueryString["id"], out gClientID))
                Response.Redirect("~/Client");

            txtClientName = FindControl("txtClientName") as HtmlInputText;
            txtClientShortName = FindControl("txtClientShortName") as HtmlInputText;
            hiddenUserID = FindControl("hiddenUserID") as HiddenField;
            txtUserName = FindControl("txtUserName") as TextBox;

            cbxSeller = FindControl("cbxSeller") as HtmlInputCheckBox;
            cbxBuyer = FindControl("cbxBuyer") as HtmlInputCheckBox;

            //C_Status_WSH = FindControl("C_Status_WSH") as HtmlInputRadioButton;
            C_Status_TG = FindControl("C_Status_TG") as HtmlInputRadioButton;
            C_Status_WTG = FindControl("C_Status_WTG") as HtmlInputRadioButton;
            C_Status_TGBQJRRM = FindControl("C_Status_TGBQJRRM") as HtmlInputRadioButton;

            if(!IsPostBack)
                AccountInformation();

            if (IsPostBack)
            {
                if (Request.Form["Save"] == "Save")
                {
                    Guid.TryParse(hiddenUserID.Value, out NewBossID);
                    if (NewBossID == Guid.Empty)
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "errorMsg",
                            "layer.alert('请为该公司指定管理员!', {area:['385px','178px'],offset:['195px','500px']});", true);
                        return;
                    }

                    if (C_Status_TG.Checked)
                        C_Status = 2;
                    else if (C_Status_WTG.Checked)
                        C_Status = 3;
                    else
                    {
                        ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "errorMsg",
                            "layer.alert('审核意见必选!', {area:['385px','178px'],offset:['195px','500px']});", true);
                        return;
                    }

                    C_Category = GetUserType();
                    C_ClientShortName = txtClientShortName.Value;

                    SqlProcs.spTQClient_Update_ForAdmin(
                        ref gClientID
                        , C_Category
                        , C_ClientShortName
                        , NewBossID
                        , C_BossRole
                        , Security.USER_ID
                        , C_Status
                        );
                                        
                    if (C_Status == 2)  // 审核成功
                        Msg.ClientAudit(NewBossID, gClientID);
                    else
                        Msg.ClientAudit(NewBossID, gClientID, false);

                    Response.Redirect("default.aspx");
                }
                else if (Request.Form["Cancel"] == "Cancel")
                {
                    Response.Redirect("default.aspx");
                }
            }

            if (!IsPostBack)
                showInformation();
        }
Beispiel #46
0
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            Guid gPARENT_ID = Sql.ToGuid(Request["PARENT_ID"]);
            string sMODULE = String.Empty;
            string sPARENT_TYPE = String.Empty;
            string sPARENT_NAME = String.Empty;
            try
            {
                SqlProcs.spPARENT_Get(ref gPARENT_ID, ref sMODULE, ref sPARENT_TYPE, ref sPARENT_NAME);
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                // The only possible error is a connection failure, so just ignore all errors. 
                gPARENT_ID = Guid.Empty;
            }
            // 03/15/2014   Enable override of concurrency error. 
            if (e.CommandName == "Save" || e.CommandName == "SaveConcurrency")
            {
                try
                {
                    // 01/16/2006   Enable validator before validating page. 
                    this.ValidateEditViewFields(m_sMODULE + "." + LayoutEditView);
                    this.ValidateEditViewFields(m_sMODULE + ".EditAddress");
                    // 11/10/2010   Apply Business Rules. 
                    this.ApplyEditViewValidationEventRules(m_sMODULE + "." + LayoutEditView);
                    this.ApplyEditViewValidationEventRules(m_sMODULE + ".EditAddress");
                    if (Page.IsValid)
                    {
                        string sUSER_PREFERENCES = String.Empty;
                        string sMAIL_SMTPPASS = Sql.ToString(ViewState["mail_smtppass"]);
                        string sGOOGLEAPPS_PASSWORD = Sql.ToString(ViewState["GOOGLEAPPS_PASSWORD"]);
                        string sICLOUD_PASSWORD = Sql.ToString(ViewState["ICLOUD_PASSWORD"]);
                        //XmlDocument xml = new XmlDocument();
                        try
                        {
                            //12/15/2012   Move USER_PREFERENCES to separate fields for easier access on Surface RT. 
                            /*
                            try
                            {
                                sUSER_PREFERENCES = Sql.ToString(ViewState["USER_PREFERENCES"]);
                                xml.LoadXml(sUSER_PREFERENCES);
                            }
                            catch(Exception ex)
                            {
                                SplendidError.SystemWarning(new StackTrace(true).GetFrame(0), ex);
                                xml.AppendChild(xml.CreateProcessingInstruction("xml" , "version=\"1.0\" encoding=\"UTF-8\""));
                                xml.AppendChild(xml.CreateElement("USER_PREFERENCE"));
                            }
                            // user_settings
                            // 08/12/2009   A customer wants the ability to turn off the saved searches, both globally and on a per user basis. 
                            XmlUtil.SetSingleNode(xml, "save_query"          , chkSAVE_QUERY.Checked ? "true" : "false");
                            // 02/26/2010   Allow users to configure use of tabs. 
                            XmlUtil.SetSingleNode(xml, "group_tabs"          , chkGROUP_TABS.Checked ? "true" : "false");
                            XmlUtil.SetSingleNode(xml, "subpanel_tabs"       , chkSUBPANEL_TABS.Checked ? "true" : "false");
                            XmlUtil.SetSingleNode(xml, "culture"             , lstLANGUAGE.SelectedValue             );
                            XmlUtil.SetSingleNode(xml, "theme"               , lstTHEME.SelectedValue                );
                            XmlUtil.SetSingleNode(xml, "dateformat"          , lstDATE_FORMAT.SelectedValue          );
                            XmlUtil.SetSingleNode(xml, "timeformat"          , lstTIME_FORMAT.SelectedValue          );
                            XmlUtil.SetSingleNode(xml, "timezone"            , lstTIMEZONE.SelectedValue             );
                            XmlUtil.SetSingleNode(xml, "currency_id"         , lstCURRENCY.SelectedValue             );
                            */
                            // 02/29/2008   The config value should only be used as an override.  We should default to the .NET culture value. 
                            //CultureInfo culture = CultureInfo.CreateSpecificCulture(lstLANGUAGE.SelectedValue);
                            // 08/05/2006   Remove stub of unsupported code. Reminder is not supported at this time. 
                            //XmlUtil.SetSingleNode(xml, "reminder_time"       , chkSHOULD_REMIND.Checked ? lstREMINDER_TIME.SelectedValue : "0" );
                            // mail_options

                            Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                            Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                            // 08/06/2005   Password might be our empty value. 
                            TextBox txtMAIL_SMTPPASS = FindControl("MAIL_SMTPPASS") as TextBox;
                            if (txtMAIL_SMTPPASS != null)
                            {
                                // 08/05/2006   Allow the password to be cleared. 
                                // 07/08/2010   We want to save the password for later use. 
                                sMAIL_SMTPPASS = txtMAIL_SMTPPASS.Text;
                                if (sMAIL_SMTPPASS == sEMPTY_PASSWORD)
                                {
                                    sMAIL_SMTPPASS = Sql.ToString(ViewState["mail_smtppass"]);
                                }
                                else if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                                {
                                    string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                    if (Security.DecryptPassword(sENCRYPTED_EMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV) != sMAIL_SMTPPASS)
                                        throw (new Exception("Decryption failed"));
                                    sMAIL_SMTPPASS = sENCRYPTED_EMAIL_PASSWORD;
                                    ViewState["mail_smtppass"] = sMAIL_SMTPPASS;
                                    txtMAIL_SMTPPASS.Attributes.Add("value", sEMPTY_PASSWORD);
                                }
                            }
                            TextBox txtGOOGLEAPPS_PASSWORD = FindControl("GOOGLEAPPS_PASSWORD") as TextBox;
                            if (txtGOOGLEAPPS_PASSWORD != null)
                            {
                                // 08/05/2006   Allow the password to be cleared. 
                                // 07/08/2010   We want to save the password for later use. 
                                sGOOGLEAPPS_PASSWORD = txtGOOGLEAPPS_PASSWORD.Text;
                                if (sGOOGLEAPPS_PASSWORD == sEMPTY_PASSWORD)
                                {
                                    sGOOGLEAPPS_PASSWORD = Sql.ToString(ViewState["GOOGLEAPPS_PASSWORD"]);
                                }
                                else if (!Sql.IsEmptyString(sGOOGLEAPPS_PASSWORD))
                                {
                                    string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sGOOGLEAPPS_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                    if (Security.DecryptPassword(sENCRYPTED_EMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV) != sGOOGLEAPPS_PASSWORD)
                                        throw (new Exception("Decryption failed"));
                                    sGOOGLEAPPS_PASSWORD = sENCRYPTED_EMAIL_PASSWORD;
                                    ViewState["GOOGLEAPPS_PASSWORD"] = sGOOGLEAPPS_PASSWORD;
                                    txtGOOGLEAPPS_PASSWORD.Attributes.Add("value", sEMPTY_PASSWORD);
                                }
                            }
                            // 12/13/2011   Add support for Apple iCloud. 
                            TextBox txtICLOUD_PASSWORD = FindControl("ICLOUD_PASSWORD") as TextBox;
                            if (txtICLOUD_PASSWORD != null)
                            {
                                // 08/05/2006   Allow the password to be cleared. 
                                // 07/08/2010   We want to save the password for later use. 
                                sICLOUD_PASSWORD = txtICLOUD_PASSWORD.Text;
                                if (sICLOUD_PASSWORD == sEMPTY_PASSWORD)
                                {
                                    sICLOUD_PASSWORD = Sql.ToString(ViewState["ICLOUD_PASSWORD"]);
                                }
                                else if (!Sql.IsEmptyString(sICLOUD_PASSWORD))
                                {
                                    string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sICLOUD_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                    if (Security.DecryptPassword(sENCRYPTED_EMAIL_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV) != sICLOUD_PASSWORD)
                                        throw (new Exception("Decryption failed"));
                                    sICLOUD_PASSWORD = sENCRYPTED_EMAIL_PASSWORD;
                                    ViewState["ICLOUD_PASSWORD"] = sICLOUD_PASSWORD;
                                    txtICLOUD_PASSWORD.Attributes.Add("value", sEMPTY_PASSWORD);
                                }
                            }

                            // 07/08/2010   The user must share the global mail server, so all we need here is the user name and password. 
                            //XmlUtil.SetSingleNode(xml, "mail_fromname"       , new DynamicControl(this, "MAIL_FROMNAME"    ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_fromaddress"    , new DynamicControl(this, "MAIL_FROMADDRESS" ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_smtpserver"     , new DynamicControl(this, "MAIL_SMTPSERVER"  ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_smtpport"       , new DynamicControl(this, "MAIL_SMTPPORT"    ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_sendtype"       , new DynamicControl(this, "MAIL_SENDTYPE"    ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_smtpauth_req"   , new DynamicControl(this, "MAIL_SMTPAUTH_REQ").Checked ? "true" : "false");
                            // 07/09/2010   Move the SMTP values from USER_PREFERENCES to the main table to make it easier to access. 
                            //XmlUtil.SetSingleNode(xml, "mail_smtpuser"       , new DynamicControl(this, "MAIL_SMTPUSER"    ).Text   );
                            //XmlUtil.SetSingleNode(xml, "mail_smtppass"       , sMAIL_SMTPPASS);

                        }
                        catch (Exception ex)
                        {
                            SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                        }
                        //12/15/2012   Move USER_PREFERENCES to separate fields for easier access on Surface RT. 
                        //if ( Sql.ToBoolean(Application["CONFIG.XML_UserPreferences"]) )
                        //	sUSER_PREFERENCES = xml.OuterXml;
                        //else
                        //	sUSER_PREFERENCES = XmlUtil.ConvertToPHP(xml.DocumentElement);

                        // 12/06/2005   Need to prevent duplicate users. 
                        string sUSER_NAME = txtUSER_NAME.Text.Trim();
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        try
                        {
                            // 11/10/2006   If the decimal and group separate match, then .NET will not be able to parse decimals. 
                            // The exception "Input string was not in a correct format." is thrown. 
                            if (!Sql.IsEmptyString(sUSER_NAME))
                            {
                                using (IDbConnection con = dbf.CreateConnection())
                                {
                                    string sSQL;
                                    sSQL = "select USER_NAME             " + ControlChars.CrLf
                                         + "  from vwUSERS               " + ControlChars.CrLf
                                         + " where USER_NAME = @USER_NAME" + ControlChars.CrLf;
                                    using (IDbCommand cmd = con.CreateCommand())
                                    {
                                        cmd.CommandText = sSQL;
                                        Sql.AddParameter(cmd, "@USER_NAME", sUSER_NAME);
                                        if (!Sql.IsEmptyGuid(gID))
                                        {
                                            // 12/06/2005   Only include the ID if it is not null as we cannot compare NULL to anything. 
                                            cmd.CommandText += "   and ID <> @ID" + ControlChars.CrLf;
                                            Sql.AddParameter(cmd, "@ID", gID);
                                        }
                                        con.Open();
                                        using (IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                                        {
                                            if (rdr.Read())
                                            {
                                                string sMESSAGE = String.Empty;
                                                sMESSAGE = String.Format(L10n.Term("Users.ERR_USER_NAME_EXISTS_1") + "{0}" + L10n.Term("Users.ERR_USER_NAME_EXISTS_2"), sUSER_NAME);
                                                throw (new Exception(sMESSAGE));
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                            ctlFooterButtons.ErrorText = ex.Message;

                            return;
                        }



                        // 09/09/2009   Use the new function to get the table name. 
                        string sTABLE_NAME = Crm.Modules.TableName(m_sMODULE);
                        DataTable dtCustomFields = SplendidCache.FieldsMetaData_Validated(sTABLE_NAME);
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            con.Open();
                            string sSQL;
                            // 11/18/2007   Use the current values for any that are not defined in the edit view. 
                            DataRow rowCurrent = null;
                            DataTable dtCurrent = new DataTable();
                            if (!Sql.IsEmptyGuid(gID))
                            {
                                sSQL = "select *           " + ControlChars.CrLf
                                     + "  from vwUSERS_Edit" + ControlChars.CrLf;
                                using (IDbCommand cmd = con.CreateCommand())
                                {
                                    cmd.CommandText = sSQL;
                                    Security.Filter(cmd, m_sMODULE, "edit");
                                    Sql.AppendParameter(cmd, gID, "ID", false);
                                    using (DbDataAdapter da = dbf.CreateDataAdapter())
                                    {
                                        ((IDbDataAdapter)da).SelectCommand = cmd;
                                        da.Fill(dtCurrent);
                                        if (dtCurrent.Rows.Count > 0)
                                        {
                                            rowCurrent = dtCurrent.Rows[0];
                                            // 12/09/2008   Throw an exception if the record has been edited since the last load. 
                                            DateTime dtLAST_DATE_MODIFIED = Sql.ToDateTime(ViewState["LAST_DATE_MODIFIED"]);
                                            // 03/15/2014   Enable override of concurrency error. 
                                            if (Sql.ToBoolean(Application["CONFIG.enable_concurrency_check"]) && (e.CommandName != "SaveConcurrency") && dtLAST_DATE_MODIFIED != DateTime.MinValue && Sql.ToDateTime(rowCurrent["DATE_MODIFIED"]) > dtLAST_DATE_MODIFIED)
                                            {
                                                // 03/15/2014   Dynamic Buttons is not used in this area. 
                                                //ctlDynamicButtons.ShowButton("SaveConcurrency", true);
                                                //ctlFooterButtons .ShowButton("SaveConcurrency", true);
                                                throw (new Exception(String.Format(L10n.Term(".ERR_CONCURRENCY_OVERRIDE"), dtLAST_DATE_MODIFIED)));
                                            }
                                        }
                                        else
                                        {
                                            // 11/19/2007   If the record is not found, clear the ID so that the record cannot be updated.
                                            // It is possible that the record exists, but that ACL rules prevent it from being selected. 
                                            gID = Guid.Empty;
                                        }
                                    }
                                }
                            }

                            // 11/10/2010   Apply Business Rules. 
                            this.ApplyEditViewPreSaveEventRules(m_sMODULE + "." + LayoutEditView, rowCurrent);
                            this.ApplyEditViewPreSaveEventRules(m_sMODULE + ".EditAddress", rowCurrent);

                            // 10/07/2009   We need to create our own global transaction ID to support auditing and workflow on SQL Azure, PostgreSQL, Oracle, DB2 and MySQL. 
                            using (IDbTransaction trn = Sql.BeginTransaction(con))
                            {
                                try
                                {
                                    bool bNewUser = Sql.IsEmptyGuid(gID);
                                    // 04/24/2006   Upgrade to SugarCRM 4.2 Schema. 
                                    // 11/18/2007   Use the current values for any that are not defined in the edit view. 
                                    // 05/06/2009   Add DEFAULT_TEAM to support SugarCRM migration. 
                                    // 
                          
                          
                                    SqlProcs.spUSERS_Update
                                        (ref gID
                                        , sUSER_NAME
                                        , txtFIRST_NAME.Text
                                        , txtLAST_NAME.Text
                                        , new DynamicControl(this, rowCurrent, "REPORTS_TO_ID").ID
                                        , (Security.isAdmin ? chkIS_ADMIN.Checked : Sql.ToBoolean(ViewState["IS_ADMIN"]))
                                        , chkRECEIVE_NOTIFICATIONS.Checked
                                        , new DynamicControl(this, rowCurrent, "DESCRIPTION").Text
                                        , new DynamicControl(this, rowCurrent, "TITLE").Text
                                        , new DynamicControl(this, rowCurrent, "DEPARTMENT").Text
                                        , new DynamicControl(this, rowCurrent, "PHONE_HOME").Text
                                        , new DynamicControl(this, rowCurrent, "PHONE_MOBILE").Text
                                        , new DynamicControl(this, rowCurrent, "PHONE_WORK").Text
                                        , new DynamicControl(this, rowCurrent, "PHONE_OTHER").Text
                                        , new DynamicControl(this, rowCurrent, "PHONE_FAX").Text
                                        , new DynamicControl(this, rowCurrent, "EMAIL1").Text
                                        , new DynamicControl(this, rowCurrent, "EMAIL2").Text
                                        , lstSTATUS.SelectedValue
                                        , new DynamicControl(this, rowCurrent, "ADDRESS_STREET").Text
                                        , new DynamicControl(this, rowCurrent, "ADDRESS_CITY").Text
                                        , new DynamicControl(this, rowCurrent, "ADDRESS_STATE").Text
                                        , new DynamicControl(this, rowCurrent, "ADDRESS_POSTALCODE").Text
                                        , new DynamicControl(this, rowCurrent, "ADDRESS_COUNTRY").Text
                                        , sUSER_PREFERENCES
                                        , chkPORTAL_ONLY.Checked
                                        , new DynamicControl(this, rowCurrent, "EMPLOYEE_STATUS").SelectedValue
                                        , new DynamicControl(this, rowCurrent, "MESSENGER_ID").Text
                                        , new DynamicControl(this, rowCurrent, "MESSENGER_TYPE").SelectedValue
                                        , sMODULE
                                        , gPARENT_ID
                                        , new DynamicControl(this, rowCurrent, "IS_GROUP").Checked
                                        , new DynamicControl(this, rowCurrent, "DEFAULT_TEAM").ID
                                        // 03/16/2010   Add IS_ADMIN_DELEGATE. 
                                        , ((Taoqi.Security.AdminUserAccess(m_sMODULE, "edit") >= 0) ? chkIS_ADMIN_DELEGATE.Checked : Sql.ToBoolean(ViewState["IS_ADMIN_DELEGATE"]))
                                        , new DynamicControl(this, rowCurrent, "MAIL_SMTPUSER").Text
                                        , sMAIL_SMTPPASS
                                        // 03/04/2011   We need to allow the admin to set the flag to force a password change. 
                                        , chkSYSTEM_GENERATED_PASSWORD.Checked
                                        // 03/25/2011   Add support for Google Apps. 
                                        , new DynamicControl(this, "GOOGLEAPPS_SYNC_CONTACTS").Checked
                                        , new DynamicControl(this, "GOOGLEAPPS_SYNC_CALENDAR").Checked
                                        , new DynamicControl(this, "GOOGLEAPPS_USERNAME").Text
                                        , sGOOGLEAPPS_PASSWORD
                                        , new DynamicControl(this, "FACEBOOK_ID").Text
                                        // 12/13/2011   Add support for Apple iCloud. 
                                        , new DynamicControl(this, "ICLOUD_SYNC_CONTACTS").Checked
                                        , new DynamicControl(this, "ICLOUD_SYNC_CALENDAR").Checked
                                        , new DynamicControl(this, "ICLOUD_USERNAME").Text
                                        , sICLOUD_PASSWORD
                                        // 12/15/2012   Move USER_PREFERENCES to separate fields for easier access on Surface RT. 
                                        , lstTHEME.SelectedValue
                                        , lstDATE_FORMAT.SelectedValue
                                        , lstTIME_FORMAT.SelectedValue
                                        , lstLANGUAGE.SelectedValue
                                        , Sql.ToGuid(lstCURRENCY.SelectedValue)
                                        , Sql.ToGuid(lstTIMEZONE.SelectedValue)
                                        , chkSAVE_QUERY.Checked
                                        , chkGROUP_TABS.Checked
                                        , chkSUBPANEL_TABS.Checked
                                        // 09/20/2013   Move EXTENSION to the main table. 
                                        , new DynamicControl(this, "EXTENSION").Text
                                        // 09/27/2013   SMS messages need to be opt-in. 
                                        , new DynamicControl(this, "SMS_OPT_IN").SelectedValue
                                   //, new DynamicControl(this, "C_Company").SelectedValue
                                   , new DynamicControl(this, "C_IsReceivePaymentEmail").Checked
                                   ,new DynamicControl(this, "C_Sex").IntegerValue
                                        , trn
                                        );
                                    SplendidDynamic.UpdateCustomFields(this, trn, gID, sTABLE_NAME, dtCustomFields);
                                    // 11/27/2009   The password field only exists if this is a new user. 
                                    if (tdPASSWORD_Label.Visible && (Taoqi.Security.AdminUserAccess(m_sMODULE, "edit") >= 0))
                                    {
                                        txtPASSWORD.Text = txtPASSWORD.Text.Trim();
                                        if (!Sql.IsEmptyString(txtPASSWORD.Text))
                                            SqlProcs.spUSERS_PasswordUpdate(gID, Security.HashPassword(txtPASSWORD.Text), trn);
                                    }

                                    // 11/11/2008   Display an error message if max users has been exceeded. 
                                    // 02/09/2009   We need to check the ActiveUsers in the middle of the transaction. 
                                    // This is so that a user can be disabled without throwing the max users exception. 
                                    int nActiveUsers = 0;
                                    sSQL = "select count(*)          " + ControlChars.CrLf
                                         + "  from vwUSERS_List      " + ControlChars.CrLf
                                         + " where STATUS = N'Active'" + ControlChars.CrLf;
                                    using (IDbCommand cmd = con.CreateCommand())
                                    {
                                        cmd.Transaction = trn;
                                        cmd.CommandText = sSQL;
                                        nActiveUsers = Sql.ToInteger(cmd.ExecuteScalar());
                                    }
                                    int nMaxUsers = Sql.ToInteger(Crm.Config.Value("max_users"));
                                    if (nMaxUsers > 0 && nActiveUsers > nMaxUsers)
                                        throw (new Exception(L10n.Term("Users.ERR_MAX_USERS")));

                                    trn.Commit();
                                    // 07/18/2013   Add support for multiple outbound emails. 
                                    SplendidCache.ClearOutboundMail();
                                    // 09/09/2006   Refresh cached user information. 
                                    if (bNewUser)
                                        SplendidCache.ClearUsers();
                                    // 08/27/2005  Reload session with user preferences. 
                                    // 08/30/2005  Only reload preferences the user is editing his own profile. 
                                    // We want to allow an administrator to update other user profiles. 
                                    if (Security.USER_ID == gID)
                                        SplendidInit.LoadUserPreferences(gID, lstTHEME.SelectedValue, lstLANGUAGE.SelectedValue);
                                    // 09/05/2013   Use the Application as a cache for the Asterisk extension as we can correct by editing a user. 
                                    // 09/20/2013   Move EXTENSION to the main table. 
                                    string sEXTENSION = new DynamicControl(this, "EXTENSION").Text;
                                    if (!Sql.IsEmptyString(sEXTENSION))
                                    {
                                        Application["Users.EXTENSION." + sEXTENSION + ".USER_ID"] = gID;
                                        Application["Users.EXTENSION." + sEXTENSION + ".TEAM_ID"] = new DynamicControl(this, rowCurrent, "DEFAULT_TEAM").ID;
                                    }
                                    string sPREV_EXTENSION = Sql.ToString(ViewState["EXTENSION"]);
                                    if (sEXTENSION != sPREV_EXTENSION && !Sql.IsEmptyString(sPREV_EXTENSION))
                                    {
                                        Application.Remove("Users.EXTENSION." + sPREV_EXTENSION + ".USER_ID");
                                        Application.Remove("Users.EXTENSION." + sPREV_EXTENSION + ".TEAM_ID");
                                    }
                                    // 12/06/2013   Update the devices being monitored if the extension has changed. 
                                    if (sEXTENSION != sPREV_EXTENSION)
                                    {
                                        //AvayaManager.Instance.MonitorDevices();
                                    }
                                }
                                catch (Exception ex)
                                {
                                    trn.Rollback();
                                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                    ctlDynamicButtons.ErrorText = ex.Message;

                                    return;
                                }
                            }
                            // 08/26/2010   Add new record to tracker. 
                            sSQL = "select FULL_NAME   " + ControlChars.CrLf
                                 + "  from vwUSERS_Edit" + ControlChars.CrLf
                                 + " where ID = @ID    " + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                Sql.AddParameter(cmd, "@ID", gID);
                                string sNAME = Sql.ToString(cmd.ExecuteScalar());
                                // 03/08/2012   Add ACTION to the tracker table so that we can create quick user activity reports. 
                                SqlProcs.spTRACKER_Update
                                    (Security.USER_ID
                                    , m_sMODULE
                                    , gID
                                    , sNAME
                                    , "save"
                                    );
                            }
                            // 11/10/2010   Apply Business Rules. 
                            // 12/10/2012   Provide access to the item data. 
                            rowCurrent = Crm.Modules.ItemEdit(m_sMODULE, gID);
                            this.ApplyEditViewPostSaveEventRules(m_sMODULE + "." + LayoutEditView, rowCurrent);
                            this.ApplyEditViewPostSaveEventRules(m_sMODULE + ".EditAddress", rowCurrent);
                        }

                        if (!Sql.IsEmptyString(RulesRedirectURL))
                            Response.Redirect(RulesRedirectURL);
                        else if (!Sql.IsEmptyGuid(gPARENT_ID))
                            Response.Redirect("~/" + sMODULE + "/view.aspx?ID=" + gPARENT_ID.ToString());
                        else if (bMyAccount)
                            Response.Redirect("MyAccount.aspx");
                        else
                            Response.Redirect("view.aspx?ID=" + gID.ToString());
                    }
                }
                catch (Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlFooterButtons.ErrorText = ex.Message;

                }
            }
            // 07/08/2010   Provide the ability to test the email settings. 
            else if (e.CommandName == "Smtp.Test")
            {
                try
                {
                    Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                    Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                    TextBox txtEMAIL1 = FindControl("EMAIL1") as TextBox;
                    TextBox txtMAIL_SMTPUSER = FindControl("MAIL_SMTPUSER") as TextBox;
                    TextBox txtMAIL_SMTPPASS = FindControl("MAIL_SMTPPASS") as TextBox;
                    if (txtEMAIL1 != null && txtMAIL_SMTPUSER != null && txtMAIL_SMTPPASS != null)
                    {
                        string sMAIL_SMTPPASS = txtMAIL_SMTPPASS.Text;
                        if (sMAIL_SMTPPASS == sEMPTY_PASSWORD)
                        {
                            sMAIL_SMTPPASS = Sql.ToString(ViewState["mail_smtppass"]);
                            if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                                sMAIL_SMTPPASS = Security.DecryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                        }
                        else if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                        {
                            string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                            ViewState["mail_smtppass"] = sENCRYPTED_EMAIL_PASSWORD;
                            txtMAIL_SMTPPASS.Attributes.Add("value", sEMPTY_PASSWORD);
                        }
                        string sSmtpServer = Sql.ToString(Application["CONFIG.smtpserver"]);
                        int nSmtpPort = Sql.ToInteger(Application["CONFIG.smtpport"]);
                        bool bSmtpAuthReq = Sql.ToBoolean(Application["CONFIG.smtpauth_req"]);
                        bool bSmtpSSL = Sql.ToBoolean(Application["CONFIG.smtpssl"]);
                        string sSmtpUser = txtMAIL_SMTPUSER.Text;
                        string sSmtpPassword = sMAIL_SMTPPASS;
                        string sFromName = (txtFIRST_NAME.Text + " " + txtLAST_NAME.Text).Trim();
                        string sFromAddress = txtEMAIL1.Text;
                        //EmailUtils.SendTestMessage(Application, sSmtpServer, nSmtpPort, bSmtpAuthReq, bSmtpSSL, sSmtpUser, sSmtpPassword, sFromAddress, sFromName, sFromAddress, sFromName);
                        ctlDynamicButtons.ErrorText = L10n.Term("Users.LBL_SEND_SUCCESSFUL");

                    }
                }
                catch (Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlDynamicButtons.ErrorText = ex.Message;

                }
            }
            else if (e.CommandName == "GoogleApps.Test")
            {
                try
                {
                    Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                    Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                    TextBox txtMAIL_SMTPUSER = FindControl("MAIL_SMTPUSER") as TextBox;
                    TextBox txtMAIL_SMTPPASS = FindControl("MAIL_SMTPPASS") as TextBox;
                    TextBox txtGOOGLEAPPS_USERNAME = FindControl("GOOGLEAPPS_USERNAME") as TextBox;
                    TextBox txtGOOGLEAPPS_PASSWORD = FindControl("GOOGLEAPPS_PASSWORD") as TextBox;
                    if (txtGOOGLEAPPS_USERNAME != null && txtGOOGLEAPPS_PASSWORD != null)
                    {
                        string sGOOGLEAPPS_USERNAME = txtGOOGLEAPPS_USERNAME.Text;
                        string sGOOGLEAPPS_PASSWORD = txtGOOGLEAPPS_PASSWORD.Text;
                        if (sGOOGLEAPPS_PASSWORD == sEMPTY_PASSWORD)
                        {
                            sGOOGLEAPPS_PASSWORD = Sql.ToString(ViewState["GOOGLEAPPS_PASSWORD"]);
                            if (!Sql.IsEmptyString(sGOOGLEAPPS_PASSWORD))
                                sGOOGLEAPPS_PASSWORD = Security.DecryptPassword(sGOOGLEAPPS_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                        }
                        else if (!Sql.IsEmptyString(sGOOGLEAPPS_PASSWORD))
                        {
                            string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sGOOGLEAPPS_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                            ViewState["GOOGLEAPPS_PASSWORD"] = sENCRYPTED_EMAIL_PASSWORD;
                            txtGOOGLEAPPS_PASSWORD.Attributes.Add("value", sEMPTY_PASSWORD);
                        }
                        // 03/25/2011   Use SMTP values if the Google values have not been provided. 
                        if (Sql.IsEmptyString(sGOOGLEAPPS_USERNAME) && txtMAIL_SMTPUSER != null)
                        {
                            sGOOGLEAPPS_USERNAME = txtMAIL_SMTPUSER.Text;
                        }
                        if (Sql.IsEmptyString(sGOOGLEAPPS_PASSWORD) && txtMAIL_SMTPPASS != null)
                        {
                            string sMAIL_SMTPPASS = txtMAIL_SMTPPASS.Text;
                            if (sMAIL_SMTPPASS == sEMPTY_PASSWORD)
                            {
                                sMAIL_SMTPPASS = Sql.ToString(ViewState["mail_smtppass"]);
                                if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                                    sMAIL_SMTPPASS = Security.DecryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                            }
                            else if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                            {
                                string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                ViewState["mail_smtppass"] = sENCRYPTED_EMAIL_PASSWORD;
                                txtMAIL_SMTPPASS.Attributes.Add("value", sEMPTY_PASSWORD);
                            }
                            sGOOGLEAPPS_PASSWORD = sMAIL_SMTPPASS;
                        }


                    }
                }
                catch (Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlDynamicButtons.ErrorText = ex.Message;

                }
            }
            // 12/13/2011   Add support for Apple iCloud. 
            else if (e.CommandName == "iCloud.Test")
            {
                try
                {
                    Guid gINBOUND_EMAIL_KEY = Sql.ToGuid(Application["CONFIG.InboundEmailKey"]);
                    Guid gINBOUND_EMAIL_IV = Sql.ToGuid(Application["CONFIG.InboundEmailIV"]);
                    TextBox txtMAIL_SMTPUSER = FindControl("MAIL_SMTPUSER") as TextBox;
                    TextBox txtMAIL_SMTPPASS = FindControl("MAIL_SMTPPASS") as TextBox;
                    TextBox txtICLOUD_USERNAME = FindControl("ICLOUD_USERNAME") as TextBox;
                    TextBox txtICLOUD_PASSWORD = FindControl("ICLOUD_PASSWORD") as TextBox;
                    if (txtICLOUD_USERNAME != null && txtICLOUD_PASSWORD != null)
                    {
                        string sICLOUD_USERNAME = txtICLOUD_USERNAME.Text;
                        string sICLOUD_PASSWORD = txtICLOUD_PASSWORD.Text;
                        if (sICLOUD_PASSWORD == sEMPTY_PASSWORD)
                        {
                            sICLOUD_PASSWORD = Sql.ToString(ViewState["ICLOUD_PASSWORD"]);
                            if (!Sql.IsEmptyString(sICLOUD_PASSWORD))
                                sICLOUD_PASSWORD = Security.DecryptPassword(sICLOUD_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                        }
                        else if (!Sql.IsEmptyString(sICLOUD_PASSWORD))
                        {
                            string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sICLOUD_PASSWORD, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                            ViewState["ICLOUD_PASSWORD"] = sENCRYPTED_EMAIL_PASSWORD;
                            txtICLOUD_PASSWORD.Attributes.Add("value", sEMPTY_PASSWORD);
                        }
                        // 03/25/2011   Use SMTP values if the Google values have not been provided. 
                        if (Sql.IsEmptyString(sICLOUD_USERNAME) && txtMAIL_SMTPUSER != null)
                        {
                            sICLOUD_USERNAME = txtMAIL_SMTPUSER.Text;
                        }
                        if (Sql.IsEmptyString(sICLOUD_PASSWORD) && txtMAIL_SMTPPASS != null)
                        {
                            string sMAIL_SMTPPASS = txtMAIL_SMTPPASS.Text;
                            if (sMAIL_SMTPPASS == sEMPTY_PASSWORD)
                            {
                                sMAIL_SMTPPASS = Sql.ToString(ViewState["mail_smtppass"]);
                                if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                                    sMAIL_SMTPPASS = Security.DecryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                            }
                            else if (!Sql.IsEmptyString(sMAIL_SMTPPASS))
                            {
                                string sENCRYPTED_EMAIL_PASSWORD = Security.EncryptPassword(sMAIL_SMTPPASS, gINBOUND_EMAIL_KEY, gINBOUND_EMAIL_IV);
                                ViewState["mail_smtppass"] = sENCRYPTED_EMAIL_PASSWORD;
                                txtMAIL_SMTPPASS.Attributes.Add("value", sEMPTY_PASSWORD);
                            }
                            sICLOUD_PASSWORD = sMAIL_SMTPPASS;
                        }


                    }
                }
                catch (Exception ex)
                {
                    SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                    ctlDynamicButtons.ErrorText = ex.Message;

                }
            }
            else if (e.CommandName == "Cancel")
            {
                if (!Sql.IsEmptyGuid(gPARENT_ID))
                    Response.Redirect("~/" + sMODULE + "/view.aspx?ID=" + gPARENT_ID.ToString());
                else if (bMyAccount)
                    Response.Redirect("MyAccount.aspx");
                else if (Sql.IsEmptyGuid(gID))
                    Response.Redirect("default.aspx");
                else
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
            }
        }
        protected string GenerateSavedSearch(bool bDefaultSearch)
        {
            XmlDocument xml = new XmlDocument();
            xml.AppendChild(xml.CreateXmlDeclaration("1.0", "UTF-8", null));
            XmlNode xSavedSearch = xml.CreateElement("SavedSearch");
            xml.AppendChild(xSavedSearch);
            if ( dtFields != null )
            {
                if ( bDefaultSearch )
                {
                    // 12/14/2007 Paul.  Although it might be better to use events to get the sort field,
                    // that could cause an endless loop as this control sets the sort field and retrieves the sort field.
                    SplendidGrid grdMain = Parent.FindControl(sGridID) as SplendidGrid;
                    if ( grdMain != null )
                    {
                        if ( !String.IsNullOrEmpty(grdMain.SortColumn) )
                        {
                            XmlNode xSortColumn = xml.CreateElement("SortColumn");
                            xSavedSearch.AppendChild(xSortColumn);
                            xSortColumn.InnerText = grdMain.SortColumn;
                        }
                        if ( !String.IsNullOrEmpty(grdMain.SortOrder) )
                        {
                            XmlNode xSortOrder = xml.CreateElement("SortOrder");
                            xSavedSearch.AppendChild(xSortOrder);
                            xSortOrder.InnerText =grdMain.SortOrder;
                        }
                    }
                    if ( !Sql.IsEmptyString(lstSavedSearches.SelectedValue) )
                    {
                        XmlNode xDefaultSearch = xml.CreateElement("DefaultSearch");
                        xSavedSearch.AppendChild(xDefaultSearch);
                        xDefaultSearch.InnerText = lstSavedSearches.SelectedValue;
                    }
                }
                else
                {
                    if ( !Sql.IsEmptyString(lstColumns.SelectedValue) )
                    {
                        XmlNode xSortColumn = xml.CreateElement("SortColumn");
                        xSavedSearch.AppendChild(xSortColumn);
                        xSortColumn.InnerText = lstColumns.SelectedValue;
                    }
                    if ( radSavedSearchASC.Checked || radSavedSearchDESC.Checked )
                    {
                        XmlNode xSortOrder = xml.CreateElement("SortOrder");
                        xSavedSearch.AppendChild(xSortOrder);
                        if ( radSavedSearchASC.Checked )
                            xSortOrder.InnerText ="asc";
                        else if ( radSavedSearchDESC.Checked )
                            xSortOrder.InnerText ="desc";
                    }
                }

                XmlNode xSearchFields = xml.CreateElement("SearchFields");
                xSavedSearch.AppendChild(xSearchFields);
                foreach(DataRowView row in dtFields.DefaultView)
                {
                    string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
                    string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
                    string sDISPLAY_FIELD     = Sql.ToString (row["DISPLAY_FIELD"    ]);
                    int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
                    int    nFORMAT_ROWS       = Sql.ToInteger(row["FORMAT_ROWS"      ]);

                    // 12/07/2007 Paul.  Create the field but don't append it unless it is used.
                    // This is how we will distinguish from unspecified field.
                    XmlNode xField = xml.CreateElement("Field");
                    XmlUtil.SetSingleNodeAttribute(xml, xField, "Name", sDATA_FIELD);
                    XmlUtil.SetSingleNodeAttribute(xml, xField, "Type", sFIELD_TYPE);
                    DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
                    if ( ctl != null )
                    {
                        if ( sFIELD_TYPE == "ListBox" )
                        {
                            ListControl lst = FindControl(sDATA_FIELD) as ListControl;
                            if ( lst != null )
                            {
                                if ( lst is ListBox )
                                {
                                    int nSelected = 0;
                                    foreach(ListItem item in lst.Items)
                                    {
                                        if ( item.Selected )
                                            nSelected++;
                                    }
                                    if ( nSelected > 0 )
                                    {
                                        xSearchFields.AppendChild(xField);
                                        foreach(ListItem item in lst.Items)
                                        {
                                            if ( item.Selected )
                                            {
                                                XmlNode xValue = xml.CreateElement("Value");
                                                xField.AppendChild(xValue);
                                                xValue.InnerText = item.Value;
                                            }
                                        }
                                    }
                                }
                                else if ( lst is DropDownList )
                                {
                                    // 12/13/2007 Paul.  DropDownLists must be handled separately to ensure that only one item is selected.
                                    xField.InnerText = lst.SelectedValue;
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "DatePicker" )
                        {
                            DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
                            if ( ctlDate != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDate.DateText) )
                                {
                                    xSearchFields.AppendChild(xField);
                                    xField.InnerText = ctlDate.DateText;
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "DateRange" )
                        {
                            DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
                            if ( ctlDateStart != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDateStart.DateText) )
                                {
                                    xSearchFields.AppendChild(xField);
                                    XmlUtil.SetSingleNode(xml, xField, "After", ctlDateStart.DateText);
                                }
                            }
                            DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
                            if ( ctlDateEnd != null )
                            {
                                if ( !Sql.IsEmptyString(ctlDateEnd.DateText) )
                                {
                                    xSearchFields.AppendChild(xField);
                                    XmlUtil.SetSingleNode(xml, xField, "Before", ctlDateEnd.DateText);
                                }
                            }
                        }
                        else if ( sFIELD_TYPE == "CheckBox" )
                        {
                            if ( ctl.Checked )
                            {
                                xSearchFields.AppendChild(xField);
                                xField.InnerText = "true";
                            }
                        }
                        else if ( sFIELD_TYPE == "TextBox" )
                        {
                            ctl.Text = ctl.Text.Trim();
                            if ( !Sql.IsEmptyString(ctl.Text) )
                            {
                                xSearchFields.AppendChild(xField);
                                xField.InnerText = ctl.Text;
                            }
                        }
                        else if ( sFIELD_TYPE == "ChangeButton" )
                        {
                            ctl.Text = ctl.Text.Trim();
                            if ( !Sql.IsEmptyString(ctl.Text) )
                            {
                                xSearchFields.AppendChild(xField);
                                xField.InnerText = ctl.Text;
                            }
                            // 12/08/2007 Paul.  Save the display field as a separate XML node.
                            // Treat it as a text box and it will get populated just like any other search field.
                            DynamicControl ctlDISPLAY_FIELD = new DynamicControl(this, sDISPLAY_FIELD);
                            if ( ctlDISPLAY_FIELD != null )
                            {
                                ctlDISPLAY_FIELD.Text = ctlDISPLAY_FIELD.Text.Trim();
                                xField = xml.CreateElement("Field");
                                XmlUtil.SetSingleNodeAttribute(xml, xField, "Name", sDISPLAY_FIELD);
                                XmlUtil.SetSingleNodeAttribute(xml, xField, "Type", "TextBox");
                                if ( !Sql.IsEmptyString(ctlDISPLAY_FIELD.Text) )
                                {
                                    xSearchFields.AppendChild(xField);
                                    xField.InnerText = ctlDISPLAY_FIELD.Text;
                                }
                            }
                        }
                    }
                }
            }
            return xml.OuterXml;
        }
Beispiel #48
0
		// 02/08/2008   We need to build a list of the fields used by the search clause. 
		// 02/08/2008   Search fields do not need to be in the select list. 
		// 06/27/2009   Return TRUE if search was loaded. 
		public bool SqlSearchClause(IDbCommand cmd)
		{
			bool bSearchLoaded = false;
			if ( dtFields == null )
				InitializeDynamicView();
			// 06/20/2010   We can skip this logic if there are no fields. 
			if ( dtFields != null && dtFields.Rows.Count > 0 )
			{
				// 12/28/2007   Disable the auto-save in a popup. 
				// 06/27/2009   On the home page, we don't want to show search views, but we do want to auto-save. 
				if ( bAutoSaveSearch || (!bIsPopupSearch && bShowSearchViews) )
				{
					// 12/08/2007   By apply the saved search here, we can automatically apply across old code. 
					// 08/12/2009   A customer wants the ability to turn off the saved searches, both globally and on a per user basis. 
					// 03/04/2010   We need to remember if we were successful loading the search, otherwise the Assigned-User code in the My* dashlets would get applied. 
					// 04/09/2011   The DashletReport must always save its settings, otherwise it will forget the selected report. 
					if ( SavedSearchesChanged() || (SaveEnabled() && !IsPostBack) )
					{
						bSearchLoaded = ApplySavedSearch();
						ViewState["SearchLoaded"] = bSearchLoaded;
					}
					else
					{
						bSearchLoaded = Sql.ToBoolean(ViewState["SearchLoaded"]);
					}
				}

				foreach(DataRowView row in dtFields.DefaultView)
				{
					string sEDIT_NAME         = Sql.ToString (row["EDIT_NAME"        ]);
					string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
					string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
					int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
					int    nFORMAT_ROWS       = Sql.ToInteger(row["FORMAT_ROWS"      ]);
					// 04/18/2010   If the user manually adds a TeamSelect, we need to convert to a ModulePopup. 
					if ( (sDATA_FIELD == "TEAM_ID" || sDATA_FIELD == "TEAM_SET_NAME") )
					{
						if ( Crm.Config.enable_team_management() && !Crm.Config.enable_dynamic_teams() && sFIELD_TYPE == "TeamSelect" )
						{
							sDATA_FIELD     = "TEAM_ID";
							//sDISPLAY_FIELD  = "TEAM_NAME";
							sFIELD_TYPE     = "ModulePopup";
							//sMODULE_TYPE    = "Teams";
						}
					}
					DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
					if ( ctl != null )
					{
						// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
						if ( sFIELD_TYPE == "Hidden" )
						{
							Sql.AppendParameter(cmd, ctl.Text, sDATA_FIELD);
						}
						// 04/05/2012   Add searching support for checkbox list. 
						else if ( sFIELD_TYPE == "CheckBoxList" || sFIELD_TYPE == "Radio" )
						{
							ListControl lst = FindControl(sDATA_FIELD) as ListControl;
							if ( lst != null )
							{
								int nSelected = 0;
								foreach(ListItem item in lst.Items)
								{
									if ( item.Selected )
										nSelected++;
								}
								if ( nSelected > 0 )
								{
									List<string> arr = new List<string>();
									foreach(ListItem item in lst.Items)
									{
										if ( item.Selected )
										{
											if ( item.Value.Length > 0 )
											{
												arr.Add("<Value>" + Sql.EscapeXml(item.Value) + "</Value>");
											}
											else
											{
												// 10/13/2011   A multi-selection list box does not have NULL, so look for any empty value. 
												arr.Add("<Value></Value>");
											}
										}
									}
									Sql.AppendLikeParameters(cmd, arr.ToArray(), sDATA_FIELD);
								}
							}
						}
						else if ( sFIELD_TYPE == "ListBox" )
						{
							// 10/13/2011   Special list of EditViews for the search area with IS_MULTI_SELECT. 
							bool bIS_MULTI_SELECT = false;
							try
							{
								bIS_MULTI_SELECT = Sql.ToBoolean(row["IS_MULTI_SELECT"]);
							}
							catch(Exception ex)
							{
								SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
							}
							ListControl lst = FindControl(sDATA_FIELD) as ListControl;
							if ( lst != null )
							{
								int nSelected = 0;
								foreach(ListItem item in lst.Items)
								{
									if ( item.Selected )
										nSelected++;
								}
								// 01/10/2008   When drawing the search dialog the first time (not postback), 
								// we need to assume the the first item is selected if it is DropDownList. 
								if ( !IsPostBack && lst is DropDownList && lst.Items.Count > 0 && nSelected == 0 )
								{
									lst.SelectedIndex = 0;
									nSelected = 1;
								}
								// 12/03/2007   If the NONE item is selected, then search for value of NULL. 
								if ( nSelected == 1 && String.IsNullOrEmpty(lst.SelectedValue) )
								{
                                    if (sDATA_FIELD.IndexOf(' ') > 0)
                                    {
                                        cmd.CommandText += "   and (1 = 0";
                                        foreach (string sField in sDATA_FIELD.Split(' '))
                                        {
                                            cmd.CommandText += "        or " + sField + " is null";
                                        }
                                        cmd.CommandText += ")";
                                    }
                                    else
                                    {
                                        //2014.12.24 
                                        //cmd.CommandText += "   and " + sDATA_FIELD + " is null" + ControlChars.CrLf;
                                    }
								}
								else if ( nSelected > 0 )
								{
									if ( sDATA_FIELD.IndexOf(' ') > 0 )
									{
										cmd.CommandText += "   and (1 = 0" + ControlChars.CrLf;
										foreach ( string sField in sDATA_FIELD.Split(' ') )
										{
											cmd.CommandText += "        or (1 = 1";
											// 03/04/2009   Need to allow NULL or the selected values. 
											// 10/13/2011   Special list of EditViews for the search area with IS_MULTI_SELECT. 
											if ( bIS_MULTI_SELECT )
											{
												List<string> arr = new List<string>();
												foreach(ListItem item in lst.Items)
												{
													if ( item.Selected )
													{
														if ( item.Value.Length > 0 )
														{
															// 04/05/2012   Enclose in tags so that the search is more exact. 
															arr.Add("<Value>" + Sql.EscapeXml(item.Value) + "</Value>");
														}
														else
														{
															//bIncludeNull = true;
															// 10/13/2011   A multi-selection list box does not have NULL, so look for any empty value. 
															arr.Add("<Value></Value>");
														}
													}
												}
												Sql.AppendLikeParameters(cmd, arr.ToArray(), sField);
											}
											else
											{
												Sql.AppendParameterWithNull(cmd, lst, sField);
											}
											cmd.CommandText += "           )" + ControlChars.CrLf;
										}
										cmd.CommandText += "       )" + ControlChars.CrLf;
									}
									// 08/25/2009   Add support for dynamic teams. 
									else if ( sDATA_FIELD == "TEAM_ID" )
									{
										if ( Crm.Config.enable_dynamic_teams() )
										{
											cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
											cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
											cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
											cmd.CommandText += "                       ";
											Sql.AppendParameterWithNull(cmd, lst, "MEMBERSHIP_TEAM_ID");
											cmd.CommandText += "                      )" + ControlChars.CrLf;
										}
										// 05/11/2010   If we are in a list, then it does not make sense to get a single ID. 
										//else if ( !Sql.IsEmptyGuid(ctl.ID) )
										//{
										//	Sql.AppendParameter(cmd, ctl.ID, sDATA_FIELD);
										//}
										else
										{
											Sql.AppendParameterWithNull(cmd, lst, sDATA_FIELD);
										}
									}
									// 04/25/2013   Special list of EditViews for the search area with IS_MULTI_SELECT. 
									else if ( bIS_MULTI_SELECT )
									{
										List<string> arr = new List<string>();
										foreach(ListItem item in lst.Items)
										{
											if ( item.Selected )
											{
												if ( item.Value.Length > 0 )
												{
													// 04/05/2012   Enclose in tags so that the search is more exact. 
													arr.Add("<Value>" + Sql.EscapeXml(item.Value) + "</Value>");
												}
												else
												{
													//bIncludeNull = true;
													// 10/13/2011   A multi-selection list box does not have NULL, so look for any empty value. 
													arr.Add("<Value></Value>");
												}
											}
										}
										Sql.AppendLikeParameters(cmd, arr.ToArray(), sDATA_FIELD);
									}
                                    else
									{
										// 03/04/2009   Need to allow NULL or the selected values. 
										Sql.AppendParameterWithNull(cmd, lst, sDATA_FIELD);
									}
        
								}
							}
							// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
							// Instead of updating the SAVED_SEARCH data, just redirect the data. 
							else if ( FindControl(sDATA_FIELD) is HtmlInputHidden )
							{
								Sql.AppendParameter(cmd, ctl.Text, sDATA_FIELD);
							}
						}
						else if ( sFIELD_TYPE == "DatePicker" )
						{
							DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
							if ( ctlDate != null )
							{
								if ( !Sql.IsEmptyString(ctlDate.DateText) )
								{
									Sql.AppendParameter(cmd, ctlDate.Value, sDATA_FIELD);
								}
							}
						}
						else if ( sFIELD_TYPE == "DateRange" )
						{
							DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
							DatePicker ctlDateEnd   = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
							DateTime dtDateStart = DateTime.MinValue;
							DateTime dtDateEnd   = DateTime.MinValue;
							if ( ctlDateStart != null )
							{
								if ( !Sql.IsEmptyString(ctlDateStart.DateText) )
								{
									dtDateStart = ctlDateStart.Value;
								}
							}
							if ( ctlDateEnd != null )
							{
								if ( !Sql.IsEmptyString(ctlDateEnd.DateText) )
								{
									dtDateEnd = ctlDateEnd.Value;
								}
							}
							if ( dtDateStart != DateTime.MinValue ||dtDateEnd != DateTime.MinValue )
								Sql.AppendParameter(cmd, dtDateStart, dtDateEnd, sDATA_FIELD);
						}
						else if ( sFIELD_TYPE == "CheckBox" )
						{
							// 12/02/2007   Only search for checked fields if they are checked. 
							if ( ctl.Checked )
							{
								// 12/02/2007   Unassigned checkbox has a special meaning. 
								if ( sDATA_FIELD == "UNASSIGNED_ONLY" )
								{
									// 10/04/2006   Add flag to show only records that are not assigned. 
									cmd.CommandText += "   and ASSIGNED_USER_ID is null" + ControlChars.CrLf;
								}
								else if ( sDATA_FIELD == "CURRENT_USER_ONLY" )
								{
									Sql.AppendParameter(cmd, Security.USER_ID, "ASSIGNED_USER_ID", false);
								}
								// 03/31/2012   FAVORITE_RECORD_ID has a special meaning. 
								else if ( sDATA_FIELD == "FAVORITE_RECORD_ID" )
								{
									cmd.CommandText += "   and FAVORITE_RECORD_ID is not null" + ControlChars.CrLf;
								}
								else
								{
									// 04/27/2008   The boolean AppendParameter now requires the IsEmpty flag. 
									// In this case, it is false when the value is checked. 
									Sql.AppendParameter(cmd, ctl.Checked, sDATA_FIELD, !ctl.Checked);
								}
							}
						}
						else if ( sFIELD_TYPE == "TextBox" )
						{
							if ( sDATA_FIELD.IndexOf(' ') > 0 )
								Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD.Split(' '));
							else
								Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
						}
						else if ( sFIELD_TYPE == "ChangeButton" || sFIELD_TYPE == "ModulePopup" )
						{
							// 09/05/2010   Also allow for a custom field to be treated as an ID. 
							if ( nFORMAT_MAX_LENGTH == 0 && (sDATA_FIELD.EndsWith("_ID") || sDATA_FIELD.EndsWith("_ID_C")) )
							{
								if ( !Sql.IsEmptyGuid(ctl.ID) )
								{
									// 08/25/2009   Add support for dynamic teams. 
									if ( sDATA_FIELD == "TEAM_ID" || sDATA_FIELD == "TEAM_SET_NAME" )
									{
										if ( Crm.Config.enable_dynamic_teams() )
										{
											cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
											cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
											cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
											cmd.CommandText += "                       ";
											Sql.AppendParameter(cmd, ctl.ID, "MEMBERSHIP_TEAM_ID");
											cmd.CommandText += "                      )" + ControlChars.CrLf;
										}
										else
										{
											Sql.AppendParameter(cmd, ctl.ID, sDATA_FIELD);
										}

									}
									else
									{
										Sql.AppendParameter(cmd, ctl.ID, sDATA_FIELD);
									}
								}
							}
							else
							{
								Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
							}
						}
						else if ( sFIELD_TYPE == "TeamSelect" )
						{
							TeamSelect ctlTeamSelect = FindControl(sDATA_FIELD) as TeamSelect;
							if ( ctlTeamSelect != null )
							{
								if ( Crm.Config.enable_dynamic_teams() )
								{
									string sTEAM_SET_LIST = ctlTeamSelect.TEAM_SET_LIST;
									// 09/01/2009   Make sure not to filter if nothing is selected. 
									if ( !Sql.IsEmptyString(sTEAM_SET_LIST) )
									{
										string[] arr = sTEAM_SET_LIST.Split(',');
										if ( arr.Length > 0 )
										{
											cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
											cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
											cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
											cmd.CommandText += "                       ";
											Sql.AppendGuids(cmd, arr, "MEMBERSHIP_TEAM_ID");
											cmd.CommandText += "                      )" + ControlChars.CrLf;
										}
									}
								}
								else
								{
									// 04/18/2010   Make sure not to filter if nothing is selected. 
									if ( !Sql.IsEmptyGuid(ctlTeamSelect.TEAM_ID) )
										Sql.AppendParameter(cmd, ctlTeamSelect.TEAM_ID, "TEAM_ID");
								}
							}
						}
						else if ( sFIELD_TYPE == "ModuleAutoComplete" )
						{
							Sql.AppendParameter(cmd, ctl.Text, nFORMAT_MAX_LENGTH, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
						}
					}
				}
				// 09/02/2010   We need a second pass to set values specified in the Saved Search but not available in the EditView. 
				// 09/13/2011   We don't want to apply the saved search in a popup. 
				if ( !Sql.IsEmptyString(lstSavedSearches.SelectedValue) && (!bIsPopupSearch && bShowSearchViews) )
				{
					DataView vwSavedSearches = new DataView(SplendidCache.SavedSearch(m_sMODULE));
					vwSavedSearches.RowFilter = "ID = '" + lstSavedSearches.SelectedValue + "'";
					if ( vwSavedSearches.Count > 0 )
					{
						string sXML = Sql.ToString(vwSavedSearches[0]["CONTENTS"]);
						if ( !Sql.IsEmptyString(sXML) )
						{
							XmlDocument xml = new XmlDocument();
							xml.LoadXml(sXML);
							XmlNodeList nlSearchFields = xml.DocumentElement.SelectNodes("SearchFields/Field");
							foreach ( XmlNode xField in nlSearchFields )
							{
								string sDATA_FIELD = XmlUtil.GetNamedItem(xField, "Name");
								string sFIELD_TYPE = XmlUtil.GetNamedItem(xField, "Type");
								if ( !Sql.IsEmptyString(sDATA_FIELD) )
								{
									DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
									if ( !ctl.Exists )
									{
										// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
										if ( sFIELD_TYPE == "Hidden" )
										{
											Sql.AppendParameter(cmd, xField.InnerText, sDATA_FIELD);
										}
										else if ( sFIELD_TYPE == "ListBox" )
										{
											ListControl lst = FindControl(sDATA_FIELD) as ListControl;
											if ( lst == null )
											{
												// 06/17/2010   Add support for RadioButtonList and CheckBoxList. 
												XmlNodeList nlValues = xField.SelectNodes("Value");
												if ( nlValues.Count > 0 )
												{
													string[] arr = new string[nlValues.Count];
													for ( int i = 0; i < nlValues.Count; i++ )
													{
														arr[i] = nlValues[i].InnerText;
													}
													
													if ( sDATA_FIELD.IndexOf(' ') > 0 )
													{
														cmd.CommandText += "   and (1 = 0" + ControlChars.CrLf;
														foreach ( string sField in sDATA_FIELD.Split(' ') )
														{
															cmd.CommandText += "        or (1 = 1";
															// 03/04/2009   Need to allow NULL or the selected values. 
															Sql.AppendParameterWithNull(cmd, arr, sField);
															cmd.CommandText += "           )" + ControlChars.CrLf;
														}
														cmd.CommandText += "       )" + ControlChars.CrLf;
													}
													else
													{
														Sql.AppendParameterWithNull(cmd, arr, sDATA_FIELD);
													}
												}
												else
												{
													// 09/02/2010   We should be safe in assuming that if the field exists but is empty, 
													// that we want to search for the NULL value.  This is because a multi-select ListBox will 
													// not save the field if there are no values selected. 
													if ( Sql.IsEmptyString(xField.InnerText) )
													{
														if ( sDATA_FIELD.IndexOf(' ') > 0 )
														{
															cmd.CommandText += "   and (1 = 0";
															foreach ( string sField in sDATA_FIELD.Split(' ') )
															{
																cmd.CommandText += "        or " + sField + " is null";
															}
															cmd.CommandText += "       )" + ControlChars.CrLf;
														}
														else
															cmd.CommandText += "   and " + sDATA_FIELD + " is null" + ControlChars.CrLf;
													}
													else
													{
														if ( sDATA_FIELD.IndexOf(' ') > 0 )
														{
															cmd.CommandText += "   and (1 = 0" + ControlChars.CrLf;
															foreach ( string sField in sDATA_FIELD.Split(' ') )
															{
																cmd.CommandText += "        or ";
																Sql.AppendParameter(cmd, xField.InnerText, sField);
															}
															cmd.CommandText += "       )" + ControlChars.CrLf;
														}
														// 08/25/2009   Add support for dynamic teams. 
														else if ( sDATA_FIELD == "TEAM_ID" )
														{
															Guid gTEAM_ID = Sql.ToGuid(xField.InnerText);
															if ( !Sql.IsEmptyGuid(gTEAM_ID) )
															{
																if ( Crm.Config.enable_dynamic_teams() )
																{
																	cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
																	cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
																	cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
																	cmd.CommandText += "                       ";
																	Sql.AppendParameter(cmd, gTEAM_ID, "MEMBERSHIP_TEAM_ID");
																	cmd.CommandText += "                      )" + ControlChars.CrLf;
																}
																else
																{
																	Sql.AppendParameter(cmd, gTEAM_ID, sDATA_FIELD);
																}
															}
														}
														else
														{
															Sql.AppendParameter(cmd, xField.InnerText, sDATA_FIELD);
														}
													}
												}
											}
										}
										else if ( sFIELD_TYPE == "DatePicker" )
										{
											DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
											if ( ctlDate == null )
											{
												if ( !Sql.IsEmptyString(xField.InnerText) )
												{
													DateTime dtDate = Sql.ToDateTime(xField.InnerText);
													Sql.AppendParameter(cmd, dtDate, sDATA_FIELD);
												}
											}
										}
										else if ( sFIELD_TYPE == "DateRange" )
										{
											DateTime dtDateStart = DateTime.MinValue;
											DateTime dtDateEnd   = DateTime.MinValue;
											XmlNode xStart = xField.SelectSingleNode("After");
											if ( xStart != null )
											{
												DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
												if ( ctlDateStart == null )
												{
													if ( !Sql.IsEmptyString(xStart.InnerText) )
													{
														dtDateStart = Sql.ToDateTime(xStart.InnerText);
													}
												}
											}
											XmlNode xEnd = xField.SelectSingleNode("Before");
											if ( xEnd != null )
											{
												DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
												if ( ctlDateEnd == null )
												{
													if ( !Sql.IsEmptyString(xEnd.InnerText) )
													{
														dtDateEnd = Sql.ToDateTime(xEnd.InnerText);
													}
												}
											}
											if ( dtDateStart != DateTime.MinValue ||dtDateEnd != DateTime.MinValue )
												Sql.AppendParameter(cmd, dtDateStart, dtDateEnd, sDATA_FIELD);
										}
										else if ( sFIELD_TYPE == "CheckBox" )
										{
											bool bChecked = Sql.ToBoolean(xField.InnerText);
											if ( bChecked )
											{
												// 12/02/2007   Unassigned checkbox has a special meaning. 
												if ( sDATA_FIELD == "UNASSIGNED_ONLY" )
												{
													// 10/04/2006   Add flag to show only records that are not assigned. 
													cmd.CommandText += "   and ASSIGNED_USER_ID is null" + ControlChars.CrLf;
												}
												else if ( sDATA_FIELD == "CURRENT_USER_ONLY" )
												{
													Sql.AppendParameter(cmd, Security.USER_ID, "ASSIGNED_USER_ID", false);
												}
												// 03/31/2012   FAVORITE_RECORD_ID has a special meaning. 
												else if ( sDATA_FIELD == "FAVORITE_RECORD_ID" )
												{
													cmd.CommandText += "   and FAVORITE_RECORD_ID is not null" + ControlChars.CrLf;
												}
												else
												{
													// 04/27/2008   The boolean AppendParameter now requires the IsEmpty flag. 
													// In this case, it is false when the value is checked. 
													Sql.AppendParameter(cmd, bChecked, sDATA_FIELD, false);
												}
											}
										}
										else if ( sFIELD_TYPE == "TextBox" )
										{
											if ( sDATA_FIELD.IndexOf(' ') > 0 )
												Sql.AppendParameter(cmd, xField.InnerText, 4000, Sql.SqlFilterMode.StartsWith, sDATA_FIELD.Split(' '));
											else
												Sql.AppendParameter(cmd, xField.InnerText, 4000, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);  // 11/16/2011   Include format size to get SearchBuilder logic. 
										}
										else if ( sFIELD_TYPE == "ChangeButton" || sFIELD_TYPE == "ModulePopup" )
										{
											if ( sDATA_FIELD.EndsWith("_ID") )
											{
												Guid gID = Sql.ToGuid(xField.InnerText);
												if ( !Sql.IsEmptyGuid(gID) )
												{
													// 08/25/2009   Add support for dynamic teams. 
													if ( sDATA_FIELD == "TEAM_ID" || sDATA_FIELD == "TEAM_SET_NAME" )
													{
														if ( Crm.Config.enable_dynamic_teams() )
														{
															cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
															cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
															cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
															cmd.CommandText += "                       ";
															Sql.AppendParameter(cmd, ctl.ID, "MEMBERSHIP_TEAM_ID");
															cmd.CommandText += "                      )" + ControlChars.CrLf;
														}
														else
														{
															Sql.AppendParameter(cmd, gID, sDATA_FIELD);
														}

													}
													else
													{
														Sql.AppendParameter(cmd, gID, sDATA_FIELD);
													}
												}
											}
											else
											{
												Sql.AppendParameter(cmd, xField.InnerText, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
											}
										}
										else if ( sFIELD_TYPE == "TeamSelect" )
										{
											TeamSelect ctlTeamSelect = FindControl(sDATA_FIELD) as TeamSelect;
											if ( ctlTeamSelect == null )
											{
												if ( Crm.Config.enable_dynamic_teams() )
												{
													StringBuilder sbTEAM_SET_LIST = new StringBuilder();
													XmlNodeList nlTeams = xField.SelectNodes("Team");
													foreach ( XmlNode xTeam in nlTeams )
													{
														if ( sbTEAM_SET_LIST.Length > 0 )
															sbTEAM_SET_LIST.Append(",");
														Guid gTEAM_ID = Sql.ToGuid(XmlUtil.SelectSingleNode(xTeam, "TEAM_ID"));
														if ( gTEAM_ID != Guid.Empty )
														{
															sbTEAM_SET_LIST.Append(gTEAM_ID.ToString());
														}
													}
													if ( sbTEAM_SET_LIST.Length > 0 )
													{
														string[] arr = sbTEAM_SET_LIST.ToString().Split(',');
														if ( arr.Length > 0 )
														{
															cmd.CommandText += "   and TEAM_SET_ID in (select MEMBERSHIP_TEAM_SET_ID" + ControlChars.CrLf;
															cmd.CommandText += "                         from vwTEAM_SET_MEMBERSHIPS" + ControlChars.CrLf;
															cmd.CommandText += "                        where 1 = 1                 " + ControlChars.CrLf;
															cmd.CommandText += "                       ";
															Sql.AppendGuids(cmd, arr, "MEMBERSHIP_TEAM_ID");
															cmd.CommandText += "                      )" + ControlChars.CrLf;
														}
													}
												}
												else
												{
													XmlNodeList nlTeams = xField.SelectNodes("Team");
													foreach ( XmlNode xTeam in nlTeams )
													{
														Guid gTEAM_ID = Sql.ToGuid(XmlUtil.SelectSingleNode(xTeam, "TEAM_ID"));
														if ( !Sql.IsEmptyGuid(gTEAM_ID) )
														{
															Sql.AppendParameter(cmd, ctlTeamSelect.TEAM_ID, "TEAM_ID");
														}
													}
												}
											}
										}
										else if ( sFIELD_TYPE == "ModuleAutoComplete" )
										{
											Sql.AppendParameter(cmd, xField.InnerText, Sql.SqlFilterMode.StartsWith, sDATA_FIELD);
										}
									}
								}
							}
						}
					}
				}
				
				// 12/28/2008   Apply the duplicate filter at the end of the search filter. 
				// It would probably be more efficient to place the above filters within the duplicate filter. 
				// Lets keep the SQL simple for now.  We can optimize later. 
				if ( nAdvanced == 2 )
				{
					ListControl lst = lstDuplicateColumns;
					int nSelected = 0;
					foreach(ListItem item in lst.Items)
					{
						if ( item.Selected )
							nSelected++;
					}
					if ( nSelected > 0 )
					{
						string sTABLE_NAME = Sql.ToString(Application["Modules." + m_sMODULE + ".TableName"]);
						StringBuilder sbSelect = new StringBuilder();
						StringBuilder sbGroup  = new StringBuilder();
						StringBuilder sbJoin   = new StringBuilder();
						foreach(ListItem item in lst.Items)
						{
							if ( item.Selected )
							{
								if ( sbSelect.Length == 0 )
								{
									sbSelect.Append("select " + item.Value);
									sbGroup .Append(" group by " + item.Value);
									sbJoin  .Append("         on DUPS." + item.Value + " = " + sTABLE_NAME + "." + item.Value + ControlChars.CrLf);
								}
								else
								{
									sbSelect.Append(", " + item.Value);
									sbGroup .Append(", " + item.Value);
									sbJoin  .Append("        and DUPS." + item.Value + " = " + sTABLE_NAME + "." + item.Value + ControlChars.CrLf);
								}
							}
						}
						// 04/28/2009   Dups is any time the count is >= 2.
						string sDupSQL = String.Empty;
						sDupSQL = "select ID " + ControlChars.CrLf
						        + "  from      vw" + sTABLE_NAME + "_Edit " + sTABLE_NAME + ControlChars.CrLf
						        + " inner join (" + sbSelect.ToString() + ControlChars.CrLf
						        + "               from vw" + sTABLE_NAME + "_Edit" + ControlChars.CrLf
						        + "             " + sbGroup.ToString() + ControlChars.CrLf
						        + "              having count(*) >= 2) DUPS" + ControlChars.CrLf
						        + sbJoin.ToString();
						cmd.CommandText += "   and ID in " + ControlChars.CrLf + "(" + ControlChars.CrLf + sDupSQL + ")";
					}
				}
			}
			return bSearchLoaded;
		}
Beispiel #49
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            SetPageTitle("发布在途气");
            // 06/04/2006   Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load. 
            // 03/10/2010   Apply full ACL security rules. 
            this.Visible = (Taoqi.Security.GetUserAccess(m_sMODULE, "edit") >= 0) && (Security.isSeller == 1);
            if (!this.Visible)
            {
                // 03/17/2010   We need to rebind the parent in order to get the error message to display. 
                Parent.DataBind();
                return;
            }

            try
            {
                gID = Sql.ToGuid(Request["ID"]);
                if (!IsPostBack)
                {
                    Guid gDuplicateID = Sql.ToGuid(Request["DuplicateID"]);
                    if (!Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID))
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            string sSQL;
                            // 09/08/2010   We need a separate view for the list as the default view filters by MODULE_ENABLED 
                            // and we don't want to filter by that flag in the ListView, DetailView or EditView. 
                            sSQL = "select *             " + ControlChars.CrLf
                                 + "  from vwTQTransit_Edit" + ControlChars.CrLf
                                 + " where 1 = 1         " + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                con.Open();

                                //if (bDebug)
                                 //   RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));

                                // 11/22/2010   Convert data reader to data table for Rules Wizard. 
                                using (DbDataAdapter da = dbf.CreateDataAdapter())
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    using (DataTable dtCurrent = new DataTable())
                                    {
                                        da.Fill(dtCurrent);
                                        if (dtCurrent.Rows.Count > 0)
                                        {
                                            DataRow rdr = dtCurrent.Rows[0];
                                            //ctlModuleHeader.Title = Sql.ToString(rdr["C_clientname"]);
                                            SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                            ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                                            this.AppendEditViewFields(m_sMODULE + "." + LayoutEditView, tblMain, rdr);
                                            ViewState["LAST_DATE_MODIFIED"] = Sql.ToDateTime(rdr["DATE_MODIFIED"]);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + "." + LayoutEditView, tblMain, null);

                        var C_CustomerManager = new DynamicControl(this, "C_CustomerManager");

                        if (C_CustomerManager!=null)
                        {
                            C_CustomerManager.Text = Security.FULL_NAME;
                        }


                     
                    }
                }
                else
                {
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
            }


            //初始化数据
            //if (!IsPostBack)
            //{
            //    TXTC_GasificationRate = FindControl("TXTC_GasificationRate") as HtmlInputText;


            //    DbProviderFactory dbf = DbProviderFactories.GetFactory();
            //    using (IDbConnection con = dbf.CreateConnection())
            //    {
            //        con.Open();

            //        using (IDbCommand cmd = con.CreateCommand())
            //        {
            //            cmd.CommandText = "select * "
            //                             + "  from vwTQClient"
            //                             + " where ID = @ClientID"; ;
            //            Sql.AddParameter(cmd, "@ClientID", Security.User_ClientId);

            //            using (DbDataAdapter da = dbf.CreateDataAdapter())
            //            {
            //                ((IDbDataAdapter)da).SelectCommand = cmd;
            //                using (DataTable dtCurrent = new DataTable())
            //                {
            //                    da.Fill(dtCurrent);
            //                    if (dtCurrent.Rows.Count > 0)
            //                    {
            //                        DataRow row = dtCurrent.Rows[0];

            //                        TXTC_GasificationRate.Value = row["C_GasificationRate"].ToString();
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}

        }
Beispiel #50
0
		public void ApplySavedSearch(string sXML)
		{
			try
			{
				// 06/27/2009   Save the Last Applied search so that we can use it to determine if there was a change. 
				// We want to avoid updating if there was not change.  This is particularly important with all the search controls on the home page. 
				sXML_LastApplied = sXML;
				if ( !Sql.IsEmptyString(sXML) )
				{
					XmlDocument xml = new XmlDocument();
					xml.LoadXml(sXML);

					string sSortColumn = XmlUtil.SelectSingleNode(xml, "SortColumn");
					string sSortOrder  = XmlUtil.SelectSingleNode(xml, "SortOrder" );
					if ( !Sql.IsEmptyString(sSortColumn) && ! Sql.IsEmptyString(sSortOrder) && Command != null )
					{
						// 12/14/2007   The ViewState in the search control is different than the view state on the page or the grid control. 
						// We need to send a command to set the sort fields.
						string[] arrSort = new string[] { sSortColumn, sSortOrder };
						CommandEventArgs eSortGrid = new CommandEventArgs("SortGrid", arrSort);
						Command(this, eSortGrid);
					}
					// 09/01/2010   Set the previous saved search values. 
					// 02/25/2014   Not sure why SortColumn is blank, bit it is throwing an exception. 
					if ( !Sql.IsEmptyString(sSortColumn) )
						Utils.SetSelectedValue(lstColumns      , sSortColumn   );
					radSavedSearchASC .Checked = (sSortOrder == "asc");
					radSavedSearchDESC.Checked = !radSavedSearchASC.Checked;
					
					string sDefaultSearch = XmlUtil.SelectSingleNode(xml, "DefaultSearch");
					if ( !Sql.IsEmptyString(sDefaultSearch) )
					{
						// 08/19/2010   Check the list before assigning the value. 
						Utils.SetSelectedValue(lstSavedSearches, sDefaultSearch);
					}

					XmlNodeList nlSearchFields = xml.DocumentElement.SelectNodes("SearchFields/Field");
					foreach ( XmlNode xField in nlSearchFields )
					{
						string sDATA_FIELD = XmlUtil.GetNamedItem(xField, "Name");
						string sFIELD_TYPE = XmlUtil.GetNamedItem(xField, "Type");
						if ( !Sql.IsEmptyString(sDATA_FIELD) )
						{
							DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
							if ( ctl != null )
							{
								// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
								if ( sFIELD_TYPE == "Hidden" )
								{
									ctl.Text = xField.InnerText;
								}
								// 04/05/2012   Add searching support for checkbox list. 
								else if ( sFIELD_TYPE == "ListBox" || sFIELD_TYPE == "CheckBoxList" || sFIELD_TYPE == "Radio" )
								{
									ListControl lst = FindControl(sDATA_FIELD) as ListControl;
									if ( lst != null )
									{
										// 06/17/2010   Add support for RadioButtonList and CheckBoxList. 
										if ( lst is ListBox || lst is RadioButtonList  || lst is CheckBoxList )
										{
											XmlNodeList nlValues = xField.SelectNodes("Value");
											if ( nlValues.Count > 0 )
											{
												foreach ( XmlNode xValue in nlValues )
												{
													foreach ( ListItem item in lst.Items )
													{
														if ( item.Value == xValue.InnerText )
															item.Selected = true;
													}
												}
											}
											// 09/02/2010   If there are to Value tags, then try and use the value of field. 
											// This is to allow a saved DropDownList value to set a ListBox control. 
											else if ( !Sql.IsEmptyString(xField.InnerText) )
											{
												foreach ( ListItem item in lst.Items )
												{
													if ( item.Value == xField.InnerText )
													{
														item.Selected = true;
														break;
													}
												}
											}
										}
										else if ( lst is DropDownList )
										{
											// 12/13/2007   DropDownLists must be handled separately to ensure that only one item is selected. 
											try
											{
												// 08/19/2010   Check the list before assigning the value. 
												Utils.SetValue(lst, xField.InnerText);
											}
											catch
											{
											}
										}
									}
									// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
									// Instead of updating the SAVED_SEARCH data, just redirect the data. 
									else if ( FindControl(sDATA_FIELD) is HtmlInputHidden )
									{
										ctl.Text = xField.InnerText;
									}
								}
								else if ( sFIELD_TYPE == "DatePicker" )
								{
									DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
									if ( ctlDate != null )
									{
										if ( !Sql.IsEmptyString(xField.InnerText) )
										{
											ctlDate.DateText = xField.InnerText;
										}
									}
								}
								else if ( sFIELD_TYPE == "DateRange" )
								{
									XmlNode xStart = xField.SelectSingleNode("After");
									if ( xStart != null )
									{
										DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
										if ( ctlDateStart != null )
										{
											if ( !Sql.IsEmptyString(xStart.InnerText) )
											{
												ctlDateStart.DateText = xStart.InnerText;
											}
										}
									}
									XmlNode xEnd = xField.SelectSingleNode("Before");
									if ( xEnd != null )
									{
										DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
										if ( ctlDateEnd != null )
										{
											if ( !Sql.IsEmptyString(xEnd.InnerText) )
											{
												ctlDateEnd.DateText = xEnd.InnerText;
											}
										}
									}
								}
								else if ( sFIELD_TYPE == "CheckBox" )
								{
									ctl.Checked = Sql.ToBoolean(xField.InnerText);
								}
								else if ( sFIELD_TYPE == "TextBox" )
								{
									ctl.Text = xField.InnerText;
								}
								else if ( sFIELD_TYPE == "ChangeButton" || sFIELD_TYPE == "ModulePopup" )
								{
									ctl.Text = xField.InnerText;
								}
								else if ( sFIELD_TYPE == "TeamSelect" )
								{
									TeamSelect ctlTeamSelect = FindControl(sDATA_FIELD) as TeamSelect;
									if ( ctlTeamSelect != null )
									{
										ctlTeamSelect.InitTable();
										DataTable dtLineItems = ctlTeamSelect.LineItems;

										XmlNodeList nlTeams = xField.SelectNodes("Team");
										foreach ( XmlNode xTeam in nlTeams )
										{
											Guid gTEAM_ID = Sql.ToGuid(XmlUtil.SelectSingleNode(xTeam, "TEAM_ID"));
											if ( gTEAM_ID != Guid.Empty )
											{
												DataRow rowNew = dtLineItems.NewRow();
												dtLineItems.Rows.Add(rowNew);
												rowNew["TEAM_ID"     ] = gTEAM_ID;
												rowNew["NAME"        ] = XmlUtil.SelectSingleNode(xTeam, "NAME");
												rowNew["PRIMARY_TEAM"] = Sql.ToBoolean(XmlUtil.SelectSingleNode(xTeam, "PRIMARY_TEAM"));
											}
										}
										if ( dtLineItems.Rows.Count > 0 )
										{
											ctlTeamSelect.LineItems = dtLineItems;
										}
									}
								}
								else if ( sFIELD_TYPE == "ModuleAutoComplete" )
								{
									ctl.Text = xField.InnerText;
								}
							}
						}
					}
					// 12/28/2008   Restore the duplicate fields. 
					if ( nAdvanced == 2 )
					{
						nlSearchFields = xml.DocumentElement.SelectNodes("DuplicateFields/Field");
						foreach ( XmlNode xField in nlSearchFields )
						{
							string sDATA_FIELD = XmlUtil.GetNamedItem(xField, "Name");
							string sFIELD_TYPE = XmlUtil.GetNamedItem(xField, "Type");
							if ( !Sql.IsEmptyString(sDATA_FIELD) )
							{
								if ( sDATA_FIELD == "lstDuplicateColumns" && sFIELD_TYPE == "ListBox" )
								{
									ListControl lst = lstDuplicateColumns;
									if ( lst != null )
									{
										if ( lst is ListBox )
										{
											foreach ( ListItem item in lst.Items )
											{
												item.Selected = false;
											}
											XmlNodeList nlValues = xField.SelectNodes("Value");
											foreach ( XmlNode xValue in nlValues )
											{
												foreach ( ListItem item in lst.Items )
												{
													if ( item.Value == xValue.InnerText )
														item.Selected = true;
												}
											}
										}
									}
								}
							}
						}
					}
					// 04/15/2011   We need an event so that default report parameters can be applied. 
					if ( SavedSearchApplied != null )
					{
						SavedSearchApplied(xml);
					}
				}
			}
			catch(Exception ex)
			{
				SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
			}
		}
        // 01/05/2007 Paul.  We need to update the totals before saving.
        public void UpdateTotals()
        {
            Double dSUBTOTAL = 0.0;
            Double dDISCOUNT = new DynamicControl(this, "DISCOUNT").FloatValue;
            Double dSHIPPING = new DynamicControl(this, "SHIPPING").FloatValue;
            Double dTAX      = 0.0;
            Double dTOTAL    = 0.0;
            double dTAX_RATE = 0.0;

            DataTable dtTAX_RATE = SplendidCache.TaxRates();
            if ( !Sql.IsEmptyGuid(TAXRATE_ID.SelectedValue) )
            {
                DataRow[] row = dtTAX_RATE.Select("ID = '" + TAXRATE_ID.SelectedValue + "'");
                if ( row.Length == 1 )
                {
                    dTAX_RATE = Sql.ToDouble(row[0]["VALUE"]) / 100;
                }
            }
            foreach ( DataRow row in dtLineItems.Rows )
            {
                if ( row.RowState != DataRowState.Deleted )
                {
                    // 08/11/2007 Paul.  Allow an item to be manually added.  Require either a product ID or a name.
                    if ( !Sql.IsEmptyString(row["NAME"]) || !Sql.IsEmptyGuid(row["PRODUCT_TEMPLATE_ID"]) )
                    {
                        string  sLINE_ITEM_TYPE = Sql.ToString (row["LINE_ITEM_TYPE"]);
                        string  sTAX_CLASS      = Sql.ToString (row["TAX_CLASS"     ]);
                        int     nQUANTITY       = Sql.ToInteger(row["QUANTITY"      ]);
                        Double  dUNIT_PRICE     = Sql.ToDouble (row["UNIT_PRICE"    ]);
                        if ( sLINE_ITEM_TYPE != "Comment" )
                        {
                            dSUBTOTAL += dUNIT_PRICE * nQUANTITY;
                            if ( sTAX_CLASS == "Taxable" )
                                dTAX += dUNIT_PRICE * nQUANTITY * dTAX_RATE;
                        }
                    }
                }
            }
            dTOTAL = dSUBTOTAL - dDISCOUNT + dTAX + dSHIPPING;
            SUBTOTAL.Text = Convert.ToDecimal(dSUBTOTAL).ToString("c");
            DISCOUNT.Text = Convert.ToDecimal(dDISCOUNT).ToString("0.00");
            SHIPPING.Text = Convert.ToDecimal(dSHIPPING).ToString("0.00");
            TAX     .Text = Convert.ToDecimal(dTAX     ).ToString("c");
            TOTAL   .Text = Convert.ToDecimal(dTOTAL   ).ToString("c");
            // 03/31/2007 Paul.  We are using UNIT_PRICE, so the value will need to be converted to USD before stored in hidden fields.
            DISCOUNT_USDOLLAR.Value = C10n.FromCurrency(Convert.ToDecimal(dDISCOUNT)).ToString("0.000");
            SHIPPING_USDOLLAR.Value = C10n.FromCurrency(Convert.ToDecimal(dSHIPPING)).ToString("0.000");
        }
Beispiel #52
0
		public virtual void ClearForm()
		{
			if ( dtFields != null )
			{
				foreach(DataRowView row in dtFields.DefaultView)
				{
					string sFIELD_TYPE        = Sql.ToString (row["FIELD_TYPE"       ]);
					string sDATA_FIELD        = Sql.ToString (row["DATA_FIELD"       ]);
					string sDISPLAY_FIELD     = Sql.ToString (row["DISPLAY_FIELD"    ]);
					int    nFORMAT_MAX_LENGTH = Sql.ToInteger(row["FORMAT_MAX_LENGTH"]);
					// 04/18/2010   If the user manually adds a TeamSelect, we need to convert to a ModulePopup. 
					if ( (sDATA_FIELD == "TEAM_ID" || sDATA_FIELD == "TEAM_SET_NAME") )
					{
						if ( Crm.Config.enable_team_management() && !Crm.Config.enable_dynamic_teams() && sFIELD_TYPE == "TeamSelect" )
						{
							sDATA_FIELD     = "TEAM_ID";
							sDISPLAY_FIELD  = "TEAM_NAME";
							sFIELD_TYPE     = "ModulePopup";
							//sMODULE_TYPE    = "Teams";
						}
					}
					DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
					if ( ctl != null )
					{
						// 04/09/2011   Change the field to a hidden field so that we can add Report Parameters. 
						if ( sFIELD_TYPE == "Hidden" )
						{
							ctl.Text = String.Empty;
						}
						// 04/05/2012   Add searching support for checkbox list. 
						else if ( sFIELD_TYPE == "ListBox" || sFIELD_TYPE == "CheckBoxList" || sFIELD_TYPE == "Radio" )
						{
							ListControl lst = FindControl(sDATA_FIELD) as ListControl;
							if ( lst != null )
							{
								// 06/17/2010   Add support for RadioButtonList and CheckBoxList. 
								if ( lst is ListBox || lst is RadioButtonList || lst is CheckBoxList )
								{
									// 12/12/2007   ClearSelection is the correct way to reset a ListBox. 
									lst.ClearSelection();
								}
								else if ( lst is DropDownList )
								{
									// 12/13/2007   Clear a drop-down by selecting the top item. 
									lst.ClearSelection();
									lst.SelectedIndex = 0;
								}
							}
						}
						else if ( sFIELD_TYPE == "DatePicker" )
						{
							DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
							if ( ctlDate != null )
							{
								ctlDate.DateText = String.Empty;
							}
						}
						else if ( sFIELD_TYPE == "DateRange" )
						{
							DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
							if ( ctlDateStart != null )
							{
								ctlDateStart.DateText = String.Empty;
							}
							DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
							if ( ctlDateEnd != null )
							{
								ctlDateEnd.DateText = String.Empty;
							}
						}
						else if ( sFIELD_TYPE == "CheckBox" )
						{
							ctl.Checked = false;
						}
						else if ( sFIELD_TYPE == "TextBox" )
						{
							ctl.Text = String.Empty;
						}
						else if ( sFIELD_TYPE == "ChangeButton" || sFIELD_TYPE == "ModulePopup" )
						{
							ctl.Text = String.Empty;
							DynamicControl ctlDISPLAY_FIELD = new DynamicControl(this, sDISPLAY_FIELD);
							if ( ctlDISPLAY_FIELD != null )
								ctlDISPLAY_FIELD.Text = String.Empty;
						}
						else if ( sFIELD_TYPE == "TeamSelect" )
						{
							TeamSelect ctlTeamSelect = FindControl(sDATA_FIELD) as TeamSelect;
							if ( ctlTeamSelect != null )
							{
								ctlTeamSelect.Clear();
							}
						}
						else if ( sFIELD_TYPE == "ModuleAutoComplete" )
						{
							ctl.Text = String.Empty;
						}
					}
				}
				if ( nAdvanced == 2 )
				{
					foreach ( ListItem item in lstDuplicateColumns.Items )
						item.Selected = false;
				}
			}
		}
        private void Page_Load(object sender, System.EventArgs e)
        {
            SetPageTitle(L10n.Term("Import.LBL_MODULE_NAME"));
            // 06/04/2006 Paul.  Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load.
            this.Visible = (SplendidCRM.Security.GetUserAccess(m_sMODULE, "import") >= 0);
            if ( !this.Visible )
                return;

            xml = new XmlDocument();
            xmlMapping = new XmlDocument();
            xmlMapping.AppendChild(xmlMapping.CreateProcessingInstruction("xml" , "version=\"1.0\" encoding=\"UTF-8\""));
            xmlMapping.AppendChild(xmlMapping.CreateElement("Import"));

            sbImport = new StringBuilder();
            try
            {
                // 11/01/2006 Paul.  Max errors is now a config value.
                nMAX_ERRORS = Sql.ToInteger(Application["CONFIG.import_max_errors"]);
                if ( nMAX_ERRORS <= 0 )
                    nMAX_ERRORS = 200;

                // 07/02/2006 Paul.  The required fields need to be bound manually.
                reqNAME    .ErrorMessage = L10n.Term(".ERR_REQUIRED_FIELD");
                reqFILENAME.ErrorMessage = L10n.Term(".ERR_REQUIRED_FIELD");
                // 12/17/2005 Paul.  Don't buffer so that the connection can be kept alive.
                Response.BufferOutput = false;

                BindSaved();
                // 10/08/2006 Paul.  Columns table is used in multiple locations.  Make sure to load only once.
                DataTable dtColumns = SplendidCache.ImportColumns(sImportModule).Copy();
                foreach ( DataRow row in dtColumns.Rows )
                {
                    row["DISPLAY_NAME"] = TableColumnName(sImportModule, Sql.ToString(row["DISPLAY_NAME"]));
                }
                vwColumns = new DataView(dtColumns);

                gID = Sql.ToGuid(Request["ID"]);
                if ( !IsPostBack )
                {
                    radEXCEL.Checked = true;
                    chkHasHeader.Checked = true;
                    txtACTIVE_TAB.Value = "1";

                    radEXCEL           .DataBind();
                    radXML_SPREADSHEET .DataBind();
                    radXML             .DataBind();
                    radSALESFORCE      .DataBind();
                    radACT_2005        .DataBind();
                    radCUSTOM_CSV      .DataBind();
                    radCUSTOM_TAB      .DataBind();
                    radCUSTOM_DELIMITED.DataBind();

                    radEXCEL           .Attributes.Add("onclick", "SelectSourceFormat()");
                    radXML_SPREADSHEET .Attributes.Add("onclick", "SelectSourceFormat()");
                    radXML             .Attributes.Add("onclick", "SelectSourceFormat()");
                    radSALESFORCE      .Attributes.Add("onclick", "SelectSourceFormat()");
                    radACT_2005        .Attributes.Add("onclick", "SelectSourceFormat()");
                    radCUSTOM_CSV      .Attributes.Add("onclick", "SelectSourceFormat()");
                    radCUSTOM_TAB      .Attributes.Add("onclick", "SelectSourceFormat()");
                    radCUSTOM_DELIMITED.Attributes.Add("onclick", "SelectSourceFormat()");
                    ctlListHeader.Title = L10n.Term("Import.LBL_LAST_IMPORTED") + " " + L10n.Term(".moduleList.", sImportModule);

                    if ( !Sql.IsEmptyGuid(gID) )
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using ( IDbConnection con = dbf.CreateConnection() )
                        {
                            string sSQL;
                            sSQL = "select *                 " + ControlChars.CrLf
                                 + "  from vwIMPORT_MAPS_Edit" + ControlChars.CrLf
                                 + " where ID = @ID          " + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                Sql.AddParameter(cmd, "@ID", gID);
                                con.Open();

                                if ( bDebug )
                                    RegisterClientScriptBlock("vwIMPORT_MAPS_Edit", Sql.ClientScriptBlock(cmd));

                                using ( IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow) )
                                {
                                    if ( rdr.Read() )
                                    {
                                        SourceType(Sql.ToString(rdr["SOURCE"]));
                                        chkHasHeader.Checked = Sql.ToBoolean(rdr["HAS_HEADER"]);

                                        string sXmlMapping = Sql.ToString (rdr["CONTENT"]);
                                        ViewState["xmlMapping"] = sXmlMapping;
                                        xmlMapping.LoadXml(sXmlMapping);

                                        // 10/12/2006 Paul.  Extract the sample from the mapping.
                                        xml = new XmlDocument();
                                        string sXmlSample = XmlUtil.SelectSingleNode(xmlMapping, "Sample");
                                        ViewState["xmlSample"] = sXmlSample;
                                        XmlUtil.SetSingleNode(xmlMapping, "Sample", String.Empty);
                                        if ( sXmlSample.Length > 0 )
                                            xml.LoadXml(sXmlSample);

                                        UpdateImportMappings(xml, false, false);
                                        txtACTIVE_TAB.Value = "3";
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        XmlUtil.SetSingleNodeAttribute(xmlMapping, xmlMapping.DocumentElement, "Name", String.Empty);
                        XmlUtil.SetSingleNode(xmlMapping, "Module"    , sImportModule);
                        XmlUtil.SetSingleNode(xmlMapping, "SourceType", SourceType() );
                        XmlUtil.SetSingleNode(xmlMapping, "HasHeader" , chkHasHeader.Checked.ToString());
                        InitMapping();
                    }
                }
                else
                {
                    string sXmlMapping = Sql.ToString(ViewState["xmlMapping"]);
                    if ( sXmlMapping.Length > 0 )
                        xmlMapping.LoadXml(sXmlMapping);

                    XmlUtil.SetSingleNodeAttribute(xmlMapping, xmlMapping.DocumentElement, "Name", txtNAME.Text);
                    XmlUtil.SetSingleNode(xmlMapping, "Module"    , sImportModule);
                    XmlUtil.SetSingleNode(xmlMapping, "SourceType", SourceType() );
                    XmlUtil.SetSingleNode(xmlMapping, "HasHeader" , chkHasHeader.Checked.ToString());

                    // 10/10/2006 Paul.  This loop updates the default values. Field mappings are updated inside UpdateImportMappings().
                    XmlNodeList nlFields = xmlMapping.DocumentElement.SelectNodes("Fields/Field");
                    foreach ( XmlNode xField in nlFields )
                    {
                        string sFieldName = xField.Attributes.GetNamedItem("Name").Value;
                        DynamicControl ctl = new DynamicControl(ctlDefaultsView, sFieldName);
                        if ( ctl.Exists )
                        {
                            XmlUtil.SetSingleNode(xmlMapping, xField, "Default", ctl.Text);
                        }
                    }

                    string sXmlSample = Sql.ToString(ViewState["xmlSample"]);
                    if ( sXmlSample.Length > 0 )
                    {
                        xml.LoadXml(sXmlSample);
                        UpdateImportMappings(xml, false, true);
                    }

                    string sProcessedFileID   = Sql.ToString(ViewState["ProcessedFileID"]);
                    string sProcessedFileName = Sql.ToString(Session["TempFile." + sProcessedFileID]);
                    string sProcessedPathName = Path.Combine(Path.GetTempPath(), sProcessedFileName);
                    if ( File.Exists(sProcessedPathName) )
                    {
                        DataSet dsProcessed = new DataSet();
                        dsProcessed.ReadXml(sProcessedPathName);
                        if ( dsProcessed.Tables.Count == 1 )
                        {
                            PreviewGrid(dsProcessed.Tables[0]);
                        }
                    }
                }
            }
            catch ( Exception ex )
            {
                ctlImportButtons.ErrorText = ex.Message;
            }
        }
        public void ApplySavedSearch(string sXML)
        {
            try
            {
                if ( !Sql.IsEmptyString(sXML) )
                {
                    XmlDocument xml = new XmlDocument();
                    xml.LoadXml(sXML);

                    string sSortColumn = XmlUtil.SelectSingleNode(xml, "SortColumn");
                    string sSortOrder  = XmlUtil.SelectSingleNode(xml, "SortOrder" );
                    if ( !Sql.IsEmptyString(sSortColumn) && ! Sql.IsEmptyString(sSortOrder) && Command != null )
                    {
                        // 12/14/2007 Paul.  The ViewState in the search control is different than the view state on the page or the grid control.
                        // We need to send a command to set the sort fields.
                        string[] arrSort = new string[] { sSortColumn, sSortOrder };
                        CommandEventArgs eSortGrid = new CommandEventArgs("SortGrid", arrSort);
                        Command(this, eSortGrid);
                    }
                    string sDefaultSearch = XmlUtil.SelectSingleNode(xml, "DefaultSearch");
                    if ( !Sql.IsEmptyString(sDefaultSearch) )
                    {
                        try
                        {
                            lstSavedSearches.SelectedValue = sDefaultSearch;
                        }
                        catch
                        {
                        }
                    }

                    XmlNodeList nlSearchFields = xml.DocumentElement.SelectNodes("SearchFields/Field");
                    foreach ( XmlNode xField in nlSearchFields )
                    {
                        string sDATA_FIELD = XmlUtil.GetNamedItem(xField, "Name");
                        string sFIELD_TYPE = XmlUtil.GetNamedItem(xField, "Type");
                        if ( !Sql.IsEmptyString(sDATA_FIELD) )
                        {
                            DynamicControl ctl = new DynamicControl(this, sDATA_FIELD);
                            if ( ctl != null )
                            {
                                if ( sFIELD_TYPE == "ListBox" )
                                {
                                    ListControl lst = FindControl(sDATA_FIELD) as ListControl;
                                    if ( lst != null )
                                    {
                                        if ( lst is ListBox )
                                        {
                                            XmlNodeList nlValues = xField.SelectNodes("Value");
                                            foreach ( XmlNode xValue in nlValues )
                                            {
                                                foreach ( ListItem item in lst.Items )
                                                {
                                                    if ( item.Value == xValue.InnerText )
                                                        item.Selected = true;
                                                }
                                            }
                                        }
                                        else if ( lst is DropDownList )
                                        {
                                            // 12/13/2007 Paul.  DropDownLists must be handled separately to ensure that only one item is selected.
                                            try
                                            {
                                                lst.SelectedValue = xField.InnerText;
                                            }
                                            catch
                                            {
                                            }
                                        }
                                    }
                                }
                                else if ( sFIELD_TYPE == "DatePicker" )
                                {
                                    DatePicker ctlDate = FindControl(sDATA_FIELD) as DatePicker;
                                    if ( ctlDate != null )
                                    {
                                        if ( !Sql.IsEmptyString(xField.InnerText) )
                                        {
                                            ctlDate.DateText = xField.InnerText;
                                        }
                                    }
                                }
                                else if ( sFIELD_TYPE == "DateRange" )
                                {
                                    XmlNode xStart = xField.SelectSingleNode("After");
                                    if ( xStart != null )
                                    {
                                        DatePicker ctlDateStart = FindControl(sDATA_FIELD + "_AFTER") as DatePicker;
                                        if ( ctlDateStart != null )
                                        {
                                            if ( !Sql.IsEmptyString(xStart.InnerText) )
                                            {
                                                ctlDateStart.DateText = xStart.InnerText;
                                            }
                                        }
                                    }
                                    XmlNode xEnd = xField.SelectSingleNode("Before");
                                    if ( xEnd != null )
                                    {
                                        DatePicker ctlDateEnd = FindControl(sDATA_FIELD + "_BEFORE") as DatePicker;
                                        if ( ctlDateEnd != null )
                                        {
                                            if ( !Sql.IsEmptyString(xEnd.InnerText) )
                                            {
                                                ctlDateEnd.DateText = xEnd.InnerText;
                                            }
                                        }
                                    }
                                }
                                else if ( sFIELD_TYPE == "CheckBox" )
                                {
                                    ctl.Checked = Sql.ToBoolean(xField.InnerText);
                                }
                                else if ( sFIELD_TYPE == "TextBox" )
                                {
                                    ctl.Text = xField.InnerText;
                                }
                                else if ( sFIELD_TYPE == "ChangeButton" )
                                {
                                    ctl.Text = xField.InnerText;
                                }
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
            }
        }
Beispiel #55
0
        public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            object     instance;
            JContainer container;

            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }
            if (reader.TokenType == JsonToken.StartArray)
            {
                container = JArray.Load(reader);
                if (objectType == typeof(DynamicRow))
                {
                    var dynamicRow = new DynamicRow();
                    instance = dynamicRow;
                    serializer.Populate(container.CreateReader(), dynamicRow.Items);
                }
                else if (objectType == typeof(DynamicItem))
                {
                    var dynamicTable = new DynamicTable();
                    instance = dynamicTable;
                    serializer.Populate(container.CreateReader(), dynamicTable.Rows);
                }
                else
                {
                    throw new EtoException("Invalid object graph");
                }
            }
            else
            {
                container = JObject.Load(reader);
                if (container["$type"] == null)
                {
                    if (container["Rows"] != null)
                    {
                        instance = new DynamicTable();
                    }
                    else if (container["Control"] != null)
                    {
                        instance = new DynamicControl();
                    }
                    else
                    {
                        throw new EtoException("Could not infer the type of object to create");
                    }

                    serializer.Populate(container.CreateReader(), instance);
                }
                else
                {
                    var type = Type.GetType((string)container ["$type"]);
                    if (!typeof(DynamicItem).IsAssignableFrom(type))
                    {
                        var dynamicControl = new DynamicControl();
                        dynamicControl.Control = serializer.Deserialize(container.CreateReader()) as Control;
                        instance = dynamicControl;
                    }
                    else
                    {
                        instance = serializer.Deserialize(container.CreateReader());
                    }
                }
            }
            if (objectType == typeof(DynamicRow) && instance.GetType() != typeof(DynamicRow))
            {
                var row = new DynamicRow();
                row.Items.Add(instance as DynamicItem);
                return(row);
            }

            return(instance);
        }
        protected void Page_Command(Object sender, CommandEventArgs e)
        {
            Guid gCAMPAIGN_ID = Sql.ToGuid(Request["CAMPAIGN_ID"]);
            if ( e.CommandName == "Save" )
            {
                // 09/22/2007 Paul.  When the IE text box is disabled, it does not submit the data.
                // Correcting this behavior here seems reasonable.
                bool bIS_OPTOUT = new DynamicControl(this, "IS_OPTOUT"  ).Checked;
                if ( bIS_OPTOUT )
                    new DynamicControl(this, "TRACKER_URL").Text = "RemoveMe.aspx";

                // 01/16/2006 Paul.  Enable validator before validating page.
                this.ValidateEditViewFields(m_sMODULE + ".EditView");
                if ( Page.IsValid )
                {
                    string sCUSTOM_MODULE = "CAMPAIGN_TRKRS";
                    DataTable dtCustomFields = SplendidCache.FieldsMetaData_Validated(sCUSTOM_MODULE);
                    DbProviderFactory dbf = DbProviderFactories.GetFactory();
                    using ( IDbConnection con = dbf.CreateConnection() )
                    {
                        con.Open();
                        // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                        DataRow   rowCurrent = null;
                        DataTable dtCurrent  = new DataTable();
                        if ( !Sql.IsEmptyGuid(gID) )
                        {
                            string sSQL ;
                            sSQL = "select *                    " + ControlChars.CrLf
                                 + "  from vwCAMPAIGN_TRKRS_Edit" + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                Security.Filter(cmd, m_sMODULE, "edit");
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                using ( DbDataAdapter da = dbf.CreateDataAdapter() )
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    da.Fill(dtCurrent);
                                    if ( dtCurrent.Rows.Count > 0 )
                                    {
                                        rowCurrent = dtCurrent.Rows[0];
                                    }
                                    else
                                    {
                                        // 11/19/2007 Paul.  If the record is not found, clear the ID so that the record cannot be updated.
                                        // It is possible that the record exists, but that ACL rules prevent it from being selected.
                                        gID = Guid.Empty;
                                    }
                                }
                            }
                        }

                        using ( IDbTransaction trn = con.BeginTransaction() )
                        {
                            try
                            {
                                // 11/18/2007 Paul.  Use the current values for any that are not defined in the edit view.
                                SqlProcs.spCAMPAIGN_TRKRS_Update(ref gID
                                    , new DynamicControl(this, rowCurrent, "TRACKER_NAME"    ).Text
                                    , new DynamicControl(this, rowCurrent, "TRACKER_URL"     ).Text
                                    , new DynamicControl(this, rowCurrent, "CAMPAIGN_ID"     ).ID
                                    , new DynamicControl(this, rowCurrent, "IS_OPTOUT"       ).Checked
                                    , trn
                                    );
                                SplendidDynamic.UpdateCustomFields(this, trn, gID, sCUSTOM_MODULE, dtCustomFields);
                                trn.Commit();
                            }
                            catch(Exception ex)
                            {
                                trn.Rollback();
                                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                                ctlEditButtons.ErrorText = ex.Message;
                                return;
                            }
                        }
                    }
                    if ( !Sql.IsEmptyGuid(gCAMPAIGN_ID) )
                        Response.Redirect("~/Campaigns/view.aspx?ID=" + gCAMPAIGN_ID.ToString());
                    else
                        Response.Redirect("view.aspx?ID=" + gID.ToString());
                }
            }
            else if ( e.CommandName == "Cancel" )
            {
                if ( !Sql.IsEmptyGuid(gCAMPAIGN_ID) )
                    Response.Redirect("~/Campaigns/view.aspx?ID=" + gCAMPAIGN_ID.ToString());
                else if ( Sql.IsEmptyGuid(gID) )
                    Response.Redirect("default.aspx");
                else
                    Response.Redirect("view.aspx?ID=" + gID.ToString());
            }
        }
Beispiel #57
0
        private void Page_Load(object sender, System.EventArgs e)
        {
          

            SetPageTitle("н¨/±à¼­¿Í»§");
            // 06/04/2006   Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load. 
            // 03/10/2010   Apply full ACL security rules. 
            this.Visible = (Taoqi.Security.GetUserAccess(m_sMODULE, "edit") >= 0);
            if (!this.Visible)
            {
                // 03/17/2010   We need to rebind the parent in order to get the error message to display. 
                Parent.DataBind();
                return;
            }

            try
            {
                gID = Sql.ToGuid(Request["ID"]);
                if (!IsPostBack)
                {
                    Guid gDuplicateID = Sql.ToGuid(Request["DuplicateID"]);
                    if (!Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID))
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            string sSQL;
                            // 09/08/2010   We need a separate view for the list as the default view filters by MODULE_ENABLED 
                            // and we don't want to filter by that flag in the ListView, DetailView or EditView. 
                            sSQL = "select *             " + ControlChars.CrLf
                                 + "  from vwTQRewardPoint_Edit" + ControlChars.CrLf
                                 + " where 1 = 1         " + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                Sql.AppendParameter(cmd, gID, "ID", false);
                                con.Open();

                                if (bDebug)
                                    RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));

                                // 11/22/2010   Convert data reader to data table for Rules Wizard. 
                                using (DbDataAdapter da = dbf.CreateDataAdapter())
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    using (DataTable dtCurrent = new DataTable())
                                    {
                                        da.Fill(dtCurrent);
                                        if (dtCurrent.Rows.Count > 0)
                                        {
                                            DataRow rdr = dtCurrent.Rows[0];
                                            //ctlModuleHeader.Title = Sql.ToString(rdr["C_clientname"]);
                                            SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                            ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                                            this.AppendEditViewFields(m_sMODULE + "." + LayoutEditView, tblMain, rdr);
                                            ctlDynamicButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, rdr);
                                            ctlFooterButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, rdr);
                                            ViewState["LAST_DATE_MODIFIED"] = Sql.ToDateTime(rdr["DATE_MODIFIED"]);
                                        }
                                        else
                                        {
                                            ctlDynamicButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);
                                            ctlFooterButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);
                                            ctlDynamicButtons.DisableAll();
                                            ctlFooterButtons.DisableAll();
                                            ctlDynamicButtons.ErrorText = L10n.Term("ACL.LBL_NO_ACCESS");
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + "." + LayoutEditView, tblMain, null);
                        ctlDynamicButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);
                        ctlFooterButtons.AppendButtons(m_sMODULE + "." + LayoutEditView, Guid.Empty, null);

                        var C_CustomerManager = new DynamicControl(this, "C_CustomerManager");

                        if (C_CustomerManager!=null)
                        {
                            C_CustomerManager.Text = Security.FULL_NAME;
                        }


                     
                    }
                }
                else
                {
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                ctlDynamicButtons.ErrorText = ex.Message;
            }

            if (Request.QueryString["isDlg"] != null)
            {

                //2014.12.14           
                Button btnCancel = this.ctlDynamicButtons.FindButton("Cancel") as Button;

                if (btnCancel != null)
                {
                    btnCancel.Visible = false;
                }

                Button btnCancel_footer = this.ctlFooterButtons.FindButton("Cancel") as Button;

                if (btnCancel_footer != null)
                {
                    btnCancel_footer.Visible = false;
                }
            }
            else
            {
                //2014.12.14
                Button btnCancel = this.ctlDynamicButtons.FindButton("Cancel") as Button;

                if (btnCancel != null)
                {
                    btnCancel.OnClientClick = "window.history.back(-1);return false;";
                }

                Button btnCancel_footer = this.ctlFooterButtons.FindButton("Cancel") as Button;

                if (btnCancel_footer != null)
                {
                    btnCancel_footer.OnClientClick = "window.history.back(-1);return false;";
                }
            }

        }
Beispiel #58
0
//-------------------------------------------------------------------------------------------
        protected override void OnLoad(EventArgs e)
        {
            IEnumerable <MetaColumn> columns = Table.GetScaffoldColumns(this.Mode, this.ContainerType);

            List <string> Groups = new List <string>();

            foreach (MetaColumn column in columns)
            {
                this.currentColumn = column;

                var groupattribute            = column.GetAttribute <ColumnGroupAttribute>();
                HtmlGenericControl tabContent = (HtmlGenericControl)GeneralControls;
                if (groupattribute != null)
                {
                    string groupId = groupattribute.GroupName.Replace(" ", "_");
                    if (!Groups.Contains(groupId))
                    {
                        Groups.Add(groupId);

                        var div = new HtmlGenericControl("div");
                        div.ID = groupId;
                        Tabs.Controls.Add(div);

                        LiteralControl tab = new LiteralControl();
                        tab.Text = "<li><a href=\"#" + div.ClientID + "\">" + groupattribute.GroupName + "</a></li>";
                        tabheader.Controls.Add(tab);
                    }
                    tabContent = (HtmlGenericControl)Tabs.FindControl(groupId);
                }


                HtmlGenericControl cellLine = new HtmlGenericControl("div");
                cellLine.Attributes["class"] = "formLine";
                tabContent.Controls.Add(cellLine);

                HtmlGenericControl cellLabel = new HtmlGenericControl("div");
                cellLabel.Attributes["class"] = "formLabel";
                cellLabel.InnerText           = column.DisplayName + ":";
                cellLine.Controls.Add(cellLabel);

                HtmlGenericControl cellData = new HtmlGenericControl("div");
                cellData.Attributes["class"] = "formData";
                var dynamicControl = new DynamicControl()
                {
                    Mode            = Mode,
                    DataField       = column.Name,
                    ValidationGroup = this.ValidationGroup
                };
                cellData.Controls.Add(dynamicControl);
                cellLine.Controls.Add(cellData);

                HtmlGenericControl br = new HtmlGenericControl("div");
                br.Style["clear"]  = "both";
                br.Style["height"] = "1px";
                cellLine.Controls.Add(br);
            }


            var clearDiv = new HtmlGenericControl("div");

            clearDiv.InnerHtml      = "&nbsp;";
            clearDiv.Style["clear"] = "both";
            GeneralControls.Controls.Add(clearDiv);

            //if (tabheader.Controls.Count == 1)
            //{
            //     tabheader.Controls.Clear();
            //}
            //else
            {
                string script = "<script type='text/javascript'>$(document).ready(function () { $(\"#tableControl\").tabs(); });</script>";
                ScriptManager.RegisterStartupScript(Page, GetType(), "TableControlInit", script, false);
            }
        }
//-------------------------------------------------------------------------------------------
    protected void DynamicControl_Init(object sender, EventArgs e)
    {
        DynamicControl dynamicControl = (DynamicControl)sender;

        dynamicControl.Mode = this.Mode;
    }
        protected void Page_Load(object sender, EventArgs e)
        {
            SetPageTitle(Translation.GetTranslation.Term(".moduleList." + m_sMODULE));
            Visible = (Security.GetUserAccess(m_sMODULE, "edit") >= 0);
            if (!Visible)
                return;

            gID = CommonTypeConvert.ToGuid(Request["ID"]);
            if (!IsPostBack)
            {
                string sLOAD_MODULE = "Invoices";
                string sLOAD_MODULE_KEY = "INVOICE_ID";
                Guid gQUOTE_ID = CommonTypeConvert.ToGuid(Request["QUOTE_ID"]);
                Guid gORDER_ID = CommonTypeConvert.ToGuid(Request["ORDER_ID"]);
                Guid gDuplicateID = CommonTypeConvert.ToGuid(Request["DuplicateID"]);
                if (!CommonTypeConvert.IsEmptyGuid(gID) || !CommonTypeConvert.IsEmptyGuid(gDuplicateID) ||
                    !CommonTypeConvert.IsEmptyGuid(gQUOTE_ID) || !CommonTypeConvert.IsEmptyGuid(gORDER_ID))
                {
                    string innerSql = ApplicationSQL.SQL["Invoices_EditView_323"].ToString();
                    var oQuery = new InlineQueryDBManager();

                    oQuery.CommandText = innerSql;
                    if (!CommonTypeConvert.IsEmptyGuid(gQUOTE_ID))
                    {
                        //Load the data from the QUOTES record.
                        sLOAD_MODULE = "Quotes";
                        sLOAD_MODULE_KEY = "QUOTE_ID";
                        innerSql = ApplicationSQL.SQL["Invoices_EditView_333"].ToString();
                        oQuery.CommandText = innerSql;
                        //Filter by the module we are loading.
                        CRMSecurity.Filter(oQuery, sLOAD_MODULE, "edit");
                        TypeConvert.AppendParameter(oQuery, gQUOTE_ID, "ID", false);
                    }
                    else if (!CommonTypeConvert.IsEmptyGuid(gORDER_ID))
                    {
                        //  Load the data from the ORDERS record.
                        sLOAD_MODULE = "Orders";
                        sLOAD_MODULE_KEY = "ORDER_ID";
                        innerSql = ApplicationSQL.SQL["Invoices_EditView"].ToString();
                        oQuery.CommandText = innerSql;
                        //Filter by the module we are loading.
                        CRMSecurity.Filter(oQuery, sLOAD_MODULE, "edit");
                        TypeConvert.AppendParameter(oQuery, gORDER_ID, "ID", false);
                    }
                    else
                    {
                        //Use new CRMSecurity.Filter() function to apply Team and ACL security rules.
                        CRMSecurity.Filter(oQuery, m_sMODULE, "edit");
                        if (!CommonTypeConvert.IsEmptyGuid(gDuplicateID))
                        {
                            TypeConvert.AppendParameter(oQuery, gDuplicateID, "ID", false);
                            gID = Guid.Empty;
                        }
                        else
                        {
                            TypeConvert.AppendParameter(oQuery, gID, "ID", false);
                        }
                    }

                    using (SqlDataReader rdr = oQuery.ExecuteReader(CommandBehavior.SingleRow))
                    {
                        if (rdr.Read())
                        {
                            ctlModuleHeader.Title = CommonTypeConvert.ToString(rdr["NAME"]);
                            SetPageTitle(Translation.GetTranslation.Term(".moduleList." + m_sMODULE) + " - " +
                                         ctlModuleHeader.Title);
                            Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                            ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;
                            ViewState["BILLING_ACCOUNT_ID"] = CommonTypeConvert.ToGuid(rdr["BILLING_ACCOUNT_ID"]);
                            ViewState["SHIPPING_ACCOUNT_ID"] = CommonTypeConvert.ToGuid(rdr["SHIPPING_ACCOUNT_ID"]);

                            new DynamicControl(this, "QUOTE_ID").ID = CommonTypeConvert.ToGuid(rdr["QUOTE_ID"]);
                            new DynamicControl(this, "ORDER_ID").ID = CommonTypeConvert.ToGuid(rdr["ORDER_ID"]);

                            AppendEditViewFields(m_sMODULE + ".EditView", tblMain, rdr);
                            AppendEditViewFields(m_sMODULE + ".EditAddress", tblAddress, rdr);
                            AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, rdr);
                            //Dynamic buttons need to be recreated in order for events to fire.
                            ctlDynamicButtons.AppendButtons(m_sMODULE + ".EditView",
                                                            CommonTypeConvert.ToGuid(rdr["ASSIGNED_USER_ID"]), rdr);

                            if (!CommonTypeConvert.IsEmptyGuid(gQUOTE_ID))
                            {
                                new DynamicControl(this, "QUOTE_ID").ID = gQUOTE_ID;
                                new DynamicControl(this, "QUOTE_NAME").Text = CommonTypeConvert.ToString(rdr["NAME"]);
                                ctlEditLineItemsView.LoadLineItems(gQUOTE_ID, Guid.Empty, rdr, sLOAD_MODULE,
                                                                   sLOAD_MODULE_KEY);
                            }
                            else if (!CommonTypeConvert.IsEmptyGuid(gORDER_ID))
                            {
                                new DynamicControl(this, "ORDER_ID").ID = gORDER_ID;
                                new DynamicControl(this, "ORDER_NAME").Text = CommonTypeConvert.ToString(rdr["NAME"]);
                                ctlEditLineItemsView.LoadLineItems(gORDER_ID, Guid.Empty, rdr, sLOAD_MODULE,
                                                                   sLOAD_MODULE_KEY);
                            }
                            else
                            {
                                ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, rdr, sLOAD_MODULE,
                                                                   sLOAD_MODULE_KEY);
                            }
                        }
                        else
                        {
                            ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, null, String.Empty, String.Empty);

                            //If item is not visible, then don't allow save
                            //Dynamic buttons need to be recreated in order for events to fire.
                            ctlDynamicButtons.AppendButtons(m_sMODULE + ".EditView", Guid.Empty, null);
                            ctlDynamicButtons.DisableAll();
                            ctlDynamicButtons.ErrorText = Translation.GetTranslation.Term("ACL.LBL_NO_ACCESS");
                        }
                    }
                }
                else
                {
                    AppendEditViewFields(m_sMODULE + ".EditView", tblMain, null);
                    AppendEditViewFields(m_sMODULE + ".EditAddress", tblAddress, null);
                    AppendEditViewFields(m_sMODULE + ".EditDescription", tblDescription, null);
                    //Dynamic buttons need to be recreated in order for events to fire.
                    ctlDynamicButtons.AppendButtons(m_sMODULE + ".EditView", Guid.Empty, null);

                    //Prepopulate the Account.
                    Guid gPARENT_ID = CommonTypeConvert.ToGuid(Request["PARENT_ID"]);
                    if (!CommonTypeConvert.IsEmptyGuid(gPARENT_ID))
                    {
                        string sMODULE = String.Empty;
                        string sPARENT_TYPE = String.Empty;
                        string sPARENT_NAME = String.Empty;
                        CommonProcedure.ParentGet(ref gPARENT_ID, ref sMODULE, ref sPARENT_TYPE, ref sPARENT_NAME);
                        if (!CommonTypeConvert.IsEmptyGuid(gPARENT_ID) && sMODULE == "Accounts")
                        {
                            UpdateAccount(gPARENT_ID, true, true);
                        }
                        if (!CommonTypeConvert.IsEmptyGuid(gPARENT_ID) && sMODULE == "Contacts")
                        {
                            UpdateContact(gPARENT_ID, true, true);
                        }
                        else if (!CommonTypeConvert.IsEmptyGuid(gPARENT_ID) && sMODULE == "Opportunities")
                        {
                            new DynamicControl(this, "OPPORTUNITY_ID").ID = gPARENT_ID;
                            new DynamicControl(this, "OPPORTUNITY_NAME").Text = sPARENT_NAME;
                        }
                    }
                    ctlEditLineItemsView.LoadLineItems(gID, gDuplicateID, new InlineQueryDBManager(), null, String.Empty,
                                                       String.Empty);
                }
            }
            else
            {
                // When validation fails, the header title does not retain its value.  Update manually.
                ctlModuleHeader.Title = CommonTypeConvert.ToString(ViewState["ctlModuleHeader.Title"]);
                SetPageTitle(Translation.GetTranslation.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);

                var ctlBILLING_ACCOUNT_ID = new DynamicControl(this, "BILLING_ACCOUNT_ID");
                var ctlSHIPPING_ACCOUNT_ID = new DynamicControl(this, "SHIPPING_ACCOUNT_ID");
                if (CommonTypeConvert.ToGuid(ViewState["BILLING_ACCOUNT_ID"]) != ctlBILLING_ACCOUNT_ID.ID)
                {
                    UpdateAccount(ctlBILLING_ACCOUNT_ID.ID, true, true);
                    ViewState["BILLING_ACCOUNT_ID"] = ctlBILLING_ACCOUNT_ID.ID;
                    ViewState["SHIPPING_ACCOUNT_ID"] = ctlBILLING_ACCOUNT_ID.ID;
                }
                if (CommonTypeConvert.ToGuid(ViewState["SHIPPING_ACCOUNT_ID"]) != ctlSHIPPING_ACCOUNT_ID.ID)
                {
                    UpdateAccount(ctlSHIPPING_ACCOUNT_ID.ID, false, true);
                    ViewState["SHIPPING_ACCOUNT_ID"] = ctlSHIPPING_ACCOUNT_ID.ID;
                }
            }
        }