using MMDAL.CustomCode.WorkCenter; using MMDAL.DTO.WorkCenter; 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 System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; namespace MMBLL.WorkCenter { public class WorkCenterBLL : IWorkCenterBLL { private readonly IWorkCenterDAL _WorkCenterDAL; private readonly AutoNumber _AutoNumber; private readonly IValidation _Validation; public WorkCenterBLL( IWorkCenterDAL WorkCenterDAL, AutoNumber AutoNumber, IValidation Validation) { _WorkCenterDAL = WorkCenterDAL; _AutoNumber = AutoNumber; _Validation = Validation; } public async Task GetWorkCenter(int WorkCenterId, LoginDTO LoginDTO) { try { return await _WorkCenterDAL.GetWorkCenter(WorkCenterId, LoginDTO); } catch (Exception) { throw; } } public async Task SaveWorkCenter( WorkCenterDTO WorkCenterDTO, LoginDTO LoginDTO) { //if (WorkCenterDTO == null) throw new ArgumentNullException(nameof(WorkCenterDTO)); //AutoNumberDTO? autoNumberDTO = null; try { WorkCenterDTO.WorkCenterModifiedById = LoginDTO.UserId; WorkCenterDTO.WorkCenterModifiedOn = DateTime.UtcNow; if (WorkCenterDTO.WorkCenterId == 0) { //autoNumberDTO = await _AutoNumber.GetAutoNumber(count, "WorkCenter", LoginDTO); //WorkCenterDTO.WorkCenterId = autoNumberDTO.StartNumber; WorkCenterDTO.WorkCenterCreatedById = LoginDTO.UserId; WorkCenterDTO.WorkCenterCreatedOn = DateTime.UtcNow; await _WorkCenterDAL.SaveWorkCenter( WorkCenterDTO, LoginDTO); return $"{SuccessResponse.SaveSuccess}"; } else { await _WorkCenterDAL.UpdateWorkCenter( WorkCenterDTO, LoginDTO); return $"{SuccessResponse.UpdateSuccess}"; } } catch (ValidationException vex) { throw new Exception(vex.Message); } catch (Exception) { //if (autoNumberDTO != null && WorkCenterDTO.WorkCenterId > 0) // await _AutoNumber.RollbackAutoNumber( // "WorkCenter", // WorkCenterDTO.WorkCenterId, // LoginDTO); throw; } } public async Task GetSelectListWorkCenter( int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _WorkCenterDAL.GetSelectListWorkCenter( FirstNumber, MaxResult, CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } public async Task DeleteWorkCenter( int WorkCenterId, LoginDTO LoginDTO) { try { return await _WorkCenterDAL.DeleteWorkCenter( WorkCenterId, LoginDTO); } catch (Exception) { throw; } } public async Task GetWorkCenterList( CriteriaDTO CriteriaDTO, LoginDTO LoginDTO) { try { return await _WorkCenterDAL.GetWorkCenterList( CriteriaDTO, LoginDTO); } catch (Exception) { throw; } } } }