using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using PartnerDAL.DTO.PartnerProduct; using PartnerDAL.Query.PartnerProduct; namespace PartnerDAL.CustomCode.PartnerProduct { public class PartnerProductDAL : IPartnerProductDAL { private readonly IQueryExecutor _queryExecutor; private readonly IValidation _validation; public PartnerProductDAL(IQueryExecutor queryExecutor, IValidation validation) { _queryExecutor = queryExecutor; _validation = validation; } public async Task GetPartnerProduct(int partnerProductId, LoginDTO loginDTO) { try { var result = await _queryExecutor.QuerySingleAsync( loginDTO, PartnerProductQB.GET_PARTNER_PRODUCT, new { PartnerProductId = partnerProductId }).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetPartnerProductListByPartner(int partnerId, LoginDTO loginDTO) { try { var result = await _queryExecutor.QueryAsync( loginDTO, PartnerProductQB.GET_PARTNER_PRODUCT_LIST_BY_PARTNER, new { PartnerId = partnerId }).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetSelectListPartnerProduct(CriteriaDTO criteriaDTO, LoginDTO loginDTO, CancellationToken ct) { try { var result = await _queryExecutor.QueryWithCriteriaAsync( loginDTO, PartnerProductQB.GET_SELECTLIST_PARTNER_PRODUCT, null, criteriaDTO, ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SavePartnerProduct(PartnerProductDTO partnerProductDTO, LoginDTO loginDTO) { try { return await _queryExecutor.ExecuteIdentityAsync( loginDTO, PartnerProductQB.SAVE_PARTNER_PRODUCT, partnerProductDTO).ConfigureAwait(false); } catch (Exception ex) { string error = await _validation.HandleException(ex, ErrorResponse.SaveErrorMessage).ConfigureAwait(false); throw new Exception(error); } } public async Task UpdatePartnerProduct(PartnerProductDTO partnerProductDTO, LoginDTO loginDTO) { try { return await _queryExecutor.ExecuteAsync( loginDTO, PartnerProductQB.UPDATE_PARTNER_PRODUCT, partnerProductDTO).ConfigureAwait(false); } catch (Exception ex) { string error = await _validation.HandleException(ex, ErrorResponse.UpdateErrorMessage).ConfigureAwait(false); throw new Exception(error); } } public async Task DeletePartnerProduct(int partnerProductId, LoginDTO loginDTO) { try { return await _queryExecutor.ExecuteAsync( loginDTO, PartnerProductQB.DELETE_PARTNER_PRODUCT, new { PartnerProductId = partnerProductId }).ConfigureAwait(false); } catch (Exception ex) { string error = await _validation.HandleException(ex, ErrorResponse.DeleteErrorMessage).ConfigureAwait(false); throw new Exception(error); } } } }