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));
        }
Esempio n. 2
0
        public ActionResult Sales()
        {
            ISaleRepository repo        = SaleRepositoryFactory.GetRepository();
            var             salesReport = new SalesReportViewModel();

            salesReport.Salespeople = repo.GetSalespeople();
            return(View(salesReport));
        }
        public ActionResult Purchase(SaleVM sold)
        {
            var details = new DetailsVM();

            details.Vehicle      = VehicleRepositoryFactory.GetVehicleRepository().GetVehicleByVIN(sold.Sale.VinNumber);
            details.BodyStyles   = BodyStyleRepositoryFactory.GetBodyStyleRepository().GetBodyStyles();
            details.Colors       = ColorRepositoryFactory.GetColorRepository().GetColors();
            details.Makes        = MakeRepositoryFactory.GetMakeRepository().GetMakes();
            details.Models       = ModelRepositoryFactory.GetModelRepository().GetModels();
            details.Transmission = TransmissionTypeRepositoryFactory.GetTransmissionTypeRepository().GetTransmissions();

            sold.Details = details;

            if (sold.Sale.Phone == null && sold.Sale.Email == null)
            {
                ModelState.AddModelError("", "You must enter a phone number or an email address.");
            }
            if (sold.Sale.Zipcode.Length > 5)
            {
                ModelState.AddModelError("", "Zipcode should only be 5 digits long, please.");
            }
            if (sold.Sale.PurchasePrice < ((sold.Details.Vehicle.MSRP * 95) * .01m))
            {
                ModelState.AddModelError("", "Purchase price should not be lower than 95% vehicle MSRP, please recalculate.");
            }
            if (sold.Sale.PurchasePrice > sold.Details.Vehicle.MSRP)
            {
                ModelState.AddModelError("", "Purchase price should not be greater than MSRP, please recalculate.");
            }


            var repo = SaleRepositoryFactory.GetSaleRepository();

            if (ModelState.IsValid)
            {
                sold.Sale.UserID       = User.Identity.GetUserId();
                sold.Sale.PurchaseDate = DateTime.Now;
            }

            var result = repo.Add(sold.Sale);

            if (result != null)
            {
                var vehicleToUpdate = VehicleRepositoryFactory.GetVehicleRepository().GetVehicleByVIN(sold.Sale.VinNumber);
                vehicleToUpdate.IsPurchased = true;
                vehicleToUpdate.IsFeatured  = false;
                VehicleRepositoryFactory.GetVehicleRepository().Edit(vehicleToUpdate);

                return(View("Index"));
            }


            // assign sold.UserID to currently logged in user
            // assign sold.PurchaseDate to DateTime.Now
            // if saving the purchase is a success, update vehicle.IsPurchased to true and vehicle.IsFeatured to false;
            return(View());
        }
Esempio n. 4
0
        public ActionResult CreateSale(Sale sale)
        {
            var saleRepo = SaleRepositoryFactory.GetRepository();

            if (ModelState.IsValid)
            {
                saleRepo.Add(sale);
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(sale));
            }
        }
Esempio n. 5
0
        public IHttpActionResult Sales(string salesperson = null, DateTime?fromDate = null, DateTime?toDate = null)
        {
            ISaleRepository repo = SaleRepositoryFactory.GetRepository();

            SalesReportParametersModel parameters = new SalesReportParametersModel()
            {
                Salesperson = salesperson,
                FromDate    = fromDate,
                ToDate      = toDate
            };
            var sales = repo.GetSales(parameters);

            return(Ok(sales));
        }
        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));
        }