using FrameworkDAL.DTO.UOM; using FrameworkDAL.DTO.WebService; using FrameworkDAL.Query.UOM; using FrameworkDAL.Query.WebService; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.UOM { public class UOMDAL : IUOMDAL { private readonly IQueryExecutor _QueryExecutor; private readonly ILogger _logger; public UOMDAL(IQueryExecutor IQueryExecutor, ILogger logger) { _QueryExecutor = IQueryExecutor; _logger = logger; } public async Task GetUOM(int UOMId, LoginDTO LoginDTO) { try { string Sql = UOMQB.GET_UOM; var Parameters = new { uomid = UOMId }; UOMDTO UOMDTO = await _QueryExecutor.QuerySingleAsync(LoginDTO, Sql, Parameters); return JsonConvert.SerializeObject(UOMDTO); } catch (Exception) { throw; } } public async Task GetSelectionListUOM(CriteriaDTO criteriaDTO, LoginDTO LoginDTO) { try { string sql = UOMQB.GetSelectListUOM; var result = await _QueryExecutor.QueryAsync(LoginDTO, sql, null!); return JsonConvert.SerializeObject(result); } catch (Exception ex) { _logger.LogError(ex, "GetSelectionListUOM DAL failed"); throw; } } public async Task SaveUOM(UOMDTO UOMDTO, LoginDTO LoginDTO) { try { UOMDTO.UOMCreatedById = LoginDTO.UserId; UOMDTO.UOMCreatedOn = DateTime.UtcNow; UOMDTO.UOMModifiedById = LoginDTO.UserId; UOMDTO.UOMModifiedOn = DateTime.UtcNow; const string Sql = UOMQB.SAVE_UOM; return await _QueryExecutor.ExecuteAsync(LoginDTO, Sql, UOMDTO); } catch (Exception ex) { throw new Exception("Error while saving UOM", ex); } } public async Task UpdateUOM(UOMDTO UOMDTO, LoginDTO LoginDTO) { try { UOMDTO.UOMModifiedById = LoginDTO.UserId; UOMDTO.UOMModifiedOn = DateTime.UtcNow; const string Sql = UOMQB.UPDATE_UOM; return await _QueryExecutor.ExecuteAsync(LoginDTO, Sql, UOMDTO); } catch (Exception ex) { throw new Exception("Error while update UOM", ex); } } public async Task DeleteUOM(int UOMId, LoginDTO LoginDTO) { try { string Sql = UOMQB.DELETE_UOM; var parameter = new { uomid = UOMId }; var result = await _QueryExecutor.ExecuteAsync(LoginDTO, Sql, parameter); if (result > 0) { return ($"UOM Details Deleted Successfully with UOM Id {UOMId}"); } else { return ("UOM not found or could not be deleted."); } } catch (Exception ex) { throw new Exception("Error while deleting UOM Details", ex); } } } }