public async Task <HttpResponseMessage> AllocateReleases([FromBody] RequestRelease request)
        {
            var clients = request.Clients;
            var mfrs    = request.Mfrs;

            AllocateMfrs(clients, mfrs);

            var packs = request.Packs;

            if (packs.Count() > 0)
            {
                List <ReleasePack> packsByProduct = new List <ReleasePack>();
                var productLevelProducts          = packs.Where(p => p.ProductLevel).ToList();

                var tempPacks = packs.Where(p => !p.ProductLevel).ToList();

                if (productLevelProducts.Count() > 0)
                {
                    //Get Packs By ProductName
                    var response = await releaseProvider.GetPacksByProduct(productLevelProducts, 1, 1000);

                    var packsResult = response?.Data;

                    if (packsResult != null)
                    {
                        packsByProduct = packsResult;
                    }

                    //update product level for packs
                    foreach (var p in packsByProduct)
                    {
                        p.ProductLevel = true;
                        //var updateProductLevelPack = packsByProduct.FirstOrDefault(x => x.Id == p.Id);
                        //  if (updateProductLevelPack != null)
                        //  {
                        //      updateProductLevelPack.ProductLevel = p.ProductLevel;
                        //  }
                    }
                }

                if (tempPacks.Count > 0)
                {
                    packsByProduct.AddRange(tempPacks);
                }

                AllocatePacks(clients, packsByProduct);
            }
            updateCLientReleases(clients);
            return(Request.CreateResponse(HttpStatusCode.OK));
        }