예제 #1
0
        public static float GetLocalConsumptionValue(float originalValue, ConsumptionUnit originalUnit)
        {
            // Unit convertion multipliers. For the opposite convertion multiply with (1/multiplier).
            const float LITRE_TO_GALLON_UK_MULTIPLIER     = 0.219969f;
            const float LITRE_TO_GALLON_US_MULTIPLIER     = 0.264171f;
            const float GALLON_UK_TO_GALLON_US_MULTIPLIER = 1.20095f;
            const float KILOMETRE_TO_MILE_MULTIPLIER      = 0.621371f;

            // The convertion comes in two steps. First, if we need to swap the form of the format
            // (ie FuelVolume/Distance <-> Distance/FuelVolume) do that. Then, we make any unit transformations
            // (ie between US, Imperial and Metric).
            float convertedValue = originalValue;

            if ((int)originalUnit % 3 - (int)ConsumptionUnit % 3 != 0)              // The one needs to be 0,1,2 and the other 3,4,5
            {
                convertedValue = 100 / convertedValue;
            }

            string[] unitCodes = new string[] { "METRIC", "US", "UK", "METRIC", "US", "UK" };
            string   unitStart = unitCodes[(int)originalUnit];
            string   unitFinal = unitCodes[(int)ConsumptionUnit];

            if (unitStart == "METRIC")
            {
                if (unitFinal == "US")
                {
                    convertedValue *= LITRE_TO_GALLON_US_MULTIPLIER / KILOMETRE_TO_MILE_MULTIPLIER;
                }
                else if (unitFinal == "UK")
                {
                    convertedValue *= LITRE_TO_GALLON_UK_MULTIPLIER / KILOMETRE_TO_MILE_MULTIPLIER;
                }
            }
            else if (unitStart == "US")
            {
                if (unitFinal == "METRIC")
                {
                    convertedValue *= KILOMETRE_TO_MILE_MULTIPLIER / LITRE_TO_GALLON_US_MULTIPLIER;
                }
                else if (unitFinal == "UK")
                {
                    convertedValue *= 1 / GALLON_UK_TO_GALLON_US_MULTIPLIER;
                }
            }
            else if (unitStart == "UK")
            {
                if (unitFinal == "METRIC")
                {
                    convertedValue *= KILOMETRE_TO_MILE_MULTIPLIER / LITRE_TO_GALLON_UK_MULTIPLIER;
                }
                else if (unitFinal == "US")
                {
                    convertedValue *= GALLON_UK_TO_GALLON_US_MULTIPLIER;
                }
            }

            return((float)Math.Round(convertedValue, 2));
        }
        public IActionResult AddConsumptionUnit(ConsumptionUnit ConsumptionUnit)
        {
            if (ModelState.IsValid)
            {
                var postResult = Helper.PostValueToSevice <ConsumptionUnit>("POST", ConsumptionUnit);

                return(Json(new { success = postResult.result, message = postResult.message }));
            }

            return(Json(new { success = false, message = "Model Is Not Vald!" }));
        }
        public IActionResult EditConsumptionUnit(long id, ConsumptionUnit ConsumptionUnit)
        {
            if (ModelState.IsValid)
            {
                ConsumptionUnit.State = BusinessEntity.Models.Base.Enums.ObjectState.Active;

                var postResult = Helper.PostValueToSevice <ConsumptionUnit>("PUT?id=" + ConsumptionUnit.Id.ToString(), ConsumptionUnit);

                return(Json(new { success = postResult.result, message = postResult.message }));
            }

            return(Json(new { success = false, message = "Model Is Not Valid!" }));
        }
        public IActionResult DeleteConsumptionUnit(ConsumptionUnit ConsumptionUnit)
        {
            var postResult = Helper.PostValueToSevice <ConsumptionUnit>("Delete?id=" + ConsumptionUnit.Id.ToString(), ConsumptionUnit);

            return(Json(new { success = postResult.result, message = postResult.message }));
        }