コード例 #1
0
        private void AddNewSales()
        {
            var newSales  = _dbContext.Sales.Where(p => !p.InWarehouse).ToList();
            var newSalesW = newSales.GroupBy(s => new { s.SaleDate, s.StoreStoreId, s.ProductProductId })
                            .Select(g => new
            {
                MoneySold        = g.Sum(s => s.Price),
                UnitsSold        = g.Count(),
                StoreStoreId     = g.Key.StoreStoreId,
                ProductProductId = g.Key.ProductProductId,
                Day      = g.Key.SaleDate.Day,
                Month    = g.Key.SaleDate.Month,
                Year     = g.Key.SaleDate.Year,
                SaleDate = g.Key.SaleDate
            })
                            .OrderBy(s => s.Year).ThenBy(s => s.Month).ThenBy(s => s.Day).ThenBy(s => s.StoreStoreId).ThenBy(s => s.ProductProductId);

            foreach (var sale in newSalesW)
            {
                int?           dayId        = _dwContext.Times.FirstOrDefault(t => t.Year == sale.Year && t.MonthNo == sale.Month && t.Day == sale.Day)?.TimeId;
                bool           isNew        = dayId == null;
                DwModels.Sales existingSale = null;
                if (isNew)
                {
                    dayId = AddDay(sale.Day, sale.Month, sale.Year, sale.SaleDate.ToString("dddd", CultureInfo.InvariantCulture), sale.SaleDate.ToString("MMMM", CultureInfo.InvariantCulture));
                }
                else
                {
                    existingSale = _dwContext.Sales.FirstOrDefault(s =>
                                                                   s.TimeTimeId == dayId && s.ProductProductId == sale.ProductProductId &&
                                                                   s.StoreStoreId == sale.StoreStoreId);
                }
                AddSales(sale.UnitsSold, sale.MoneySold, dayId.Value, sale.ProductProductId, sale.StoreStoreId, existingSale);
            }
            foreach (var sale in newSales)
            {
                sale.InWarehouse             = true;
                _dbContext.Entry(sale).State = EntityState.Modified;
            }
        }
コード例 #2
0
 private void AddSales(decimal unitsSold, decimal moneySold, int timeId, int productId,
                       int storeId, DwModels.Sales existingSale)
 {
     if (existingSale == null)
     {
         var entity = new DwModels.Sales
         {
             UnitsSold        = unitsSold,
             MoneySold        = moneySold,
             TimeTimeId       = timeId,
             ProductProductId = productId,
             StoreStoreId     = storeId
         };
         _dwContext.Sales.Add(entity);
     }
     else
     {
         existingSale.UnitsSold = unitsSold;
         existingSale.MoneySold = moneySold;
         _dwContext.Entry(existingSale).State = EntityState.Modified;
     }
     _dwContext.SaveChanges();
 }