/// <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 }