public static decimal GetFuelBalance(IUnitOfWork UoW, Employee driver, Car car, FuelType fuel, DateTime?before = null, params int[] excludeOperationsIds) { FuelOperation operationAlias = null; FuelQueryResult result = null; var queryResult = UoW.Session.QueryOver <FuelOperation>(() => operationAlias) //.Where(() => operationAlias.Fuel.Id == fuel.Id) - ибо хотят для чего то литры бензина суммировать с литрами дизеля о_О ; if (driver != null) { queryResult.Where(() => operationAlias.Driver.Id == driver.Id); } if (car != null) { queryResult.Where(() => operationAlias.Car.Id == car.Id); } if (before.HasValue) { queryResult.Where(() => operationAlias.OperationTime < before); } if (excludeOperationsIds != null) { queryResult.Where(() => !operationAlias.Id.IsIn(excludeOperationsIds)); } return(queryResult.SelectList(list => list .SelectSum(() => operationAlias.LitersGived).WithAlias(() => result.Gived) .SelectSum(() => operationAlias.LitersOutlayed).WithAlias(() => result.Outlayed) ).TransformUsing(Transformers.AliasToBean <FuelQueryResult>()).List <FuelQueryResult>() .FirstOrDefault()?.FuelBalance ?? 0); }
public decimal GetFuelBalance(IUnitOfWork uow, Employee driver, Car car, DateTime?before = null, params int[] excludeOperationsIds) { FuelOperation operationAlias = null; FuelQueryResult result = null; var queryResult = uow.Session.QueryOver <FuelOperation>(() => operationAlias); if (driver != null) { queryResult.Where(() => operationAlias.Driver.Id == driver.Id); } if (car != null) { queryResult.Where(() => operationAlias.Car.Id == car.Id); } if (before.HasValue) { queryResult.Where(() => operationAlias.OperationTime < before); } if (excludeOperationsIds != null) { queryResult.Where(() => !operationAlias.Id.IsIn(excludeOperationsIds)); } return(queryResult.SelectList(list => list .SelectSum(() => operationAlias.LitersGived).WithAlias(() => result.Gived) .SelectSum(() => operationAlias.LitersOutlayed).WithAlias(() => result.Outlayed)) .TransformUsing(Transformers.AliasToBean <FuelQueryResult>()) .List <FuelQueryResult>() .FirstOrDefault()?.FuelBalance ?? 0); }
public virtual void UpdateOperation(Dictionary<GazTicket, int> TicketsList) { int litersByTickets = TicketsList.Sum(x => x.Value * x.Key.Liters); decimal litersByMoney = 0; if(Fuel.Cost >0 && PayedForFuel.HasValue) litersByMoney = PayedForFuel.Value / Fuel.Cost; if (Operation == null) Operation = new FuelOperation(); Car car = Car; Employee driver = Driver; if (car.IsCompanyHavings) driver = null; else car = null; Operation.Driver = driver; Operation.Car = car; Operation.Fuel = Fuel; Operation.LitersGived = litersByTickets + litersByMoney; Operation.LitersOutlayed = 0; Operation.OperationTime = Date; }