using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FrameworkDAL.CustomCode.SecurityQuestion; using FrameworkDAL.DTO.Region; using FrameworkDAL.DTO.User; using FrameworkDAL.Query.SecurityQuestion; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.ResponseStandard; namespace FrameworkBLL.SecurityQuestion { public class SecurityQuestionBLL : ISecurityQuestionBLL { private readonly ISecurityQuestionDAL _SecurityQuestionDAL; private readonly AutoNumber _autoNumber; public SecurityQuestionBLL(ISecurityQuestionDAL SecurityQuestionDAL, AutoNumber autoNumber) { _SecurityQuestionDAL = SecurityQuestionDAL; _autoNumber = autoNumber; } public async Task GetSecurityQuestion(int SecurityQuestionId, LoginDTO LoginDTO) { try { return await _SecurityQuestionDAL.GetSecurityQuestion(SecurityQuestionId, LoginDTO); } catch (Exception) { throw; } } public async Task GetSelectListSecurityQuestion(CriteriaDTO criteriaDTO, LoginDTO LoginDTO) { try { return await _SecurityQuestionDAL.GetSelectListSecurityQuestion(criteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task SaveSecurityQuestion(SecurityQuestionDTO SecurityQuestionDTO, LoginDTO LoginDTO) { try { int initialId = SecurityQuestionDTO.SecurityQuestionId; int count = 1 + initialId; if (initialId == 0) { SecurityQuestionDTO.SecurityQuestionCreatedById = LoginDTO.UserId; SecurityQuestionDTO.SecurityQuestionCreatedOn = DateTime.UtcNow; SecurityQuestionDTO.SecurityQuestionModifiedById = LoginDTO.UserId; SecurityQuestionDTO.SecurityQuestionModifiedOn = DateTime.UtcNow; AutoNumberDTO autoNumberDTO = await _autoNumber.GetNumberAsync(count, "SECURITYQUESTION", LoginDTO); SecurityQuestionDTO.SecurityQuestionId = autoNumberDTO.StartNumber; await _SecurityQuestionDAL.SaveSecurityQuestion(SecurityQuestionDTO, LoginDTO); return $"Security Question details saved successfully with Secuirty Question Id {SecurityQuestionDTO.SecurityQuestionId}."; } else { SecurityQuestionDTO.SecurityQuestionModifiedById = LoginDTO.UserId; SecurityQuestionDTO.SecurityQuestionModifiedOn = DateTime.UtcNow; await _SecurityQuestionDAL.UpdateSecurityQuestion(SecurityQuestionDTO, LoginDTO); return $"Security Question details updated successfully with Secuirty Question Id {SecurityQuestionDTO.SecurityQuestionId}."; } } catch (Exception) { throw; } } public async Task> DeleteSecurityQuestion(int SecurityQuestionId, LoginDTO LoginDTO) { try { return await _SecurityQuestionDAL.DeleteSecurityQuestion(SecurityQuestionId, LoginDTO); } catch (Exception) { throw; } } } }