private IList <FastDeliverySalesReportRow> GenerateReportRows() { if (!IsHasDates) { return(new List <FastDeliverySalesReportRow>()); } RouteList routeListAlias = null; RouteListItem routeListItemAlias = null; Order orderAlias = null; OrderItem orderItemAlias = null; Nomenclature nomenclatureAlias = null; DeliverySchedule deliveryScheduleAlias = null; Employee driverAlias = null; DeliveryPoint deliveryPointAlias = null; District districtAlias = null; FastDeliverySalesReportRow resultAlias = null; var itemsQuery = UoW.Session.QueryOver(() => orderItemAlias) .JoinAlias(() => orderItemAlias.Order, () => orderAlias) .JoinEntityAlias(() => routeListItemAlias, () => routeListItemAlias.Order.Id == orderAlias.Id) .JoinAlias(() => routeListItemAlias.RouteList, () => routeListAlias) .JoinAlias(() => routeListAlias.Driver, () => driverAlias) .JoinAlias(() => orderItemAlias.Nomenclature, () => nomenclatureAlias) .JoinAlias(() => orderAlias.DeliveryPoint, () => deliveryPointAlias) .JoinAlias(() => orderAlias.DeliverySchedule, () => deliveryScheduleAlias) .JoinAlias(() => deliveryPointAlias.District, () => districtAlias) .Where(() => orderAlias.IsFastDelivery) .And(() => orderAlias.CreateDate >= CreateDateFrom.Value.Date && orderAlias.CreateDate <= CreateDateTo.Value.Date.Add(new TimeSpan(0, 23, 59, 59))); var amountPrjection = Projections.Conditional(Restrictions.IsNull( Projections.Property(() => orderItemAlias.ActualCount)), Projections.Property(() => orderItemAlias.Count), Projections.Property(() => orderItemAlias.ActualCount)); var sumProjection = Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Decimal, "(?1 * ?2 - ?3)"), NHibernateUtil.Decimal, Projections.Property(() => orderItemAlias.Price), amountPrjection, Projections.Property(() => orderItemAlias.DiscountMoney)); return(itemsQuery .SelectList(list => list .Select(() => orderAlias.Id).WithAlias(() => resultAlias.OrderId) .Select(() => orderAlias.CreateDate).WithAlias(() => resultAlias.OrderCreateDateTime) .Select(() => routeListItemAlias.RouteList.Id).WithAlias(() => resultAlias.RouteListId) .Select(() => driverAlias.LastName).WithAlias(() => resultAlias.DriverLastName) .Select(() => driverAlias.Name).WithAlias(() => resultAlias.DriverName) .Select(() => driverAlias.Patronymic).WithAlias(() => resultAlias.DriverPatronymic) .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.District) .Select(() => orderAlias.TimeDelivered).WithAlias(() => resultAlias.DeliveredDateTime) .Select(() => nomenclatureAlias.Name).WithAlias(() => resultAlias.Nomenclature) .Select(amountPrjection).WithAlias(() => resultAlias.Amount) .Select(sumProjection).WithAlias(() => resultAlias.Sum) ).OrderBy(() => orderAlias.CreateDate).Desc .TransformUsing(Transformers.AliasToBean <FastDeliverySalesReportRow>()) .List <FastDeliverySalesReportRow>()); }
public void OptimizeDeliveries(IJobCancellationToken canellationToken, OptimizeDeliveriesRequest optimizeDeliveriesRequest) { var request = GetRequest(optimizeDeliveriesRequest.RequestID); var customers = GetCustomers(request); var deliveries = GetDeliveries(request); var drivers = GetDrivers(request); var optimizedDeliveryScheduleEntries = new List <DeliveryScheduleEntry>(); var deliverySchedule = new DeliverySchedule() { OptimizationRecurringJobID = optimizeDeliveriesRequest.RequestID, ScheduleDate = optimizeDeliveriesRequest.ScheduleDate }; _uof.DeliverySchedules.Add(deliverySchedule); request.Status = RequestStatus.Processing; _uof.SaveChanges(); var deliveryNo = 0; try { foreach (var c in customers) { canellationToken.ThrowIfCancellationRequested(); var customerDistanceFromWareHouse = GetCustomerDistanceFromWareHouse(c); deliveryNo = 0; foreach (var d in deliveries.Where(d => d.CustomerID == c.ID)) { var idealDriver = GetIdealDriver(drivers, d.TransportType, customerDistanceFromWareHouse); deliveryNo++; if (idealDriver != null) { optimizedDeliveryScheduleEntries.Add(new DeliveryScheduleEntry() { CustomerID = c.ID, DriverName = idealDriver.DriverName, DeliveryScheduleID = deliverySchedule.ID, PackageID = d.ID, TransportType = d.TransportType, EstimatedTime = deliverySchedule.ScheduleDate.AddHours(deliveryNo), ID = deliveryNo }); } } } request.Status = RequestStatus.Scheduled; _uof.DeliveryScheduleEntries.AddRange(optimizedDeliveryScheduleEntries); _uof.SaveChanges(); } catch (OperationCanceledException ex) { request.Status = RequestStatus.Failed; _uof.SaveChanges(); Debug.Print("OperationCanceledException Thrown"); Debug.Print(ex.Message); } }
public ActionResult Edit(DeliverySchedule DeliveryScheduleEdit) { if (ModelState.IsValid) { _uof.DeliverySchedules.Update(DeliveryScheduleEdit); _uof.SaveChanges(); return(RedirectToAction("Index")); } return(View(DeliveryScheduleEdit)); }
public ActionResult Create(DeliverySchedule newDeliverySchedules) { if (ModelState.IsValid) { _uof.DeliverySchedules.Add(newDeliverySchedules); _uof.SaveChanges(); return(RedirectToAction("Index")); } return(View(newDeliverySchedules)); }
public DeliveryRulesService( IDeliveryRepository deliveryRepository, IBackupDistrictService backupDistrictService, IDeliveryRulesParametersProvider deliveryRulesParametersProvider) { _deliveryRepository = deliveryRepository ?? throw new ArgumentNullException(nameof(deliveryRepository)); _backupDistrictService = backupDistrictService ?? throw new ArgumentNullException(nameof(backupDistrictService)); _deliveryRulesParametersProvider = deliveryRulesParametersProvider ?? throw new ArgumentNullException(nameof(deliveryRulesParametersProvider)); using (var uow = UnitOfWorkFactory.CreateWithoutRoot("Получение графика быстрой доставки")) { _fastDeliverySchedule = uow.GetById <DeliverySchedule>(deliveryRulesParametersProvider.FastDeliveryScheduleId); } }
private async Task <DeliverySchedule> GetDeliveryDateAsync() { var deliverySchedule = new DeliverySchedule(); using (var httpClient = new HttpClient()) { var deliveryApiUri = Settings.GetDeliveryApiUri(); var url = string.Format("{0}delivery/1", deliveryApiUri); var response = await httpClient.GetStringAsync(new Uri(url)); deliverySchedule = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <DeliverySchedule>(response)); } return(deliverySchedule); }
public IList <NotFullyPaidOrderNode> GetAllNotFullyPaidOrdersByClientAndOrg( IUnitOfWork uow, int counterpartyId, int organizationId, int closingDocumentDeliveryScheduleId) { VodovozOrder orderAlias = null; OrderItem orderItemAlias = null; PaymentItem paymentItemAlias = null; CounterpartyContract counterpartyContractAlias = null; Organization orderOrganizationAlias = null; DeliverySchedule deliveryScheduleAlias = null; CashlessMovementOperation cashlessMovementOperationAlias = null; NotFullyPaidOrderNode resultAlias = null; var orderSumProjection = GetOrderSumProjection(orderItemAlias); var allocatedSumProjection = QueryOver.Of(() => paymentItemAlias) .JoinAlias(pi => pi.CashlessMovementOperation, () => cashlessMovementOperationAlias) .Where(pi => pi.Order.Id == orderAlias.Id) .Where(pi => pi.PaymentItemStatus != AllocationStatus.Cancelled) .Select(Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Decimal, "IFNULL(?1, ?2)"), NHibernateUtil.Decimal, Projections.Sum(() => cashlessMovementOperationAlias.Expense), Projections.Constant(0))); return(uow.Session.QueryOver(() => orderAlias) .Inner.JoinAlias(o => o.OrderItems, () => orderItemAlias) .Inner.JoinAlias(o => o.Contract, () => counterpartyContractAlias) .Inner.JoinAlias(() => counterpartyContractAlias.Organization, () => orderOrganizationAlias) .Inner.JoinAlias(o => o.DeliverySchedule, () => deliveryScheduleAlias) .Where(() => orderAlias.Client.Id == counterpartyId) .And(() => orderOrganizationAlias.Id == organizationId) .And(() => orderAlias.OrderStatus == OrderStatus.Shipped || orderAlias.OrderStatus == OrderStatus.UnloadingOnStock || orderAlias.OrderStatus == OrderStatus.Closed) .And(() => orderAlias.PaymentType == PaymentType.cashless) .And(() => orderAlias.OrderPaymentStatus != OrderPaymentStatus.Paid) .And(() => deliveryScheduleAlias.Id != closingDocumentDeliveryScheduleId) .SelectList(list => list.SelectGroup(o => o.Id).WithAlias(() => resultAlias.Id) .Select(o => o.DeliveryDate).WithAlias(() => resultAlias.OrderDeliveryDate) .Select(o => o.CreateDate).WithAlias(() => resultAlias.OrderCreationDate) .Select(orderSumProjection).WithAlias(() => resultAlias.OrderSum) .SelectSubQuery(allocatedSumProjection).WithAlias(() => resultAlias.AllocatedSum)) .Where(Restrictions.Gt(orderSumProjection, 0)) .TransformUsing(Transformers.AliasToBean <NotFullyPaidOrderNode>()) .OrderBy(o => o.DeliveryDate).Asc .OrderBy(o => o.CreateDate).Asc .List <NotFullyPaidOrderNode>()); }
private DeliverySchedule CreateDeliverySchedule(Delivery deliveryRequest, string droneId) { DeliverySchedule scheduleDelivery = new DeliverySchedule { Id = deliveryRequest.DeliveryId, Owner = new UserAccount { AccountId = Guid.NewGuid().ToString(), UserId = deliveryRequest.OwnerId }, Pickup = LocationRandomizer.GetRandomLocation(), Dropoff = LocationRandomizer.GetRandomLocation(), Deadline = deliveryRequest.Deadline, Expedited = deliveryRequest.Expedited, ConfirmationRequired = (ConfirmationType)deliveryRequest.ConfirmationRequired, DroneId = droneId, }; return(scheduleDelivery); }
public void OptimizeDeliveries(OptimizeDeliveriesRequest optimizeDeliveriesRequest) { var request = GetRequest(optimizeDeliveriesRequest.RequestID); var customers = GetCustomers(request); var deliveries = GetDeliveries(request); var drivers = GetDrivers(request); var optimizedDeliveryScheduleEntries = new List <DeliveryScheduleEntry>(); var deliverySchedule = new DeliverySchedule() { OptimizationRecurringJobID = optimizeDeliveriesRequest.RequestID, ScheduleDate = optimizeDeliveriesRequest.ScheduleDate }; _uof.DeliverySchedules.Add(deliverySchedule); request.Status = RequestStatus.Processing; _uof.SaveChanges(); var deliveryNo = 0; foreach (var c in customers) { var customerDistanceFromWareHouse = GetCustomerDistanceFromWareHouse(c); deliveryNo = 0; foreach (var d in deliveries.Where(d => d.CustomerID == c.ID)) { var idealDriver = GetIdealDriver(drivers, d.TransportType, customerDistanceFromWareHouse); deliveryNo++; if (idealDriver != null) { optimizedDeliveryScheduleEntries.Add(new DeliveryScheduleEntry() { CustomerID = c.ID, DriverName = idealDriver.DriverName, DeliveryScheduleID = deliverySchedule.ID, PackageID = d.ID, TransportType = d.TransportType, EstimatedTime = deliverySchedule.ScheduleDate.AddHours(deliveryNo), ID = deliveryNo }); } } } //throw new Exception("Some Job ending error"); request.Status = RequestStatus.Scheduled; _uof.DeliveryScheduleEntries.AddRange(optimizedDeliveryScheduleEntries); _uof.SaveChanges(); }
public async Task WhenSchedulingDelivery_ThenInvokesDeliveryAPI() { string actualDeliveryId = null; DeliverySchedule actualDeliverySchedule = null; _handleHttpRequest = ctx => { if (ctx.Request.Path.Value.StartsWith(DeliveryPath)) { actualDeliveryId = ctx.Request.Path; actualDeliverySchedule = new JsonSerializer().Deserialize <DeliverySchedule>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); ctx.Response.StatusCode = StatusCodes.Status201Created; } else { ctx.Response.StatusCode = StatusCodes.Status500InternalServerError; } return(Task.CompletedTask); }; var delivery = new Delivery { DeliveryId = "someDeliveryId", PackageInfo = new PackageInfo { PackageId = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d } }; await _caller.ScheduleDeliveryAsync(delivery, "someDroneId"); Assert.NotNull(actualDeliveryId); Assert.Equal($"{DeliveryPath}/api/deliveries/{delivery.DeliveryId}", actualDeliveryId); Assert.NotNull(actualDeliverySchedule); Assert.Equal(delivery.DeliveryId, actualDeliverySchedule.Id); Assert.Equal((int)delivery.ConfirmationRequired, (int)actualDeliverySchedule.ConfirmationRequired); Assert.Equal(delivery.Expedited, actualDeliverySchedule.Expedited); Assert.Equal(delivery.OwnerId, actualDeliverySchedule.Owner.UserId); Assert.Equal("someDroneId", actualDeliverySchedule.DroneId); }
public async Task ScheduleDelivery(IDialogContext context, LuisResult result) { EntityRecommendation deliveryDate; if (result.TryFindEntity(EntityDateTime, out deliveryDate)) { var dateparser = new Chronic.Parser(); var datetime = dateparser.Parse(deliveryDate.Entity).ToTime(); var schedule = new DeliverySchedule() { Id = 1, DeliveryDate = datetime }; await UpdateDeliveryDateAsync(schedule); string resultMessage = $"We'll schedule a delivery date for {datetime.ToLongDateString()}"; await context.PostAsync(resultMessage); } }
private async Task <DeliverySchedule> UpdateDeliveryDateAsync(DeliverySchedule schedule) { using (var httpClient = new HttpClient()) { var deliveryApiUri = Settings.GetDeliveryApiUri(); var url = string.Format("{0}delivery/1", deliveryApiUri); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Put, "relativeAddress"); request.Content = new StringContent(JsonConvert.SerializeObject(schedule), Encoding.UTF8, "application/json"); httpClient.BaseAddress = new Uri(url); await httpClient.SendAsync(request) .ContinueWith(responseTask => { Console.WriteLine("Response: {0}", responseTask.Result); }); } return(schedule); }
public void TestSetup() { DeliveryFactory deliveryFactory = new DeliveryFactoryImpl(); // Create some local deliveries var localDeliveryList = new List <Delivery>(); localDeliveryList.Add(deliveryFactory.CreateDelivery(10)); localDeliveryList.Add(deliveryFactory.CreateDelivery(20)); localDeliveryList.Add(deliveryFactory.CreateDelivery(30)); localDeliveryList.Add(deliveryFactory.CreateDelivery(40)); localDeliveryList.Add(deliveryFactory.CreateDelivery(50)); localDeliverySchedule = new DeliverySchedule(localDeliveryList); // Create some long distance deliveries var longDistanceDeliveryList = new List <Delivery>(); longDistanceDeliveryList.Add(deliveryFactory.CreateDelivery(101)); longDistanceDeliveryList.Add(deliveryFactory.CreateDelivery(200)); longDistanceDeliveryList.Add(deliveryFactory.CreateDelivery(300)); longDistanceDeliveryList.Add(deliveryFactory.CreateDelivery(400)); longDistanceDeliveryList.Add(deliveryFactory.CreateDelivery(500)); longDistanceDeliverySchedule = new DeliverySchedule(longDistanceDeliveryList); }
/// <summary> /// Run the code example. /// </summary> /// <param name="service">An initialized Dfa Reporting service object /// </param> public override void Run(DfareportingService service) { long campaignId = long.Parse(_T("INSERT_CAMPAIGN_ID_HERE")); long creativeId = long.Parse(_T("INSERT_CREATIVE_ID_HERE")); long placementId = long.Parse(_T("INSERT_PLACEMENT_ID_HERE")); long profileId = long.Parse(_T("INSERT_PROFILE_ID_HERE")); String adName = _T("INSERT_AD_NAME_HERE"); // Retrieve the campaign. Campaign campaign = service.Campaigns.Get(profileId, campaignId).Execute(); // Create a click-through URL. ClickThroughUrl clickThroughUrl = new ClickThroughUrl(); clickThroughUrl.DefaultLandingPage = true; // Create a creative assignment. CreativeAssignment creativeAssignment = new CreativeAssignment(); creativeAssignment.Active = true; creativeAssignment.CreativeId = creativeId; creativeAssignment.ClickThroughUrl = clickThroughUrl; // Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.Active = true; placementAssignment.PlacementId = placementId; // Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.CreativeAssignments = new List<CreativeAssignment>() { creativeAssignment }; // Create a delivery schedule. DeliverySchedule deliverySchedule = new DeliverySchedule(); deliverySchedule.ImpressionRatio = 1; deliverySchedule.Priority = "AD_PRIORITY_01"; DateTime startDate = DateTime.Now; DateTime endDate = Convert.ToDateTime(campaign.EndDate); // Create a rotation group. Ad rotationGroup = new Ad(); rotationGroup.Active = true; rotationGroup.CampaignId = campaignId; rotationGroup.CreativeRotation = creativeRotation; rotationGroup.DeliverySchedule = deliverySchedule; rotationGroup.StartTime = startDate; rotationGroup.EndTime = endDate; rotationGroup.Name = adName; rotationGroup.PlacementAssignments = new List<PlacementAssignment>() { placementAssignment }; rotationGroup.Type = "AD_SERVING_STANDARD_AD"; // Insert the rotation group. Ad result = service.Ads.Insert(rotationGroup, profileId).Execute(); // Display the new ad ID. Console.WriteLine("Ad with ID {0} was created.", result.Id); }
public ActionResult Create() { var DeliverySchedule = new DeliverySchedule(); return(View(DeliverySchedule)); }
public void OptimizeDeliveries(IJobCancellationToken canellationToken, OptimizeDeliveriesRequest optimizeDeliveriesRequest) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Optimization Deliveries started for requestId {0}", optimizeDeliveriesRequest.RequestID); Console.ResetColor(); var request = GetRequest(optimizeDeliveriesRequest.RequestID); var deliverySchedule = new DeliverySchedule() { OptimizationRecurringJobID = optimizeDeliveriesRequest.RequestID, ScheduleDate = optimizeDeliveriesRequest.ScheduleDate }; try { var customers = GetCustomers(request); var deliveries = GetDeliveries(request); var drivers = GetDrivers(request); var optimizedDeliveryScheduleEntries = new List <DeliveryScheduleEntry>(); _uof.DeliverySchedules.Add(deliverySchedule); request.Status = RequestStatus.Processing; _uof.SaveChanges(); var deliveryNo = 0; foreach (var c in customers) { canellationToken.ThrowIfCancellationRequested(); var customerDistanceFromWareHouse = GetCustomerDistanceFromWareHouse(c); deliveryNo = 0; foreach (var d in deliveries.Where(d => d.CustomerID == c.ID)) { var idealDriver = GetIdealDriver(drivers, d.TransportType, customerDistanceFromWareHouse); deliveryNo++; if (idealDriver != null) { optimizedDeliveryScheduleEntries.Add(new DeliveryScheduleEntry() { CustomerID = c.ID, DriverName = idealDriver.DriverName, DeliveryScheduleID = deliverySchedule.ID, PackageID = d.ID, TransportType = d.TransportType, EstimatedTime = deliverySchedule.ScheduleDate.AddHours(deliveryNo), ID = deliveryNo }); } } } //throw new Exception("Fake Error"); _uof.DeliveryScheduleEntries.AddRange(optimizedDeliveryScheduleEntries); _uof.SaveChanges(); OptimizeDeliveriesComplete(request.ID); } catch (OperationCanceledException ex) { _uof.DeliverySchedules.Remove(deliverySchedule); request.Status = RequestStatus.Stopped; _uof.SaveChanges(); } catch (Exception ex) { _uof.DeliverySchedules.Remove(deliverySchedule); request.Status = RequestStatus.Failed; _uof.SaveChanges(); } }
private IQueryOver <VodovozOrder> GetOrdersQuery(IUnitOfWork uow) { RetailOrderJournalNode resultAlias = null; VodovozOrder orderAlias = null; Nomenclature nomenclatureAlias = null; OrderItem orderItemAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint deliveryPointAlias = null; DeliverySchedule deliveryScheduleAlias = null; Employee authorAlias = null; Employee lastEditorAlias = null; District districtAlias = null; CounterpartyContract contractAlias = null; Nomenclature sanitizationNomenclature = _nomenclatureRepository.GetSanitisationNomenclature(uow); var query = uow.Session.QueryOver <VodovozOrder>(() => orderAlias); if (FilterViewModel != null && FilterViewModel.IsForRetail != null) { query.JoinEntityAlias( () => counterpartyAlias, () => counterpartyAlias.Id == orderAlias.Client.Id && counterpartyAlias.IsForRetail == FilterViewModel.IsForRetail, NHibernate.SqlCommand.JoinType.InnerJoin); } else { query.Left.JoinAlias(o => o.Client, () => counterpartyAlias); } if (FilterViewModel.ViewTypes != ViewTypes.Order && FilterViewModel.ViewTypes != ViewTypes.All) { query.Where(o => o.Id == -1); } if (FilterViewModel.RestrictStatus != null) { query.Where(o => o.OrderStatus == FilterViewModel.RestrictStatus); } if (FilterViewModel.RestrictPaymentType != null) { query.Where(o => o.PaymentType == FilterViewModel.RestrictPaymentType); } if (FilterViewModel.HideStatuses != null) { query.WhereRestrictionOn(o => o.OrderStatus).Not.IsIn(FilterViewModel.HideStatuses); } if (FilterViewModel.RestrictOnlySelfDelivery != null) { query.Where(o => o.SelfDelivery == FilterViewModel.RestrictOnlySelfDelivery); } if (FilterViewModel.RestrictWithoutSelfDelivery != null) { query.Where(o => o.SelfDelivery != FilterViewModel.RestrictWithoutSelfDelivery); } if (FilterViewModel.RestrictCounterparty != null) { query.Where(o => o.Client == FilterViewModel.RestrictCounterparty); } if (FilterViewModel.DeliveryPoint != null) { query.Where(o => o.DeliveryPoint == FilterViewModel.DeliveryPoint); } if (FilterViewModel.RestrictStartDate != null) { query.Where(o => o.DeliveryDate >= FilterViewModel.RestrictStartDate); } if (FilterViewModel.RestrictEndDate != null) { query.Where(o => o.DeliveryDate <= FilterViewModel.RestrictEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel.RestrictLessThreeHours == true) { query.Where(Restrictions .GtProperty(Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.Time, "ADDTIME(?1, ?2)"), NHibernateUtil.Time, Projections.Property(() => deliveryScheduleAlias.From), Projections.Constant("3:0:0")), Projections.Property(() => deliveryScheduleAlias.To))); } if (FilterViewModel.RestrictHideService != null) { if (FilterViewModel.RestrictHideService.Value) { query.Where(o => o.OrderAddressType != OrderAddressType.Service); } else { query.Where(o => o.OrderAddressType == OrderAddressType.Service); } } if (FilterViewModel.RestrictOnlyService != null) { if (FilterViewModel.RestrictOnlyService.Value) { query.Where(o => o.OrderAddressType == OrderAddressType.Service); } else { query.Where(o => o.OrderAddressType != OrderAddressType.Service); } } if (FilterViewModel.OrderPaymentStatus != null) { query.Where(o => o.OrderPaymentStatus == FilterViewModel.OrderPaymentStatus); } if (FilterViewModel.Organisation != null) { query.Where(() => contractAlias.Organization.Id == FilterViewModel.Organisation.Id); } if (FilterViewModel.PaymentByCardFrom != null) { query.Where(o => o.PaymentByCardFrom.Id == FilterViewModel.PaymentByCardFrom.Id); } var bottleCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderAlias.Id == orderItemAlias.Order.Id) .JoinAlias(() => orderItemAlias.Nomenclature, () => nomenclatureAlias) .Where(() => nomenclatureAlias.Category == NomenclatureCategory.water && nomenclatureAlias.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => orderItemAlias.Count)); var sanitisationCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderAlias.Id == orderItemAlias.Order.Id) .Where(() => orderItemAlias.Nomenclature.Id == sanitizationNomenclature.Id) .Select(Projections.Sum(() => orderItemAlias.Count)); var orderSumSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderItemAlias.Order.Id == orderAlias.Id) .Select( Projections.Sum( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.Decimal, "ROUND(IFNULL(?1, ?2) * ?3 - ?4, 2)"), NHibernateUtil.Decimal, Projections.Property <OrderItem>(x => x.ActualCount), Projections.Property <OrderItem>(x => x.Count), Projections.Property <OrderItem>(x => x.Price), Projections.Property <OrderItem>(x => x.DiscountMoney) ) ) ); query.Left.JoinAlias(o => o.DeliveryPoint, () => deliveryPointAlias) .Left.JoinAlias(o => o.DeliverySchedule, () => deliveryScheduleAlias) .Left.JoinAlias(o => o.Author, () => authorAlias) .Left.JoinAlias(o => o.LastEditor, () => lastEditorAlias) .Left.JoinAlias(() => deliveryPointAlias.District, () => districtAlias) .Left.JoinAlias(o => o.Contract, () => contractAlias); query.Where(GetSearchCriterion( () => orderAlias.Id, () => counterpartyAlias.Name, () => deliveryPointAlias.CompiledAddress, () => authorAlias.LastName, () => orderAlias.DriverCallId, () => orderAlias.OnlineOrder, () => orderAlias.EShopOrder, () => orderAlias.OrderPaymentStatus )); var resultQuery = query .SelectList(list => list .Select(() => orderAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => orderAlias.SelfDelivery).WithAlias(() => resultAlias.IsSelfDelivery) .Select(() => orderAlias.DeliveryDate).WithAlias(() => resultAlias.Date) .Select(() => orderAlias.CreateDate).WithAlias(() => resultAlias.CreateDate) .Select(() => deliveryScheduleAlias.Name).WithAlias(() => resultAlias.DeliveryTime) .Select(() => orderAlias.OrderStatus).WithAlias(() => resultAlias.StatusEnum) .Select(() => orderAlias.Address1c).WithAlias(() => resultAlias.Address1c) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorLastName) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => lastEditorAlias.LastName).WithAlias(() => resultAlias.LastEditorLastName) .Select(() => lastEditorAlias.Name).WithAlias(() => resultAlias.LastEditorName) .Select(() => lastEditorAlias.Patronymic).WithAlias(() => resultAlias.LastEditorPatronymic) .Select(() => orderAlias.LastEditedTime).WithAlias(() => resultAlias.LastEditedTime) .Select(() => orderAlias.DriverCallId).WithAlias(() => resultAlias.DriverCallId) .Select(() => orderAlias.OnlineOrder).WithAlias(() => resultAlias.OnlineOrder) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Counterparty) .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.DistrictName) .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.CompilledAddress) .Select(() => deliveryPointAlias.City).WithAlias(() => resultAlias.City) .Select(() => deliveryPointAlias.Street).WithAlias(() => resultAlias.Street) .Select(() => deliveryPointAlias.Building).WithAlias(() => resultAlias.Building) .Select(() => orderAlias.EShopOrder).WithAlias(() => resultAlias.EShopOrder) .Select(() => orderAlias.OrderPaymentStatus).WithAlias(() => resultAlias.OrderPaymentStatus) .SelectSubQuery(orderSumSubquery).WithAlias(() => resultAlias.Sum) .SelectSubQuery(bottleCountSubquery).WithAlias(() => resultAlias.BottleAmount) .SelectSubQuery(sanitisationCountSubquery).WithAlias(() => resultAlias.SanitisationAmount) ) .OrderBy(x => x.CreateDate).Desc .SetTimeout(60) .TransformUsing(Transformers.AliasToBean <RetailOrderJournalNode <VodovozOrder> >()); return(resultQuery); }
public ActionResult CreateSchedule(string deliveryManID) { List <int> listOrderID = new List <int>(); if (Session["ListOrderID"] != null) { var schedule = new DeliverySchedule(); listOrderID = (List <int>)Session["ListOrderID"]; schedule.DeliveryMan = unitOfWork.DeliverymanRepository.GetByID(int.Parse(deliveryManID)); //schedule.DueDate = DateTime.Parse(dueDate); schedule.CreateDate = DateTime.Now; var scheduleDetail = new DeliveryScheduleDetail(); var order = new DrugOrder(); Point startPoint = new Point(); startPoint.x = 10.7972388; startPoint.y = 106.6803467; List <Point> listOrder = new List <Point>(); for (int i = 0; i < listOrderID.Count; i++) { Point drugOrderPoint = new Point(); drugOrderPoint.DrugOrder = unitOfWork.DrugOrderRepository.GetByID(listOrderID[i]); var drugstoreCoordinate = drugOrderPoint.DrugOrder.Drugstore.Coordinate; string[] drugstoreCoordinates = drugstoreCoordinate.Split(','); drugOrderPoint.x = double.Parse(drugstoreCoordinates[0]); drugOrderPoint.y = double.Parse(drugstoreCoordinates[1]); listOrder.Add(drugOrderPoint); } var tempPoint = new Point(); List <Point> resuledList = new List <Point>(); bool flag = true; tempPoint = startPoint; for (int i = listOrder.Count - 1; i >= 0; i--) { if (listOrder.Count > 0) { tempPoint = NearestPoint(tempPoint, listOrder); resuledList.Add(tempPoint); listOrder.Remove(tempPoint); } } for (int i = 0; i < resuledList.Count; i++) { scheduleDetail = new DeliveryScheduleDetail(); order = new DrugOrder(); scheduleDetail.DrugOrderID = resuledList[i].DrugOrder.DrugOrderID; scheduleDetail.Status = (int)Status.StatusEnum.Inprogress; order = resuledList[i].DrugOrder; order.Status = (int)Status.StatusEnum.Inprogress; unitOfWork.DrugOrderRepository.Update(order); schedule.DeliveryScheduleDetails.Add(scheduleDetail); } schedule.Status = (int)Status.StatusEnum.Inprogress; bool check = unitOfWork.DeliveryScheduleRepository.Insert(schedule); if (check) { Session["ListOrderID"] = null; } unitOfWork.DeliveryScheduleRepository.SaveChanges(); unitOfWork.DeliveryScheduleDetailsRepository.SaveChanges(); unitOfWork.DrugOrderRepository.SaveChanges(); } return(Json(listOrderID)); }
/// <summary> /// Run the code example. /// </summary> /// <param name="service">An initialized Dfa Reporting service object /// </param> public override void Run(DfareportingService service) { long campaignId = long.Parse(_T("INSERT_CAMPAIGN_ID_HERE")); long creativeId = long.Parse(_T("INSERT_CREATIVE_ID_HERE")); long placementId = long.Parse(_T("INSERT_PLACEMENT_ID_HERE")); long profileId = long.Parse(_T("INSERT_PROFILE_ID_HERE")); String adName = _T("INSERT_AD_NAME_HERE"); // Retrieve the campaign. Campaign campaign = service.Campaigns.Get(profileId, campaignId).Execute(); // Create a click-through URL. ClickThroughUrl clickThroughUrl = new ClickThroughUrl(); clickThroughUrl.DefaultLandingPage = true; // Create a creative assignment. CreativeAssignment creativeAssignment = new CreativeAssignment(); creativeAssignment.Active = true; creativeAssignment.CreativeId = creativeId; creativeAssignment.ClickThroughUrl = clickThroughUrl; // Create a placement assignment. PlacementAssignment placementAssignment = new PlacementAssignment(); placementAssignment.Active = true; placementAssignment.PlacementId = placementId; // Create a creative rotation. CreativeRotation creativeRotation = new CreativeRotation(); creativeRotation.CreativeAssignments = new List <CreativeAssignment>() { creativeAssignment }; // Create a delivery schedule. DeliverySchedule deliverySchedule = new DeliverySchedule(); deliverySchedule.ImpressionRatio = 1; deliverySchedule.Priority = "AD_PRIORITY_01"; DateTime startDate = DateTime.Now; DateTime endDate = Convert.ToDateTime(campaign.EndDate); // Create a rotation group. Ad rotationGroup = new Ad(); rotationGroup.Active = true; rotationGroup.CampaignId = campaignId; rotationGroup.CreativeRotation = creativeRotation; rotationGroup.DeliverySchedule = deliverySchedule; rotationGroup.StartTime = startDate; rotationGroup.EndTime = endDate; rotationGroup.Name = adName; rotationGroup.PlacementAssignments = new List <PlacementAssignment>() { placementAssignment }; rotationGroup.Type = "AD_SERVING_STANDARD_AD"; // Insert the rotation group. Ad result = service.Ads.Insert(rotationGroup, profileId).Execute(); // Display the new ad ID. Console.WriteLine("Ad with ID {0} was created.", result.Id); }
private IQueryOver <VodovozOrder> GetOrdersQuery(IUnitOfWork uow) { OrderForRouteListJournalNode resultAlias = null; VodovozOrder orderAlias = null; Nomenclature nomenclatureAlias = null; OrderItem orderItemAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint deliveryPointAlias = null; DeliverySchedule deliveryScheduleAlias = null; Employee authorAlias = null; Employee lastEditorAlias = null; District districtAlias = null; Nomenclature sanitizationNomenclature = new NomenclatureParametersProvider(new ParametersProvider()).GetSanitisationNomenclature(uow); var query = uow.Session.QueryOver <VodovozOrder>(() => orderAlias); if (FilterViewModel.ViewTypes != ViewTypes.Order && FilterViewModel.ViewTypes != ViewTypes.All) { query.Where(o => o.Id == -1); } if (FilterViewModel.RestrictStatus != null) { query.Where(o => o.OrderStatus == FilterViewModel.RestrictStatus); } if (FilterViewModel.RestrictPaymentType != null) { query.Where(o => o.PaymentType == FilterViewModel.RestrictPaymentType); } if (FilterViewModel.HideStatuses != null) { query.WhereRestrictionOn(o => o.OrderStatus).Not.IsIn(FilterViewModel.HideStatuses); } if (FilterViewModel.RestrictOnlySelfDelivery != null) { query.Where(o => o.SelfDelivery == FilterViewModel.RestrictOnlySelfDelivery); } if (FilterViewModel.RestrictWithoutSelfDelivery != null) { query.Where(o => o.SelfDelivery != FilterViewModel.RestrictWithoutSelfDelivery); } if (FilterViewModel.RestrictCounterparty != null) { query.Where(o => o.Client == FilterViewModel.RestrictCounterparty); } if (FilterViewModel.DeliveryPoint != null) { query.Where(o => o.DeliveryPoint == FilterViewModel.DeliveryPoint); } if (FilterViewModel.RestrictStartDate != null) { query.Where(o => o.DeliveryDate >= FilterViewModel.RestrictStartDate); } if (FilterViewModel.RestrictEndDate != null) { query.Where(o => o.DeliveryDate <= FilterViewModel.RestrictEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel.RestrictLessThreeHours == true) { query.Where(Restrictions .GtProperty(Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.Time, "ADDTIME(?1, ?2)"), NHibernateUtil.Time, Projections.Property(() => deliveryScheduleAlias.From), Projections.Constant("3:0:0")), Projections.Property(() => deliveryScheduleAlias.To))); } if (FilterViewModel.RestrictHideService != null) { if (FilterViewModel.RestrictHideService.Value) { query.Where(o => o.OrderAddressType != OrderAddressType.Service); } else { query.Where(o => o.OrderAddressType == OrderAddressType.Service); } } if (FilterViewModel.RestrictOnlyService != null) { if (FilterViewModel.RestrictOnlyService.Value) { query.Where(o => o.OrderAddressType == OrderAddressType.Service); } else { query.Where(o => o.OrderAddressType != OrderAddressType.Service); } } if (FilterViewModel.OrderPaymentStatus != null) { query.Where(o => o.OrderPaymentStatus == FilterViewModel.OrderPaymentStatus); } var bottleCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderAlias.Id == orderItemAlias.Order.Id) .JoinAlias(() => orderItemAlias.Nomenclature, () => nomenclatureAlias) .Where(() => nomenclatureAlias.Category == NomenclatureCategory.water && nomenclatureAlias.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => orderItemAlias.Count)); var sanitisationCountSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderAlias.Id == orderItemAlias.Order.Id) .Where(() => orderItemAlias.Nomenclature.Id == sanitizationNomenclature.Id) .Select(Projections.Sum(() => orderItemAlias.Count)); var orderSumSubquery = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderItemAlias.Order.Id == orderAlias.Id) .Select( Projections.Sum( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.Decimal, "?1 * ?2 - IF(?3 IS NULL OR ?3 = 0, IFNULL(?4, 0), ?3)"), NHibernateUtil.Decimal, Projections.Property <OrderItem>(x => x.Count), Projections.Property <OrderItem>(x => x.Price), Projections.Property <OrderItem>(x => x.DiscountMoney), Projections.Property <OrderItem>(x => x.OriginalDiscountMoney) ) ) ); query.Left.JoinAlias(o => o.DeliveryPoint, () => deliveryPointAlias) .Left.JoinAlias(o => o.DeliverySchedule, () => deliveryScheduleAlias) .Left.JoinAlias(o => o.Client, () => counterpartyAlias) .Left.JoinAlias(o => o.Author, () => authorAlias) .Left.JoinAlias(o => o.LastEditor, () => lastEditorAlias) .Left.JoinAlias(() => deliveryPointAlias.District, () => districtAlias); query.Where(GetSearchCriterion( () => orderAlias.Id, () => counterpartyAlias.Name, () => deliveryPointAlias.CompiledAddress, () => authorAlias.LastName, () => orderAlias.DriverCallId, () => orderAlias.OnlineOrder, () => orderAlias.EShopOrder, () => orderAlias.OrderPaymentStatus )); if (FilterViewModel.IncludeDistrictsIds != null && FilterViewModel.IncludeDistrictsIds.Any()) { query = query.Where(() => deliveryPointAlias.District.Id.IsIn(FilterViewModel.IncludeDistrictsIds)); } // Для того чтобы уже добавленные в МЛ заказы больше не появлялись if (FilterViewModel.ExceptIds != null && FilterViewModel.ExceptIds.Any()) { query.Where(o => !RestrictionExtensions.IsIn(o.Id, FilterViewModel.ExceptIds)); } var resultQuery = query .SelectList(list => list .Select(() => orderAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => orderAlias.SelfDelivery).WithAlias(() => resultAlias.IsSelfDelivery) .Select(() => deliveryScheduleAlias.Name).WithAlias(() => resultAlias.DeliveryTime) .Select(() => orderAlias.OrderStatus).WithAlias(() => resultAlias.StatusEnum) .Select(() => orderAlias.Address1c).WithAlias(() => resultAlias.Address1c) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorLastName) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorPatronymic) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Counterparty) .Select(() => districtAlias.DistrictName).WithAlias(() => resultAlias.DistrictName) .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.CompilledAddress) .Select(() => deliveryPointAlias.City).WithAlias(() => resultAlias.City) .Select(() => deliveryPointAlias.Street).WithAlias(() => resultAlias.Street) .Select(() => deliveryPointAlias.Building).WithAlias(() => resultAlias.Building) .SelectSubQuery(orderSumSubquery).WithAlias(() => resultAlias.Sum) .SelectSubQuery(bottleCountSubquery).WithAlias(() => resultAlias.BottleAmount) .SelectSubQuery(sanitisationCountSubquery).WithAlias(() => resultAlias.SanitisationAmount) ) .OrderBy(x => x.CreateDate).Desc .TransformUsing(Transformers.AliasToBean <OrderForRouteListJournalNode <VodovozOrder> >()); return(resultQuery); }
public IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { if (CostCalculation == null || CostCalculation.Id == 0) { yield return(new ValidationResult("Sales Contract harus di isi", new List <string> { "CostCalculation" })); } else { if (CostCalculation.PreSalesContract.Buyer.Type.ToLower().Equals("ekspor") || CostCalculation.PreSalesContract.Buyer.Type.ToLower().Equals("export")) { if (string.IsNullOrWhiteSpace(TermOfShipment)) { yield return(new ValidationResult("Term of Shipment harus diisi", new List <string> { "TermOfShipment" })); } if (Amount <= 0) { yield return(new ValidationResult("Amount harus lebih besar dari 0", new List <string> { "Amount" })); } if (Agent != null && !Agent.Id.Equals(0)) { if (string.IsNullOrWhiteSpace(Commission)) { yield return(new ValidationResult("Komisi harus diisi", new List <string> { "Commission" })); } } } } if (Commodity == null || Commodity.Id.Equals(0)) { yield return(new ValidationResult("Komoditas harus diisi", new List <string> { "CommodityID" })); } if (MaterialConstruction == null || MaterialConstruction.Id.Equals(0)) { yield return(new ValidationResult("Konstruksi Finish harus diisi", new List <string> { "MaterialConstructionID" })); } if (YarnMaterial == null || YarnMaterial.Id.Equals(0)) { yield return(new ValidationResult("Nomor Benang Material harus diisi", new List <string> { "YarnMaterialID" })); } if (string.IsNullOrWhiteSpace(MaterialWidth)) { yield return(new ValidationResult("Lebar Finish harus diisi", new List <string> { "MaterialWidth" })); } if (Quality == null || Quality.Id.Equals(0)) { yield return(new ValidationResult("Kualitas harus diisi", new List <string> { "QualityID" })); } if (TermOfPayment == null || TermOfPayment.Id.Equals(0)) { yield return(new ValidationResult("Syarat Pembayaran harus diisi", new List <string> { "TermOfPaymentID" })); } if (AccountBank == null || AccountBank.Id.Equals(0)) { yield return(new ValidationResult("Pembayaran ke Rekening harus diisi", new List <string> { "AccountBankID" })); } if (string.IsNullOrWhiteSpace(DeliveredTo)) { yield return(new ValidationResult("Tujuan Kirim harus diisi", new List <string> { "DeliveredTo" })); } if (DeliverySchedule == null || DeliverySchedule.GetValueOrDefault().Date <= DateTimeOffset.Now.Date) { yield return(new ValidationResult("Jadwal Pengiriman harus diisi", new List <string> { "DeliverySchedule" })); } if (PointSystem != 10 && PointSystem != 4) { yield return(new ValidationResult("Point sistem tidak valid", new List <string> { "PointSystem" })); } else if (PointSystem == 4) { if (PointLimit <= 0) { yield return(new ValidationResult("Point limit harus lebih besar dari 0", new List <string> { "PointLimit" })); } } if (Details == null || Details.Count.Equals(0)) { yield return(new ValidationResult("Detail harus diisi", new List <string> { "Details" })); } else { int Count = 0; string DetailError = "["; foreach (FinishingPrintingSalesContractDetailViewModel Detail in Details) { if (string.IsNullOrWhiteSpace(Detail.Color)) { Count++; DetailError += "{ Color: 'Warna harus diisi' }, "; } if (Detail.Price <= 0) { Count++; DetailError += "{ Price: 'Harga harus lebih besar dari 0' }, "; } } if (Count > 0) { yield return(new ValidationResult(DetailError, new List <string> { "Details" })); } } }
protected void Page_UnLoad(object sender, EventArgs e) { objCommonClass = null; objDeliverySchedule = null; }
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); }
public async Task ProcessingDelivery_InvokesPackageServiceAndDroneSchedulerService() { PackageGen actualPackage = null; DroneDelivery actualDelivery = null; DeliverySchedule actualDeliverySchedule = null; _handleHttpRequest = async ctx => { var serializer = new JsonSerializer(); if (ctx.Request.Path.Value.StartsWith(PackagePath)) { actualPackage = serializer.Deserialize <PackageGen>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync( new ObjectResult( new PackageGen { Id = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d }) { StatusCode = StatusCodes.Status201Created }); } else if (ctx.Request.Path.Value.StartsWith(DroneSchedulerPath)) { actualDelivery = serializer.Deserialize <DroneDelivery>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync(new ContentResult { Content = "someDroneId", StatusCode = StatusCodes.Status201Created }); } else if (ctx.Request.Path.Value.StartsWith(DeliveryPath)) { actualDeliverySchedule = serializer.Deserialize <DeliverySchedule>(new JsonTextReader(new StreamReader(ctx.Request.Body, Encoding.UTF8))); await ctx.WriteResultAsync( new ObjectResult(new DeliverySchedule { Id = "someDeliveryId" }) { StatusCode = StatusCodes.Status201Created }); } else { ctx.Response.StatusCode = StatusCodes.Status500InternalServerError; } }; var delivery = new Delivery { DeliveryId = "someDeliveryId", PackageInfo = new PackageInfo { PackageId = "somePackageId", Size = ContainerSize.Medium, Tag = "sometag", Weight = 100d } }; await _requestProcessor.ProcessDeliveryRequestAsync(delivery, new Dictionary <string, object>()); Assert.NotNull(actualPackage); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualPackage.Size); Assert.Equal(delivery.PackageInfo.Tag, actualPackage.Tag); Assert.Equal(delivery.PackageInfo.Weight, actualPackage.Weight); Assert.NotNull(actualDelivery); Assert.Equal(delivery.DeliveryId, actualDelivery.DeliveryId); Assert.Equal(delivery.PackageInfo.PackageId, actualDelivery.PackageDetail.Id); Assert.Equal((int)delivery.PackageInfo.Size, (int)actualDelivery.PackageDetail.Size); Assert.NotNull(actualDeliverySchedule); Assert.Equal(delivery.DeliveryId, actualDeliverySchedule.Id); Assert.Equal("someDroneId", actualDeliverySchedule.DroneId); }
public IQueryOver <Payment, Payment> GetAllUnallocatedBalances(IUnitOfWork uow, int closingDocumentDeliveryScheduleId) { UnallocatedBalancesJournalNode resultAlias = null; Order orderAlias = null; Order orderAlias2 = null; OrderItem orderItemAlias = null; PaymentItem paymentItemAlias = null; Counterparty counterpartyAlias = null; Organization organizationAlias = null; CounterpartyContract counterpartyContractAlias = null; Organization orderOrganizationAlias = null; DeliverySchedule deliveryScheduleAlias = null; DeliverySchedule deliveryScheduleAlias2 = null; CashlessMovementOperation cashlessMovementOperationAlias = null; var query = uow.Session.QueryOver <Payment>() .Inner.JoinAlias(cmo => cmo.Counterparty, () => counterpartyAlias) .Inner.JoinAlias(cmo => cmo.Organization, () => organizationAlias); var income = QueryOver.Of <CashlessMovementOperation>() .Where(cmo => cmo.Counterparty.Id == counterpartyAlias.Id) .And(cmo => cmo.Organization.Id == organizationAlias.Id) .And(cmo => cmo.CashlessMovementOperationStatus != AllocationStatus.Cancelled) .Select(Projections.Sum <CashlessMovementOperation>(cmo => cmo.Income)); var expense = QueryOver.Of <CashlessMovementOperation>() .Where(cmo => cmo.Counterparty.Id == counterpartyAlias.Id) .And(cmo => cmo.Organization.Id == organizationAlias.Id) .And(cmo => cmo.CashlessMovementOperationStatus != AllocationStatus.Cancelled) .Select(Projections.Sum <CashlessMovementOperation>(cmo => cmo.Expense)); var balanceProjection = Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Decimal, "?1 - ?2"), NHibernateUtil.Decimal, Projections.SubQuery(income), Projections.SubQuery(expense)); var orderSumProjection = OrderRepository.GetOrderSumProjection(orderItemAlias); var totalNotPaidOrders = QueryOver.Of(() => orderAlias) .Inner.JoinAlias(o => o.OrderItems, () => orderItemAlias) .Inner.JoinAlias(o => o.Contract, () => counterpartyContractAlias) .Inner.JoinAlias(() => counterpartyContractAlias.Organization, () => orderOrganizationAlias) .Inner.JoinAlias(o => o.DeliverySchedule, () => deliveryScheduleAlias) .Where(() => orderAlias.Client.Id == counterpartyAlias.Id) .And(() => orderOrganizationAlias.Id == organizationAlias.Id) .And(() => orderAlias.OrderStatus == OrderStatus.Shipped || orderAlias.OrderStatus == OrderStatus.UnloadingOnStock || orderAlias.OrderStatus == OrderStatus.Closed) .And(() => orderAlias.PaymentType == PaymentType.cashless) .And(() => orderAlias.OrderPaymentStatus != OrderPaymentStatus.Paid) .And(() => deliveryScheduleAlias.Id != closingDocumentDeliveryScheduleId) .Select(orderSumProjection) .Where(Restrictions.Gt(orderSumProjection, 0)); var totalPayPartiallyPaidOrders = QueryOver.Of(() => paymentItemAlias) .JoinEntityAlias(() => orderAlias2, () => paymentItemAlias.Order.Id == orderAlias2.Id, JoinType.InnerJoin) .Inner.JoinAlias(() => orderAlias2.Contract, () => counterpartyContractAlias) .Inner.JoinAlias(() => counterpartyContractAlias.Organization, () => orderOrganizationAlias) .Inner.JoinAlias(() => paymentItemAlias.CashlessMovementOperation, () => cashlessMovementOperationAlias) .Inner.JoinAlias(() => orderAlias2.DeliverySchedule, () => deliveryScheduleAlias2) .Where(() => orderAlias2.Client.Id == counterpartyAlias.Id) .And(() => orderOrganizationAlias.Id == organizationAlias.Id) .And(() => cashlessMovementOperationAlias.CashlessMovementOperationStatus != AllocationStatus.Cancelled) .And(() => orderAlias2.OrderStatus == OrderStatus.Shipped || orderAlias2.OrderStatus == OrderStatus.UnloadingOnStock || orderAlias2.OrderStatus == OrderStatus.Closed) .And(() => orderAlias2.PaymentType == PaymentType.cashless) .And(() => orderAlias2.OrderPaymentStatus == OrderPaymentStatus.PartiallyPaid) .And(() => deliveryScheduleAlias2.Id != closingDocumentDeliveryScheduleId) .Select(Projections.Sum(() => cashlessMovementOperationAlias.Expense)); var counterpartyDebtProjection = Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Decimal, "?1 - IFNULL(?2, ?3)"), NHibernateUtil.Decimal, Projections.SubQuery(totalNotPaidOrders), Projections.SubQuery(totalPayPartiallyPaidOrders), Projections.Constant(0)); return(query.SelectList(list => list .SelectGroup(() => counterpartyAlias.Id).WithAlias(() => resultAlias.CounterpartyId) .SelectGroup(() => organizationAlias.Id).WithAlias(() => resultAlias.OrganizationId) .Select(p => counterpartyAlias.INN).WithAlias(() => resultAlias.CounterpartyINN) .Select(p => counterpartyAlias.Name).WithAlias(() => resultAlias.CounterpartyName) .Select(p => organizationAlias.Name).WithAlias(() => resultAlias.OrganizationName) .Select(balanceProjection).WithAlias(() => resultAlias.CounterpartyBalance) .Select(counterpartyDebtProjection).WithAlias(() => resultAlias.CounterpartyDebt)) .Where(Restrictions.Gt(balanceProjection, 0)) .And(Restrictions.Gt(counterpartyDebtProjection, 0)) .OrderBy(balanceProjection).Desc .TransformUsing(Transformers.AliasToBean <UnallocatedBalancesJournalNode>()) .SetTimeout(180)); }