Ejemplo n.º 1
0
 public IActionResult  ClientDailyRecord([FromBody] DailyRecordDto model)
 {
     try
     {
         if (model.userType == 1)
         {
             model.ClientId = null;
         }
         else
         {
             model.DriverId = null;
         }
         var result = _orderService.DailyRecord(model);
         return(Ok(result));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
        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);
        }