private List <OperationLog> GetProductChanges(DateTime startDate, DateTime endDate) { var allProductChanges = _changeLogService.FindChangeHistory("Product", startDate, endDate).ToList(); var allPriceChanges = _changeLogService.FindChangeHistory("Price", startDate, endDate).ToList(); var priceIds = allPriceChanges.Select(c => c.ObjectId).ToList(); var prices = _pricingService.GetPricesById(priceIds).ToList(); // TODO: How to get product for deleted price? var productsWithChangedPrice = allPriceChanges .Select(c => new { c.ModifiedDate, Price = prices.FirstOrDefault(p => p.Id == c.ObjectId) }) .Where(x => x.Price != null) .Select(x => new OperationLog { ObjectId = x.Price.ProductId, ModifiedDate = x.ModifiedDate, OperationType = EntryState.Modified }) .ToList(); allProductChanges.AddRange(productsWithChangedPrice); // Return latest operation type for each product var result = allProductChanges .GroupBy(c => c.ObjectId) .Select(g => new OperationLog { ObjectId = g.Key, OperationType = g.OrderByDescending(c => c.ModifiedDate).Select(c => c.OperationType).First() }) .ToList(); return(result); }
protected virtual List <OperationLog> GetProductChanges(DateTime startDate, DateTime endDate) { var allProductChanges = _changeLogService.FindChangeHistory("Item", startDate, endDate).ToList(); var allPriceChanges = _changeLogService.FindChangeHistory("Price", startDate, endDate).ToList(); var priceIds = allPriceChanges.Select(c => c.ObjectId).ToArray(); var prices = GetPrices(priceIds); // TODO: How to get product for deleted price? var productsWithChangedPrice = allPriceChanges .Select(c => new { c.ModifiedDate, Price = prices.ContainsKey(c.ObjectId) ? prices[c.ObjectId] : null }) .Where(x => x.Price != null) .Select(x => new OperationLog { ObjectId = x.Price.ProductId, ModifiedDate = x.ModifiedDate, OperationType = EntryState.Modified }) .ToList(); allProductChanges.AddRange(productsWithChangedPrice); // Return latest operation type for each product var result = allProductChanges .GroupBy(c => c.ObjectId) .Select(g => new OperationLog { ObjectId = g.Key, OperationType = g.OrderByDescending(c => c.ModifiedDate).Select(c => c.OperationType).First() }) .ToList(); return(result); }
public async Task <long> GetTotalChangesCountAsync(DateTime?startDate, DateTime?endDate) { long result; startDate = startDate ?? DateTime.MinValue; endDate = endDate ?? DateTime.MaxValue; // Get changes count from operation log result = _changeLogService.FindChangeHistory(ChangeLogObjectType, startDate, endDate).Count(); return(await Task.FromResult(result)); }
public IList <Operation> GetOperations(DateTime startDate, DateTime endDate) { var allOperations = _changeLogService.FindChangeHistory("Category", startDate, endDate); var result = allOperations.GetLatestIndexOperationForEachObject(); return(result); }
public virtual Task <long> GetTotalChangesCountAsync(DateTime?startDate, DateTime?endDate) { long result; if (startDate == null && endDate == null) { // We don't know the total products count result = 0L; } else { // Get changes count from operation log result = _changeLogService.FindChangeHistory(ChangeLogObjectType, startDate, endDate).Count(); } return(Task.FromResult(result)); }
public virtual Task <long> GetTotalChangesCountAsync(DateTime?startDate, DateTime?endDate) { long result; if (startDate == null && endDate == null) { // Get total products count using (var repository = _catalogRepositoryFactory()) { result = repository.Items.Count(i => i.ParentId == null); } } else { // Get changes count from operation log result = _changeLogService.FindChangeHistory(ChangeLogObjectType, startDate, endDate).Count(); } return(Task.FromResult(result)); }
public virtual async Task <long> GetTotalChangesCountAsync(DateTime?startDate, DateTime?endDate) { long result; if (startDate == null && endDate == null) { // Get total categories count using (var repository = _catalogRepositoryFactory()) { result = await repository.Categories.CountAsync(); } } else { // Get changes count from operation log result = _changeLogService.FindChangeHistory(ChangeLogObjectType, startDate, endDate).Count(); } return(result); }
private List <OperationLog> GetCategoryChanges(DateTime startDate, DateTime endDate) { var allCategoryChanges = _changeLogService.FindChangeHistory("Category", startDate, endDate).ToList(); // Return latest operation type for each product var result = allCategoryChanges .GroupBy(c => c.ObjectId) .Select(g => new OperationLog { ObjectId = g.Key, OperationType = g.OrderByDescending(c => c.ModifiedDate).Select(c => c.OperationType).First() }) .ToList(); return(result); }
public IList <Operation> GetOperations(DateTime startDate, DateTime endDate) { var allOperations = _changeLogService.FindChangeHistory("PriceEntity", startDate, endDate).ToList(); var priceIds = allOperations.Select(c => c.ObjectId).ToArray(); var priceIdsAndProductIds = GetProductIds(priceIds); // TODO: How to get product for deleted price? var result = allOperations .Where(o => priceIdsAndProductIds.ContainsKey(o.ObjectId)) .Select(o => new Operation { ObjectId = priceIdsAndProductIds[o.ObjectId], Timestamp = o.ModifiedDate ?? o.CreatedDate, OperationType = OperationType.Index, }) .GroupBy(o => o.ObjectId) .Select(g => g.OrderByDescending(o => o.Timestamp).First()) .ToList(); return(result); }
public IHttpActionResult SearchTypeChangeHistory(string type, [FromUri] DateTime?start = null, [FromUri] DateTime?end = null) { var result = _changeLog.FindChangeHistory(type, start, end).ToArray(); return(Ok(result)); }