Example #1
0
            /// <summary>
            /// Gets calculation modes for customer order.
            /// </summary>
            /// <param name="request">The service request.</param>
            /// <returns>The service response.</returns>
            public static GetCustomerOrderCalculationModesServiceResponse GetCalculationModes(GetCustomerOrderCalculationModesServiceRequest request)
            {
                CalculationModes disallowedModes;
                SalesTransaction salesTransaction = request.SalesTransaction;

                switch (salesTransaction.CustomerOrderMode)
                {
                case CustomerOrderMode.Return:
                    // return transaction is created from invoice
                    disallowedModes = CalculationModes.Charges | CalculationModes.Discounts | CalculationModes.Prices;
                    break;

                case CustomerOrderMode.Pickup:
                case CustomerOrderMode.Cancellation:
                case CustomerOrderMode.QuoteCreateOrEdit:
                case CustomerOrderMode.CustomerOrderCreateOrEdit:
                case CustomerOrderMode.OrderRecalled:
                    disallowedModes = CalculationModes.None;
                    break;

                default:
                    string message = string.Format(CultureInfo.InvariantCulture, "Customer order mode {0} is not supported.", salesTransaction.CustomerOrderMode);
                    throw new NotSupportedException(message);
                }

                // ~ will invert all bits - this will be the allowed modes
                CalculationModes allowedModes = ~disallowedModes;

                return(new GetCustomerOrderCalculationModesServiceResponse(allowedModes));
            }
Example #2
0
        public static float GetPercentage(string nameOne, string nameTwo, CalculationModes mode)
        {
            float score;

            nameOne += string.Concat(Enumerable.Repeat("a",
                                                       nameOne.Length < nameTwo.Length ? nameTwo.Length - nameOne.Length : 0));
            nameTwo += string.Concat(Enumerable.Repeat("a",
                                                       nameOne.Length > nameTwo.Length ? nameOne.Length - nameTwo.Length : 0));



            switch (mode)
            {
            case CalculationModes.Basic:
                float nameOneScore = GetScore(nameOne);
                float nameTwoScore = GetScore(nameTwo);

                score = (nameOneScore <= nameTwoScore ? nameOneScore / nameTwoScore : nameTwoScore / nameOneScore) * 100;
                break;

            case CalculationModes.Neighbour:
                float temp = NeiScore(nameOne, nameTwo);
                score = temp / (nameOne.Length * 2) * 100;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(mode), mode, null);
            }

            return(score);
        }
 public PointsChartHelper()
 {
     m_Logger = LogManager.GetLogger("PointsSelectionHelper");
     CalculationModes.Add(CalculationMode.Progression, "Progression");
     CalculationModes.Add(CalculationMode.OneByOne, "One by One");
     ActualMode = CalculationMode.Progression;
 }
Example #4
0
 public async Task <ActionResult> GetCompatibility(string nameOne, string nameTwo, CalculationModes mode)
 {
     try
     {
         return(Ok(LoveUtils.GetPercentage(nameOne.ToLower(), nameTwo.ToLower(), mode)));
     }
     catch (Exception)
     {
         return(StatusCode(StatusCodes.Status500InternalServerError, "Error getting a compatibility score"));
     }
 }
Example #5
0
 public EloChartHelper()
 {
     m_Logger = LogManager.GetLogger("EloChartHelper");
     CalculationModes.Add(CalculationMode.EloAll, "ELO - Entire Database");
     ActualMode = CalculationMode.EloAll;
 }