using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.ResponseStandard; using GB5Shared.Validation; using MMDAL.CustomCode.ItemGroup; using MMDAL.DTO.ItemGroup; using MMDAL.Query.ItemGroup; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AdminDAL.CustomCode.ItemGroup { public class ItemGroupDAL : IItemGroupDAL { private readonly IQueryExecutor _QueryExecutor; private readonly IValidation _Validation; public ItemGroupDAL(IQueryExecutor IQueryExecutor, IValidation validation) { _QueryExecutor = IQueryExecutor; _Validation = validation; } public async Task GetItemGroup(int ItemGroupId, LoginDTO LoginDTO) { string Json = ""; try { string sql = ItemGroupQB.GET_ITEMGROUP; var parameters = new { itemgroupid = ItemGroupId }; ItemGroupDTO ItemGroupDTOs = await _QueryExecutor.QuerySingleAsync(LoginDTO, sql, parameters); Json = JsonConvert.SerializeObject(ItemGroupDTOs); return Json; } catch (Exception) { throw; } finally { Json = null; } } public async Task SaveItemGroup(ItemGroupDTO ItemGroupDTO, LoginDTO LoginDTO) { try { string Sql = ItemGroupQB.SAVE_ITEMGROUP; return await _QueryExecutor.ExecuteAsync(LoginDTO, Sql, ItemGroupDTO); } catch (Exception ex) { string Error = await _Validation.HandleException(ex, $"{ErrorResponse.SaveErrorMessage}"); throw new Exception(Error); } } public async Task UpdateItemGroup(ItemGroupDTO ItemGroupDTO, LoginDTO LoginDTO) { try { string Sql = ItemGroupQB.UPDATE_ITEMGROUP; return await _QueryExecutor.ExecuteAsync(LoginDTO, Sql, ItemGroupDTO); } catch (Exception ex) { string Error = await _Validation.HandleException(ex, $"{ErrorResponse.UpdateErrorMessage}"); throw new Exception(Error); } } public async Task DeleteItemGroup(int ItemGroupId, LoginDTO LoginDTO) { try { return await _QueryExecutor.ExecuteAsync( LoginDTO, ItemGroupQB.DELETE_ITEMGROUP, new { ItemGroupId = ItemGroupId } ); } catch (Exception ex) { throw new Exception($"Error while deleting ItemGroup with ID {ItemGroupId}", ex); } } public async Task GetSelectListItemGroup(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { string Sql = ItemGroupQB.GET_SELECTLIST_ITEM_GROUP; var Result = await _QueryExecutor.QueryAsync(LoginDTO, Sql, null!); string Json = JsonConvert.SerializeObject(Result); return Json; } catch (Exception) { throw; } } public async Task GetItemGroupTree(LoginDTO LoginDTO, CriteriaDTO CriteriaDTO) { try { string Sql = ItemGroupQB.GET_ITEMGROUP_FLAT_LIST; var Result = await _QueryExecutor.QueryAsync(LoginDTO, Sql, null!); return JsonConvert.SerializeObject(Result); } catch (Exception) { throw; } } } }