public int GetBottlesAtCounterparty(IUnitOfWork UoW, Counterparty counterparty, DateTime?before = null) { BottlesMovementOperation operationAlias = null; BottlesBalanceQueryResult result = null; var queryResult = UoW.Session.QueryOver <BottlesMovementOperation>(() => operationAlias) .Where(() => operationAlias.Counterparty.Id == counterparty.Id); if (before.HasValue) { queryResult.Where(() => operationAlias.OperationTime < before); } var bottles = queryResult.SelectList(list => list .SelectSum(() => operationAlias.Delivered).WithAlias(() => result.Delivered) .SelectSum(() => operationAlias.Returned).WithAlias(() => result.Returned) ).TransformUsing(Transformers.AliasToBean <BottlesBalanceQueryResult>()).List <BottlesBalanceQueryResult>() .FirstOrDefault()?.BottlesDebt ?? 0; return(bottles); }
public int GetBottleDebtBySelfDelivery(IUnitOfWork UoW, Counterparty counterparty) { BottlesMovementOperation operationAlias = null; BottlesBalanceQueryResult result = null; Order orderAlias = null; var queryResult = UoW.Session.QueryOver(() => operationAlias) .JoinAlias(() => operationAlias.Order, () => orderAlias, NHibernate.SqlCommand.JoinType.RightOuterJoin) .Where(() => operationAlias.Counterparty == counterparty) .And(() => orderAlias.SelfDelivery); var bottles = queryResult.SelectList(list => list .SelectSum(() => operationAlias.Delivered).WithAlias(() => result.Delivered) .SelectSum(() => operationAlias.Returned).WithAlias(() => result.Returned) ) .TransformUsing(Transformers.AliasToBean <BottlesBalanceQueryResult>()).List <BottlesBalanceQueryResult>() .FirstOrDefault()? .BottlesDebt ?? 0; return(bottles); }