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); }
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); }