using System.ComponentModel.DataAnnotations; using FrameworkDAL.CustomCode.Taxonomy; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Validation; using GB5Shared.ResponseStandard; using CMSDAL.CustomCode.Taxonomy; using CMSDAL.DTO.Taxonomy; namespace CMSBLL.Taxonomy { public class TaxonomyBLL : ITaxonomyBLL { private readonly ITaxonomyDAL _TaxonomyDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public TaxonomyBLL(ITaxonomyDAL TaxonomyDAL, AutoNumber AutoNumber, IValidation validation) { _TaxonomyDAL = TaxonomyDAL; _AutoNumber = AutoNumber; _Validation = validation; } public async Task GetTaxonomy(Guid TaxonomyId, LoginDTO LoginDTO) { try { return await _TaxonomyDAL.GetTaxonomy(TaxonomyId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveTaxonomy(TaxonomyDTO taxonomyDTO, LoginDTO loginDTO) { if (taxonomyDTO == null) throw new ArgumentNullException(nameof(taxonomyDTO)); try { await _Validation.NotEmpty(taxonomyDTO.Name, nameof(taxonomyDTO.Name)); taxonomyDTO.ModifiedById = loginDTO.UserId; taxonomyDTO.ModifiedOn = DateTime.UtcNow; // NEW TAXONOMY if (taxonomyDTO.TaxonomyId == Guid.Empty) { taxonomyDTO.TaxonomyId = Guid.NewGuid(); // OR let DB handle NEWID() taxonomyDTO.CreatedById = loginDTO.UserId; taxonomyDTO.CreatedOn = DateTime.UtcNow; await _TaxonomyDAL.SaveTaxonomy(taxonomyDTO, loginDTO); return $"Details saved successfully with Taxonomy Id {taxonomyDTO.TaxonomyId}."; } // UPDATE TAXONOMY else { await _TaxonomyDAL.UpdateTaxonomy(taxonomyDTO, loginDTO); return $"Details updated successfully with Taxonomy Id {taxonomyDTO.TaxonomyId}."; } } catch (ValidationException) { throw; } catch (Exception) { throw; } } public async Task GetSelectListTaxonomy(CriteriaDTO criteriaDTO, LoginDTO LoginDTO) { try { return await _TaxonomyDAL.GetSelectListTaxonomy(criteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteTaxonomy(Guid TaxonomyId, LoginDTO LoginDTO) { try { return await _TaxonomyDAL.DeleteTaxonomy(TaxonomyId, LoginDTO); } catch (Exception) { throw; } } } }