// Similar to private method
        public ComparisonResult CompareClauses(OrganizationLicenseClause providerClause, OrganizationLicenseClause consumerClause)
        {
            var result = new ComparisonResult();

            // Check whether clause selected by consumer
            if (providerClause.LicenseClauseID != consumerClause.LicenseClauseID)
            {
                // Setup result
                result.IsMatch = false;
                result.Message = "Not selected";

                // Return result
                return(result);
            }
            // Get clasue template
            var clauseTemplate = _clauseTemplateService.FirstOrDefault(i => i.LicenseClauseID == providerClause.LicenseClauseID);
            var clauseType     = (ClauseType)clauseTemplate.ClauseType;

            // Setup provider value
            var providerValue = new ClauseValue(providerClause.ClauseData, clauseType);

            // Setup consumer value
            var consumerValue = new ClauseValue(consumerClause.ClauseData, clauseType);

            // Compare values
            result = CompareClauseValues(providerValue, consumerValue);

            // Return result
            return(result);
        }
        private ComparisonResult CompareClauses(OrganizationLicenseClause providerClause, ClauseModel consumerClause)
        {
            var result = new ComparisonResult();

            // Check whether clause selected by consumer
            if (!consumerClause.IsSelectedByConsumer)
            {
                // Setup result
                result.IsMatch = false;
                result.Message = "Not selected";

                // Return result
                return(result);
            }

            // Setup provider value
            var providerTemplate = _clauseTemplateService.FirstOrDefault(i => i.LicenseClauseID == providerClause.LicenseClauseID);
            var providerValue    = new ClauseValue(providerClause.ClauseData, (ClauseType)providerTemplate.ClauseType);

            // Setup consumer value
            var consumerClauseData = _licenseClauses.GetClauseData(consumerClause);
            var consumerValue      = new ClauseValue(consumerClauseData, (ClauseType)consumerClause.Type);

            // Compare values
            result = CompareClauseValues(providerValue, consumerValue);

            // Return result
            return(result);
        }
Exemple #3
0
 public ClauseTableEntity(Clause clause)
 {
     ClauseValue    = clause.ClauseValue;
     ClauseType     = clause.ClauseType.ToString();
     ClauseDataType = clause.ClauseDataType.ToString();
     RowKey         = ColumnName = clause.ColumnName;
     PartitionKey   = $"{clause.ColumnName} {clause.ClauseType.ToString()} {ClauseValue.NormalizedTableKey()} {clause.ClauseDataType.ToString()}";
     HitCounter     = 1;
 }
        private ComparisonResult CompareClauseValues(ClauseValue providerSelection, ClauseValue consumerSelection)
        {
            // Define result
            var result = new ComparisonResult();

            // Setup default value for comparison result
            result.IsMatch = true;

            // Compare
            switch (providerSelection.Type)
            {
            case ClauseType.Text:
                result.IsMatch = providerSelection.Type == consumerSelection.Type;
                break;

            case ClauseType.Input:
                // Check whether input values are not numbers
                var isCustomProviderText = (providerSelection.Number == null && consumerSelection.Number == null);

                // Compare numbers
                if (!isCustomProviderText && providerSelection.Number > consumerSelection.Number)
                {
                    result.IsMatch = false;
                    result.Message = $"To match you should specify {providerSelection.Number} or more. You specified {consumerSelection.Number}";
                }
                break;

            case ClauseType.InputAndDropDown:
                // Compare numbers
                if (providerSelection.Number > consumerSelection.Number)
                {
                    result.IsMatch  = false;
                    result.Message += $"To match you should specify {providerSelection.Number} or more. You specified {consumerSelection.Number}. ";
                }

                // Compare dropdown selection
                if (!string.Equals(providerSelection.ListItem, consumerSelection.ListItem, StringComparison.InvariantCultureIgnoreCase))
                {
                    result.IsMatch  = false;
                    result.Message += $"To match you should select {providerSelection.ListItem}. You selected {consumerSelection.ListItem}. ";
                }
                break;

            default: throw new Exception("Unknown clause type.");
            }

            // Return result
            return(result);
        }