Example #1
0
        public (double time, double price) Get(string source, string target, DateTime date, string ctype, double weight, double largestDim)
        {
            IQueryable <RouteData> routeData = _context.Set <RouteData>();
            IQueryable <Price>     prices    = _context.Set <Price>();
            IQueryable <CargoType> types     = _context.Set <CargoType>();

            var segments = from routeDatum in routeData.Where(d => (d.From == source && d.To == target) || (d.From == target && d.To == source))
                           select routeDatum;
            var segResult = segments.First();

            var dw = (decimal)weight;
            var p  = from price in prices.Where(pr => pr.ValidFrom <= date && pr.WeightFrom <= dw && pr.WeightTo >= dw)
                     select price;
            var priceResult = p.First();

            string strType = ctype.ToString();
            var    type    = from t in types.Where(ty => ty.Name == strType)
                             select t;
            var typeResult = type.First();


            var finalCost = segResult.Distance * priceResult.Price1 * typeResult.ChargeValue;
            var finalTime = segResult.Distance * 12;

            return((double)finalTime, (double)finalCost);
        }
Example #2
0
        public string CreateExternalOrder(string supplierId, double price, string start, string finish, string type_Id, double weight, double largestDim, double time, DateTime validUntil)
        {
            string OrderID;

            using (var transaction = _context.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
            {
                var counters = _context.Set <Counter>();
                var qu       = from c in counters.Where(c => c.CounterName == "ExternalOrderID")
                               select c;
                var count = qu.First();
                count.Number++;

                var order = new Quote()
                {
                    Id               = count.Number.ToString(),
                    Supplier_Id      = supplierId,
                    QuotedPrice      = (decimal)price,
                    Origin           = start,
                    Destination      = finish,
                    Type_Id          = type_Id,
                    Weight           = (decimal)weight,
                    Widest_Dimension = (decimal)largestDim,
                    TransportTime    = (decimal)time,
                    ValidUntil       = validUntil,
                    Accepted         = false,
                };
                var returnOrder = _context.Set <Quote>().Add(order);
                _context.SaveChanges();
                transaction.Commit();
                OrderID = returnOrder.Id;
            }
            return(OrderID);
        }