コード例 #1
0
        /// <summary>
        /// Uppdates current step and set next step to null for finalized campaign.
        /// </summary>
        /// <param name="campaignId">Unique identifier of campaign.</param>
        /// <param name="userConnection">User connection.</param>
        private void SetGoalForCampaignStep(Guid campaignId, UserConnection userConnection)
        {
            Guid goalCampaignStepId = GetFirstCampainStepByType(campaignId, CampaignConsts.GoalCampaignStepTypeId,
                                                                userConnection);
            Guid exitCampaignStepId = GetFirstCampainStepByType(campaignId, CampaignConsts.ExitCampaignStepTypeId,
                                                                userConnection);
            QueryColumnExpression nullParameter =
                Column.Parameter(DBNull.Value, new GuidDataValueType(UserConnection.DataValueTypeManager));
            QueryCase      queryCase      = new QueryCase();
            QueryCondition queryCondition = new QueryCondition(QueryConditionType.Equal)
            {
                LeftExpression = new QueryColumnExpression("CurrentStepId")
            };

            queryCondition.RightExpressions.Add(Column.Parameter(goalCampaignStepId));
            queryCase.AddWhenItem(queryCondition, Column.Parameter(goalCampaignStepId));
            queryCondition = new QueryCondition(QueryConditionType.Equal)
            {
                LeftExpression = new QueryColumnExpression("NextStepId")
            };
            queryCondition.RightExpressions.Add(Column.Parameter(goalCampaignStepId));
            queryCase.AddWhenItem(queryCondition, Column.Parameter(goalCampaignStepId));
            queryCase.ElseExpression = new QueryColumnExpression(Column.Parameter(exitCampaignStepId));
            var update = new Update(userConnection, "CampaignTarget")
                         .Set("CurrentStepId", new QueryColumnExpression(queryCase))
                         .Set("NextStepId", nullParameter)
                         .Where("CampaignId").IsEqual(Column.Parameter(campaignId)) as Update;

            update.Execute();
        }
コード例 #2
0
        /// <summary>
        /// Retrieve contacts email by contact Id <paramref name="contactId"/> and domain <paramref name="domain"/>.
        /// If domain not found in emails then return last created email.
        /// </summary>
        /// <param name="userConnection">Instance of the current user connection.</param>
        /// <param name="contactId">Contact unique identifier.</param>
        /// <param name="domain">Domain in email.</param>
        /// <returns>Contact email.</returns>
        public static string FindContactEmail(UserConnection userConnection, Guid contactId, string domain)
        {
            domain = "@" + domain;
            string email = string.Empty;
            var    communicationTypeContact = Guid.Parse(Terrasoft.Configuration.CommunicationTypeConsts.EmailId);
            var    queryCase      = new QueryCase();
            var    queryCondition = new QueryCondition(QueryConditionType.EndWith)
            {
                LeftExpression = new QueryColumnExpression("Number")
            };

            queryCondition.RightExpressions.Add(new QueryParameter(domain));
            queryCase.AddWhenItem(queryCondition, Column.Parameter("1"));
            queryCase.ElseExpression = Column.Parameter("0");
            var select = new Select(userConnection)
                         .Top(1)
                         .Column(queryCase).As("IsContainDomain")
                         .Column("CreatedOn")
                         .Column("Number")
                         .From("ContactCommunication")
                         .Where("ContactId").IsEqual(Column.Parameter(contactId))
                         .And("CommunicationTypeId").IsEqual(Column.Parameter(communicationTypeContact))
                         .OrderByDesc("IsContainDomain")
                         .OrderByDesc("CreatedOn") as Select;

            using (var dbExecutor = userConnection.EnsureDBConnection()) {
                using (IDataReader dataReader = select.ExecuteReader(dbExecutor)) {
                    if (dataReader.Read())
                    {
                        email = dataReader.GetColumnValue <string>("Number");
                    }
                }
            }
            return(email);
        }
コード例 #3
0
        /// <summary>
        /// ########## ######### CASE ## ######### ########### ##########.
        /// </summary>
        /// <param name="conditionForCaseExpression">########, #############
        /// # ##### ##### ####### WHEN.</param>
        /// <param name="expressionForThenInCase">#########, ####### #####
        /// ######### # ##### THEN.</param>
        /// <param name="expressionForElseInCase">#########, ####### #####
        /// ######### # ##### ELSE.</param>
        /// <returns>######### CASE.</returns>
        private QueryCase GenerateCaseForLicQuery(QueryColumnExpression conditionForCaseExpression,
                                                  QueryColumnExpression expressionForThenInCase, QueryColumnExpression expressionForElseInCase)
        {
            var            queryCase      = new QueryCase();
            QueryCondition queryCondition = CreateQueryCondition(conditionForCaseExpression);

            queryCase.AddWhenItem(queryCondition, expressionForThenInCase);
            queryCase.SetElseExpression(expressionForElseInCase);
            return(queryCase);
        }
コード例 #4
0
        /// <summary>
        /// Adds when condition to case statement of select.
        /// </summary>
        /// <param name="queryCase">Case statement of select.</param>
        /// <param name="sourceTableAlias">Alias of table in left expression.</param>
        /// <param name="sourceColumnAlias">Alias of column in left expression.</param>
        /// <param name="conditionType">Type of comparison condition.</param>
        /// <param name="rightExpressionValue">Value of right expression.</param>
        /// <param name="thenValue">Value that is returned in then statement.</param>
        public static void AddWhenCondition(QueryCase queryCase, string sourceTableAlias, string sourceColumnAlias,
                                            QueryConditionType conditionType, object rightExpressionValue, object thenValue)
        {
            var whenCondition = new QueryCondition(conditionType)
            {
                LeftExpression = new QueryColumnExpression(sourceTableAlias, sourceColumnAlias)
            };

            whenCondition.RightExpressions.Add(Column.Const(rightExpressionValue));
            queryCase.AddWhenItem(whenCondition, Column.Parameter(thenValue));
        }
コード例 #5
0
        private QueryCase GetQueryCase()
        {
            var queryCase      = new QueryCase();
            var conditionFirst = new QueryCondition(QueryConditionType.IsNull)
            {
                LeftExpression = new QueryColumnExpression("SysUserInRole", "SysUserId")
            };

            queryCase.AddWhenItem(conditionFirst, new QueryColumnExpression(OrderVisaSchemaName, "VisaOwnerId"));
            queryCase.ElseExpression = new QueryColumnExpression("SysUserInRole", "SysUserId");
            return(queryCase);
        }
コード例 #6
0
        /// <summary>
        /// Returns column expression with non-empty result.
        /// </summary>
        /// <param name="value">Value of column</param>
        /// <param name="columnName">Name of column.</param>
        /// <returns>Column expression with non-empty result.</returns>
        public static QueryColumnExpression GetIsNotEmptyCountColumnExpression(int value, string columnName)
        {
            QueryCase      queryCase      = new QueryCase();
            QueryCondition queryCondition = new QueryCondition(QueryConditionType.Equal)
            {
                LeftExpression = new QueryColumnExpression(columnName)
            };

            queryCondition.RightExpressions.Add(Column.Const(0));
            queryCase.AddWhenItem(queryCondition, Column.Parameter(value));
            queryCase.ElseExpression = new QueryColumnExpression(columnName);
            return(new QueryColumnExpression(queryCase));
        }