using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; using GB5Shared.DTO.Framework.AutoNumber; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.GenerateAutoNumber; using GB5Shared.Resource.Response; using GB5Shared.Validation; using MMDAL.CustomCode.GradeStandard; using MMDAL.DTO.GradeStandard; namespace MMBLL.GradeStandard { public class GradeStandardBLL : IGradeStandardBLL { private readonly IGradeStandardDAL _GradeStandardDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public GradeStandardBLL(IGradeStandardDAL IGradeStandardDAL, AutoNumber AutoNumber, IValidation Validation) { _GradeStandardDAL = IGradeStandardDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetGradeStandard(int GradeStandardId, LoginDTO LoginDTO) { try { return await _GradeStandardDAL.GetGradeStandard(GradeStandardId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveGradeStandard(GradeStandardDTO GradeStandardDTO, LoginDTO LoginDTO) { if (GradeStandardDTO == null) throw new ArgumentNullException(nameof(GradeStandardDTO)); try { await _Validation.NotEmpty(GradeStandardDTO.GradeStandardCode, nameof(GradeStandardDTO.GradeStandardCode)); await _Validation.NotEmpty(GradeStandardDTO.GradeStandardName, nameof(GradeStandardDTO.GradeStandardName)); GradeStandardDTO.GradeStandardModifiedById = LoginDTO.UserId; GradeStandardDTO.GradeStandardModifiedOn = DateTime.UtcNow; GradeStandardDTO.GradeStandardTenantId = LoginDTO.ClientId; if (GradeStandardDTO.GradeStandardId == 0) { GradeStandardDTO.GradeStandardCreatedById = LoginDTO.UserId; GradeStandardDTO.GradeStandardCreatedOn = DateTime.UtcNow; GradeStandardDTO.GradeStandardId = await _GradeStandardDAL.SaveGradeStandard(GradeStandardDTO, LoginDTO); return $"{SuccessResponse.SaveSuccessMessage} {GradeStandardDTO.GradeStandardId}"; } else { await _GradeStandardDAL.UpdateGradeStandard(GradeStandardDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccessMessage} {GradeStandardDTO.GradeStandardId}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { throw; } } } }