using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using MaintenanceDAL.CustomCode.ActivityType; using MaintenanceDAL.DTO.ActivityType; namespace MaintenanceBLL.ActivityType { public class ActivityTypeBLL : IActivityTypeBLL { private readonly IActivityTypeDAL _activityTypeDAL; private readonly AutoNumber _AutoNumber; public ActivityTypeBLL(IActivityTypeDAL activityTypeDAL, AutoNumber autoNumber) { _activityTypeDAL = activityTypeDAL; _AutoNumber = autoNumber; } public async Task GetSelectListActivityType(CriteriaDTO criteriaDTO, LoginDTO loginDTO) { try { return await _activityTypeDAL.GetSelectListActivityType(criteriaDTO, loginDTO); } catch (Exception) { throw; } } public async Task SaveActivityType(ActivityTypeDTO activitytypeDTO, LoginDTO loginDTO) { if (activitytypeDTO == null) throw new ArgumentNullException(nameof(ActivityTypeDTO)); AutoNumberDTO? autoNumberDTO = null; activitytypeDTO.ActivityTypeModifiedById = loginDTO.UserId; activitytypeDTO.ActivityTypeModifiedOn = DateTime.UtcNow; bool isNew = activitytypeDTO.ActivityTypeId == 0; int count = 1; if (isNew) { autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "ACTIVITYTYPE", loginDTO); activitytypeDTO.ActivityTypeId = autoNumberDTO.StartNumber; activitytypeDTO.ActivityTypeCreatedById = loginDTO.UserId; activitytypeDTO.ActivityTypeCreatedOn = DateTime.UtcNow; await _activityTypeDAL.SaveActivityType(activitytypeDTO, loginDTO); return $"{SuccessResponse.SaveSuccessMessage} {activitytypeDTO.ActivityTypeCode}"; } else { await _activityTypeDAL.UpdateActivityType(activitytypeDTO, loginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {activitytypeDTO.ActivityTypeCode}"; } } public async Task GetActivityType(int activityTypeId, LoginDTO loginDTO) { try { return await _activityTypeDAL.GetActivityType(activityTypeId, loginDTO); } catch (Exception) { throw new Exception($"Error retrieving ActivityType with ID {activityTypeId}"); } } public async Task DeleteActivityType(int activityTypeId, LoginDTO loginDTO) { try { return await _activityTypeDAL.DeleteActivityType(activityTypeId, loginDTO); } catch (Exception) { throw; } } } }