using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using MaintenanceDAL.DTO.ActivityType; using MaintenanceDAL.Query.ActivityType; namespace MaintenanceDAL.CustomCode.ActivityType { public class ActivityTypeDAL : IActivityTypeDAL { private readonly IQueryExecutor _queryExecutor; private readonly ILogger _logger; public ActivityTypeDAL(IQueryExecutor queryExecutor, ILogger logger) { _queryExecutor = queryExecutor; _logger = logger; } public async Task GetSelectListActivityType(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { try { string sql = ActivityTypeQB.GetSelectListActivityType; var result = await _queryExecutor.QueryAsync(loginDTO, sql, null!); return JsonConvert.SerializeObject(result); } catch (Exception ex) { _logger.LogError(ex, "GetSelectListActivityType failed"); throw; } } public async Task SaveActivityType(ActivityTypeDTO ActivityTypeDTO, LoginDTO LoginDTO) { try { const string Sql = ActivityTypeQB.SAVE_ACTIVITYTYPE; return await _queryExecutor.ExecuteAsync(LoginDTO, Sql, ActivityTypeDTO); } catch (Exception ex) { throw new Exception("Error while saving ActivityType", ex); } } public async Task UpdateActivityType(ActivityTypeDTO ActivityTypeDTO, LoginDTO LoginDTO) { try { const string Sql = ActivityTypeQB.UPDATE_ACTIVITYTYPE; return await _queryExecutor.ExecuteAsync(LoginDTO, Sql, ActivityTypeDTO); } catch (Exception ex) { throw new Exception("Error while updating ActivityType", ex); } } public async Task GetActivityType(int activityTypeId, LoginDTO loginDTO) { string Json = ""; try { string sql = ActivityTypeQB.GET_ACTIVITYTYPE; var parameters = new { activityTypeId = activityTypeId }; ActivityTypeDTO activityTypeDTOs = await _queryExecutor.QuerySingleAsync(loginDTO, sql, parameters); Json = JsonConvert.SerializeObject(activityTypeDTOs); return Json; } catch (Exception ex) { throw new Exception("Error while retrieving ActivityType", ex); } } public async Task DeleteActivityType(int activityTypeId, LoginDTO loginDTO) { try { string sql = ActivityTypeQB.DELETE_ACTIVITYTYPE; var parameters = new { ActivityTypeId = activityTypeId }; var result = await _queryExecutor.ExecuteAsync(loginDTO, sql, parameters); return result > 0 ? $"{GB5Shared.Resource.Response.SuccessResponse.DeleteSuccessMessage}" : $"{GB5Shared.Resource.Response.ErrorResponse.DeleteNotFoundMessage}"; } catch (Exception ex) { throw new Exception("Error while deleting ActivityType", ex); } } } }