using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using AdminDAL.CustomCode.UserAccessRights; using AdminDAL.DTO.UserAccessRights; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Validation; namespace AdminBLL.UserAccessRights { public class UserAccessRightsBLL : IUserAccessRightsBLL { private readonly IUserAccessRightsDAL _UserAccessRightsDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public UserAccessRightsBLL(IUserAccessRightsDAL UserAccessRightsDAL, AutoNumber AutoNumber, IValidation Validation) { _UserAccessRightsDAL = UserAccessRightsDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetUserAccessRightsOnUser(int UserId, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.GetUserAccessRightsOnUser(UserId, LoginDTO); } catch (Exception) { throw; } } public async Task GetUserAccessRights(int UserAccessRightsId, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.GetUserAccessRights(UserAccessRightsId, LoginDTO); } catch (Exception) { throw; } } public async Task> SaveUserAccessRights(List UserAccessRightsDTOs, LoginDTO LoginDTO) { if (UserAccessRightsDTOs == null) throw new ArgumentNullException(nameof(UserAccessRightsDTOs)); AutoNumberDTO? autoNumberDTO = null; try { int newCount = UserAccessRightsDTOs.Count(x => x.UserAccessRightsId == 0); if (newCount > 0) { autoNumberDTO = await _AutoNumber.GetAutoNumber(newCount, "USERACCESSRIGHTS", LoginDTO); } int nextNewId = 0; foreach (var userAccessRightsDTO in UserAccessRightsDTOs) { if (userAccessRightsDTO.UserAccessRightsId == 0) { userAccessRightsDTO.UserAccessRightsId = autoNumberDTO!.StartNumber + nextNewId; nextNewId++; await _UserAccessRightsDAL.SaveUserAccessRights(userAccessRightsDTO, LoginDTO); } else { await _UserAccessRightsDAL.UpdateUserAccessRights(userAccessRightsDTO, LoginDTO); } } return UserAccessRightsDTOs; } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { if (autoNumberDTO != null) await _AutoNumber.RollbackAutoNumber("USERACCESSRIGHTS", autoNumberDTO.StartNumber, LoginDTO); throw; } } public async Task DeleteUserAccessRights(int UserAccessRightsId, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.DeleteUserAccessRights(UserAccessRightsId, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteUserAccessRightsOnUser(int UserId, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.DeleteUserAccessRightsOnUser(UserId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListPeriod (CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.GetSelectListPeriod(CriteriaDTO, LoginDTO); } catch(Exception) { throw; } } public async Task GetSelectListOU(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.GetSelectListOU(CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task GetUserAccessRightsList(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _UserAccessRightsDAL.GetUserAccessRightsList(FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } } }