예제 #1
0
 public Boolean SaveContactForm(ContactForm ocForm)
 {
     try {
         return(ContactFormDao.Save(ocForm) >= 0);
     } catch (ApplicationException) {
         return(false);
     }
 }
예제 #2
0
        /// <summary>
        /// Obtaions a dictionary of all contact forms that fall under the included criteria, grouping them by their source form name.
        /// </summary>
        private IList <ContactForm> GetRequestedContactForms(string businessArea, List <string> formTypes, string startingDateValue, string endingDateValue,
                                                             string contactType)
        {
            DateTime?startingDate;
            DateTime?endingDate;

            var contactForms = new List <ContactForm>();

            try
            {
                for (int i = 0; i < formTypes.Count; i++) // Check FormTypes
                {
                    formTypes[i] = GetValidFormType(formTypes[i]);
                }

                // Check Starting Date
                startingDate = GetValidStartDate(startingDateValue);

                endingDate = GetValidEndDate(endingDateValue);
                if (!endingDate.HasValue || endingDate.Value == DateTime.MinValue)
                {
                    endingDate = DateTime.Now;
                }

                endingDate = endingDate.Value.Date.AddDays(1).AddMilliseconds(-1);                 // Get the highest possible time for the date.

                if (!startingDate.HasValue)
                {
                    startingDate = endingDate.Value.AddDays(-7);
                }

                var forms = ContactFormDao.GetContactsByCriteria(businessArea, formTypes, startingDate.Value, endingDate.Value);
                foreach (var form in forms)
                {
                    if (string.IsNullOrEmpty(form.FormData)) // Skip items that dont' have any form data. . .
                    {
                        continue;
                    }
                    if (!string.IsNullOrEmpty(contactType) && // Filter by 'contactType,' if necessary. . .
                        !form.ContactTypes.Trim().Equals(contactType.Trim(), StringComparison.CurrentCultureIgnoreCase))
                    {
                        continue;
                    }

                    contactForms.Add(form); // Add the form to the list. . .
                }
            }
            catch (Exception ex)
            {
                return(null);
            }

            return(contactForms);
        }
        private void BindData()
        {
            // lets prepopulate starting date to 7 days ago
            wf_StartingFrom.Text = DateTime.Now.AddDays(-7).ToShortDateString();



            wf_Contacts.DataSource = ContactFormDao.GetLast100Contacts(GetFormTypes());
            wf_Contacts.DataBind();

            wf_PreviewDesc.Text    = "Viewing Last 100 Contacts";
            wf_PreviewDesc.Visible = true;
        }
        private IList <ContactForm> GetRequestedContactForms()
        {
            List <string> formTypes = new List <string>();
            DateTime?     startingDate;
            DateTime?     endingDate;

            try
            {
                // Add FormTypes
                //formType = GetValidFormType(wf_FormTypes.SelectedValue);
                formTypes = GetFormTypes();

                // Check Starting Date
                startingDate = GetValidStartDate(wf_StartingFrom);
                if (!startingDate.HasValue)
                {
                    return(null);
                }

                endingDate = GetValidEndDate(wf_EndingOn);
                if (!endingDate.HasValue)
                {
                    return(null);
                }
                else
                {
                    if (endingDate < MaxDateTime.AddDays(-1))
                    {
                        endingDate = ((DateTime)endingDate).AddDays(1).AddMilliseconds(-1);
                    }
                }


                UpdatePreviewDescription(formTypes, startingDate, endingDate);

                return(ContactFormDao.GetContactsByCriteria(formTypes, startingDate.Value, endingDate.Value));
            }
            catch (ArgumentOutOfRangeException outOfRangeException)
            {
                wf_Status.Text    = outOfRangeException.Message;
                wf_Status.Visible = true;
                return(null);
            }
            catch (ArgumentException ex)
            {
                wf_Status.Text    = ex.Message;
                wf_Status.Visible = true;
                return(null);
            }
        }
예제 #5
0
    void wf_BusinessTypes_SelectedIndexChanged(object sender, EventArgs e)
    {
        var businessArea = GetValidBusinessArea(wf_BusinessTypes.SelectedValue);
        IList <ContactFormType> formTypes;

        if (string.IsNullOrEmpty(businessArea)) // If 'All Areas' or an invalid value is selected, fill with all items. . .
        {
            formTypes = ContactFormDao.GetContactFormTypes();
        }
        else // Fill with business Area items. . .
        {
            formTypes = ContactFormDao.GetContactFormTypes(businessArea);
        }

        ResetFormTypes(formTypes);
    }
예제 #6
0
        public Boolean SaveContactForm_Basic
        (
            string business_area,
            string source_form_name,
            string source_path,
            string external_key,
            string external_date,
            string contact_type,
            string contact_fullname,
            string contact_email,
            string contact_phone,
            string company_name,
            string language
        )
        {
            ContactForm ocForm = new ContactForm();
            DateTime    extDate; // temp to parse external_date

            ocForm.BusinessArea   = business_area;
            ocForm.SourceFormName = source_form_name;
            ocForm.SourcePath     = source_path;
            ocForm.ExternalKey    = external_key;

            if (DateTime.TryParse(external_date, out extDate))
            {
                ocForm.ExternalDate = extDate;
            }
            else
            {
                ocForm.ExternalDate = (DateTime)System.Data.SqlTypes.SqlDateTime.MinValue;
            }

            ocForm.ContactTypes = contact_type;
            ocForm.Name         = contact_fullname;
            ocForm.Email        = contact_email;
            ocForm.Phone        = contact_phone;
            ocForm.Company      = company_name;
            ocForm.Language     = language;

            ocForm.FormData = XMLSerializeBasicContactForm(ocForm);

            try {
                return(ContactFormDao.Save(ocForm) >= 0);
            } catch (ApplicationException) {
                return(false);
            }
        }
예제 #7
0
    private void BindData()
    {
        // Populate Business Area drop down. . .
        wf_BusinessTypes.DataSource = ContactFormDao.GetContactFormBusinessAreas();
        wf_BusinessTypes.DataBind();
        wf_BusinessTypes.AutoPostBack = true;
        wf_BusinessTypes.Items.Insert(0, ALLAREAS_DESC);

        // Populate Form Types so that admin can filter down what site/form
        ResetFormTypes(ContactFormDao.GetContactFormTypes());

        // lets prepopulate starting date to 7 days ago
        wf_StartingFrom.Text = DateTime.Now.AddDays(-7).ToShortDateString();

        wf_Contacts.DataSource = ContactFormDao.GetLast100Contacts();
        wf_Contacts.DataBind();

        wf_PreviewDesc.Text    = "Viewing Last 100 Contacts";
        wf_PreviewDesc.Visible = true;
    }
예제 #8
0
    private IList <ContactForm> GetRequestedContactForms()
    {
        string   formType;
        DateTime?startingDate;
        DateTime?endingDate;

        try
        {
            var formTypes = new List <string>();

            // Grab the business area
            var businessArea = GetValidBusinessArea(wf_BusinessTypes.SelectedValue);

            // Check FormType
            formType = GetValidFormType(wf_FormTypes.SelectedValue);

            if (!string.IsNullOrEmpty(formType))
            {
                formTypes.Add(formType);
            }
            else
            {
                formTypes.AddRange(ContactFormDao.GetContactFormTypes(businessArea).Select(x => x.SourceFormName));
            }

            // Check Starting Date
            startingDate = GetValidStartDate(wf_StartingFrom);
            if (!startingDate.HasValue)
            {
                return(null);
            }

            endingDate = GetValidEndDate(wf_EndingOn);
            if (!endingDate.HasValue)
            {
                return(null);
            }
            else
            {
                if (endingDate < MaxDateTime.AddDays(-1))
                {
                    endingDate = ((DateTime)endingDate).AddDays(1).AddMilliseconds(-1);
                }
            }


            UpdatePreviewDescription(businessArea, formType, startingDate, endingDate);

            return(ContactFormDao.GetContactsByCriteria(businessArea, formTypes, startingDate.Value, endingDate.Value));
        }
        catch (ArgumentOutOfRangeException outOfRangeException)
        {
            wf_Status.Text    = outOfRangeException.Message;
            wf_Status.Visible = true;
            return(null);
        }
        catch (ArgumentException ex)
        {
            wf_Status.Text    = ex.Message;
            wf_Status.Visible = true;
            return(null);
        }
    }
예제 #9
0
        public bool WriteContactListFileToResponse(string formType, string businessArea, string endingDateValue, string startingDateValue, string contactType, string format,
                                                   string columnList, string columnOrderList, string columnMap, HttpResponse Response)
        {
            if (string.IsNullOrEmpty(formType)) // Make sure that we have something in formtype. . .
            {
                formType = string.Empty;
            }

            List <string> formTypes = formType.Split(',').ToList();

            if (!string.IsNullOrEmpty(formType) && formTypes.Count == 1)
            {
                var formTypeMapping = ContactFormDao.GetContactFormType(formType);
                if (formTypeMapping != null && string.IsNullOrEmpty(columnMap))
                {
                    columnMap = formTypeMapping.ColumnMap ?? string.Empty;
                }
            }

            var forms = GetRequestedContactForms(businessArea, formTypes, startingDateValue, endingDateValue, contactType);

            if (forms == null) // Don't bother processing any further if we don't have anything. . .
            {
                return(false);
            }

            IList <DataTable> tables = null;

            try
            {
                if (string.IsNullOrEmpty(columnMap))
                {
                    tables = XmlToDataTables(forms.Select(x => x.FormData), columnList, columnOrderList);
                }
                else
                {
                    Regex mapregExp = new Regex(@"(?:([a-zA-Z_0-9]+)\[((?<![\\])['""])((?:.(?!(?<![\\])\2))*.?\2)\:(\d+)\])*");

                    //re-format columnMap into list and order list
                    // format is:
                    //	columnMap=fieldName["DisplayName with quotes as """:order]
                    // e.g.
                    //	columnMap=Zip["Zip/PostalCode":1]Email["Email Address":2]
                    MatchCollection ms = mapregExp.Matches(columnMap);

                    List <string> columnsToSelect = new List <string>();
                    List <int>    columnOrders    = new List <int>();
                    List <string> columnNames     = new List <string>();

                    foreach (Match m in ms)
                    {
                        if (m.Length > 0)
                        {
                            foreach (Capture c in m.Groups[1].Captures)
                            {
                                columnsToSelect.Add(c.Value);
                            }
                            foreach (Capture c in m.Groups[3].Captures)
                            {
                                columnNames.Add(c.Value.Substring(0, c.Value.Length - 1).Replace("\\\"", "\""));
                            }
                            foreach (Capture c in m.Groups[4].Captures)
                            {
                                columnOrders.Add(int.Parse(c.Value));
                            }
                        }
                    }

                    List <ColumnMapEntry> columnEntrys = new List <ColumnMapEntry>();
                    for (int i = 0; i < columnsToSelect.Count; i++)
                    {
                        columnEntrys.Add(new ColumnMapEntry(columnsToSelect[i], columnNames[i], columnOrders[i]));
                    }
                    Dictionary <string, string> columnDisplayMap = columnEntrys.ToDictionary(c => c.FieldName, c => c.DisplayName);

                    columnList      = string.Join(",", columnsToSelect.ToArray());
                    columnOrderList = string.Join(",", columnEntrys.OrderBy(c => c.ColumnOrder).Select(c => c.FieldName).ToArray());

                    //then call existing method
                    tables = XmlToDataTables(forms.Select(x => x.FormData), columnList, columnOrderList);

                    //then rewrite all column names in output table list
                    foreach (DataTable table in tables)
                    {
                        foreach (DataColumn column in table.Columns)
                        {
                            column.Caption = columnDisplayMap[column.ColumnName];
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error("Failure generating report", ex); // Log the error. . .
            }

            Response.Clear();
            Response.Buffer          = true;
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            if (string.IsNullOrEmpty(format))
            {
                format = "xls";
            }

            switch (format)
            {
            case "xls":
                Response.AppendHeader("Content-Disposition", "attachment;filename=contacts.xls");
                Response.ContentType = "application/ms-excel";
                break;

            case "csv":
                Response.AppendHeader("Content-Disposition", "attachment;filename=contacts.csv");
                Response.ContentType = "text/csv";
                break;
            }

            if (format == "csv")
            {
                foreach (var schemaResult in tables)              // Output each of the schema's data, separated by a few empty lines. . .
                {
                    schemaResult.Rows.Add(schemaResult.NewRow()); // Tack a couple empty rows to the bottom. . .
                    schemaResult.Rows.Add(schemaResult.NewRow());

                    schemaResult.WriteToCSV(Response.OutputStream); // Output the result. . .
                }
            }
            else // XLS. . .
            {
                ExcelWriter writer = new ExcelWriter(); // Write the tables to excel. . .
                writer.WriteToStream(tables, Response.OutputStream);
            }

            return(true);
        }