public ActionResult Sales() { var context = new ApplicationDbContext(); var allSales = SaleRepositoryFactory.GetSaleRepository().GetSales(); var saleReport = new SaleReportAll(); var usersWithRoles = (from user in context.Users select new { UserId = user.Id, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, Role = (from userRole in user.Roles join role in context.Roles on userRole.RoleId equals role.Id select role.Name).ToList() }).ToList().Select(p => new UsersVM() { UserID = p.UserId, FirstName = p.FirstName, LastName = p.LastName, Email = p.Email, Role = string.Join(",", p.Role) }).ToList(); var salesGroupedByUser = allSales.GroupBy(s => s.UserID); var listOfSaleReportsByUser = new List <SaleReportByUser>(); foreach (var saleGroup in salesGroupedByUser) { var user = UserManager.FindById(saleGroup.Key).FirstName + " " + UserManager.FindById(saleGroup.Key).LastName; int totalVehicles = 0; decimal totalSales = 0; foreach (var sale in saleGroup) { totalSales += sale.PurchasePrice; totalVehicles++; } var row = new SaleReportByUser() { User = user, TotalSales = totalSales, TotalVehicles = totalVehicles }; listOfSaleReportsByUser.Add(row); } saleReport.SalesByUser = listOfSaleReportsByUser; saleReport.UsersForDropDown = usersWithRoles; return(View(saleReport)); }
public ActionResult Sales(string userID, DateTime?fromDate, DateTime?toDate) { if (fromDate == null) { fromDate = new DateTime(2000, 01, 01); } if (toDate == null) { toDate = new DateTime(2021, 01, 01); } var context = new ApplicationDbContext(); var allSales = SaleRepositoryFactory.GetSaleRepository().GetSales(); var saleReport = new SaleReportAll(); var usersWithRoles = (from user in context.Users select new { UserId = user.Id, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, Role = (from userRole in user.Roles join role in context.Roles on userRole.RoleId equals role.Id select role.Name).ToList() }).ToList().Select(p => new UsersVM() { UserID = p.UserId, FirstName = p.FirstName, LastName = p.LastName, Email = p.Email, Role = string.Join(",", p.Role) }).ToList(); if (userID != "All") { var salesByUser = allSales.Where(s => s.UserID == userID).ToList(); var listOfSaleReports = new List <SaleReportByUser>(); int totalVehicles = 0; foreach (var sale in salesByUser) { var user = UserManager.FindById(userID).FirstName + " " + UserManager.FindById(userID).LastName; decimal totalSales = 0; if (sale.PurchaseDate < toDate && sale.PurchaseDate > fromDate) { totalSales += sale.PurchasePrice; totalVehicles++; } var saleReportForUser = new SaleReportByUser() { User = user, TotalSales = totalSales, TotalVehicles = totalVehicles }; listOfSaleReports.Add(saleReportForUser); } saleReport.SalesByUser = listOfSaleReports; saleReport.UsersForDropDown = usersWithRoles; saleReport.UserID = "All"; saleReport.fromDate = DateTime.MinValue; saleReport.toDate = DateTime.MaxValue; } else { var salesGroupedByUser = allSales.GroupBy(s => s.UserID); var listOfSaleReportsByUser = new List <SaleReportByUser>(); foreach (var saleGroup in salesGroupedByUser) { var user = UserManager.FindById(saleGroup.Key).FirstName + " " + UserManager.FindById(saleGroup.Key).LastName; int totalVehicles = 0; decimal totalSales = 0; foreach (var sale in saleGroup) { if (sale.PurchaseDate < toDate && sale.PurchaseDate > fromDate) { totalSales += sale.PurchasePrice; totalVehicles++; } } var row = new SaleReportByUser() { User = user, TotalSales = totalSales, TotalVehicles = totalVehicles }; listOfSaleReportsByUser.Add(row); } saleReport.SalesByUser = listOfSaleReportsByUser; saleReport.UsersForDropDown = usersWithRoles; saleReport.UserID = "All"; saleReport.fromDate = DateTime.MinValue; saleReport.toDate = DateTime.MaxValue; return(View(saleReport)); } return(View(saleReport)); }