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); }