using System; using System.Collections.Generic; using System.Threading.Tasks; using FrameworkDAL.DTO.SysJobShare; using FrameworkDAL.Query.SysJobShare; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using Newtonsoft.Json; namespace FrameworkDAL.CustomCode.SysJobShare { public class SysJobShareDAL : ISysJobShareDAL { private readonly IQueryExecutor _QueryExecutor; public SysJobShareDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetSysJobShare(int SysJobShareId, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.GET_SYSJOBSHARE; var parameters = new { SysJobShareId, TenantId = LoginDTO.ClientId }; IEnumerable result = await _QueryExecutor.QueryAsync(LoginDTO, sql, parameters); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task GetListSysJobShare(int SysJobId, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.GET_LIST_SYSJOBSHARE; var parameters = new { SysJobId, TenantId = LoginDTO.ClientId }; IEnumerable result = await _QueryExecutor.QueryAsync(LoginDTO, sql, parameters); return JsonConvert.SerializeObject(result); } catch (Exception) { throw; } } public async Task SaveSysJobShare(SysJobShareDTO SysJobShareDTO, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.SAVE_SYSJOBSHARE; return await _QueryExecutor.ExecuteAsync(LoginDTO, sql, SysJobShareDTO); } catch (Exception ex) { throw new Exception("Error while saving SysJobShare", ex); } } public async Task UpdateSysJobShare(SysJobShareDTO SysJobShareDTO, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.UPDATE_SYSJOBSHARE; return await _QueryExecutor.ExecuteAsync(LoginDTO, sql, SysJobShareDTO); } catch (Exception ex) { throw new Exception("Error while updating SysJobShare", ex); } } public async Task> DeleteSysJobShare(int SysJobShareId, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.DELETE_SYSJOBSHARE; var parameters = new { SysJobShareId, TenantId = LoginDTO.ClientId, SharedById = LoginDTO.UserId }; int rows = await _QueryExecutor.ExecuteAsync(LoginDTO, sql, parameters); if (rows > 0) return Result.Success("Share removed successfully."); else return Result.Failure("Share record not found or could not be deleted."); } catch (Exception ex) { throw new Exception("Error while deleting SysJobShare", ex); } } public async Task CheckResultAccess(int SysJobId, int UserId, LoginDTO LoginDTO) { try { string sql = SysJobShareQB.CHECK_RESULT_ACCESS; var parameters = new { SysJobId, UserId, TenantId = LoginDTO.ClientId }; return await _QueryExecutor.ExecuteScalarAsync(LoginDTO, sql, parameters); } catch (Exception) { throw; } } } }