using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using PayRollDAL.DTO.Perq; using PayRollDAL.Query.Perq; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Threading.Tasks; namespace PayRollDAL.CustomeCode.Perq { public class PerqDAL : IPerqDAL { private readonly IQueryExecutor _QueryExecutor; public PerqDAL(IQueryExecutor IQueryExecutor) { _QueryExecutor = IQueryExecutor; } public async Task GetPerq(int PerqId, LoginDTO LoginDTO) { try { var parameters = new { perqid = PerqId }; PerqDTO PerqDTO = await _QueryExecutor.QuerySingleAsync(LoginDTO, PerqQB.GET_PERQ, parameters); List PerqDetailDTOs = (await _QueryExecutor.QueryAsync(LoginDTO, PerqQB.GET_PERQDETAIL, parameters)).ToList(); PerqDTO.PerqDetailArray = PerqDetailDTOs; return JsonConvert.SerializeObject(PerqDTO); } catch (Exception) { throw; } } public async Task GetSelectListPerq(int FirstNumber, int MaxResult, LoginDTO LoginDTO, bool IsCount = false) { try { string Json = ""; if (IsCount == false) { string SQL = PerqQB.GET_SELECTLIST_PERQ; var parameter = new { firstnumber = FirstNumber, maxresult = MaxResult }; List PerqPicklistDTOs = (await _QueryExecutor.QueryAsync(LoginDTO, SQL, parameter)).ToList(); Json = JsonConvert.SerializeObject(PerqPicklistDTOs); } else { int Count = 0; Json = Count.ToString(); } return Json; } catch (Exception) { throw; } } public async Task SavePerq(PerqDTO PerqDTO, LoginDTO LoginDTO, DbTransaction DbTransaction) { try { return await _QueryExecutor.ExecuteAsync(LoginDTO, PerqQB.SAVE_PERQ, PerqDTO, DbTransaction); } catch (Exception) { throw; } } public async Task UpdatePerq(PerqDTO PerqDTO, LoginDTO LoginDTO, DbTransaction DbTransaction) { try { return await _QueryExecutor.ExecuteAsync(LoginDTO, PerqQB.UPDATE_PERQ, PerqDTO, DbTransaction); } catch (Exception) { throw; } } public async Task SavePerqDetail(PerqDetailDTO PerqDetailDTO, int PerqId, LoginDTO LoginDTO, DbTransaction DbTransaction) { try { var parameters = new { PerqDetailId = PerqDetailDTO.PerqDetailId, PerqId = PerqId, PerqNatureId = PerqDetailDTO.PerqNatureId, PerqDetailSlNo = PerqDetailDTO.PerqDetailSlNo, PerqDetailPerqValue = PerqDetailDTO.PerqDetailPerqValue, PerqDetailCharged = PerqDetailDTO.PerqDetailCharged, PerqDetailPerqNetValue = PerqDetailDTO.PerqDetailPerqNetValue, PerqDetailRemarks = PerqDetailDTO.PerqDetailRemarks }; return await _QueryExecutor.ExecuteAsync(LoginDTO, PerqQB.SAVE_PERQDETAIL, parameters, DbTransaction); } catch (Exception) { throw; } } public async Task DeletePerqDetailByPerqId(int PerqId, LoginDTO LoginDTO, DbTransaction DbTransaction) { try { var parameters = new { perqid = PerqId }; return await _QueryExecutor.ExecuteAsync(LoginDTO, PerqQB.DELETE_PERQDETAIL_BY_PERQID, parameters, DbTransaction); } catch (Exception) { throw; } } } }