public bool HasRouteListItemsForOrder(IUnitOfWork uow, Domain.Orders.Order order) { return(uow.Session.QueryOver <RouteListItem>() .Where(x => x.Order.Id == order.Id) .Select(Projections.Count <RouteListItem>(x => x.Id)) .SingleOrDefault <int>() > 0); }
public async Task <bool> ProcessPayment(Domain.Orders.Order order, PaymentDTO payment) { var orderRequest = new OrderInProcessingIntegrationEvent() { OrderId = order.Id, CustomerId = order.CustomerId, Price = order.Amount, PaymentType = 1, //TODO: Implement the proper type in the future CardName = payment.CardHolderName, CardNumber = payment.CardNumber, Expiration = payment.CardExpiration, CVV = payment.CardCvv }; var response = await _messageBus.RequestAsync <OrderInProcessingIntegrationEvent, ResponseMessage>(orderRequest); if (response.ValidResult.IsValid) { return(true); } foreach (var error in response.ValidResult.Errors) { AddError(error.ErrorMessage); } return(false); }
public bool WasOrderInAnyRouteList(IUnitOfWork uow, Domain.Orders.Order order) { return(!uow.Session.QueryOver <RouteListItem>() .Where(i => i.Order == order) .List() .Any()); }
public static OrderDTO Map(Domain.Orders.Order order) { var orderDTO = new OrderDTO { Id = order.Id, Code = order.Code, Status = (int)order.OrderStatus, CreatedDate = order.CreatedDate, Amount = order.Amount, Discount = order.DiscountApplied, HasVoucher = order.IsUsedVoucher, Items = new List <OrderItemDTO>(), Address = new AddressDTO() }; foreach (var item in order.OrderItems) { orderDTO.Items.Add(new OrderItemDTO { Name = item.ProductName, Image = item.Image, Qty = item.Qty, ProductId = item.ProductId, Price = item.Price, OrderId = item.OrderId }); } return(orderDTO); }
public RouteListItem GetRouteListItemForOrder(IUnitOfWork uow, Domain.Orders.Order order) { RouteListItem routeListItemAlias = null; return(uow.Session.QueryOver(() => routeListItemAlias) .Where(rli => rli.Status != RouteListItemStatus.Transfered) .Where(() => routeListItemAlias.Order.Id == order.Id) .SingleOrDefault()); }
public RouteList GetRouteListByOrder(IUnitOfWork uow, Domain.Orders.Order order) { RouteList routeListAlias = null; RouteListItem routeListItemAlias = null; return(uow.Session.QueryOver(() => routeListAlias) .Left.JoinAlias(() => routeListAlias.Addresses, () => routeListItemAlias) .Where(() => routeListItemAlias.Order.Id == order.Id) .List() .FirstOrDefault()); }
public IEnumerable <CallTask> GetAutoGeneratedTask(IUnitOfWork UoW, Domain.Orders.Order order, CallTaskStatus?taskStatus = null) { CallTask callTaskAlias = null; return(UoW.Session.QueryOver(() => callTaskAlias) .Where(x => x.SourceDocumentId.Value == order.Id) .And(x => x.Source == TaskSource.AutoFromOrder) .And(x => x.Comment == null) .And(x => !x.IsTaskComplete) .And(x => taskStatus == null || x.TaskState == taskStatus.Value) .Take(1) .List()); }
public int CreateOrder(int customerID, List <IncomingOrderItemGroup> incomingOrderItems) { var itemGroup = new List <OrderItemGroup>(); foreach (var item in incomingOrderItems) { var itemtobeordered = itemService.GetByID(item.ItemID); CheckIfItemExistsInDatabase(item, itemtobeordered); itemGroup.Add(new OrderItemGroup(itemtobeordered, item.ItemAmount)); } Domain.Orders.Order order = new Domain.Orders.Order(itemGroup, customerID); Database.Orders.Add(order); return(order.ID); }
public ReferenceNode CreateReferenceToContract(Domain.Orders.Order order) { if (order.Contract != null) { return(CreateReferenceTo(order.Contract)); } var contract = new VirtualContract( order.Client, order.Contract.Organization, $"{order.Client.VodovozInternalId}-1" ); return(CreateReferenceTo(contract)); }
public async Task <Domain.Orders.Order> Insert(Domain.Orders.Order order) { if (order == null) { throw new ArgumentNullException(nameof(order)); } var dbOrder = order.ToDalOrNull(OrderConverter.ToDalNew); await _orders.AddAsync(dbOrder); await context.SaveChangesAsync(); return(dbOrder.ToDomainOrNull(OrderConverter.ToDomain)); }
public static IEnumerable <OrderCountResultNode> OrdersCountByDistrict(IUnitOfWork uow, DateTime date, int minBottlesInOrder) { OrderCountResultNode resultAlias = null; Domain.Orders.Order orderAlias = null; OrderItem orderItemsAlias = null; DeliveryPoint deliveryPointAlias = null; var districtSubquery = QueryOver.Of <District>() .Where( Restrictions.Eq( Projections.SqlFunction( new SQLFunctionTemplate( NHibernateUtil.Boolean, "ST_WITHIN(PointFromText(CONCAT('POINT(', ?1 ,' ', ?2,')')), ?3)" ), NHibernateUtil.Boolean, Projections.Property(() => deliveryPointAlias.Latitude), Projections.Property(() => deliveryPointAlias.Longitude), Projections.Property <District>(x => x.DistrictBorder) ), true ) ) .Select(x => x.Id) .Take(1); return(uow.Session.QueryOver(() => orderAlias) .Where(x => x.DeliveryDate == date) .Where(x => x.OrderStatus == OrderStatus.Accepted || x.OrderStatus == OrderStatus.InTravelList) .JoinQueryOver(x => x.OrderItems, () => orderItemsAlias) .JoinQueryOver(x => x.Nomenclature) .Where(x => x.Category == Domain.Goods.NomenclatureCategory.water && !x.IsDisposableTare) .JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias) .SelectList(list => list.SelectGroup(x => x.Id).WithAlias(() => resultAlias.OrderId) .SelectSum(() => (int)orderItemsAlias.Count).WithAlias(() => resultAlias.WaterCount) .SelectSubQuery(districtSubquery).WithAlias(() => resultAlias.DistrictId) ) .Where(Restrictions.Gt( Projections.Sum( Projections.Property(() => orderItemsAlias.Count)), 12)) .TransformUsing(Transformers.AliasToBean <OrderCountResultNode>()) .List <OrderCountResultNode>()); }
private Domain.Orders.Order OrderMap(CreateOrderCommand message) { var address = new Address { Street = message.Address.Street, Number = message.Address.Number, City = message.Address.City, State = message.Address.State, Country = message.Address.Country, PostCode = message.Address.PostCode }; var order = new Domain.Orders.Order(message.CustomerId, message.TotalPrice, message.Items.Select(OrderItemDTO.Map).ToList(), message.HasVoucher, message.Voucher != null ? message.Voucher.Discount: 0); order.SetAddress(address); order.StartOrder(); return(order); }
private bool ApplyVoucher(CreateOrderCommand message, Domain.Orders.Order order) { if (!message.HasVoucher) { return(true); } var voucher = new Voucher(message.Voucher.Code, message.Voucher.Discount, 1, (VoucherType)message.Voucher.DiscountType, DateTime.Now.AddMinutes(1), true, false); var voucherValidation = new VoucherValidation().Validate(voucher); if (!voucherValidation.IsValid) { voucherValidation.Errors.ToList().ForEach(m => AddError(m.ErrorMessage)); return(false); } order.ApplyVoucher(voucher); return(true); }
public async Task <Domain.Orders.Order> Update(Domain.Orders.Order order) { if (order == null) { throw new ArgumentNullException(nameof(order)); } var dbOrder = await findByIdWithTracking(order.Id); if (dbOrder == null) { return(null); } dbOrder.State = order.State.ToDal(); dbOrder.TotalPrice = order.TotalPrice; await context.SaveChangesAsync(); return(dbOrder.ToDomainOrNull(OrderConverter.ToDomain)); }
private bool OrderValidation(Domain.Orders.Order order) { var orderPrice = order.Amount; var orderDiscount = order.DiscountApplied; order.CalculateOrderAmount(); if (order.Amount != orderPrice) { AddError("Price of order is different"); return(false); } if (order.DiscountApplied != orderDiscount) { AddError("Discount Applied is different"); return(false); } return(true); }
private IEnumerable <PromosetDuplicateInfoNode> GetDeliveryPointResult(IUnitOfWork uow, DeliveryPoint deliveryPoint) { DeliveryPoint deliveryPointAlias = null; Domain.Orders.Order orderAlias = null; Domain.Orders.OrderItem orderItemAlias = null; Counterparty counterpartyAlias = null; Phone counterpartyPhoneAlias = null; Phone deliveryPointPhoneAlias = null; PromosetDuplicateInfoNode resultAlias = null; var query = uow.Session.QueryOver(() => orderAlias) .Left.JoinAlias(() => orderAlias.OrderItems, () => orderItemAlias) .Left.JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias) .Left.JoinAlias(() => orderAlias.Client, () => counterpartyAlias) .Left.JoinAlias(() => counterpartyAlias.Phones, () => counterpartyPhoneAlias) .Left.JoinAlias(() => deliveryPointAlias.Phones, () => deliveryPointPhoneAlias) .Where( Restrictions.And( Restrictions.Where(() => deliveryPointAlias.City == deliveryPoint.City && deliveryPointAlias.Street == deliveryPoint.Street && deliveryPointAlias.Building == deliveryPoint.Building && deliveryPointAlias.Room == deliveryPoint.Room ), Restrictions.Ge(Projections.Property(() => deliveryPointAlias.Room), 1) ) ) .Where(Restrictions.IsNotNull(Projections.Property(() => orderItemAlias.PromoSet))); var deliveryPointsResult = query.SelectList(list => list .SelectGroup(() => orderAlias.Id) .Select(() => orderAlias.DeliveryDate).WithAlias(() => resultAlias.Date) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Client) .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.Address) ).TransformUsing(Transformers.AliasToBean <PromosetDuplicateInfoNode>()) .List <PromosetDuplicateInfoNode>(); return(deliveryPointsResult); }
public async Task <Domain.Orders.Order> InserOrderItem(Domain.Orders.Order order, Domain.OrderItems.OrderItem item) { if (order == null) { throw new ArgumentNullException(nameof(order)); } if (item == null) { throw new ArgumentNullException(nameof(item)); } var dbOrderItem = item.ToDalOrNull(OrderItems.DbEntites.OrderItemConverter.ToDalNew); var dbOrder = order.ToDalOrNull(OrderConverter.ToDal); dbOrder.Items.Add(dbOrderItem); await context.SaveChangesAsync(); return(dbOrder.ToDomainOrNull(OrderConverter.ToDomain)); }
public bool IsOrderCloseWithoutDelivery(IUnitOfWork uow, Domain.Orders.Order order) { if (uow == null) { throw new ArgumentNullException(nameof(uow)); } if (order == null) { throw new ArgumentNullException(nameof(order)); } if (order.OrderStatus != OrderStatus.Closed) { return(false); } var routeListItem = uow.Session.QueryOver <RouteListItem>() .Where(x => x.Order.Id == order.Id) .Take(1).List()?.FirstOrDefault(); if (routeListItem != null) { return(false); } var selfDeliveryDocument = uow.Session.QueryOver <SelfDeliveryDocument>() .Where(x => x.Order.Id == order.Id) .Take(1).List()?.FirstOrDefault(); if (selfDeliveryDocument != null) { return(false); } return(true); }
public Task SaveAsync(Domain.Orders.Order aAggregateRoot) { throw new System.NotImplementedException(); }
private IQueryOver <UndeliveredOrder> GetUndeliveredOrdersQuery(IUnitOfWork uow) { UndeliveredOrderJournalNode resultAlias = null; UndeliveredOrder undeliveredOrderAlias = null; Domain.Orders.Order oldOrderAlias = null; Domain.Orders.Order newOrderAlias = null; Employee driverAlias = null; Employee oldOrderAuthorAlias = null; Employee authorAlias = null; Employee editorAlias = null; Employee registratorAlias = null; Nomenclature nomenclatureAlias = null; OrderItem orderItemAlias = null; OrderEquipment orderEquipmentAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint undeliveredOrderDeliveryPointAlias = null; DeliverySchedule undeliveredOrderDeliveryScheduleAlias = null; DeliverySchedule newOrderDeliveryScheduleAlias = null; RouteList routeListAlias = null; RouteListItem routeListItemAlias = null; Subdivision subdivisionAlias = null; Fine fineAlias = null; FineItem fineItemAlias = null; Employee finedEmployeeAlias = null; Subdivision inProcessAtSubdivisionAlias = null; Subdivision authorSubdivisionAlias = null; GuiltyInUndelivery guiltyInUndeliveryAlias = null; var subqueryDrivers = QueryOver.Of <RouteListItem>(() => routeListItemAlias) .Where(() => routeListItemAlias.Order.Id == oldOrderAlias.Id) .Left.JoinQueryOver(i => i.RouteList, () => routeListAlias) .Left.JoinAlias(i => i.Driver, () => driverAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT(?1, ' ', LEFT(?2,1),'.',LEFT(?3,1)) ORDER BY ?4 DESC SEPARATOR '\n\t↑\n')"), //⬆ NHibernateUtil.String, Projections.Property(() => driverAlias.LastName), Projections.Property(() => driverAlias.Name), Projections.Property(() => driverAlias.Patronymic), Projections.Property(() => routeListItemAlias.Id) ) ); var subquery19LWaterQty = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderItemAlias.Order.Id == oldOrderAlias.Id) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Where(n => n.Category == NomenclatureCategory.water && n.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => orderItemAlias.Count)); var subqueryGoodsToClient = QueryOver.Of <OrderEquipment>(() => orderEquipmentAlias) .Where(() => orderEquipmentAlias.Order.Id == oldOrderAlias.Id) .Where(() => orderEquipmentAlias.Direction == Direction.Deliver) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "TRIM(GROUP_CONCAT(CONCAT(IF(?1 IS NULL, ?2, ?1),':',?3) SEPARATOR ?4))"), NHibernateUtil.String, Projections.Property(() => nomenclatureAlias.ShortName), Projections.Property(() => nomenclatureAlias.Name), Projections.Property(() => orderEquipmentAlias.Count), Projections.Constant("\n") ) ); var subqueryGoodsFromClient = QueryOver.Of <OrderEquipment>(() => orderEquipmentAlias) .Where(() => orderEquipmentAlias.Order.Id == oldOrderAlias.Id) .Where(() => orderEquipmentAlias.Direction == Direction.PickUp) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "TRIM(GROUP_CONCAT(CONCAT(IF(?1 IS NULL, ?2, ?1),':',?3) SEPARATOR ?4))"), NHibernateUtil.String, Projections.Property(() => nomenclatureAlias.ShortName), Projections.Property(() => nomenclatureAlias.Name), Projections.Property(() => orderEquipmentAlias.Count), Projections.Constant("\n") ) ); var subqueryGuilty = QueryOver.Of <GuiltyInUndelivery>(() => guiltyInUndeliveryAlias) .Where(() => undeliveredOrderAlias.Id == guiltyInUndeliveryAlias.UndeliveredOrder.Id) .Left.JoinQueryOver(g => g.GuiltyDepartment, () => subdivisionAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT(" + "CASE ?1 " + $"WHEN '{nameof(GuiltyTypes.Client)}' THEN 'Клиент' " + $"WHEN '{nameof(GuiltyTypes.Driver)}' THEN 'Водитель' " + $"WHEN '{nameof(GuiltyTypes.Department)}' THEN 'Отд' " + $"WHEN '{nameof(GuiltyTypes.ServiceMan)}' THEN 'Мастер СЦ' " + $"WHEN '{nameof(GuiltyTypes.ForceMajor)}' THEN 'Форс-мажор' " + $"WHEN '{nameof(GuiltyTypes.None)}' THEN 'Нет (не недовоз)' " + "ELSE 'Неизвестно' " + "END, " + "IF(?1 = 'Department' AND ?2 = '', ':Неизвестно', " + "IF(?1 = 'Department' AND ?2 != '', CONCAT(':', ?2), ''))) " + "SEPARATOR '\n')"), NHibernateUtil.String, Projections.Property(() => guiltyInUndeliveryAlias.GuiltySide), Projections.Property(() => subdivisionAlias.ShortName) ) ); var subqueryFined = QueryOver.Of <Fine>(() => fineAlias) .Where(() => fineAlias.UndeliveredOrder.Id == undeliveredOrderAlias.Id) .Left.JoinAlias(() => fineAlias.Items, () => fineItemAlias) .Left.JoinAlias(() => fineItemAlias.Employee, () => finedEmployeeAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT_WS(': ', ?1, ?2) SEPARATOR '\n')"), NHibernateUtil.String, Projections.Property(() => finedEmployeeAlias.LastName), Projections.Property(() => fineItemAlias.Money) ) ); var query = uow.Session.QueryOver <UndeliveredOrder>(() => undeliveredOrderAlias) .Left.JoinAlias(u => u.OldOrder, () => oldOrderAlias) .Left.JoinAlias(u => u.NewOrder, () => newOrderAlias) .Left.JoinAlias(() => oldOrderAlias.Client, () => counterpartyAlias) .Left.JoinAlias(() => newOrderAlias.DeliverySchedule, () => newOrderDeliveryScheduleAlias) .Left.JoinAlias(() => oldOrderAlias.Author, () => oldOrderAuthorAlias) .Left.JoinAlias(() => oldOrderAlias.DeliveryPoint, () => undeliveredOrderDeliveryPointAlias) .Left.JoinAlias(() => oldOrderAlias.DeliverySchedule, () => undeliveredOrderDeliveryScheduleAlias) .Left.JoinAlias(u => u.Author, () => authorAlias) .Left.JoinAlias(u => u.LastEditor, () => editorAlias) .Left.JoinAlias(u => u.EmployeeRegistrator, () => registratorAlias) .Left.JoinAlias(u => u.InProcessAtDepartment, () => inProcessAtSubdivisionAlias) .Left.JoinAlias(u => u.Author.Subdivision, () => authorSubdivisionAlias) .Left.JoinAlias(() => undeliveredOrderAlias.GuiltyInUndelivery, () => guiltyInUndeliveryAlias) .Left.JoinAlias(() => guiltyInUndeliveryAlias.GuiltyDepartment, () => subdivisionAlias); if (FilterViewModel?.RestrictDriver != null) { var oldOrderIds = _undeliveredOrdersRepository.GetListOfUndeliveryIdsForDriver(UoW, FilterViewModel.RestrictDriver); query.Where(() => oldOrderAlias.Id.IsIn(oldOrderIds.ToArray())); } if (FilterViewModel?.RestrictOldOrder != null) { query.Where(() => oldOrderAlias.Id == FilterViewModel.RestrictOldOrder.Id); } if (FilterViewModel?.RestrictClient != null) { query.Where(() => counterpartyAlias.Id == FilterViewModel.RestrictClient.Id); } if (FilterViewModel?.RestrictAddress != null) { query.Where(() => undeliveredOrderDeliveryPointAlias.Id == FilterViewModel.RestrictAddress.Id); } if (FilterViewModel?.RestrictAuthorSubdivision != null) { query.Where(() => authorAlias.Subdivision.Id == FilterViewModel.RestrictAuthorSubdivision.Id); } if (FilterViewModel?.RestrictOldOrderAuthor != null) { query.Where(() => oldOrderAuthorAlias.Id == FilterViewModel.RestrictOldOrderAuthor.Id); } if (FilterViewModel?.RestrictOldOrderStartDate != null) { query.Where(() => oldOrderAlias.DeliveryDate >= FilterViewModel.RestrictOldOrderStartDate); } if (FilterViewModel?.RestrictOldOrderEndDate != null) { query.Where(() => oldOrderAlias.DeliveryDate <= FilterViewModel.RestrictOldOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel?.RestrictNewOrderStartDate != null) { query.Where(() => newOrderAlias.DeliveryDate >= FilterViewModel.RestrictNewOrderStartDate); } if (FilterViewModel?.RestrictNewOrderEndDate != null) { query.Where(() => newOrderAlias.DeliveryDate <= FilterViewModel.RestrictNewOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel?.RestrictGuiltySide != null) { query.Where(() => guiltyInUndeliveryAlias.GuiltySide == FilterViewModel.RestrictGuiltySide); } if (FilterViewModel != null && FilterViewModel.RestrictIsProblematicCases) { query.Where(() => !guiltyInUndeliveryAlias.GuiltySide.IsIn(FilterViewModel.ExcludingGuiltiesForProblematicCases)); } if (FilterViewModel?.RestrictGuiltyDepartment != null) { query.Where(() => subdivisionAlias.Id == FilterViewModel.RestrictGuiltyDepartment.Id); } if (FilterViewModel?.RestrictInProcessAtDepartment != null) { query.Where(u => u.InProcessAtDepartment.Id == FilterViewModel.RestrictInProcessAtDepartment.Id); } if (FilterViewModel?.NewInvoiceCreated != null) { if (FilterViewModel.NewInvoiceCreated.Value) { query.Where(u => u.NewOrder != null); } else { query.Where(u => u.NewOrder == null); } } if (FilterViewModel?.RestrictUndeliveryStatus != null) { query.Where(u => u.UndeliveryStatus == FilterViewModel.RestrictUndeliveryStatus); } if (FilterViewModel?.RestrictUndeliveryAuthor != null) { query.Where(u => u.Author == FilterViewModel.RestrictUndeliveryAuthor); } var addressProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS(', ', ?1, CONCAT('д.', ?2), CONCAT('лит.', ?3), CONCAT('кв/оф ', ?4))"), NHibernateUtil.String, Projections.Property(() => undeliveredOrderDeliveryPointAlias.Street), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Building), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Letter), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Room)); var oldOrderAuthorProjection = CustomProjections.Concat_WS(" ", () => oldOrderAuthorAlias.LastName, () => oldOrderAuthorAlias.Name, () => oldOrderAuthorAlias.Patronymic); var registratorProjection = CustomProjections.Concat_WS(" ", () => registratorAlias.LastName, () => registratorAlias.Name, () => registratorAlias.Patronymic); var authorProjection = CustomProjections.Concat_WS(" ", () => authorAlias.LastName, () => authorAlias.Name, () => authorAlias.Patronymic); query.Where(GetSearchCriterion( () => undeliveredOrderAlias.Id, () => addressProjection, () => counterpartyAlias.Name, () => undeliveredOrderAlias.Reason, () => oldOrderAuthorProjection, () => registratorProjection, () => authorProjection) ); var itemsQuery = query.SelectList(list => list .SelectGroup(() => undeliveredOrderAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => newOrderAlias.Id).WithAlias(() => resultAlias.NewOrderId) .Select(() => newOrderAlias.DeliveryDate).WithAlias(() => resultAlias.NewOrderDeliveryDate) .Select(() => newOrderDeliveryScheduleAlias.Name).WithAlias(() => resultAlias.NewOrderDeliverySchedule) .Select(() => oldOrderAlias.Id).WithAlias(() => resultAlias.OldOrderId) .Select(() => oldOrderAlias.DeliveryDate).WithAlias(() => resultAlias.OldOrderDeliveryDateTime) .Select(() => undeliveredOrderAlias.DispatcherCallTime).WithAlias(() => resultAlias.DispatcherCallTime) .Select(() => undeliveredOrderAlias.DriverCallNr).WithAlias(() => resultAlias.DriverCallNr) .Select(() => undeliveredOrderAlias.DriverCallTime).WithAlias(() => resultAlias.DriverCallTime) .Select(() => undeliveredOrderAlias.DriverCallType).WithAlias(() => resultAlias.DriverCallType) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Client) .Select(() => oldOrderAuthorAlias.LastName).WithAlias(() => resultAlias.OldOrderAuthorLastName) .Select(() => oldOrderAuthorAlias.Name).WithAlias(() => resultAlias.OldOrderAuthorFirstName) .Select(() => oldOrderAuthorAlias.Patronymic).WithAlias(() => resultAlias.OldOrderAuthorMiddleName) .Select(() => undeliveredOrderDeliveryScheduleAlias.Name).WithAlias(() => resultAlias.OldDeliverySchedule) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorLastName) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorFirstName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorMiddleName) .Select(() => registratorAlias.LastName).WithAlias(() => resultAlias.RegistratorLastName) .Select(() => registratorAlias.Name).WithAlias(() => resultAlias.RegistratorFirstName) .Select(() => registratorAlias.Patronymic).WithAlias(() => resultAlias.RegistratorMiddleName) .Select(() => editorAlias.LastName).WithAlias(() => resultAlias.EditorLastName) .Select(() => editorAlias.Name).WithAlias(() => resultAlias.EditorFirstName) .Select(() => editorAlias.Patronymic).WithAlias(() => resultAlias.EditorMiddleName) .Select(() => undeliveredOrderAlias.Reason).WithAlias(() => resultAlias.Reason) .Select(() => undeliveredOrderAlias.UndeliveryStatus).WithAlias(() => resultAlias.UndeliveryStatus) .Select(() => undeliveredOrderAlias.OldOrderStatus).WithAlias(() => resultAlias.StatusOnOldOrderCancel) .Select(() => oldOrderAlias.OrderStatus).WithAlias(() => resultAlias.OldOrderCurStatus) .Select(() => inProcessAtSubdivisionAlias.Name).WithAlias(() => resultAlias.InProcessAt) .SelectSubQuery(subqueryDrivers).WithAlias(() => resultAlias.OldRouteListDriverName) .SelectSubQuery(subquery19LWaterQty).WithAlias(() => resultAlias.OldOrder19LBottleQty) .SelectSubQuery(subqueryGoodsToClient).WithAlias(() => resultAlias.OldOrderGoodsToClient) .SelectSubQuery(subqueryGoodsFromClient).WithAlias(() => resultAlias.OldOrderGoodsFromClient) .SelectSubQuery(subqueryFined).WithAlias(() => resultAlias.Fined) .SelectSubQuery(subqueryGuilty).WithAlias(() => resultAlias.Guilty) .Select(addressProjection).WithAlias(() => resultAlias.Address) ).OrderBy(() => oldOrderAlias.DeliveryDate).Asc .TransformUsing(Transformers.AliasToBean <UndeliveredOrderJournalNode>()); return(itemsQuery); }
private IQueryOver <ClientTask> GetClientTaskQuery(IUnitOfWork uow) { DeliveryPoint deliveryPointAlias = null; BottlesMovementOperation bottlesMovementAlias = null; ClientTask callTaskAlias = null; BusinessTaskJournalNode <ClientTask> resultAlias = null; Counterparty counterpartyAlias = null; Employee employeeAlias = null; Phone deliveryPointPhonesAlias = null; Phone counterpartyPhonesAlias = null; Domain.Orders.Order orderAlias = null; var tasksQuery = UoW.Session.QueryOver(() => callTaskAlias) .Left.JoinAlias(() => callTaskAlias.DeliveryPoint, () => deliveryPointAlias); switch (FilterViewModel.DateType) { case TaskFilterDateType.CreationTime: tasksQuery.Where(x => x.CreationDate >= FilterViewModel.StartDate.Date) .And(x => x.CreationDate <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; case TaskFilterDateType.CompleteTaskDate: tasksQuery.Where(x => x.CompleteDate >= FilterViewModel.StartDate.Date) .And(x => x.CompleteDate <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; default: tasksQuery.Where(x => x.EndActivePeriod >= FilterViewModel.StartDate.Date) .And(x => x.EndActivePeriod <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; } if (FilterViewModel.Employee != null) { tasksQuery.Where(x => x.AssignedEmployee == FilterViewModel.Employee); } else if (FilterViewModel.ShowOnlyWithoutEmployee) { tasksQuery.Where(x => x.AssignedEmployee == null); } if (FilterViewModel.HideCompleted) { tasksQuery.Where(x => !x.IsTaskComplete); } if (FilterViewModel.DeliveryPointCategory != null) { tasksQuery.Where(() => deliveryPointAlias.Category == FilterViewModel.DeliveryPointCategory); } var bottleDebtByAddressQuery = UoW.Session.QueryOver(() => bottlesMovementAlias) .JoinAlias(() => bottlesMovementAlias.Order, () => orderAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .Where(() => bottlesMovementAlias.Counterparty.Id == counterpartyAlias.Id) .And(() => bottlesMovementAlias.DeliveryPoint.Id == deliveryPointAlias.Id || orderAlias.SelfDelivery) .Select( Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Int32, "( ?2 - ?1 )"), NHibernateUtil.Int32, new IProjection[] { Projections.Sum(() => bottlesMovementAlias.Returned), Projections.Sum(() => bottlesMovementAlias.Delivered) } )); var bottleDebtByClientQuery = UoW.Session.QueryOver(() => bottlesMovementAlias) .Where(() => bottlesMovementAlias.Counterparty.Id == counterpartyAlias.Id) .Select( Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Int32, "( ?2 - ?1 )"), NHibernateUtil.Int32, new IProjection[] { Projections.Sum(() => bottlesMovementAlias.Returned), Projections.Sum(() => bottlesMovementAlias.Delivered) } )); tasksQuery.Where( GetSearchCriterion( () => callTaskAlias.Id, () => deliveryPointAlias.ShortAddress, () => counterpartyAlias.Name, () => callTaskAlias.TaskState ) ); var tasks = tasksQuery .Left.JoinAlias(() => deliveryPointAlias.Phones, () => deliveryPointPhonesAlias) .Left.JoinAlias(() => counterpartyAlias.Phones, () => counterpartyPhonesAlias) .Left.JoinAlias(() => callTaskAlias.Counterparty, () => counterpartyAlias) .Left.JoinAlias(() => callTaskAlias.AssignedEmployee, () => employeeAlias) .SelectList(list => list .SelectGroup(() => callTaskAlias.Id) .Select(() => deliveryPointAlias.ShortAddress).WithAlias(() => resultAlias.AddressName) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.ClientName) .Select(() => employeeAlias.Name).WithAlias(() => resultAlias.EmployeeName) .Select(() => employeeAlias.LastName).WithAlias(() => resultAlias.EmployeeLastName) .Select(() => employeeAlias.Patronymic).WithAlias(() => resultAlias.EmployeePatronymic) .Select(() => callTaskAlias.EndActivePeriod).WithAlias(() => resultAlias.Deadline) .Select(() => callTaskAlias.CreationDate).WithAlias(() => resultAlias.CreationDate) .Select(() => callTaskAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => callTaskAlias.TaskState).WithAlias(() => resultAlias.TaskStatus) .Select(() => callTaskAlias.ImportanceDegree).WithAlias(() => resultAlias.ImportanceDegree) .Select(() => callTaskAlias.IsTaskComplete).WithAlias(() => resultAlias.IsTaskComplete) .Select(() => callTaskAlias.TareReturn).WithAlias(() => resultAlias.TareReturn) .Select(Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT( CONCAT(?2 , ?1) SEPARATOR ?3 )"), NHibernateUtil.String, Projections.Property(() => deliveryPointPhonesAlias.DigitsNumber), Projections.Constant("+7"), Projections.Constant("\n")) ).WithAlias(() => resultAlias.DeliveryPointPhones) .Select(Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT( CONCAT(?2 , ?1) SEPARATOR ?3 )"), NHibernateUtil.String, Projections.Property(() => counterpartyPhonesAlias.DigitsNumber), Projections.Constant("+7"), Projections.Constant("\n")) ).WithAlias(() => resultAlias.CounterpartyPhones) .SelectSubQuery((QueryOver <BottlesMovementOperation>)bottleDebtByAddressQuery).WithAlias(() => resultAlias.DebtByAddress) .SelectSubQuery((QueryOver <BottlesMovementOperation>)bottleDebtByClientQuery).WithAlias(() => resultAlias.DebtByClient) ) .TransformUsing(Transformers.AliasToBean <BusinessTaskJournalNode <ClientTask> >()); return(tasks); }
private IQueryOver <ClientTask> GetPaymenTaskQuery(IUnitOfWork uow) { DeliveryPoint deliveryPointAlias = null; ClientTask callTaskAlias = null; BusinessTaskJournalNode <PaymentTask> resultAlias = null; Counterparty counterpartyAlias = null; Employee employeeAlias = null; Phone deliveryPointPhonesAlias = null; Phone counterpartyPhonesAlias = null; Domain.Orders.Order orderAlias = null; var tasksQuery = UoW.Session.QueryOver(() => callTaskAlias) .Left.JoinAlias(() => callTaskAlias.DeliveryPoint, () => deliveryPointAlias); switch (FilterViewModel.DateType) { case TaskFilterDateType.CreationTime: tasksQuery.Where(x => x.CreationDate >= FilterViewModel.StartDate.Date) .And(x => x.CreationDate <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; case TaskFilterDateType.CompleteTaskDate: tasksQuery.Where(x => x.CompleteDate >= FilterViewModel.StartDate.Date) .And(x => x.CompleteDate <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; default: tasksQuery.Where(x => x.EndActivePeriod >= FilterViewModel.StartDate.Date) .And(x => x.EndActivePeriod <= FilterViewModel.EndDate.Date.AddHours(23).AddMinutes(59).AddSeconds(59)); break; } if (FilterViewModel.Employee != null) { tasksQuery.Where(x => x.AssignedEmployee == FilterViewModel.Employee); } else if (FilterViewModel.ShowOnlyWithoutEmployee) { tasksQuery.Where(x => x.AssignedEmployee == null); } if (FilterViewModel.HideCompleted) { tasksQuery.Where(x => !x.IsTaskComplete); } if (FilterViewModel.DeliveryPointCategory != null) { tasksQuery.Where(() => deliveryPointAlias.Category == FilterViewModel.DeliveryPointCategory); } tasksQuery.Where( GetSearchCriterion( () => callTaskAlias.Id, () => deliveryPointAlias.ShortAddress, () => counterpartyAlias.Name, () => callTaskAlias.TaskState ) ); var tasks = tasksQuery .Left.JoinAlias(() => deliveryPointAlias.Phones, () => deliveryPointPhonesAlias) .Left.JoinAlias(() => counterpartyAlias.Phones, () => counterpartyPhonesAlias) .Left.JoinAlias(() => callTaskAlias.Counterparty, () => counterpartyAlias) .Left.JoinAlias(() => callTaskAlias.AssignedEmployee, () => employeeAlias) .SelectList(list => list .SelectGroup(() => callTaskAlias.Id) .Select(() => deliveryPointAlias.ShortAddress).WithAlias(() => resultAlias.AddressName) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.ClientName) .Select(() => employeeAlias.Name).WithAlias(() => resultAlias.EmployeeName) .Select(() => employeeAlias.LastName).WithAlias(() => resultAlias.EmployeeLastName) .Select(() => employeeAlias.Patronymic).WithAlias(() => resultAlias.EmployeePatronymic) .Select(() => callTaskAlias.EndActivePeriod).WithAlias(() => resultAlias.Deadline) .Select(() => callTaskAlias.CreationDate).WithAlias(() => resultAlias.CreationDate) .Select(() => callTaskAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => callTaskAlias.TaskState).WithAlias(() => resultAlias.TaskStatus) .Select(() => callTaskAlias.ImportanceDegree).WithAlias(() => resultAlias.ImportanceDegree) .Select(() => callTaskAlias.IsTaskComplete).WithAlias(() => resultAlias.IsTaskComplete)) .TransformUsing(Transformers.AliasToBean <BusinessTaskJournalNode <PaymentTask> >()); return(tasks); }
private IEnumerable <PromosetDuplicateInfoNode> GetPhonesResult(IUnitOfWork uow, IEnumerable <Phone> phones) { Domain.Orders.Order orderAlias = null; Domain.Orders.OrderItem orderItemAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint deliveryPointAlias = null; Phone counterpartyPhoneAlias = null; Phone deliveryPointPhoneAlias = null; PromosetDuplicateInfoNode resultAlias = null; var phonesArray = phones.Select(x => x.DigitsNumber).ToArray(); var nullProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "NULLIF(1,1)"), NHibernateUtil.String ); var counterpartyPhoneProjection = Projections.Conditional( Restrictions.In(Projections.Property(() => counterpartyPhoneAlias.DigitsNumber), phonesArray), Projections.Property(() => counterpartyPhoneAlias.DigitsNumber), nullProjection ); var deliveryPointPhoneProjection = Projections.Conditional( Restrictions.In(Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber), phonesArray), Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber), nullProjection ); var counterpartyConcatPhoneProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT ?1 SEPARATOR ?2)"), NHibernateUtil.String, counterpartyPhoneProjection, Projections.Constant(", ") ); var deliveryPointConcatPhoneProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(DISTINCT ?1 SEPARATOR ?2)"), NHibernateUtil.String, deliveryPointPhoneProjection, Projections.Constant(", ") ); var concatPhoneProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS(', ', ?1, ?2)"), NHibernateUtil.String, counterpartyConcatPhoneProjection, deliveryPointConcatPhoneProjection ); var phoneResult = uow.Session.QueryOver(() => orderAlias) .Left.JoinAlias(() => orderAlias.OrderItems, () => orderItemAlias) .Left.JoinAlias(() => orderAlias.Client, () => counterpartyAlias) .Left.JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias) .Left.JoinAlias(() => counterpartyAlias.Phones, () => counterpartyPhoneAlias) .Left.JoinAlias(() => deliveryPointAlias.Phones, () => deliveryPointPhoneAlias) .Where( Restrictions.Or( Restrictions.In(Projections.Property(() => counterpartyPhoneAlias.DigitsNumber), phonesArray), Restrictions.In(Projections.Property(() => deliveryPointPhoneAlias.DigitsNumber), phonesArray) ) ) .Where(Restrictions.IsNotNull(Projections.Property(() => orderItemAlias.PromoSet))) .SelectList(list => list .SelectGroup(() => orderAlias.Id) .Select(() => orderAlias.DeliveryDate).WithAlias(() => resultAlias.Date) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Client) .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.Address) .Select(concatPhoneProjection).WithAlias(() => resultAlias.Phone) ).TransformUsing(Transformers.AliasToBean <PromosetDuplicateInfoNode>()) .List <PromosetDuplicateInfoNode>(); return(phoneResult); }
public override void UpdateNodes() { WorkingDriverVMNode resultAlias = null; Employee driverAlias = null; RouteList routeListAlias = null; Car carAlias = null; Domain.Orders.Order orderAlias = null; OrderItem ordItemsAlias = null; Nomenclature nomenclatureAlias = null; var completedSubquery = QueryOver.Of <RouteListItem>() .Where(i => i.RouteList.Id == routeListAlias.Id) .Where(i => i.Status != RouteListItemStatus.EnRoute) .Select(Projections.RowCount()); var addressesSubquery = QueryOver.Of <RouteListItem>() .Where(i => i.RouteList.Id == routeListAlias.Id) .Select(Projections.RowCount()); var uncompletedBottlesSubquery = QueryOver.Of <RouteListItem>() // Запрашивает количество ещё не доставленных бутылей. .Where(i => i.RouteList.Id == routeListAlias.Id) .Where(i => i.Status == RouteListItemStatus.EnRoute) .JoinAlias(rli => rli.Order, () => orderAlias) .JoinAlias(() => orderAlias.OrderItems, () => ordItemsAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => ordItemsAlias.Nomenclature, () => nomenclatureAlias) .Where(() => nomenclatureAlias.Category == NomenclatureCategory.water && nomenclatureAlias.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => ordItemsAlias.Count)); var isCompanyHavingProjection = Projections.Conditional(Restrictions.In(Projections.Property(() => carAlias.TypeOfUse), Car.GetCompanyHavingsTypes()), Projections.Constant(true), Projections.Constant(false)); var trackSubquery = QueryOver.Of <Track>() .Where(x => x.RouteList.Id == routeListAlias.Id) .Select(x => x.Id); var query = UoW.Session.QueryOver <RouteList>(() => routeListAlias); var result = query .JoinAlias(rl => rl.Driver, () => driverAlias) .JoinAlias(rl => rl.Car, () => carAlias) .Where(rl => rl.Status == RouteListStatus.EnRoute) .Where(rl => rl.Driver != null) .Where(rl => rl.Car != null) .SelectList(list => list .Select(() => driverAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => driverAlias.Name).WithAlias(() => resultAlias.Name) .Select(() => driverAlias.LastName).WithAlias(() => resultAlias.LastName) .Select(() => driverAlias.Patronymic).WithAlias(() => resultAlias.Patronymic) .Select(() => carAlias.RegistrationNumber).WithAlias(() => resultAlias.CarNumber) .Select(isCompanyHavingProjection).WithAlias(() => resultAlias.IsVodovozAuto) .Select(() => routeListAlias.Id).WithAlias(() => resultAlias.RouteListNumber) .SelectSubQuery(addressesSubquery).WithAlias(() => resultAlias.AddressesAll) .SelectSubQuery(completedSubquery).WithAlias(() => resultAlias.AddressesCompleted) .SelectSubQuery(trackSubquery).WithAlias(() => resultAlias.TrackId) .SelectSubQuery(uncompletedBottlesSubquery).WithAlias(() => resultAlias.BottlesLeft) ) .TransformUsing(Transformers.AliasToBean <WorkingDriverVMNode>()) .List <WorkingDriverVMNode>(); var summaryResult = new List <WorkingDriverVMNode>(); foreach (var driver in result.GroupBy(x => x.Id)) { var savedRow = driver.First(); savedRow.RouteListsText = String.Join("; ", driver.Select(x => x.TrackId != null ? String.Format("<span foreground=\"green\"><b>{0}</b></span>", x.RouteListNumber) : x.RouteListNumber.ToString())); savedRow.RouteListsIds = driver.ToDictionary(x => x.RouteListNumber, x => x.TrackId); savedRow.AddressesAll = driver.Sum(x => x.AddressesAll); savedRow.AddressesCompleted = driver.Sum(x => x.AddressesCompleted); summaryResult.Add(savedRow); } SetItemsSource(summaryResult.OrderBy(x => x.ShortName).ToList()); }
public override void UpdateNodes() { IncomingInvoice invoiceAlias = null; IncomingWater waterAlias = null; MovementDocument movementAlias = null; WriteoffDocument writeoffAlias = null; InventoryDocument inventoryAlias = null; ShiftChangeWarehouseDocument shiftchangeAlias = null; SelfDeliveryDocument selfDeliveryAlias = null; RegradingOfGoodsDocument regradingOfGoodsAlias = null; DocumentVMNode resultAlias = null; Counterparty counterpartyAlias = null; Counterparty secondCounterpartyAlias = null; Warehouse warehouseAlias = null; Warehouse secondWarehouseAlias = null; MovementWagon wagonAlias = null; Nomenclature productAlias = null; CarLoadDocument loadCarAlias = null; CarUnloadDocument unloadCarAlias = null; RouteList routeListAlias = null; Car carAlias = null; Employee driverAlias = null; Employee authorAlias = null; Employee lastEditorAlias = null; Domain.Orders.Order orderAlias = null; List <DocumentVMNode> result = new List <DocumentVMNode> (); if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.IncomingInvoice) && Filter.RestrictDriver == null) { var invoiceQuery = UoW.Session.QueryOver <IncomingInvoice>(() => invoiceAlias); if (Filter.RestrictWarehouse != null) { invoiceQuery.Where(x => x.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { invoiceQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { invoiceQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var invoiceList = invoiceQuery.JoinQueryOver(() => invoiceAlias.Contractor, () => counterpartyAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => invoiceAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => invoiceAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => invoiceAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => invoiceAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => invoiceAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => invoiceAlias.Comment).WithAlias(() => resultAlias.Comment) .Select(() => DocumentType.IncomingInvoice).WithAlias(() => resultAlias.DocTypeEnum) .Select(Projections.Conditional( Restrictions.Where(() => counterpartyAlias.Name == null), Projections.Constant("Не указан", NHibernateUtil.String), Projections.Property(() => counterpartyAlias.Name))) .WithAlias(() => resultAlias.Counterparty) .Select(Projections.Conditional( Restrictions.Where(() => warehouseAlias.Name == null), Projections.Constant("Не указан", NHibernateUtil.String), Projections.Property(() => warehouseAlias.Name))) .WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => invoiceAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime) ) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(invoiceList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.IncomingWater) && Filter.RestrictDriver == null) { var waterQuery = UoW.Session.QueryOver <IncomingWater>(() => waterAlias); if (Filter.RestrictWarehouse != null) { waterQuery.Where(x => x.IncomingWarehouse.Id == Filter.RestrictWarehouse.Id || x.WriteOffWarehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { waterQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { waterQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var waterList = waterQuery .JoinQueryOver(() => waterAlias.IncomingWarehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => waterAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => waterAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .Left.JoinAlias(() => waterAlias.Product, () => productAlias) .SelectList(list => list .Select(() => waterAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => waterAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.IncomingWater).WithAlias(() => resultAlias.DocTypeEnum) .Select(Projections.Conditional( Restrictions.Where(() => warehouseAlias.Name == null), Projections.Constant("Не указан", NHibernateUtil.String), Projections.Property(() => warehouseAlias.Name))) .WithAlias(() => resultAlias.Warehouse) .Select(() => productAlias.Name).WithAlias(() => resultAlias.ProductName) .Select(() => waterAlias.Amount).WithAlias(() => resultAlias.Amount) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => waterAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(waterList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.MovementDocument) && Filter.RestrictDriver == null) { var movementQuery = UoW.Session.QueryOver <MovementDocument>(() => movementAlias); if (Filter.RestrictWarehouse != null) { movementQuery.Where(x => x.FromWarehouse.Id == Filter.RestrictWarehouse.Id || x.ToWarehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { movementQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { movementQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } if (Filter.RestrictMovementStatus.HasValue && Filter.RestrictDocumentType == DocumentType.MovementDocument) { movementQuery.Where(o => o.Status == Filter.RestrictMovementStatus.Value); } var movementList = movementQuery .JoinQueryOver(() => movementAlias.FromWarehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => movementAlias.ToWarehouse, () => secondWarehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => movementAlias.MovementWagon, () => wagonAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => movementAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => movementAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => movementAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => movementAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.MovementDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => movementAlias.Status).WithAlias(() => resultAlias.MovementDocumentStatus) .Select(() => movementAlias.HasDiscrepancy).WithAlias(() => resultAlias.MovementDocumentDiscrepancy) .Select(() => wagonAlias.Name).WithAlias(() => resultAlias.CarNumber) .Select(Projections.Conditional( Restrictions.Where(() => warehouseAlias.Name == null), Projections.Constant("Не указан", NHibernateUtil.String), Projections.Property(() => warehouseAlias.Name))) .WithAlias(() => resultAlias.Warehouse) .Select(Projections.Conditional( Restrictions.Where(() => secondWarehouseAlias.Name == null), Projections.Constant("Не указан", NHibernateUtil.String), Projections.Property(() => secondWarehouseAlias.Name))) .WithAlias(() => resultAlias.SecondWarehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => movementAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(movementList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.WriteoffDocument) && Filter.RestrictDriver == null) { var writeoffQuery = UoW.Session.QueryOver <WriteoffDocument>(() => writeoffAlias); if (Filter.RestrictWarehouse != null) { writeoffQuery.Where(x => x.WriteoffWarehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { writeoffQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { writeoffQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var writeoffList = writeoffQuery .JoinQueryOver(() => writeoffAlias.Client, () => counterpartyAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => writeoffAlias.WriteoffWarehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => writeoffAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => writeoffAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => writeoffAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => writeoffAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.WriteoffDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(Projections.Conditional( Restrictions.Where(() => counterpartyAlias.Name == null), Projections.Constant(string.Empty, NHibernateUtil.String), Projections.Property(() => counterpartyAlias.Name))) .WithAlias(() => resultAlias.Counterparty) .Select(Projections.Conditional( Restrictions.Where(() => warehouseAlias.Name == null), Projections.Constant(string.Empty, NHibernateUtil.String), Projections.Property(() => warehouseAlias.Name))) .WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => writeoffAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(writeoffList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.InventoryDocument) && Filter.RestrictDriver == null) { var inventoryQuery = UoW.Session.QueryOver <InventoryDocument>(() => inventoryAlias); if (Filter.RestrictWarehouse != null) { inventoryQuery.Where(x => x.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { inventoryQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { inventoryQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var inventoryList = inventoryQuery .JoinQueryOver(() => inventoryAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => inventoryAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => inventoryAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => inventoryAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => inventoryAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.InventoryDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => inventoryAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(inventoryList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.ShiftChangeDocument) && Filter.RestrictDriver == null) { var shiftchangeQuery = UoW.Session.QueryOver <ShiftChangeWarehouseDocument>(() => shiftchangeAlias); if (Filter.RestrictWarehouse != null) { shiftchangeQuery.Where(x => x.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { shiftchangeQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { shiftchangeQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var shiftchangeList = shiftchangeQuery .JoinQueryOver(() => shiftchangeAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => shiftchangeAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => shiftchangeAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => shiftchangeAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => shiftchangeAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.ShiftChangeDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => shiftchangeAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode>()) .List <DocumentVMNode>(); result.AddRange(shiftchangeList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.RegradingOfGoodsDocument) && Filter.RestrictDriver == null) { var regrandingQuery = UoW.Session.QueryOver <RegradingOfGoodsDocument>(() => regradingOfGoodsAlias); if (Filter.RestrictWarehouse != null) { regrandingQuery.Where(x => x.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { regrandingQuery.Where(o => o.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { regrandingQuery.Where(o => o.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var regrandingList = regrandingQuery .JoinQueryOver(() => regradingOfGoodsAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => regradingOfGoodsAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => regradingOfGoodsAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => regradingOfGoodsAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => regradingOfGoodsAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.RegradingOfGoodsDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => regradingOfGoodsAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(regrandingList); } if ((Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.SelfDeliveryDocument) && Filter.RestrictDriver == null) { var selfDeliveryQuery = UoW.Session.QueryOver <SelfDeliveryDocument>(() => selfDeliveryAlias) .JoinQueryOver(() => selfDeliveryAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => selfDeliveryAlias.Order, () => orderAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => orderAlias.Client, () => counterpartyAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin); if (Filter.RestrictWarehouse != null) { selfDeliveryQuery.Where(() => selfDeliveryAlias.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { selfDeliveryQuery.Where(() => selfDeliveryAlias.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { selfDeliveryQuery.Where(() => selfDeliveryAlias.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } var selfDeliveryList = selfDeliveryQuery .JoinAlias(() => selfDeliveryAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => selfDeliveryAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => selfDeliveryAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => orderAlias.Id).WithAlias(() => resultAlias.OrderId) .Select(() => selfDeliveryAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.SelfDeliveryDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Counterparty) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => selfDeliveryAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(selfDeliveryList); } if (Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.CarLoadDocument) { var carLoadQuery = UoW.Session.QueryOver <CarLoadDocument>(() => loadCarAlias) .JoinQueryOver(() => loadCarAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => loadCarAlias.RouteList, () => routeListAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => routeListAlias.Car, () => carAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => routeListAlias.Driver, () => driverAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin); if (Filter.RestrictWarehouse != null) { carLoadQuery.Where(() => loadCarAlias.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { carLoadQuery.Where(() => loadCarAlias.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { carLoadQuery.Where(() => loadCarAlias.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } if (Filter.RestrictDriver != null) { carLoadQuery.Where(() => routeListAlias.Driver.Id == Filter.RestrictDriver.Id); } var carLoadList = carLoadQuery .JoinAlias(() => loadCarAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => loadCarAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => loadCarAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => loadCarAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.CarLoadDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => carAlias.Model).WithAlias(() => resultAlias.CarModel) .Select(() => carAlias.RegistrationNumber).WithAlias(() => resultAlias.CarNumber) .Select(() => driverAlias.LastName).WithAlias(() => resultAlias.DirverSurname) .Select(() => driverAlias.Name).WithAlias(() => resultAlias.DirverName) .Select(() => driverAlias.Patronymic).WithAlias(() => resultAlias.DirverPatronymic) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => routeListAlias.Id).WithAlias(() => resultAlias.RouteListId) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => loadCarAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(carLoadList); } if (Filter.RestrictDocumentType == null || Filter.RestrictDocumentType == DocumentType.CarUnloadDocument) { var carUnloadQuery = UoW.Session.QueryOver <CarUnloadDocument>(() => unloadCarAlias) .JoinQueryOver(() => unloadCarAlias.Warehouse, () => warehouseAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => unloadCarAlias.RouteList, () => routeListAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => routeListAlias.Car, () => carAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinQueryOver(() => routeListAlias.Driver, () => driverAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin); if (Filter.RestrictWarehouse != null) { carUnloadQuery.Where(() => unloadCarAlias.Warehouse.Id == Filter.RestrictWarehouse.Id); } if (Filter.RestrictStartDate.HasValue) { carUnloadQuery.Where(() => unloadCarAlias.TimeStamp >= Filter.RestrictStartDate.Value); } if (Filter.RestrictEndDate.HasValue) { carUnloadQuery.Where(() => unloadCarAlias.TimeStamp < Filter.RestrictEndDate.Value.AddDays(1)); } if (Filter.RestrictDriver != null) { carUnloadQuery.Where(() => routeListAlias.Driver.Id == Filter.RestrictDriver.Id); } var carUnloadList = carUnloadQuery .JoinAlias(() => unloadCarAlias.Author, () => authorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .JoinAlias(() => unloadCarAlias.LastEditor, () => lastEditorAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin) .SelectList(list => list .Select(() => unloadCarAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => unloadCarAlias.TimeStamp).WithAlias(() => resultAlias.Date) .Select(() => DocumentType.CarUnloadDocument).WithAlias(() => resultAlias.DocTypeEnum) .Select(() => carAlias.Model).WithAlias(() => resultAlias.CarModel) .Select(() => carAlias.RegistrationNumber).WithAlias(() => resultAlias.CarNumber) .Select(() => driverAlias.LastName).WithAlias(() => resultAlias.DirverSurname) .Select(() => driverAlias.Name).WithAlias(() => resultAlias.DirverName) .Select(() => driverAlias.Patronymic).WithAlias(() => resultAlias.DirverPatronymic) .Select(() => warehouseAlias.Name).WithAlias(() => resultAlias.Warehouse) .Select(() => routeListAlias.Id).WithAlias(() => resultAlias.RouteListId) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorSurname) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorSurname) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => unloadCarAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime)) .TransformUsing(Transformers.AliasToBean <DocumentVMNode> ()) .List <DocumentVMNode> (); result.AddRange(carUnloadList); } result.Sort((x, y) => { if (x.Date < y.Date) { return(1); } if (x.Date == y.Date) { return(0); } return(-1); }); SetItemsSource(result); }
public IList <object[]> GetGuilties(UndeliveredOrdersFilterViewModel filter) { OrderItem orderItemAlias = null; Nomenclature nomenclatureAlias = null; UndeliveredOrder undeliveredOrderAlias = null; Domain.Orders.Order oldOrderAlias = null; Domain.Orders.Order newOrderAlias = null; Employee oldOrderAuthorAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint undeliveredOrderDeliveryPointAlias = null; Subdivision subdivisionAlias = null; GuiltyInUndelivery guiltyInUndeliveryAlias = null; Employee authorAlias = null; var subquery19LWatterQty = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderItemAlias.Order.Id == oldOrderAlias.Id) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Where(n => n.Category == NomenclatureCategory.water && n.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => orderItemAlias.Count)); var query = _uow.Session.QueryOver <UndeliveredOrder>(() => undeliveredOrderAlias) .Left.JoinAlias(u => u.OldOrder, () => oldOrderAlias) .Left.JoinAlias(u => u.NewOrder, () => newOrderAlias) .Left.JoinAlias(() => oldOrderAlias.Client, () => counterpartyAlias) .Left.JoinAlias(() => oldOrderAlias.Author, () => oldOrderAuthorAlias) .Left.JoinAlias(() => oldOrderAlias.DeliveryPoint, () => undeliveredOrderDeliveryPointAlias) .Left.JoinAlias(() => undeliveredOrderAlias.GuiltyInUndelivery, () => guiltyInUndeliveryAlias) .Left.JoinAlias(() => guiltyInUndeliveryAlias.GuiltyDepartment, () => subdivisionAlias) .Left.JoinAlias(u => u.Author, () => authorAlias); if (filter?.RestrictDriver != null) { var oldOrderIds = _undeliveredOrdersRepository.GetListOfUndeliveryIdsForDriver(_uow, filter.RestrictDriver); query.Where(() => oldOrderAlias.Id.IsIn(oldOrderIds.ToArray())); } if (filter?.RestrictOldOrder != null) { query.Where(() => oldOrderAlias.Id == filter.RestrictOldOrder.Id); } if (filter?.RestrictClient != null) { query.Where(() => counterpartyAlias.Id == filter.RestrictClient.Id); } if (filter?.RestrictAddress != null) { query.Where(() => undeliveredOrderDeliveryPointAlias.Id == filter.RestrictAddress.Id); } if (filter?.RestrictOldOrderAuthor != null) { query.Where(() => oldOrderAuthorAlias.Id == filter.RestrictOldOrderAuthor.Id); } if (filter?.RestrictOldOrderStartDate != null) { query.Where(() => oldOrderAlias.DeliveryDate >= filter.RestrictOldOrderStartDate); } if (filter?.RestrictOldOrderEndDate != null) { query.Where(() => oldOrderAlias.DeliveryDate <= filter.RestrictOldOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (filter?.RestrictNewOrderStartDate != null) { query.Where(() => newOrderAlias.DeliveryDate >= filter.RestrictNewOrderStartDate); } if (filter?.RestrictNewOrderEndDate != null) { query.Where(() => newOrderAlias.DeliveryDate <= filter.RestrictNewOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (filter?.RestrictGuiltySide != null) { query.Where(() => guiltyInUndeliveryAlias.GuiltySide == filter.RestrictGuiltySide); } if (filter != null && filter.RestrictIsProblematicCases) { query.Where(() => !guiltyInUndeliveryAlias.GuiltySide.IsIn(filter.ExcludingGuiltiesForProblematicCases)); } if (filter?.RestrictGuiltyDepartment != null) { query.Where(() => subdivisionAlias.Id == filter.RestrictGuiltyDepartment.Id); } if (filter?.RestrictInProcessAtDepartment != null) { query.Where(u => u.InProcessAtDepartment.Id == filter.RestrictInProcessAtDepartment.Id); } if (filter?.NewInvoiceCreated != null) { if (filter.NewInvoiceCreated.Value) { query.Where(u => u.NewOrder != null); } else { query.Where(u => u.NewOrder == null); } } if (filter?.RestrictUndeliveryStatus != null) { query.Where(u => u.UndeliveryStatus == filter.RestrictUndeliveryStatus); } if (filter?.RestrictUndeliveryAuthor != null) { query.Where(u => u.Author == filter.RestrictUndeliveryAuthor); } if (filter?.RestrictAuthorSubdivision != null) { query.Where(() => authorAlias.Subdivision.Id == filter.RestrictAuthorSubdivision.Id); } int position = 0; var result = query.SelectList(list => list .SelectGroup(u => u.Id) .Select(Projections.SqlFunction( new SQLFunctionTemplate( NHibernateUtil.String, "GROUP_CONCAT(" + "CASE ?1 " + $"WHEN '{nameof(GuiltyTypes.Department)}' THEN IFNULL(CONCAT('Отд: ', ?2), 'Отдел ВВ') " + $"WHEN '{nameof(GuiltyTypes.Client)}' THEN 'Клиент' " + $"WHEN '{nameof(GuiltyTypes.Driver)}' THEN 'Водитель' " + $"WHEN '{nameof(GuiltyTypes.ServiceMan)}' THEN 'Мастер СЦ' " + $"WHEN '{nameof(GuiltyTypes.ForceMajor)}' THEN 'Форс-мажор' " + $"WHEN '{nameof(GuiltyTypes.None)}' THEN 'Нет (не недовоз)' " + "ELSE ?1 " + "END ORDER BY ?1 ASC SEPARATOR '\n')" ), NHibernateUtil.String, Projections.Property(() => guiltyInUndeliveryAlias.GuiltySide), Projections.Property(() => subdivisionAlias.ShortName))) .SelectSubQuery(subquery19LWatterQty)) .List <object[]>() .GroupBy(x => x[1]) .Select(r => new[] { r.Key, r.Count(), position++, r.Sum(x => x[2] == null ? 0 : (decimal)x[2]) }) .ToList(); return(result); }
public OrderDTO ToDTO(Domain.Orders.Order order) { return(new OrderDTO(order.ID, orderItemMapper.ToItemGroupDTO(order.ItemGroups), order.TotalPrice, order.CustomerID));; }