public IActionResult MyEarnings(EarningsViewModel earning)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }

            var driver = _context.Driver.FirstOrDefault(x => x.UserId == int.Parse(userId));


            if (earning.UserId == 0)
            {
                earning           = new EarningsViewModel();
                earning.UserId    = int.Parse(userId);
                earning.ShiftDate = DateTime.Now;
            }

            earning.EarningsOn = earning.EarningsOn == new DateTime() ? DateTime.Now : earning.EarningsOn;
            earning.DriverId   = driver.DriverId;
            earning            = GetEarnings(earning);
            earning.IsActive   =
                _context.Driver.Any(x => x.DriverId == driver.DriverId && x.IsActive != false);
            earning.AllSchedules = _context.Schedule.Include(c => c.Taxi).Where(x => x.DriverId == driver.DriverId)
                                   .ToList();
            earning.AllTaxis = earning.AllSchedules.Select(x => x.Taxi).ToList();
            return(View(earning));
        }
예제 #2
0
        public EarningsViewModel GetEarningsForDriver(EarningsViewModel earning)
        {
            earning.Earnings = _context.Earnings.Where(x => x.DriverId == earning.DriverId)
                               .OrderBy(x => x.ShiftDate).ToList();
            earning.MonthlyEarnings = (double)earning.Earnings.Sum(x => x.IncomeEarned);

            return(earning);
        }
        public EarningsViewModel validateEarning(EarningsViewModel earningsViewModel)
        {
            if (earningsViewModel.ShiftDate == new DateTime())
            {
                earningsViewModel.Error = "Invalid date";
            }

            return(earningsViewModel);
        }
        public double CalculateIncome(EarningsViewModel earningsViewModel)
        {
            var profit = earningsViewModel.Earning - earningsViewModel.Expenditure;

            if (profit > 0)
            {
                return(profit / 2);
            }
            return(profit);
        }
        public IActionResult GetDriverEarnings(EarningsViewModel earningsViewModel)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }


            if (earningsViewModel.UserId == 0)
            {
                earningsViewModel           = new EarningsViewModel();
                earningsViewModel.UserId    = int.Parse(userId);
                earningsViewModel.ShiftDate = DateTime.Now;
            }

            earningsViewModel.EarningsOn = earningsViewModel.EarningsOn == new DateTime()
                ? DateTime.Now
                : earningsViewModel.EarningsOn;

            earningsViewModel          = GetEarningsForDriver(earningsViewModel);
            earningsViewModel.DriverId = earningsViewModel.DriverId;
            earningsViewModel.IsActive =
                _context.OwnerDriver.Any(x => x.DriverId == earningsViewModel.DriverId && x.IsActiveDriver != false);
            earningsViewModel.AllSchedules = _context.Schedule.Include(c => c.Taxi)
                                             .Where(x => x.DriverId == earningsViewModel.DriverId)
                                             .ToList();
            earningsViewModel.AllTaxis   = earningsViewModel.AllSchedules.Select(x => x.Taxi).ToList();
            earningsViewModel.AllDrivers = _context.Driver.ToList();

            //graph data
            var earnings        = _context.Earnings.Where(x => x.DriverId == earningsViewModel.DriverId).ToList();
            var firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            var lastDayOfMonth  = firstDayOfMonth.AddMonths(1).AddDays(-1);
            var a = earnings?.Where(x =>
                                    x.DriverId == earningsViewModel.DriverId && x.ShiftDate >= firstDayOfMonth &&
                                    x.ShiftDate <= lastDayOfMonth);
            var weeksInMonth = (int)Math.Ceiling(((double)firstDayOfMonth.DayOfWeek + lastDayOfMonth.Day) / 7.0);
            var dataPoints1  = new List <DataPoint>();

            var startdate = firstDayOfMonth;

            for (var i = 1; i <= weeksInMonth; i++)
            {
                dataPoints1.Add(new DataPoint(startdate.ToString("dd MMM yyy"),
                                              earnings.Where(x => x.ShiftDate.Date >= startdate && x.ShiftDate <= startdate.AddDays(7))
                                              .Sum(x => x.IncomeEarned) ?? 0));
                startdate = startdate.AddDays(7);
            }

            ViewBag.DataPoints1 = JsonConvert.SerializeObject(dataPoints1);

            return(View("DriverEarnings", earningsViewModel));
        }
예제 #6
0
 /// <summary>
 /// Returns a list of earnings
 /// </summary>
 /// <param name="id">The id of the player whose earnings should be returned</param>
 /// <param name="achievementID">Use this to return earnings relating to the specified achievement</param>
 /// <param name="questID">
 /// Use this to return earnings relating to the achievements that correspond
 /// to the specified quest.  This overrides the "achievementID" parameter.\
 /// </param>
 /// <param name="friendsOf">Return earnings of players who are friends with the specified player instead?</param>
 /// <param name="includePublic">Include public earnings?</param>
 /// <param name="start">The zero-based index of the first earning to return</param>
 /// <param name="count">How many earnings should be returned?</param>
 /// <param name="startComments">The zero-based index of the first comment to be returned</param>
 /// <param name="countComments">How many comments should be returned?</param>
 /// <param name="includeDeletedComments">Should deleted comments be returned?</param>
 /// <returns>GET: /JSON/Earnings</returns>
 public JsonResult Earnings(
     int?id            = null,
     int?achievementID = null,
     int?questID       = null,
     bool friendsOf    = false,
     int?start         = null,
     int?count         = null,
     int?startComments = null,
     int?countComments = null)
 {
     return(Json(EarningsViewModel.Populate(id, achievementID, questID, friendsOf, start, count, startComments, countComments), JsonRequestBehavior.AllowGet));
 }
        public Earnings MapViewModelToEarnings(EarningsViewModel earningsViewModel)
        {
            var earning = new Earnings();

            earning.UserId       = earningsViewModel.UserId;
            earning.Earning      = earningsViewModel.Earning;
            earning.Expenditure  = earningsViewModel.Expenditure;
            earning.ShiftDate    = earningsViewModel.ShiftDate;
            earning.IncomeEarned = CalculateIncome(earningsViewModel);
            earning.DriverId     = earningsViewModel.DriverId;
            earning.TaxiId       = earningsViewModel.TaxiId;

            return(earning);
        }
        public EarningsViewModel SearchByDriver(EarningsViewModel earning, int driverId)
        {
            earning.Earnings = _context.Earnings.Include(x => x.Taxi).Include(x => x.Driver).Where(e =>
                                                                                                   e.DriverId == driverId && (e.Taxi.Registration.Contains(earning.Search) ||
                                                                                                                              (e.Driver.FirstName + " " + e.Driver.LastName).Contains(earning.Search)))
                               .OrderBy(x => x.ShiftDate).ToList();
            earning.WeeklyEarnings  = 0;
            earning.MonthlyEarnings = 0;


            earning.Earnings = earning?.Earnings ?? new List <Earnings>();

            return(earning);
        }
        public IActionResult OwnerEarnings(EarningsViewModel?earning)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }


            if (earning.UserId == 0)
            {
                earning           = new EarningsViewModel();
                earning.UserId    = int.Parse(userId);
                earning.ShiftDate = DateTime.Now;
            }

            earning.Earnings = _context.Earnings.Include(x => x.Taxi).Include(y => y.Driver).ToList();

            earning.WeeklyEarnings = earning.Earnings.Select(x => x.IncomeEarned ?? 0).Sum();
            var firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            var lastDayOfMonth  = firstDayOfMonth.AddMonths(1).AddDays(-1);

            earning.MonthlyEarnings = _context.Earnings
                                      .Where(e => e.ShiftDate >= firstDayOfMonth && e.ShiftDate <= lastDayOfMonth)
                                      .Select(x => x.IncomeEarned ?? 0).Sum();

            //graph data
            var earnings = _context.Earnings.Include(x => x.Driver).ToList();
            var income   = (from e in earnings
                            group e by e.Driver
                            into g
                            select new { Name = g.Key.FirstName, income = g.Sum(x => x.IncomeEarned) })
                           .OrderByDescending(x => x.income);


            var a = earnings?.Where(x => x.ShiftDate.Month == 1).Sum(x => x.IncomeEarned) ?? 0;

            var dataPoints1 = new List <DataPoint>();

            foreach (var i in income)
            {
                dataPoints1.Add(new DataPoint(i.Name, i.income ?? 0));
            }


            ViewBag.DataPoints1 = JsonConvert.SerializeObject(dataPoints1);
            return(View("OwnerEarnings", earning));
        }
        public async Task <ActionResult> AddEarningsAsync(EarningsViewModel earningsViewModel)
        {
            earningsViewModel = validateEarning(earningsViewModel);
            if (earningsViewModel.Error != null)
            {
                return(RedirectToAction("MyEarnings", "Earnings",
                                        new
                {
                    earningsViewModel.ShiftDate,
                    earningsViewModel.EarningsOn,
                    earningsViewModel.UserId,
                    earningsViewModel.WeeklyEarnings,
                    earningsViewModel.MonthlyEarnings,
                    earningsViewModel.DriverId
                }));
            }

            var earning       = MapViewModelToEarnings(earningsViewModel);
            var earningExists =
                _context.Earnings.FirstOrDefault(
                    x => x.DriverId == earning.DriverId && x.ShiftDate == earning.ShiftDate);

            if (ModelState.IsValid && earningExists == null)
            {
                _context.Add(earning);
                await _context.SaveChangesAsync();
            }
            else
            {
                earningExists.Earning      = earning.Earning;
                earningExists.IncomeEarned = earning.IncomeEarned;
                earningExists.Expenditure  = earning.Expenditure;
                earningExists.TaxiId       = earning.TaxiId;
                _context.Update(earningExists);
                await _context.SaveChangesAsync();
            }

            return(RedirectToAction("MyEarnings", "Earnings",
                                    new
            {
                earningsViewModel.ShiftDate,
                earningsViewModel.EarningsOn,
                earning.UserId,
                earningsViewModel.WeeklyEarnings,
                earningsViewModel.MonthlyEarnings,
                earningsViewModel.DriverId
            }));
        }
        public EarningsViewModel GetEarnings(EarningsViewModel earning)
        {
            var monday = earning.EarningsOn.AddDays(-(int)earning.EarningsOn.DayOfWeek + (int)DayOfWeek.Monday);
            var sunday = monday.AddDays(6);

            earning.Earnings = _context.Earnings.Where(x => x.DriverId == earning.DriverId).ToList();

            earning.WeeklyEarnings = earning.Earnings.Where(e => e.ShiftDate >= monday && e.ShiftDate <= sunday)
                                     .OrderBy(x => x.ShiftDate).Select(x => x.IncomeEarned ?? 0).Sum();
            var firstDayOfMonth = new DateTime(earning.EarningsOn.Year, earning.EarningsOn.Month, 1);
            var lastDayOfMonth  = firstDayOfMonth.AddMonths(1).AddDays(-1);

            earning.MonthlyEarnings = _context.Earnings
                                      .Where(e => e.ShiftDate >= firstDayOfMonth && e.ShiftDate <= lastDayOfMonth && e.DriverId == earning.DriverId)
                                      .Select(x => x.IncomeEarned ?? 0).Sum();
            return(earning);
        }
        public IActionResult Earnings()
        {
            var earningStays = staysService.GetEarning(userManager.GetUserId(User));

            if (earningStays == null || earningStays.Count == 0)
            {
                return PartialView("_NoDataPartial");
            }

            var earningsViewModel = new EarningsViewModel
            {
                TotalReservations = earningStays.Count,
                Commission = StaticData.Commission.ToString(),
                TotalEarnings = earningStays.Sum(s => s.TotalPrice).ToString("N"),
                EarningsAfterTaxAndCommission = ((earningStays.Sum(s => s.TotalPrice) * StaticData.Commission) / 100).ToString("N")
            };

            return View(earningsViewModel);
        }
예제 #13
0
        public IActionResult Set([FromBody] EarningsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            string   userId   = m_userManager.GetUserId(HttpContext.User);
            Earnings earnings = m_context.Earnings.Find(userId);

            if (earnings == null)
            {
                earnings = new Earnings(userId);
                m_context.Earnings.Add(earnings);
            }
            earnings.Update(model.AnnualIncome, model.Region);
            m_context.SaveChanges();

            return(Ok());
        }
        public IActionResult DriverEarnings(EarningsViewModel?earning)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }
            if (earning.UserId == 0)
            {
                earning           = new EarningsViewModel();
                earning.UserId    = int.Parse(userId);
                earning.ShiftDate = DateTime.Now;
            }

            earning.AllDrivers = _context.Driver.ToList();

            return(View("DriverEarnings", earning));
        }
예제 #15
0
        public IActionResult Index(EarningsViewModel earningsViewModel)
        {
            string userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }


            if (earningsViewModel.UserId == 0)
            {
                earningsViewModel           = new EarningsViewModel();
                earningsViewModel.UserId    = Int32.Parse(userId);
                earningsViewModel.ShiftDate = DateTime.Now;
            }

            var driver = _context.Driver.FirstOrDefault(x => x.UserId == Int32.Parse(userId));

            earningsViewModel = GetEarningsForDriver(earningsViewModel);

            earningsViewModel.AllSchedules = _context.Schedule.Include(c => c.Taxi).Where(x => x.DriverId == earningsViewModel.DriverId)
                                             .ToList();
            //graph data
            var              earnings        = _context.Earnings.Where(x => x.DriverId == driver.DriverId).ToList();
            DateTime         firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            DateTime         lastDayOfMonth  = firstDayOfMonth.AddMonths(1).AddDays(-1);
            var              a            = earnings?.Where(x => x.DriverId == driver.DriverId && x.ShiftDate >= firstDayOfMonth && x.ShiftDate <= lastDayOfMonth);
            int              weeksInMonth = (int)Math.Ceiling(((double)firstDayOfMonth.DayOfWeek + lastDayOfMonth.Day) / 7.0);
            List <DataPoint> dataPoints1  = new List <DataPoint>();

            var startdate = firstDayOfMonth;

            for (int i = 1; i <= weeksInMonth; i++)
            {
                dataPoints1.Add(new DataPoint(startdate.ToString("dd MMM yyy"), earnings.Where(x => x.ShiftDate.Date >= startdate && x.ShiftDate <= startdate.AddDays(7)).Sum(x => x.IncomeEarned) ?? 0));
                startdate = startdate.AddDays(7);
            }

            ViewBag.DataPoints1 = JsonConvert.SerializeObject(dataPoints1);
            return(View());
        }
        public IActionResult Export(EarningsViewModel earningsViewModel)
        {
            var listofIds = earningsViewModel?.Earnings?.Select(x => x.EarningId).ToList() ?? new List <int>();
            var earn      = _context.Earnings.Include(x => x.Driver).Include(y => y.Taxi).ToList();

            //.Where(x => listofIds.Contains(x.EarningId)).ToList();

            using (var workbook = new XLWorkbook())
            {
                var worksheet  = workbook.Worksheets.Add("Earnings");
                var currentRow = 1;
                worksheet.Cell(currentRow, 1).Value = "Driver";
                worksheet.Cell(currentRow, 2).Value = "Shift Date";
                worksheet.Cell(currentRow, 3).Value = "Vehicle driven";
                worksheet.Cell(currentRow, 4).Value = "Income (AUD)";
                foreach (var e in earn)
                {
                    if (e?.Driver != null && e?.Taxi != null)
                    {
                        currentRow++;
                        worksheet.Cell(currentRow, 1).Value = e.Driver.FirstName + " " + e.Driver.LastName;
                        worksheet.Cell(currentRow, 2).Value = e.ShiftDate;
                        worksheet.Cell(currentRow, 3).Value = e.Taxi.Registration;
                        worksheet.Cell(currentRow, 4).Value = "$ " + e.IncomeEarned;
                    }
                }

                using (var stream = new MemoryStream())
                {
                    workbook.SaveAs(stream);
                    var content = stream.ToArray();

                    return(File(
                               content,
                               "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                               "earnings.xlsx"));
                }
            }
        }
        public EarningsViewModel GetOwnerEarningsForDate(EarningsViewModel earning, int?driverId = 0)
        {
            var monday = earning.EarningsOn.AddDays(-(int)earning.EarningsOn.DayOfWeek + (int)DayOfWeek.Monday);
            var sunday = monday.AddDays(6);

            earning.Earnings = _context.Earnings.Where(e => e.ShiftDate >= monday && e.ShiftDate <= sunday)
                               .OrderBy(x => x.ShiftDate).ToList();
            if (driverId != null && driverId != 0)
            {
                earning.Earnings = earning.Earnings.Where(x => x.DriverId == driverId).ToList();
            }

            earning.WeeklyEarnings = earning.Earnings.Select(x => x.IncomeEarned ?? 0).Sum();
            var firstDayOfMonth = new DateTime(earning.EarningsOn.Year, earning.EarningsOn.Month, 1);
            var lastDayOfMonth  = firstDayOfMonth.AddMonths(1).AddDays(-1);

            earning.MonthlyEarnings = _context.Earnings
                                      .Where(e => e.ShiftDate >= firstDayOfMonth && e.ShiftDate <= lastDayOfMonth)
                                      .Select(x => x.IncomeEarned ?? 0).Sum();

            earning.Earnings = earning?.Earnings ?? new List <Earnings>();
            return(earning);
        }
예제 #18
0
        public async Task <IActionResult> Earnings(string interval)
        {
            var year  = DateTime.Now.Year;
            var month = DateTime.Now.Month;

            IEnumerable <LineItemModel> lineItems = await _api.GetAsync <IEnumerable <LineItemModel> >($"/merchants/{MerchantID}/lineItems");

            var earnings = new List <decimal>();
            var labels   = new List <string>();

            DateTime startDate = DateTime.MinValue;

            switch (interval)
            {
            case "hourly":
                startDate = DateTime.Now.Date;
                lineItems = lineItems
                            .Where(x => x.OrderCreatedAt.Date == startDate.Date && x.OrderOrderStatusTypeID == 2);
                for (int i = 0; i < 24; i++)
                {
                    var currentHour = startDate.AddHours(i);
                    var label       = currentHour.ToShortTimeString();
                    var sales       = lineItems.Where(x => x.OrderCreatedAt.Hour == currentHour.Hour).Sum(x => x.ItemAmount);
                    earnings.Add(sales);
                    labels.Add(label);
                }
                break;

            case "daily":
                int diff = (7 + ((int)DateTime.Now.DayOfWeek - 1)) % 7;
                startDate = DateTime.Now.AddDays(-1 * diff).Date;
                lineItems = lineItems
                            .Where(x => x.OrderCreatedAt >= startDate && x.OrderCreatedAt <= startDate.AddDays(7) &&
                                   x.OrderOrderStatusTypeID == 2);

                for (var i = 0; i < 7; i++)
                {
                    var currentDay = startDate.AddDays(i);
                    var label      = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedDayName(currentDay.DayOfWeek);
                    var sales      = lineItems.Where(x => x.OrderCreatedAt.Date == currentDay.Date).Sum(x => x.ItemAmount);
                    earnings.Add(sales);
                    labels.Add(label);
                }
                break;

            case "monthly":
                int daysInMonth = DateTime.DaysInMonth(year, month);
                startDate = DateTime.Parse($"{month}/1/{year}");
                var endDate = DateTime.Parse($"{month}/{daysInMonth}/{year}");
                lineItems = lineItems
                            .Where(x => x.OrderCreatedAt.Month == startDate.Month && x.OrderOrderStatusTypeID == 2);
                while (startDate <= endDate)
                {
                    var label = startDate.ToShortDateString();
                    var sales = lineItems.Where(x => x.OrderCreatedAt.Date == startDate.Date).Sum(x => x.ItemAmount);
                    earnings.Add(sales);
                    labels.Add(label);
                    startDate = startDate.AddDays(1);
                }
                break;

            case "yearly":
                lineItems = lineItems
                            .Where(x => x.OrderCreatedAt.Year == DateTime.Now.Year && x.OrderOrderStatusTypeID == 2);
                for (var i = 1; i <= 12; i++)
                {
                    var label = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(i);
                    var sales = lineItems.Where(x => x.OrderCreatedAt.Month == i).Sum(x => x.ItemAmount);
                    earnings.Add(sales);
                    labels.Add(label);
                }
                break;
            }
            var model = new EarningsViewModel
            {
                EarningsJSON = JsonConvert.SerializeObject(earnings),
                LabelsJSON   = JsonConvert.SerializeObject(labels),
            };

            return(PartialView("_Earnings", model));
        }
예제 #19
0
 public JsonResult Earning(int id, bool isAchievement)
 {
     return(Json(EarningsViewModel.SingleEarning(id, isAchievement), JsonRequestBehavior.AllowGet));
 }
        public IActionResult GetEarningsForDate(EarningsViewModel earningsViewModel)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }

            var driver = _context.Driver.First(x => x.UserId == int.Parse(userId));

            earningsViewModel.Earnings = new List <Earnings>();
            var dateearnings = new LinkedList <Earnings>();

            if (earningsViewModel.IncludeDateSearch)
            {
                earningsViewModel.EarningsOn = earningsViewModel.SearchDate;
                earningsViewModel            = GetOwnerEarningsForDate(earningsViewModel);
            }

            else if (earningsViewModel.Search != null)
            {
                var searchResult = SearchByDriver(earningsViewModel, driver.DriverId);
                var l1           = earningsViewModel.Earnings.Select(x => x.EarningId).Concat(searchResult.Earnings.Select(x => x.EarningId)).ToList();

                earningsViewModel.Earnings = _context.Earnings.Where(x => l1.Contains(x.EarningId)).ToList();
            }
            else
            {
                earningsViewModel.Earnings = _context.Earnings.ToList();
            }

            if (earningsViewModel?.Earning == null || (!earningsViewModel?.Earnings?.Any() ?? true))
            {
                earningsViewModel.Earnings        = new List <Earnings>();
                earningsViewModel.MonthlyEarnings = 0;
                earningsViewModel.WeeklyEarnings  = 0;
            }
            else
            {
                earningsViewModel.WeeklyEarnings = earningsViewModel
                                                   .Earnings.Select(x => x.IncomeEarned ?? 0).Sum();
            }

            earningsViewModel.Earnings        = earningsViewModel.Earnings;
            earningsViewModel.MonthlyEarnings = earningsViewModel.MonthlyEarnings;
            earningsViewModel.UserId          = int.Parse(userId);


            var earning = new EarningsViewModel();

            earning.EarningsOn = earningsViewModel.EarningsOn;
            earning.UserId     = int.Parse(userId);
            return(RedirectToAction("MyEarnings", "Earnings",
                                    new
            {
                earningsViewModel.ShiftDate,
                earning.EarningsOn,
                earning.UserId,
                earning.WeeklyEarnings,
                earning.MonthlyEarnings,
                earningsViewModel.DriverId
            }));
        }
        public IActionResult GetOwnersEarnings(EarningsViewModel earningsViewModel)
        {
            var userId = HttpContext.Session.GetString("CurrentUserId");

            if (string.IsNullOrEmpty(userId))
            {
                return(RedirectToAction("Login", "Users"));
            }


            var earning = new EarningsViewModel();

            earning.Earnings = new List <Earnings>();
            var dateearnings = new LinkedList <Earnings>();

            if (earningsViewModel.IncludeDateSearch)
            {
                earningsViewModel.EarningsOn = earningsViewModel.SearchDate;
                earning = GetOwnerEarningsForDate(earningsViewModel);
            }

            else if (earningsViewModel.Search != null)
            {
                var ears         = new List <Earnings>();
                var searchResult = Search(earningsViewModel);

                var l1 = earning.Earnings.Select(x => x.EarningId).Concat(searchResult.Earnings.Select(x => x.EarningId)).ToList();

                earning.Earnings = _context.Earnings.Where(x => l1.Contains(x.EarningId)).ToList();
            }
            else
            {
                earning.Earnings = _context.Earnings.ToList();
            }

            if (earning?.Earning == null || (!earning?.Earnings?.Any() ?? true))
            {
                earning.Earnings        = new List <Earnings>();
                earning.MonthlyEarnings = 0;
                earning.WeeklyEarnings  = 0;
            }
            else
            {
                earning.WeeklyEarnings = earning
                                         .Earnings.Select(x => x.IncomeEarned ?? 0).Sum();
            }

            earningsViewModel.Earnings        = earning.Earnings;
            earningsViewModel.MonthlyEarnings = earning.MonthlyEarnings;
            earning.UserId = int.Parse(userId);

            //graph data
            var earnings = _context.Earnings.Include(x => x.Driver).ToList();

            var a = earnings?.Where(x => x.ShiftDate.Month == 1).Sum(x => x.IncomeEarned) ?? 0;

            var list = from e in earnings
                       group e by e.Driver
                       into g
                       select new { Name = g.Key.FirstName + " " + g.Key.LastName, earnings = g.Sum(c => c.Earning) };



            var dataPoints1 = new List <DataPoint>();

            foreach (var e in list)
            {
                dataPoints1.Add(new DataPoint(e.Name, e?.earnings ?? 0));
            }


            ViewBag.DataPoints1 = JsonConvert.SerializeObject(dataPoints1);

            return(View("OwnerEarnings", earningsViewModel));
        }