public Continuation Calculate(SuperInputCalcViewModel input)
        {
            var     continuation     = new Continuation();
            var     model            = new FertilzierNeededCalcViewModel();
            var     field            = _repository.Find <Field>(Int64.Parse(input.Field));
            var     inventoryProduct = _repository.Find <InventoryProduct>(Int64.Parse(input.Product));
            decimal bagSizeInPounds  = _unitSizeTimesQuantyCalculator.CalculateLbsPerUnit(inventoryProduct);
            double  fertN            = ((Fertilizer)inventoryProduct.Product).N;
            double  fertP            = ((Fertilizer)inventoryProduct.Product).P;
            double  fertK            = ((Fertilizer)inventoryProduct.Product).K;
            double? N          = input.FertilizerRate / (fertN * .01) * field.Size * .001 / Convert.ToDouble(bagSizeInPounds) * Convert.ToDouble(bagSizeInPounds) * fertN / (field.Size * .001) * .01;
            double? P          = input.FertilizerRate / (fertN * .01) * field.Size / 1000 * fertP * .44 * .01 / (field.Size / 1000);
            double? K          = input.FertilizerRate / (fertN * .01) * field.Size / 1000 * fertK * .83 * .01 / (field.Size / 1000);
            double? bagsNeeded = input.FertilizerRate / (fertN * .01) * field.Size / 1000 / Convert.ToDouble(bagSizeInPounds);

            model.N             = Convert.ToDouble(Math.Round(Convert.ToDecimal(N), 2));
            model.P             = Convert.ToDouble(Math.Round(Convert.ToDecimal(P), 2));
            model.K             = Convert.ToDouble(Math.Round(Convert.ToDecimal(K), 2));
            model.BagsNeeded    = Convert.ToDouble(Math.Round(Convert.ToDecimal(bagsNeeded), 2));
            model.BagSize       = inventoryProduct.SizeOfUnit + " " + inventoryProduct.UnitType;
            model.FieldArea     = field.Size.ToString();
            continuation.Target = model;

            return(continuation);
        }
        public Continuation Calculate(SuperInputCalcViewModel input)
        {
            var continuation = new Continuation();
            var model        = new SandCalcViewModel();

            double sand = (1.0 / 3.0) * 3.14 * (Math.Pow(input.Diameter / 2, 2)) * input.Height / 27.0;

            model.TotalSand     = Convert.ToDouble(Math.Round(Convert.ToDecimal(sand), 2));
            continuation.Target = model;
            return(continuation);
        }
Beispiel #3
0
        public void Setup()
        {
            var given = new SuperInputCalcViewModel
            {
                Area     = 261.67,
                Height   = 10,
                Diameter = 10
            };

            _SUT    = new SandCalculator();
            _result = _SUT.Calculate(given);
        }
Beispiel #4
0
        public ActionResult Calculate(SuperInputCalcViewModel input)
        {
            var calculator        = input.EntityId > 0 ? _repository.Find <Calculator>(input.EntityId) : new Calculator();
            var calculatorHandler = ObjectFactory.Container.GetInstance <ICalculatorHandler>(calculator.Name + "Calculator");
            var continuation      = calculatorHandler.Calculate(input);

            if (!continuation.Success)
            {
                Notification notification = new Notification(continuation);
                return(Json(notification, JsonRequestBehavior.AllowGet));
            }

            return(Json(continuation.Target, JsonRequestBehavior.AllowGet));
        }
Beispiel #5
0
        public Continuation Calculate(SuperInputCalcViewModel input)
        {
            var     continuation     = new Continuation();
            var     model            = new OverseedBagsNeededCalcViewModel();
            var     field            = _repository.Find <Field>(Int64.Parse(input.Field));
            var     inventoryProduct = _repository.Find <InventoryProduct>(Int64.Parse(input.Product));
            decimal bagSizeInPounds  = _unitSizeTimesQuantyCalculator.CalculateLbsPerUnit(inventoryProduct);
            double? bagsNeeded       = ((input.SeedRate / (input.OverSeedPercent * .01)) * (Convert.ToDouble(field.Size / 1000))) / Convert.ToDouble(bagSizeInPounds);

            model.BagsNeeded    = Convert.ToDouble(Math.Round(Convert.ToDecimal(bagsNeeded), 2));
            model.BagSize       = inventoryProduct.SizeOfUnit + " " + inventoryProduct.UnitType;
            model.FieldArea     = field.Size.ToString();
            continuation.Target = model;
            return(continuation);
        }
Beispiel #6
0
        public void Setup()
        {
            _field      = ObjectMother.ValidField("raif").WithEntityId(1);
            _field.Size = 1000;
            var given = new SuperInputCalcViewModel
            {
                Field          = _field.EntityId.ToString(),
                Depth          = 10,
                DitchDepth     = 10,
                DitchlineWidth = 10,
                Drainageline   = 10,
                PipeRadius     = 10
            };

            _repo = MockRepository.GenerateMock <IRepository>();
            _repo.Expect(x => x.Find <Field>(Int64.Parse(given.Field))).Return(_field);
            _SUT    = new MaterialsCalculator(_repo, null);
            _result = _SUT.Calculate(given);
        }
        public void Setup()
        {
            _field              = ObjectMother.ValidField("raif").WithEntityId(1);
            _field.Size         = 1000;
            _product            = ObjectMother.ValidInventoryProductFertilizer("poop").WithEntityId(2);
            _product.SizeOfUnit = 100;
            _product.UnitType   = UnitType.Lbs.ToString();
            var given = new SuperInputCalcViewModel
            {
                Field          = _field.EntityId.ToString(),
                Product        = _product.EntityId.ToString(),
                FertilizerRate = 100
            };

            _repo = MockRepository.GenerateMock <IRepository>();
            _repo.Expect(x => x.Find <Field>(Int64.Parse(given.Field))).Return(_field);
            _repo.Expect(x => x.Find <InventoryProduct>(Int64.Parse(given.Product))).Return(_product);
            _SUT    = new FertilizerNeededCalculator(_repo, new UnitSizeTimesQuantyCalculator(), null);
            _result = _SUT.Calculate(given);
        }
Beispiel #8
0
        public Continuation Calculate(SuperInputCalcViewModel input)
        {
            var    continuation = new Continuation();
            var    model        = new MaterialsCalcViewModel();
            var    field        = _repository.Find <Field>(Int64.Parse(input.Field));
            double material     = ((field.Size * (input.Depth / 12)) / 27) + (input.Drainageline * (input.DitchlineWidth / input.DitchDepth) / 27) - (3.14 * (input.PipeRadius / 12) * 2 * input.Drainageline / 27);

            model.TotalMaterials = Convert.ToDouble(Math.Round(Convert.ToDecimal(material), 2));
            model.FieldArea      = field.Size;
            continuation.Target  = model;
            //(
            //    (
            //        3.14
            //        *(
            //            (tine diameter/2)/12
            //        )^2
            //        *(tine depth/12)
            //    )
            //    *holes per sq. ft
            //)
            //*area
            return(continuation);
        }