public IHttpActionResult GetPackageDetails(int id, string shopId)
        {
            Package package = dbCtx.Packages.Find(id);

            if (package == null)
            {
                return(NotFound());
            }
            else
            {
                //get packageDTO
                PackageDetailsDTO pd = new PackageDetailsDTO()
                {
                    DeliveryMethod = "Door To Door",
                    DeliveryTime   = package.DeliveryTime,
                    PackageId      = package.Id,
                    PackageStatus  = package.Status,
                    PaymentMethod  = dbCtx.Orders.FirstOrDefault(o => o.Id == package.OrderId).PaymentMethod,
                    ShippingFees   = 50,
                    TotalCharge    = package.Price,
                };


                List <OrderProduct> orderProducts = dbCtx.OrderProducts.Include("Product").Where(op => op.OrderId == package.OrderId).ToList();
                List <OrderProduct> packageOrder  = orderProducts.Where(p => p.Product.ShopID == shopId).ToList();

                Order        orderRequested      = dbCtx.Orders.FirstOrDefault(o => o.Id == package.OrderId);
                ShipmentData packageShipmentData = dbCtx.ShipmentDatas.FirstOrDefault(s => s.Id == orderRequested.ShipmentDataId);
                pd.ShippingData = orderRequested.ShipmentData;

                List <PackageProductDTO> packageProductList = new List <PackageProductDTO>();
                PackageProductDTO        singleProduct;
                foreach (var orderProduct in orderProducts)
                {
                    singleProduct = new PackageProductDTO()
                    {
                        Id         = orderProduct.Product.Id,
                        Name       = orderProduct.Product.Name,
                        Images     = orderProduct.Product.Images,
                        PackageId  = package.Id,
                        Variations = orderProduct.Variations,
                        Discount   = orderProduct.Product.Discount == null?0: orderProduct.Product.Discount,
                        Quantity   = orderProduct.Quantity,
                        Price      = orderProduct.Quantity,
                    };
                    packageProductList.Add(singleProduct);
                }
                pd.ProductList = packageProductList;
                return(Ok(package));
            }
        }
        public PackageDetailsDTO GetPackageDetails(string packageId)
        {
            var currentPackage = this.db
                                 .Packages
                                 .Include(x => x.Recipient)
                                 .FirstOrDefault(package => package.Id == packageId);

            string deliveryTime = GetEstimatedDeliveryTime(currentPackage);

            PackageDetailsDTO detailsDTO = new PackageDetailsDTO()
            {
                Description           = currentPackage.Description,
                Recipient             = currentPackage.Recipient.UserName,
                ShippingAddress       = currentPackage.ShippingAddress,
                Status                = currentPackage.Status.ToString(),
                Weight                = currentPackage.Weight,
                EstimatedDeliveryTime = deliveryTime
            };

            return(detailsDTO);
        }