/// <summary>
        /// گرفتن اطلاعات گروه محصول بر اساس شناسه محصول
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <int?> GetProductGroupIdbyProductId(int id)
        {
            var product = await TableNoTracking.FirstOrDefaultAsync(a => a.Id == id);

            if (product == null)
            {
                return(null);
            }

            return(product.ProductGroupId);
        }
        /// <summary>
        /// محاسبه تخفیف
        /// </summary>
        /// <param name="productId"></param>
        /// <param name="groupId"></param>
        /// <returns></returns>
        public async Task <ProductDiscount> CalculatePrice(int?productId, int?groupId)
        {
            if (productId != null)
            {
                return(await CulculateProduct());
            }
            else if (groupId != null)
            {
                return(await CalculateGroupProduct());
            }
            return(await CalculateAll());

            #region LocalMethods
            // بررسی و اعمال تخفیف روی محصولات
            async Task <ProductDiscount> CulculateProduct()
            {
                var model = await TableNoTracking.FirstOrDefaultAsync(a => a.ProductId == productId.Value);

                if (model == null)
                {
                    return(await CalculateGroupProduct());
                }

                return(model);
            }

            // بررسی و اعمال تخفیف رو گروه مخحصولات
            async Task <ProductDiscount> CalculateGroupProduct()
            {
                var model = await TableNoTracking.FirstOrDefaultAsync(a => a.ProductGroupId == groupId.Value);

                if (model == null)
                {
                    return(await CalculateAll());
                }

                return(model);
            }

            // بررسی و اعمال تخفیف رو تمامی محصولات
            async Task <ProductDiscount> CalculateAll()
            => await TableNoTracking.FirstOrDefaultAsync(a => a.ProductGroupId == null && a.ProductId == null);

            #endregion
        }