public IActionResult Index() { return(View(_shopService.All().ToList().Select(x => new ShopVM() { Id = x.Id, Title = x.Title, CashOnHand = _shopService.CashOnHand(_db, x.Id), Margin = _shopService.Margin(x.Id), Sales = _saleService.All() .Where(s => s.Date.Month == DateTime.Now.AddHours(3).Month&& s.Payment == true) .Count(s => s.ShopId == x.Id), Turnover = _shopService.Turnover(x.Id) }))); }
public IActionResult Index() { var userName = HttpContext.User.Identity.Name; var user = _db.Users.FirstOrDefault(u => u.Login == userName); var shop = _db.Shops.FirstOrDefault(x => x.Id == user.ShopId); var salesProductsToday = _db.SalesProducts .Where(x => x.Sale.Date.DayOfYear == DateTime.Now /*.AddHours(3)*/.DayOfYear && x.Sale.Date.Year == DateTime.Now /*.AddHours(3)*/.Date.Year && x.Sale.ShopId == user.ShopId) .Select(x => new SaleProduct() { Product = x.Product, Amount = x.Amount }).ToList(); ViewBag.SalesProducts = salesProductsToday; ViewBag.SalesAmount = salesProductsToday.Sum(sp => sp.Amount); ViewBag.Expenses = _moneyStatisticService.ShopExpenses(_db, shop.Id); ViewBag.Sum = _shopService.CashOnHand(_db, shop.Id); var infoMoneys = _db.InfoMonies.ToList(); var saleProducts = _db.SalesProducts .Include(x => x.Product) .ToList(); ViewBag.DefferedSales = _db.Sales .Where(s => s.Payment == false && s.ShopId == user.ShopId && _db.SaleInformations.Count(x => x.SaleId == s.Id && x.SaleType == SaleType.DefferedSaleFromStock) > 0) .ToList() .Where(s => s.Sum - infoMoneys.Where(z => z.SaleId == s.Id).Sum(x => x.Sum) > 0) .Select(s => new SaleVM() { Id = s.Id, Date = s.Date.ToString("dd.MM.yyyy"), Sum = infoMoneys.Where(x => x.SaleId == s.Id).Sum(x => x.Sum), ShopTitle = s.Shop.Title, ProductTitle = saleProducts .FirstOrDefault(x => x.SaleId == s.Id)?.Product.Title ?? "", Rest = s.Sum - infoMoneys.Where(x => x.SaleId == s.Id).Sum(x => x.Sum), Total = s.Sum }).ToList(); ViewBag.OpenSales = _db.Sales .Where(x => x.Payment == false && x.ShopId == user.ShopId && _db.SaleInformations.Count(z => z.SaleId == x.Id && z.SaleType == SaleType.DefferedSale) > 0) .OrderByDescending(x => x.Id) .Select(s => new SaleVM() { Id = s.Id, Date = s.Date.ToString("dd.MM.yyyy"), Sum = s.Sum, ProductTitle = _db.SalesProducts .FirstOrDefault(x => x.SaleId == s.Id).Product.Title }); ViewBag.SalePayments = _db.InfoMonies .Where(x => (x.SaleId != null || x.BookingId != null) && x.Date.Date == DateTime.Now /*.AddHours(3)*/.Date.Date && (x.Sale.ShopId == shop.Id || x.Booking.ShopId == shop.Id)) .OrderByDescending(x => x.Id) .Select(x => new SalePaymentVM { Date = x.Date.ToShortTimeString(), SaleNumber = x.SaleId == null ? x.BookingId.ToString() : x.SaleId.ToString(), MoneyWorker = x.MoneyWorker.Title, PaymentType = x.PaymentType == PaymentType.Cash ? "Наличный" : "Безналичный", Sum = x.Sum.ToString(), SaleId = x.SaleId, BookingId = x.BookingId, Discount = x.SaleId == null ? x.Booking.Discount : x.Sale.Discount, ForRF = x.SaleId == null ? x.Booking.forRussian : x.Sale.ForRussian, OperationType = (x.SaleId == null) ? "Бронирование" : x.Sale.SaleType == SaleType.Sale ? "Продажа" : x.Sale.SaleType == SaleType.SaleFromStock ? "Продажа со склада поставщика" : x.Sale.SaleType == SaleType.DefferedSaleFromStock ? "Отложенная продажа со склада поставщика" : x.Sale.SaleType == SaleType.DefferedSale ? "Продажа с отложенным платежом" : x.Sale.SaleType == SaleType.Booking ? "Закрытое бронирование" : "Неопределено" }) .ToList() .Select(x => new SalePaymentVM { Date = x.Date, SaleNumber = x.SaleNumber, MoneyWorker = x.MoneyWorker, PaymentType = x.PaymentType, Sum = x.Sum, OperationType = x.OperationType, Discount = x.Discount, ForRF = x.ForRF, SaleProducts = x.SaleId != null ? saleProducts.Where(z => z.SaleId == x.SaleId.Value)//_saleInfoService.GetProductsBySaleId(x.SaleId.Value) .Select(z => new SaleProductItemVM { Title = z.Product.Title, Amount = z.Amount.ToString() }).ToList() : _bookingProductInformationService.GetBookingProductByBooking(_db, x.BookingId.Value) .Select(z => new SaleProductItemVM { Title = z.Product.Title, Amount = z.Amount.ToString() }).ToList(), }).Concat( _db.Sales .Where(x => x.SaleType == SaleType.SaleFromStock && x.Date.DayOfYear == DateTime.Now /*.AddHours(3)*/.DayOfYear && x.Date.Year == DateTime.Now /*.AddHours(3)*/.Year && x.ShopId == shop.Id && _db.SaleInformations.Where(z => z.SaleId == x.Id).Count() > 0) .Select(x => new SalePaymentVM { Date = x.Date.ToShortTimeString(), SaleNumber = x.Id.ToString(), MoneyWorker = x.Shop.Title, PaymentType = x.CashSum > 0 && x.CashlessSum > 0 ? "Смешанный" : x.CashSum > 0 ? "Наличный" : "Безналичный", Sum = x.CashSum > 0 && x.CashlessSum > 0 ? x.CashSum.ToString() + " и " + x.CashlessSum.ToString() : x.CashSum > 0 ? x.CashSum.ToString() : x.CashlessSum.ToString(), OperationType = "Продажа со склада поставщика (не закрыта)", Discount = x.Discount, ForRF = x.ForRussian, SaleId = x.Id }).ToList() .Select(x => new SalePaymentVM { Date = x.Date, SaleNumber = x.SaleNumber, MoneyWorker = x.PaymentType == "Смешанный" ? x.MoneyWorker + " и " + _db.SaleInformations.Where(z => z.SaleId == x.SaleId).Select(z => z.MoneyWorkerForCashlessIncome.Title).FirstOrDefault() : x.PaymentType == "Безналичный" ? _db.SaleInformations.Where(z => z.SaleId == x.SaleId).Select(z => z.MoneyWorkerForCashlessIncome.Title).FirstOrDefault() : x.MoneyWorker, PaymentType = x.PaymentType, Sum = x.Sum, OperationType = x.OperationType, Discount = x.Discount, ForRF = x.ForRF, SaleProducts = _saleInfoService.GetProductsBySaleId(_db, x.SaleId.Value) .Select(z => new SaleProductItemVM { Title = z.Product.Title, Amount = z.Amount.ToString() }).ToList() })).OrderByDescending(x => x.Date); return(View()); }