public (Money, int) CurrentConsumption() { var amtConsumption = Consumptions.Aggregate(Money.Euro(0), (s, i) => s + i.ConsumedAmount); var qtConsumption = Consumptions.Aggregate(0, (s, i) => s + i.ConsumedQuantity); return(amtConsumption, qtConsumption); }
public void CalculateAverage() { float distance = Consumptions.Sum(c => c.Distance); float fuel = Consumptions.Sum(c => c.Fuel); float average = 0.0f; if (distance > 0.0f) { average = (fuel * 100) / distance; } Average = (float)Math.Round(average, 2); }
public void Add(float distance, float fuel) { if (distance > 0 && fuel > 0) { Consumption consumption = new Consumption() { Distance = distance, Fuel = fuel }; Consumptions.Add(consumption); CalculateAverage(); } }
/// <summary> /// 次卡消费 /// </summary> /// <param name="timesCardProduct">次卡对象</param> /// <param name="tutor">教师</param> /// <returns>消费记录</returns> public Consumption Consume(Tutor tutor) { if (Remainder <= 0) { throw new BalanceNotEnoughException("余额不足!"); } Remainder--; Consumption consumption = new Consumption() { MemberCard = this, MemberCardId = this.Id, Tutor = tutor, TutorId = tutor.Id, ConsumeDate = DateTime.Now }; Consumptions.Add(consumption); return(consumption); }
/// <summary> /// 课时消费 /// </summary> /// <param name="lectureProduct">课程对象</param> /// <param name="tutor">教师</param> /// <param name="lectureDescription">授课内容</param> /// <returns>消费记录</returns> public Consumption Learn(Tutor tutor, string lectureDescription) { if (Remainder <= 0) { throw new BalanceNotEnoughException("余额不足!"); } Remainder--; Session session = new Session() { MemberCard = this, MemberCardId = this.Id, Tutor = tutor, TutorId = tutor.Id, Description = lectureDescription, ConsumeDate = DateTime.Now }; Consumptions.Add(session); return(session); }
public async Task <ActionResult <Orders> > StartProduction(int id, int warehouseId) { var order = await _context.Orders .Where(o => o.OrderId == id) .Include(o => o.FurnitureOrderRows) .ThenInclude(r => r.Furniture) .ThenInclude(f => f.DetailsInFurnitures) .ThenInclude(r => r.AdditionalDetailsOrdered) .ThenInclude(a => a.DetailInFurniture) .FirstOrDefaultAsync(); if (order == null) { return(NotFound()); } foreach (var row in order.FurnitureOrderRows) { //check if enough details var furnitureDetails = row.Furniture.DetailsInFurnitures .Select(d => new { d.DetailId, Count = d.Count * row.Count }) .ToDictionary(k => k.DetailId); var additionalDetails = row.AdditionalDetailsOrdered .Select(d => new { d.DetailInFurniture.DetailId, Count = d.Count * row.Count }) .ToDictionary(k => k.DetailId); var neededDetails = furnitureDetails.Concat(additionalDetails).GroupBy(d => d.Key) .ToDictionary(d => d.Key, d => new { d.First().Value.DetailId, Count = d.Sum(d => d.Value.Count) as int? }); var warehouseDetails = await _context.WarehouseDetails .Where(w => w.WarehouseId == warehouseId) .Select(wd => new { wd.DetailId, wd.Count }) .ToDictionaryAsync(k => k.DetailId as int?); var missingDetails = new Dictionary <int, int>(); foreach (var detail in neededDetails) { if (!warehouseDetails.ContainsKey(detail.Key) || warehouseDetails[detail.Key].Count < detail.Value.Count) { //not enough missingDetails.Add((int)detail.Key, (int)(detail.Value.Count - warehouseDetails[detail.Key].Count)); } warehouseDetails[detail.Key] = new { DetailId = (int)detail.Value.DetailId, Count = warehouseDetails[detail.Key].Count - detail.Value.Count }; //remove used details from warehouse var wd = await _context.WarehouseDetails .Where(wd => wd.DetailId == detail.Value.DetailId) .FirstOrDefaultAsync(); wd.Count = warehouseDetails[detail.Key].Count; _context.WarehouseDetails.Update(wd); } if (missingDetails.Any()) { return(BadRequest(missingDetails)); } //add production var production = new Productions() { WarehouseId = warehouseId, StartedDate = DateTime.Now, FurnitureOrderRowId = row.FurnitureOrderRowId, }; //add consumptions foreach (var detail in neededDetails) { var consumption = new Consumptions() { Date = DateTime.Now, WarehouseDetail = await _context.WarehouseDetails .Where(wd => wd.DetailId == detail.Value.DetailId) .FirstOrDefaultAsync(), Count = (int)detail.Value.Count }; production.Consumptions.Add(consumption); } _context.Productions.Add(production); } //change order status order.Status = OrderStatus.InProduction; _context.Orders.Update(order); await _context.SaveChangesAsync(); return(order); }
public int Update(Consumptions t) { throw new NotImplementedException(); }
/// <summary> /// 添加消费记录 /// </summary> /// <param name="t"></param> /// <returns></returns> public int Add(Consumptions t) { var result = iConsumptions_DAL.Add(t); return(result); }
public void ReserveLimitsFor(string caseNumber, Guid serviceId, DateTime consumptionDate, Money consumedAmount, int consumedQuantity) { Consumptions.Add(new Consumption(this, caseNumber, serviceId, consumptionDate, consumedAmount, consumedQuantity)); }
public void Delete(Consumption consumption) { Consumptions.Remove(consumption); CalculateAverage(); }