From c4ad3e53c7327fe0d9508ad013d6a349c57ccb9f Mon Sep 17 00:00:00 2001 From: dibakor Date: Sun, 26 Jul 2026 18:18:02 +0600 Subject: [PATCH] add stock checking in save order endpoint --- .../Services/MobileApp/OrderService.cs | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Api/OnlineSalesAutoCrop.CoreAPI.Services/Services/MobileApp/OrderService.cs b/Api/OnlineSalesAutoCrop.CoreAPI.Services/Services/MobileApp/OrderService.cs index df9659a..d52960a 100644 --- a/Api/OnlineSalesAutoCrop.CoreAPI.Services/Services/MobileApp/OrderService.cs +++ b/Api/OnlineSalesAutoCrop.CoreAPI.Services/Services/MobileApp/OrderService.cs @@ -7,6 +7,7 @@ using OnlineSalesAutoCrop.CoreAPI.Models.Global; using OnlineSalesAutoCrop.CoreAPI.Models.Requests.MobileApp; using OnlineSalesAutoCrop.CoreAPI.Models.Responses; using OnlineSalesAutoCrop.CoreAPI.Models.Responses.MobileApp; +using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Integrations; using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.MobileApp; using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.Systems; using System; @@ -23,12 +24,16 @@ public class OrderService : IOrderService private readonly AppSettings _settings; private readonly IUserService _userService; private readonly IMobileMasterDataService _masterService; + private readonly IIntegrationHttpService _httpService; - public OrderService(IOptions options, IUserService userService, IMobileMasterDataService masterService) + + public OrderService(IOptions options, IUserService userService, IMobileMasterDataService masterService, + IIntegrationHttpService httpService) { _settings = options.Value; _userService = userService; _masterService = masterService; + _httpService = httpService; } public async Task SaveOrderAsync(SaveOrderRequest request, int userId) @@ -69,6 +74,23 @@ public class OrderService : IOrderService item.OrderId = request.OrderId; } + var materialStock = await _httpService.GetMaterialStockAsync(request.PlantCode); + if(materialStock is null || materialStock?.Count==0) + { + throw new Exception($"Material Stocks not found against this Plant Code-{request.PlantCode}"); + } + + + foreach (var item in request.Items) + { + decimal currentStock = materialStock.FirstOrDefault(x => x.MaterialCode == item.MaterialCode)?.AvailableStock ?? 0; + + if(currentStock 0 ;