Esempio n. 1
0
        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);
        }
Esempio n. 3
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;
        }