public Calculation AddCalculation(string calculation)
        {
            var expression = new Expression(calculation);
            var calc       = new Calculation()
            {
                CalcString = calculation, Result = Convert.ToDouble(expression.Evaluate())
            };

            if (Double.IsNaN(calc.Result))
            {
                throw new Exception("Invalid Result, Cannot Be NaN");
            }
            repo.Add(calc);

            return(calc);
        }
Ejemplo n.º 2
0
        public CalculationData Calculate(long applicationId)
        {
            var application = _applications.Get(applicationId);

            if (application.AirWaybillId == null)
            {
                throw new InvalidOperationException(
                          "For calculation an air waybill should be presented. Applicaiton id: "
                          + application.Id);
            }

            var awb = _awbs.Get(application.AirWaybillId.Value).First();

            var weight      = application.Weight ?? 0;
            var tariffPerKg = application.TariffPerKg ?? 0;
            var scotch      = GetTapeCost(application);
            var transitCost = application.TransitCostEdited ?? application.TransitCost ?? 0;
            var pickupCost  = application.PickupCostEdited ?? application.PickupCost ?? 0;

            var calculation = new CalculationData
            {
                AirWaybillDisplay  = AwbHelper.GetAirWaybillDisplay(awb),
                ApplicationDisplay = application.GetApplicationDisplay(),
                ClientId           = application.ClientId,
                FactureCost        = application.FactureCostEdited ?? application.FactureCost ?? 0,
                FactureCostEx      = application.FactureCostExEdited ?? application.FactureCostEx ?? 0,
                MarkName           = application.MarkName,
                FactoryName        = application.FactoryName,
                ScotchCost         = scotch,
                TariffPerKg        = tariffPerKg,
                Weight             = weight,
                TransitCost        = transitCost,
                PickupCost         = pickupCost,
                CreationTimestamp  = DateTimeProvider.Now,
                Count           = application.Count ?? 0,
                Invoice         = application.Invoice,
                Value           = application.Value,
                Class           = application.Class,
                InsuranceRate   = application.InsuranceRate,
                Profit          = application.CalculationProfit,
                TotalTariffCost = application.CalculationTotalTariffCost
            };

            _calculations.Add(calculation, applicationId);

            return(calculation);
        }
Ejemplo n.º 3
0
 public Calculation AddCalculation(PolicyId policyId, PeriodId periodId, string name, string employeeIdDelimitedList)
 {
     try
     {
         using (var tr = new TransactionScope())
         {
             var calculation = new Calculation(calculationRep.GetNextId(), periodRep.GetById(periodId),
                                               PolicyRep.GetById(policyId), name, DateTime.Now,
                                               employeeIdDelimitedList);
             calculationRep.Add(calculation);
             tr.Complete();
             return(calculation);
         }
     }
     catch (Exception exp)
     {
         var res = calculationRep.TryConvertException(exp);
         if (res == null)
         {
             throw;
         }
         throw res;
     }
 }
Ejemplo n.º 4
0
        //public IEnumerable<Calculation> GetUserCalculationsByCalculationTypes(IEnumerable<long> calculationTypeIDs, long userID)
        //{
        //    return _calculationRepository
        //        .GetMany(c => c.Owner.Id == userID && c.CalculationTypeID.HasValue && calculationTypeIDs.Contains(c.CalculationTypeID.Value));
        //}

        public void AddCalculation(Calculation calculation)
        {
            _calculationRepository.Add(calculation);
            SaveCalculation();
        }