public CompanyRevenueWithHeadersForCompany GetCompanyRevenueCards(OrderListRequest model)
        {
            Configuration configuration = _db.Configurations.FirstOrDefault();
            long          currentUserId = _principalService.GetUserId();
            long          employeeId    = _db.Employees.FirstOrDefault(x => x.UserId == currentUserId).Id;
            CompanyRevenueWithHeadersForCompany companyRevenueWithHeadersForCompany = new CompanyRevenueWithHeadersForCompany();
            List <OrderResponseWithRevenue>     orderList = _db.Orders
                                                            .Where(x =>
                                                                   (!model.OrderStatusId.HasValue || x.OrderStatusId == model.OrderStatusId) &&
                                                                   (!model.ClientId.HasValue || x.ClientId == model.ClientId) &&
                                                                   (!model.DriverId.HasValue || x.Record.DriverId == model.DriverId) &&
                                                                   (!model.From.HasValue || x.OrderDate == model.From.Value)
                                                                   )
                                                            .Include(x => x.Record)
                                                            .ThenInclude(x => x.Driver)
                                                            .Include(x => x.Area)
                                                            .Include(x => x.Client)
                                                            .Include(x => x.CreatedBy)
                                                            .Include(x => x.OrderStatus)
                                                            .OrderByDescending(x => x.Id)
                                                            .Select(e => new OrderResponseWithRevenue
            {
                Address           = e.Address,
                AreaId            = e.AreaId,
                AreaName          = e.Area.AreaName,
                ClientId          = e.ClientId,
                ClientName        = e.Client.ClientFullName,
                CreatedBy         = e.CreatedBy.FullNameAr,
                DriverId          = e.Record.DriverId,
                OrderId           = e.OrderNumber,
                DriverName        = e.Record.Driver != null ? e.Record.Driver.DriverFullName : "",
                DriverPhoneNumber = e.Record.Driver != null ? e.Record.Driver.MobileNumber : "",
                OrderDate         = e.OrderDate,
                OrderTotalPrice   = e.OrderTotalPrice,
                CompanyRevenue    = e.CoompanyRevenue,
                AddedPrice        = e.AddedPrice,
                DriverRevenue     = e.DriverRevenue,
                OrderStatusName   = e.OrderStatus.StatusName
            })
                                                            .ToList();

            companyRevenueWithHeadersForCompany.TotalCompanyRevenue = (orderList.Sum(x => x.CompanyRevenue));
            companyRevenueWithHeadersForCompany.TotalDriverRevenue  = orderList.Sum(x => x.DriverRevenue);
            companyRevenueWithHeadersForCompany.TotalOrderPrices    = orderList.Sum(x => x.OrderTotalPrice) - companyRevenueWithHeadersForCompany.TotalCompanyRevenue - companyRevenueWithHeadersForCompany.TotalDriverRevenue;;

            int totalCount = orderList.Count();

            List <OrderResponseWithRevenue> result = orderList.Skip((model.PageNumber - 1) * model.PageSize).Take(model.PageSize).ToList();

            companyRevenueWithHeadersForCompany.OrderListWithRevenue = new MainResponse <List <OrderResponseWithRevenue> >(result, totalCount);
            return(companyRevenueWithHeadersForCompany);
        }
        public CompanyRevenueWithHeadersForCompany DailyRecord(DailyRecordDto model)
        {
            Configuration configuration = _db.Configurations.FirstOrDefault();
            long          currentUserId = _principalService.GetUserId();
            long          employeeId    = _db.Employees.FirstOrDefault(x => x.UserId == currentUserId).Id;
            CompanyRevenueWithHeadersForCompany companyRevenueWithHeadersForCompany = new CompanyRevenueWithHeadersForCompany();
            List <OrderResponseWithRevenue>     orderList = _db.Orders
                                                            .Where(x =>

                                                                   (!model.ClientId.HasValue || x.ClientId == model.ClientId) &&
                                                                   (!model.DriverId.HasValue || x.Record.DriverId == model.DriverId) &&
                                                                   (x.OrderDate.Value.Date >= model.OrdersDateFrom.Date) &&
                                                                   (x.OrderDate.Value.Date <= model.OrdersDateTo.Date)

                                                                   )
                                                            .Include(x => x.Record)
                                                            .ThenInclude(x => x.Driver)
                                                            .Include(x => x.Client)
                                                            .Include(x => x.Area)
                                                            .ThenInclude(x => x.City)
                                                            .Include(x => x.CreatedBy)
                                                            .Include(x => x.OrderStatus)
                                                            .OrderByDescending(x => x.Area.City)
                                                            .ThenBy(x => x.Area)
                                                            .ToList()
                                                            .Select(e => new OrderResponseWithRevenue
            {
                Address           = e.Address,
                AreaId            = e.AreaId,
                AreaName          = e.Area.City.CityName + " - " + e.Area.AreaName,
                ClientId          = e.ClientId,
                ClientName        = e.Client.ClientFullName,
                CreatedBy         = e.CreatedBy.FullNameAr,
                DriverId          = e.Record.DriverId,
                OrderId           = e.OrderNumber,
                DriverName        = e.Record.Driver != null ? e.Record.Driver.DriverFullName : "",
                DriverPhoneNumber = e.Record.Driver != null ? e.Record.Driver.MobileNumber : "",
                OrderDate         = e.OrderDate,
                OrderTotalPrice   = e.OrderTotalPrice,
                CompanyRevenue    = e.CoompanyRevenue,
                AddedPrice        = e.AddedPrice,
                DriverRevenue     = e.DriverRevenue,
                OrderStatusName   = e.OrderStatus.StatusName,
                PolicyNumber      = e.PolicyNumber,
                DeliveryNumber    = e.DeliveryPhoneNumber,
                OrderStatusId     = e.OrderStatusId,
                DeliveryCost      = e.CoompanyRevenue + e.DriverRevenue
            })
                                                            .ToList();

            //companyRevenueWithHeadersForCompany.TotalClientRevenue = orderList.Sum(x => x.client);
            companyRevenueWithHeadersForCompany.TotalDriverRevenue = orderList.Sum(x => x.DriverRevenue);
            companyRevenueWithHeadersForCompany.TotalOrderPrices   = orderList.Sum(x => x.OrderTotalPrice) - companyRevenueWithHeadersForCompany.TotalCompanyRevenue - companyRevenueWithHeadersForCompany.TotalDriverRevenue;

            int totalCount = orderList.Count();

            List <OrderResponseWithRevenue> result = orderList;

            companyRevenueWithHeadersForCompany.OrderListWithRevenue = new MainResponse <List <OrderResponseWithRevenue> >(result, totalCount);
            return(companyRevenueWithHeadersForCompany);
        }