public DeliveryListNumber GetDeliveries(int offset = 0, int limit = int.MaxValue, string needle = "", bool isCreatingDispatch = false, int dispatchId = 0)
        {
            if (UserHelper.IsAuthorize(new List <int> {
                (int)UserType.SuperAdmin, (int)UserType.Admin
            }))
            {
                dynamic allDeliveries;
                if (!isCreatingDispatch)
                {
                    allDeliveries = (from deliveries in _context.Deliveries
                                     join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q
                                     from orders in q.DefaultIfEmpty()
                                     where (deliveries.Deleted_At == null &&
                                            (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle)))
                                     select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit);
                }
                else
                {
                    if (dispatchId == 0)
                    {
                        allDeliveries = (from deliveries in _context.Deliveries
                                         join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q
                                         from orders in q.DefaultIfEmpty()
                                         where (deliveries.Deleted_At == null &&
                                                (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle)) &&
                                                deliveries.If_Delivery_Dispatch_Balanced == false)
                                         select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit);
                    }
                    else
                    {
                        List <int> deliveryDispatchIds = _context.Deliveries_Dispatches.Where(d => d.Dispatch_Id == dispatchId && d.Deleted_At == null).Select(d => d.Delivery_Id).ToList();
                        allDeliveries = (from deliveries in _context.Deliveries
                                         join orders in _context.Orders on deliveries.Order_Id equals orders.Id into q
                                         from orders in q.DefaultIfEmpty()
                                         where (deliveries.Deleted_At == null &&
                                                (orders.ATB.Contains(needle) || orders.Container_Id.Contains(needle)) &&
                                                (deliveries.If_Delivery_Dispatch_Balanced == false || deliveryDispatchIds.Contains(deliveries.Id)))
                                         select new { Delivery = deliveries, Order = orders }).OrderByDescending(d => d.Delivery.Date_Of_Delivery).Skip(offset).Take(limit);
                    }
                }
                //List<Delivery> listOfDeliveries = new List<Delivery>();


                DeliveryListNumber result = new DeliveryListNumber();
                try
                {
                    List <DeliveryList> listOfDeliveryResult = new List <DeliveryList>();

                    foreach (var item in allDeliveries)
                    {
                        DeliveryList deliveryResult = new DeliveryList();
                        deliveryResult.Id                         = item.Delivery.Id;
                        deliveryResult.OrderId                    = item.Delivery.Order_Id;
                        deliveryResult.ATB                        = item.Order.ATB;
                        deliveryResult.Container_Id               = item.Order.Container_Id;
                        deliveryResult.Date_Of_Delivery           = item.Delivery.Date_Of_Delivery == null? string.Empty : item.Delivery.Date_Of_Delivery.ToString("dd-MM-yyyy");
                        deliveryResult.Name                       = item.Order.Name;
                        deliveryResult.IsBalancedDeliveryDispatch = item.Delivery.If_Delivery_Dispatch_Balanced;
                        deliveryResult.IsDifferentDeliveryOrder   = item.Delivery.If_Differential_Delivery_Order;

                        int deliveryId = item.Delivery.Id;
                        // gdzie masz te przedmioty, któe znajdują się w magazynie? Wyszukaj je funkcją strzałkową. Tylko, te które mają ID
                        Deliveries_Dispatches deliveryDispatch = _context.Deliveries_Dispatches.FirstOrDefault(d => d.Delivery_Id == deliveryId && d.Deleted_At == null);
                        if (deliveryDispatch != null)
                        {
                            deliveryResult.IsDispatched = true;
                        }
                        else
                        {
                            deliveryResult.IsDispatched = false;
                        }

                        listOfDeliveryResult.Add(deliveryResult);
                    }

                    result.ListOfDeliveries   = listOfDeliveryResult;
                    result.NumberOfDeliveries = _deliveryManager.CountOfDeliveries(needle, isCreatingDispatch, dispatchId);
                    return(result);
                }
                catch (Exception ex)
                {
                    throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
                }
            }
            else
            {
                throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "User don't have acces to this method"));
            }
        }