示例#1
0
        protected virtual string GetQuerySolicitResultsString(BeachDataSubmissionDataType data)
        {
            StringBuilder sb = new StringBuilder();

            if (data == null)
            {
                sb.AppendFormat("Did not find any BEACHES data that matched the query parameters.");
            }
            else
            {
                sb.AppendFormat("Found the following BEACHES data that matched the query parameters: ");
                int i = 0;
                AppendCountString("Organization Details", data.OrganizationDetail, ++i == 1, sb);
                AppendCountString("Beach Details", data.BeachDetail, ++i == 1, sb);
                int beachActivityCount = 0;
                CollectionUtils.ForEach(data.BeachDetail, delegate(BeachDetailDataType beachDetailDataType)
                {
                    if (beachDetailDataType.BeachActivityDetail != null)
                    {
                        beachActivityCount += beachDetailDataType.BeachActivityDetail.Length;
                    }
                });
                sb.AppendFormat(", {0} {1}", beachActivityCount.ToString(), "Beach Activities");
            }
            return(sb.ToString());
        }
示例#2
0
        protected virtual string GenerateSubmissionFile(BeachDataSubmissionDataType data)
        {
            ISettingsProvider settingsProvider;

            GetServiceImplementation(out settingsProvider);

            string tempXmlFilePath = settingsProvider.NewTempFilePath(".xml");

            try
            {
                AppendAuditLogEvent("Generating submission file from results");
                _serializationHelper.Serialize(data, tempXmlFilePath);
            }
            catch (Exception)
            {
                FileUtils.SafeDeleteFile(tempXmlFilePath);
                throw;
            }
            return(tempXmlFilePath);
        }
示例#3
0
        protected virtual string GenerateQuerySolicitFileAndAddToTransaction(BeachDataSubmissionDataType data)
        {
            string querySolicitFile = GenerateQuerySolicitFile(data);

            try
            {
                AppendAuditLogEvent("Attaching submission document to transaction \"{0}\"",
                                    _dataRequest.TransactionId);
                _documentManager.AddDocument(_dataRequest.TransactionId,
                                             CommonTransactionStatusCode.Completed,
                                             null, querySolicitFile);
            }
            catch (Exception e)
            {
                AppendAuditLogEvent("Failed to attach submission document \"{0}\" to transaction \"{1}\" with exception: {2}",
                                    querySolicitFile, _dataRequest.TransactionId, ExceptionUtils.ToShortString(e));
                FileUtils.SafeDeleteFile(querySolicitFile);
                throw;
            }
            return(querySolicitFile);
        }
示例#4
0
        protected virtual string GenerateQuerySolicitFile(BeachDataSubmissionDataType data)
        {
            string tempXmlFilePath = _settingsProvider.NewTempFilePath(".xml");
            string tempZipFilePath = _settingsProvider.NewTempFilePath(".zip");

            try
            {
                AppendAuditLogEvent("Generating submission file from results");
                _serializationHelper.Serialize(data, tempXmlFilePath);
                _compressionHelper.CompressFile(tempXmlFilePath, tempZipFilePath);
            }
            catch (Exception)
            {
                FileUtils.SafeDeleteFile(tempZipFilePath);
                throw;
            }
            finally
            {
                FileUtils.SafeDeleteFile(tempXmlFilePath);
            }
            return(tempZipFilePath);
        }
        protected override string DoProcessQuerySolicit(out CommonContentType contentType)
        {
            contentType = CommonContentType.ZIP;

            Dictionary <string, DbAppendSelectWhereClause> selectClauses = new Dictionary <string, DbAppendSelectWhereClause>();

            string        beachActivityClause           = null;
            List <object> beachActivityParams           = null;
            string        beachClause                   = null;
            List <object> beachParams                   = null;
            string        beachActivityMonStationClause = null;
            List <object> beachActivityMonStationParams = null;
            string        activityIndicatorClause       = null;
            List <object> activityIndicatorParams       = null;
            const string  organizationAlias             = "O";
            const string  beachAlias                   = "B";
            const string  beachActivityAlias           = "BA";
            const string  beachActivityMonStationAlias = "BAMS";
            const string  activityIndicatorAlias       = "AI";

            if (_actualStartDate.HasValue)
            {
                beachActivityClause = AppendToDbClause(beachActivityClause, beachActivityAlias + "." + "ACTUALSTARTDATE >= ?");
                beachActivityParams = CollectionUtils.Add(_actualStartDate.Value, beachActivityParams);
            }
            if (_actualStopDate.HasValue)
            {
                beachActivityClause = AppendToDbClause(beachActivityClause, beachActivityAlias + "." + "ACTUALSTOPDATE <= ?");
                beachActivityParams = CollectionUtils.Add(_actualStopDate.Value, beachActivityParams);
            }
            if (!string.IsNullOrEmpty(_beachName))
            {
                beachClause = AppendToDbClause(beachClause, "UPPER(" + beachAlias + "." + "BEACHNAME) LIKE " + _baseDao.SqlConcat("'%'", "UPPER(?)", "'%'"));
                beachParams = CollectionUtils.Add(_beachName, beachParams);
            }
            if (!string.IsNullOrEmpty(_beachIdentifier))
            {
                beachClause = AppendToDbClause(beachClause, "UPPER(" + beachAlias + "." + "BEACHIDENTIFIER) = UPPER(?)");
                beachParams = CollectionUtils.Add(_beachIdentifier, beachParams);
            }
            if (!string.IsNullOrEmpty(_monitoringStationIdentifier))
            {
                beachActivityMonStationClause = AppendToDbClause(beachActivityMonStationClause, "UPPER(" + beachActivityMonStationAlias + "." + "MONITORINGSTATIONIDENTIFIER) = UPPER(?)");
                beachActivityMonStationParams = CollectionUtils.Add(_monitoringStationIdentifier, beachActivityMonStationParams);
            }
            if (!string.IsNullOrEmpty(_beachAccessType))
            {
                beachClause = AppendToDbClause(beachClause, "UPPER(" + beachAlias + "." + "BEACHACCESSTYPE) = UPPER(?)");
                beachParams = CollectionUtils.Add(_beachAccessType, beachParams);
            }
            if (!string.IsNullOrEmpty(_activityIndicatorType))
            {
                activityIndicatorClause = AppendToDbClause(activityIndicatorClause, "UPPER(" + activityIndicatorAlias + "." + "INDICATORTYPE) = UPPER(?)");
                activityIndicatorParams = CollectionUtils.Add(_activityIndicatorType, activityIndicatorParams);
            }
            if (_activeAdvisoryIndicator.HasValue)
            {
                if (_activeAdvisoryIndicator.Value)
                {
                    beachActivityClause = AppendToDbClause(beachActivityClause, beachActivityAlias + "." + "ACTUALSTOPDATE IS NULL");
                }
            }
            if (beachActivityMonStationClause != null)
            {
                selectClauses.Add("NOTIF_BEACHACTIVITYMONSTATION", new DbAppendSelectWhereClause(beachActivityMonStationAlias, _baseDao, beachActivityMonStationClause, beachActivityMonStationParams));
                beachActivityClause = AppendToDbClause(beachActivityClause,
                                                       string.Format("{2}.ID IN (SELECT {1}.ACTIVITY_ID FROM NOTIF_BEACHACTIVITYMONSTATION {1} WHERE {0})",
                                                                     beachActivityMonStationClause, beachActivityMonStationAlias, beachActivityAlias));
                CollectionUtils.AddRange(beachActivityMonStationParams, ref beachActivityParams);
            }
            if (activityIndicatorClause != null)
            {
                selectClauses.Add("NOTIF_ACTIVITYINDICATOR", new DbAppendSelectWhereClause(activityIndicatorAlias, _baseDao, activityIndicatorClause, activityIndicatorParams));
                beachActivityClause = AppendToDbClause(beachActivityClause,
                                                       string.Format("{2}.ID IN (SELECT {1}.ACTIVITY_ID FROM NOTIF_ACTIVITYINDICATOR {1} WHERE {0})",
                                                                     activityIndicatorClause, activityIndicatorAlias, beachActivityAlias));
                CollectionUtils.AddRange(activityIndicatorParams, ref beachActivityParams);
            }
            if (beachActivityClause != null)
            {
                selectClauses.Add("NOTIF_BEACHACTIVITY", new DbAppendSelectWhereClause(beachActivityAlias, _baseDao, beachActivityClause, beachActivityParams));
                beachClause = AppendToDbClause(beachClause, string.Format("{2}.ID IN (SELECT {1}.BEACH_ID FROM NOTIF_BEACHACTIVITY {1} WHERE {0})",
                                                                          beachActivityClause, beachActivityAlias, beachAlias));
                CollectionUtils.AddRange(beachActivityParams, ref beachParams);
            }
            if (beachClause != null)
            {
                selectClauses.Add("NOTIF_BEACH", new DbAppendSelectWhereClause(beachAlias, _baseDao, beachClause, beachParams));
            }

            AppendAuditLogEvent("Querying database for BEACHES data ...");
            List <BeachDetailDataType>        beachDetails        = _objectsFromDatabase.LoadFromDatabase <BeachDetailDataType>(_baseDao, selectClauses);
            List <OrganizationDetailDataType> organizationDetails = null;

            if (!CollectionUtils.IsNullOrEmpty(beachDetails))
            {
                string organizationClause;
                if (beachClause != null)
                {
                    organizationClause =
                        string.Format("({2}.ID IN (SELECT DISTINCT OBR.ORGANIZATION_ID FROM NOTIF_ORGANIZATIONBEACHROLE OBR WHERE OBR.BEACH_ID IN (SELECT {1}.ID FROM NOTIF_BEACH {1} WHERE {0})))",
                                      beachClause, beachAlias, organizationAlias);
                    selectClauses.Add("NOTIF_ORGANIZATION", new DbAppendSelectWhereClause(organizationAlias, _baseDao, organizationClause, beachParams));
                }
                else
                {
                    organizationClause =
                        string.Format("({0}.ID IN (SELECT DISTINCT OBR.ORGANIZATION_ID FROM NOTIF_ORGANIZATIONBEACHROLE OBR))",
                                      organizationAlias);
                }
                organizationDetails = _objectsFromDatabase.LoadFromDatabase <OrganizationDetailDataType>(_baseDao, selectClauses);
            }

            BeachDataSubmissionDataType data = new BeachDataSubmissionDataType();

            data.BeachDetail        = CollectionUtils.IsNullOrEmpty(beachDetails) ? null : beachDetails.ToArray();
            data.OrganizationDetail = CollectionUtils.IsNullOrEmpty(organizationDetails) ? null : organizationDetails.ToArray();

            AppendAuditLogEvent(GetQuerySolicitResultsString(data));
            data.AfterLoadFromDatabase();

            string submissionFile = GenerateQuerySolicitFileAndAddToTransaction(data);

            return(submissionFile);
        }
示例#6
0
        protected virtual void PerformSubmission()
        {
            var           beachActivitySelect       = "(SENTTOEPA IS NULL OR SENTTOEPA <> 'Y') AND (ACTUALSTOPDATE IS NOT NULL)";
            List <object> beachActivitySelectParams = null;

            Dictionary <string, DbAppendSelectWhereClause> selectClauses = new Dictionary <string, DbAppendSelectWhereClause>();

            if (_lastUpdateDate.HasValue)
            {
                AppendAuditLogEvent("Using last update date of \"{0}\" to build query...",
                                    _lastUpdateDate.Value.ToString());
                beachActivitySelect      += " AND (NOTIFUPDATEDATE >= ?)";
                beachActivitySelectParams = new List <object>(new object[] { _lastUpdateDate.Value });
            }

            selectClauses.Add("NOTIF_BEACHACTIVITY", (beachActivitySelectParams == null) ? new DbAppendSelectWhereClause(_baseDao, beachActivitySelect)  :
                              new DbAppendSelectWhereClause(_baseDao, beachActivitySelect, beachActivitySelectParams));

            //if (_onlySendBeachesWithActivities)
            //{
            //    var beachSelect = "ID IN (SELECT DISTINCT BEACH_ID FROM NOTIF_BEACHACTIVITY WHERE " + beachActivitySelect + ")";
            //    selectClauses.Add("NOTIF_BEACH", (beachActivitySelectParams == null) ? new DbAppendSelectWhereClause(_baseDao, beachSelect) :
            //                      new DbAppendSelectWhereClause(_baseDao, beachSelect, beachActivitySelectParams));

            //    var beachProcedureSelect = "BEACH_ID IN (SELECT DISTINCT BEACH_ID FROM NOTIF_BEACHACTIVITY WHERE " + beachActivitySelect + ")";
            //    selectClauses.Add("NOTIF_BEACHPROCEDURE", (beachActivitySelectParams == null) ? new DbAppendSelectWhereClause(_baseDao, beachProcedureSelect) :
            //                      new DbAppendSelectWhereClause(_baseDao, beachProcedureSelect, beachActivitySelectParams));

            //    var procedureSelect = "ID IN (SELECT DISTINCT PROCEDURE_ID FROM NOTIF_BEACHPROCEDURE WHERE " + beachProcedureSelect + ")";
            //    selectClauses.Add("NOTIF_PROCEDURE", (beachActivitySelectParams == null) ? new DbAppendSelectWhereClause(_baseDao, procedureSelect) :
            //                      new DbAppendSelectWhereClause(_baseDao, procedureSelect, beachActivitySelectParams));
            //}

            AppendAuditLogEvent("Querying database for BEACHES data ...");
            List <OrganizationDetailDataType>      organizationDetails      = _objectsFromDatabase.LoadFromDatabase <OrganizationDetailDataType>(_baseDao, null);
            List <BeachDetailDataType>             beachDetails             = _objectsFromDatabase.LoadFromDatabase <BeachDetailDataType>(_baseDao, selectClauses);
            List <BeachProcedureDetailDataType>    beachProcedureDetails    = _objectsFromDatabase.LoadFromDatabase <BeachProcedureDetailDataType>(_baseDao, selectClauses);
            List <YearCompletionIndicatorDataType> yearCompletionIndicators = _objectsFromDatabase.LoadFromDatabase <YearCompletionIndicatorDataType>(_baseDao, null);

            if (!CollectionUtils.IsNullOrEmpty(yearCompletionIndicators) && (yearCompletionIndicators.Count > 1))
            {
                throw new ArgumentException(string.Format("More than one \"Year Completion Indicator\" was found to submit"));
            }

            BeachDataSubmissionDataType data = new BeachDataSubmissionDataType();

            data.YearCompletionIndicators = CollectionUtils.IsNullOrEmpty(yearCompletionIndicators) ? null : yearCompletionIndicators[0];
            data.BeachDetail          = CollectionUtils.IsNullOrEmpty(beachDetails) ? null : beachDetails.ToArray();
            data.BeachProcedureDetail = CollectionUtils.IsNullOrEmpty(beachProcedureDetails) ? null : beachProcedureDetails.ToArray();
            data.OrganizationDetail   = CollectionUtils.IsNullOrEmpty(organizationDetails) ? null : organizationDetails.ToArray();

            AppendAuditLogEvent(GetSubmissionResultsString(data));
            data.AfterLoadFromDatabase();

            string submissionFile = GenerateSubmissionFileAndAddToTransaction(data);

            ProcessSubmissionFile(submissionFile);

            if (_updateSentToEpaFlag)
            {
                int rowsSet;
                if (beachActivitySelectParams == null)
                {
                    rowsSet = _baseDao.AdoTemplate.ExecuteNonQuery(CommandType.Text, "UPDATE NOTIF_BEACHACTIVITY SET SENTTOEPA = 'Y' WHERE " + beachActivitySelect);
                }
                else
                {
                    IDbParameters parameters;
                    var           selectWhereQuery = _baseDao.LoadGenericParametersFromValueList(beachActivitySelect, out parameters, beachActivitySelectParams);
                    rowsSet = _baseDao.AdoTemplate.ExecuteNonQuery(CommandType.Text, "UPDATE NOTIF_BEACHACTIVITY SET SENTTOEPA = 'Y' WHERE " + selectWhereQuery,
                                                                   parameters);
                }

                AppendAuditLogEvent("Set {0} NOTIF_BEACHACTIVITY.SENTTOEPA columns to 'Y'", rowsSet.ToString());
            }
            else
            {
                AppendAuditLogEvent("{0} param is false, did not update any NOTIF_BEACHACTIVITY.SENTTOEPA columns", PARAM_UPDATE_SENT_TO_EPA_FLAG);
            }
        }